mirror of
https://github.com/GaloisInc/macaw.git
synced 2024-11-28 01:35:33 +03:00
1 line
12 KiB
Plaintext
1 line
12 KiB
Plaintext
Expected {expBinaryName = "tests/samples/tailrecurse.x86.exe", expEntryPoints = [EntryPoint (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 436, addrPretty = "0x4001b4"}),EntryPoint (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 405, addrPretty = "0x400195"}),EntryPoint (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 344, addrPretty = "0x400158"}),EntryPoint (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 436, addrPretty = "0x4001b4"})], expFunctions = [Function (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 344, addrPretty = "0x400158"}) [Block (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 344, addrPretty = "0x400158"}) "StatementList {stmtsIdent = 0, stmtsNonterm = [# 0x0 push rbp,r15 := (bv_add rsp_0 (0xfffffffffffffff8 :: [64])),write_mem r15 rbp_0,# 0x400158: {rip => 0x400159\n ;rsp => r15},# 0x1 mov rbp,rsp,# 0x400159: {rip => 0x40015c\n ;rbp => r15},# 0x4 sub rsp,0x10,r16 := (ssbb_overflows r15 (0x10 :: [64]) false),r17 := (bv_ult r15 (0x10 :: [64])),r18 := (bv_add rsp_0 (0xffffffffffffffe8 :: [64])),r19 := (bv_slt r18 (0x0 :: [64])),r20 := (eq rsp_0 (0x18 :: [64])),r21 := (trunc r18 8),r22 := (even_parity r21),# 0x40015c: {rip => 0x400160\n ;rsp => r18\n ;cf => r17\n ;pf => r22\n ;af => false\n ;zf => r20\n ;sf => r19\n ;of => r16},# 0x8 mov QWORD PTR [rbp-0x8],rdi,r23 := (bv_add rsp_0 (0xfffffffffffffff0 :: [64])),write_mem r23 rdi_0,# 0x400160: {rip => 0x400164},# 0xc mov QWORD PTR [rbp-0x10],rsi,write_mem r18 rsi_0,# 0x400164: {rip => 0x400168},# 0x10 cmp QWORD PTR [rbp-0x8],0x0,r24 := read_mem r23 (bvle 8),r25 := (bv_slt r24 (0x0 :: [64])),r26 := (eq r24 (0x0 :: [64])),r27 := (trunc r24 8),r28 := (even_parity r27),# 0x400168: {rip => 0x40016d\n ;cf => false\n ;pf => r28\n ;af => false\n ;zf => r26\n ;sf => r25\n ;of => false},# 0x15 jne pc+6,r29 := (mux r26 (0x40016f) (0x400175)),# 0x40016d: {rip => r29}], stmtsTerm = ite r26\n{\n \n jump 0x40016f\n { rip = 0x40016f\n , rsp = r18\n , rbp = r15\n , cf = false\n , pf = r28\n , af = false\n , zf = r26\n , sf = r25\n , df = false\n , of = false\n , x87top = 0x7 :: [3]\n }\n}\n{\n \n jump 0x400175\n { rip = 0x400175\n , rsp = r18\n , rbp = r15\n , cf = false\n , pf = r28\n , af = false\n , zf = r26\n , sf = r25\n , df = false\n , of = false\n , x87top = 0x7 :: [3]\n }\n}, stmtsAbsState = registers:\n { rip = code {0x400158}\n , rsp = {rsp_0x400158 + 0}\n , df = False\n , x87top = finset {7}\n }\nstack:\n 0x0 := return_addr}",Block (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 367, addrPretty = "0x40016f"}) "StatementList {stmtsIdent = 0, stmtsNonterm = [# 0x0 mov rax,QWORD PTR [rbp-0x10],r32 := (bv_add rbp_0 (0xfffffffffffffff0 :: [64])),r33 := read_mem r32 (bvle 8),# 0x40016f: {rip => 0x400173\n ;rax => r33},# 0x4 jmp pc+1e,# 0x400173: {rip => 0x400193}], stmtsTerm = jump 0x400193\n { rip = 0x400193\n , rax = r33\n , df = false\n , x87top = 0x7 :: [3]\n }, stmtsAbsState = registers:\n { rip = code {0x40016f}\n , rsp = {rsp_0x400158 - 18}\n , rbp = {rsp_0x400158 - 8}\n , cf = False\n , af = False\n , zf = True\n , df = False\n , of = False\n , x87top = finset {7}\n }\nstack:\n 0x0 := return_addr}",Block (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 373, addrPretty = "0x400175"}) "StatementList {stmtsIdent = 0, stmtsNonterm = [# 0x0 mov rdx,QWORD PTR [rbp-0x10],r59 := (bv_add rbp_0 (0xfffffffffffffff0 :: [64])),r60 := read_mem r59 (bvle 8),# 0x400175: {rip => 0x400179\n ;rdx => r60},# 0x4 mov rax,QWORD PTR [rbp-0x8],r61 := (bv_add rbp_0 (0xfffffffffffffff8 :: [64])),r62 := read_mem r61 (bvle 8),# 0x400179: {rip => 0x40017d\n ;rax => r62},# 0x8 add rdx,rax,r63 := (sadc_overflows r60 r62 false),r64 := (trunc r60 4),r65 := (trunc r62 4),r66 := (uadc_overflows r64 r65 false),r67 := (uadc_overflows r60 r62 false),r68 := (bv_add r60 r62),r69 := (bv_slt r68 (0x0 :: [64])),r70 := (eq r68 (0x0 :: [64])),r71 := (trunc r68 8),r72 := (even_parity r71),# 0x40017d: {rip => 0x400180\n ;rdx => r68\n ;cf => r67\n ;pf => r72\n ;af => r66\n ;zf => r70\n ;sf => r69\n ;of => r63},# 0xb mov rax,QWORD PTR [rbp-0x8],r73 := read_mem r61 (bvle 8),# 0x400180: {rip => 0x400184\n ;rax => r73},# 0xf sub rax,0x1,r74 := (ssbb_overflows r73 (0x1 :: [64]) false),r75 := (trunc r73 4),r76 := (bv_ult r75 (0x1 :: [4])),r77 := (bv_ult r73 (0x1 :: [64])),r78 := (bv_add r73 (0xffffffffffffffff :: [64])),r79 := (bv_slt r78 (0x0 :: [64])),r80 := (eq r73 (0x1 :: [64])),r81 := (trunc r78 8),r82 := (even_parity r81),# 0x400184: {rip => 0x400188\n ;rax => r78\n ;cf => r77\n ;pf => r82\n ;af => r76\n ;zf => r80\n ;sf => r79\n ;of => r74},# 0x13 mov rsi,rdx,# 0x400188: {rip => 0x40018b\n ;rsi => r68},# 0x16 mov rdi,rax,# 0x40018b: {rip => 0x40018e\n ;rdi => r78},# 0x19 call pc+-3b,r83 := (bv_add rsp_0 (0xfffffffffffffff8 :: [64])),write_mem r83 0x400193,# 0x40018e: {rip => 0x400158\n ;rsp => r83}], stmtsTerm = call and return to 0x400193\n { rip = 0x400158\n , rax = r78\n , rdx = r68\n , rsp = r83\n , rsi = r68\n , rdi = r78\n , cf = r77\n , pf = r82\n , af = r76\n , zf = r80\n , sf = r79\n , df = false\n , of = r74\n , x87top = 0x7 :: [3]\n }, stmtsAbsState = registers:\n { rip = code {0x400175}\n , rsp = {rsp_0x400158 - 18}\n , rbp = {rsp_0x400158 - 8}\n , cf = False\n , af = False\n , zf = False\n , df = False\n , of = False\n , x87top = finset {7}\n }\nstack:\n 0x0 := return_addr\n -0x20 := code {0x400193}}",Block (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 403, addrPretty = "0x400193"}) "StatementList {stmtsIdent = 0, stmtsNonterm = [# 0x0 leave,r88 := read_mem rbp_0 (bvle 8),r89 := (bv_add rbp_0 (0x8 :: [64])),# 0x400193: {rip => 0x400194\n ;rsp => r89\n ;rbp => r88},# 0x1 ret,r90 := read_mem r89 (bvle 8),r91 := (bv_add rbp_0 (0x10 :: [64])),# 0x400194: {rip => r90\n ;rsp => r91}], stmtsTerm = return\n { rip = r90\n , rsp = r91\n , rbp = r88\n , df = false\n , x87top = 0x7 :: [3]\n }, stmtsAbsState = registers:\n { rip = code {0x400193}\n , rsp = {rsp_0x400158 - 18}\n , rbp = {rsp_0x400158 - 8}\n , df = False\n , x87top = finset {7}\n }\nstack:\n 0x0 := return_addr}"],Function (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 405, addrPretty = "0x400195"}) [Block (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 405, addrPretty = "0x400195"}) "StatementList {stmtsIdent = 0, stmtsNonterm = [# 0x0 push rbp,r11 := (bv_add rsp_0 (0xfffffffffffffff8 :: [64])),write_mem r11 rbp_0,# 0x400195: {rip => 0x400196\n ;rsp => r11},# 0x1 mov rbp,rsp,# 0x400196: {rip => 0x400199\n ;rbp => r11},# 0x4 sub rsp,0x10,r12 := (ssbb_overflows r11 (0x10 :: [64]) false),r13 := (bv_ult r11 (0x10 :: [64])),r14 := (bv_add rsp_0 (0xffffffffffffffe8 :: [64])),r15 := (bv_slt r14 (0x0 :: [64])),r16 := (eq rsp_0 (0x18 :: [64])),r17 := (trunc r14 8),r18 := (even_parity r17),# 0x400199: {rip => 0x40019d\n ;rsp => r14\n ;cf => r13\n ;pf => r18\n ;af => false\n ;zf => r16\n ;sf => r15\n ;of => r12},# 0x8 mov QWORD PTR [rbp-0x8],rdi,r19 := (bv_add rsp_0 (0xfffffffffffffff0 :: [64])),write_mem r19 rdi_0,# 0x40019d: {rip => 0x4001a1},# 0xc mov rax,QWORD PTR [rbp-0x8],r20 := read_mem r19 (bvle 8),# 0x4001a1: {rip => 0x4001a5\n ;rax => r20},# 0x10 mov esi,0x0,# 0x4001a5: {rip => 0x4001aa\n ;rsi => 0x0 :: [64]},# 0x15 mov rdi,rax,# 0x4001aa: {rip => 0x4001ad\n ;rdi => r20},# 0x18 call pc+-5a,r21 := (bv_add rsp_0 (0xffffffffffffffe0 :: [64])),write_mem r21 0x4001b2,# 0x4001ad: {rip => 0x400158\n ;rsp => r21}], stmtsTerm = call and return to 0x4001b2\n { rip = 0x400158\n , rax = r20\n , rsp = r21\n , rbp = r11\n , rsi = 0x0 :: [64]\n , rdi = r20\n , cf = r13\n , pf = r18\n , af = false\n , zf = r16\n , sf = r15\n , df = false\n , of = r12\n , x87top = 0x7 :: [3]\n }, stmtsAbsState = registers:\n { rip = code {0x400195}\n , rsp = {rsp_0x400195 + 0}\n , df = False\n , x87top = finset {7}\n }\nstack:\n 0x0 := return_addr\n -0x20 := code {0x4001b2}}",Block (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 434, addrPretty = "0x4001b2"}) "StatementList {stmtsIdent = 0, stmtsNonterm = [# 0x0 leave,r26 := read_mem rbp_0 (bvle 8),r27 := (bv_add rbp_0 (0x8 :: [64])),# 0x4001b2: {rip => 0x4001b3\n ;rsp => r27\n ;rbp => r26},# 0x1 ret,r28 := read_mem r27 (bvle 8),r29 := (bv_add rbp_0 (0x10 :: [64])),# 0x4001b3: {rip => r28\n ;rsp => r29}], stmtsTerm = return\n { rip = r28\n , rsp = r29\n , rbp = r26\n , df = false\n , x87top = 0x7 :: [3]\n }, stmtsAbsState = registers:\n { rip = code {0x4001b2}\n , rsp = {rsp_0x400195 - 18}\n , rbp = {rsp_0x400195 - 8}\n , df = False\n , x87top = finset {7}\n }\nstack:\n 0x0 := return_addr\n -0x20 := code {0x4001b2}}"],Function (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 436, addrPretty = "0x4001b4"}) [Block (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 436, addrPretty = "0x4001b4"}) "StatementList {stmtsIdent = 0, stmtsNonterm = [# 0x0 push rbp,r9 := (bv_add rsp_0 (0xfffffffffffffff8 :: [64])),write_mem r9 rbp_0,# 0x4001b4: {rip => 0x4001b5\n ;rsp => r9},# 0x1 mov rbp,rsp,# 0x4001b5: {rip => 0x4001b8\n ;rbp => r9},# 0x4 sub rsp,0x10,r10 := (ssbb_overflows r9 (0x10 :: [64]) false),r11 := (bv_ult r9 (0x10 :: [64])),r12 := (bv_add rsp_0 (0xffffffffffffffe8 :: [64])),r13 := (bv_slt r12 (0x0 :: [64])),r14 := (eq rsp_0 (0x18 :: [64])),r15 := (trunc r12 8),r16 := (even_parity r15),# 0x4001b8: {rip => 0x4001bc\n ;rsp => r12\n ;cf => r11\n ;pf => r16\n ;af => false\n ;zf => r14\n ;sf => r13\n ;of => r10},# 0x8 mov esi,0x4,# 0x4001bc: {rip => 0x4001c1\n ;rsi => 0x4 :: [64]},# 0xd mov edi,0x3,# 0x4001c1: {rip => 0x4001c6\n ;rdi => 0x3 :: [64]},# 0x12 call pc+-73,r17 := (bv_add rsp_0 (0xffffffffffffffe0 :: [64])),write_mem r17 0x4001cb,# 0x4001c6: {rip => 0x400158\n ;rsp => r17}], stmtsTerm = call and return to 0x4001cb\n { rip = 0x400158\n , rsp = r17\n , rbp = r9\n , rsi = 0x4 :: [64]\n , rdi = 0x3 :: [64]\n , cf = r11\n , pf = r16\n , af = false\n , zf = r14\n , sf = r13\n , df = false\n , of = r10\n , x87top = 0x7 :: [3]\n }, stmtsAbsState = registers:\n { rip = code {0x4001b4}\n , rsp = {rsp_0x4001b4 + 0}\n , df = False\n , x87top = finset {7}\n }\nstack:\n 0x0 := return_addr\n -0x20 := code {0x4001cb}}",Block (Address {addrSegmentBase = 0, addrSegmentOffset = 4194304, addrSegoffOffset = 459, addrPretty = "0x4001cb"}) "StatementList {stmtsIdent = 0, stmtsNonterm = [# 0x0 mov QWORD PTR [rbp-0x8],rax,r23 := (bv_add rbp_0 (0xfffffffffffffff8 :: [64])),write_mem r23 rax_0,# 0x4001cb: {rip => 0x4001cf},# 0x4 nop,# 0x4001cf: {rip => 0x4001d0},# 0x5 leave,r24 := read_mem rbp_0 (bvle 8),r25 := (bv_add rbp_0 (0x8 :: [64])),# 0x4001d0: {rip => 0x4001d1\n ;rsp => r25\n ;rbp => r24},# 0x6 ret,r26 := read_mem r25 (bvle 8),r27 := (bv_add rbp_0 (0x10 :: [64])),# 0x4001d1: {rip => r26\n ;rsp => r27}], stmtsTerm = return\n { rip = r26\n , rsp = r27\n , rbp = r24\n , df = false\n , x87top = 0x7 :: [3]\n }, stmtsAbsState = registers:\n { rip = code {0x4001cb}\n , rsp = {rsp_0x4001b4 - 18}\n , rbp = {rsp_0x4001b4 - 8}\n , df = False\n , x87top = finset {7}\n }\nstack:\n 0x0 := return_addr\n -0x20 := code {0x4001cb}}"]]} |