{"action":"created","issue":{"url":"https://api.github.com/repos/JonathanSalwan/Triton/issues/494","repository_url":"https://api.github.com/repos/JonathanSalwan/Triton","labels_url":"https://api.github.com/repos/JonathanSalwan/Triton/issues/494/labels{/name}","comments_url":"https://api.github.com/repos/JonathanSalwan/Triton/issues/494/comments","events_url":"https://api.github.com/repos/JonathanSalwan/Triton/issues/494/events","html_url":"https://github.com/JonathanSalwan/Triton/issues/494","id":212491462,"number":494,"title":"Symbolic Execution: What's the different for INSERT_POINT.BEFORE and INSERT_POINT.BEFORE_SYMPROC when convertRegisterToSymbolicVariable?","user":{"login":"pfsun","id":4397561,"avatar_url":"https://avatars1.githubusercontent.com/u/4397561?v=3","gravatar_id":"","url":"https://api.github.com/users/pfsun","html_url":"https://github.com/pfsun","followers_url":"https://api.github.com/users/pfsun/followers","following_url":"https://api.github.com/users/pfsun/following{/other_user}","gists_url":"https://api.github.com/users/pfsun/gists{/gist_id}","starred_url":"https://api.github.com/users/pfsun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfsun/subscriptions","organizations_url":"https://api.github.com/users/pfsun/orgs","repos_url":"https://api.github.com/users/pfsun/repos","events_url":"https://api.github.com/users/pfsun/events{/privacy}","received_events_url":"https://api.github.com/users/pfsun/received_events","type":"User","site_admin":false},"labels":[{"id":170156131,"url":"https://api.github.com/repos/JonathanSalwan/Triton/labels/Question","name":"Question","color":"cc317c","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2017-03-07T16:48:32Z","updated_at":"2017-03-15T22:00:17Z","closed_at":null,"body":"Hi @JonathanSalwan, I try the symbolic execution for crackme_xor.\r\n\r\n```\r\n# ./triton src/examples/sun/crackme_xor_symexpre.py src/samples/crackmes/crackme_xor a\r\n\r\n\r\nfrom pintool import *\r\nfrom triton  import *\r\n\r\n\r\n\r\ndef cbefore(inst):\r\n    print inst\r\n\r\n    if inst.getAddress() == 0x4005BE: # mov qword ptr [rbp - 0x20], rsi\r\n        print \"current value\", hex(getCurrentRegisterValue(REG.RSI))\r\n        var1 = convertRegisterToSymbolicVariable(REG.RSI)\r\n        print var1\r\n        \r\n\r\n\r\ndef cafter(inst):\r\n    if inst.getAddress() == 0x4005BE: # mov qword ptr [rbp - 0x20], rsi\r\n        print inst\r\n        memaddress = inst.getOperands()[0].getAddress()\r\n        symmem = getSymbolicMemoryId(memaddress)\r\n        partialTree = getSymbolicExpressionFromId(symmem).getAst()\r\n        print \"AST:\", partialTree\r\n        fullTree = getFullAst(partialTree)\r\n        print \"FULL AST:\", fullTree\r\n        print\r\n\r\n    if inst.getAddress() == 0x4005CF: # mov rax, qword ptr [rbp - 0x20]\r\n        print inst\r\n        raxid = getSymbolicRegisterId(REG.RAX)\r\n        partialTree = getSymbolicExpressionFromId(raxid).getAst()\r\n        print \"AST:\", partialTree\r\n        fullTree = getFullAst(partialTree)\r\n        print \"FULLAST:\", fullTree\r\n        print\r\n      \r\n\t\t\r\n\r\nif __name__ == '__main__':\r\n    # Set arch\r\n    setArchitecture(ARCH.X86_64)\r\n    setAstRepresentationMode(AST_REPRESENTATION.PYTHON)\r\n\r\n\r\n    setupImageWhitelist(['crackme_xor'])\r\n\r\n    startAnalysisFromSymbol('main')\r\n\r\n    # What is the big different for INSERT_POINT.BEFORE and INSERT_POINT.BEFORE_SYMPROC when convertRegisterToSymbolicVariable?\r\n    insertCall(cbefore, INSERT_POINT.BEFORE)\r\n    #insertCall(cbefore, INSERT_POINT.BEFORE_SYMPROC)\r\n\r\n\r\n    insertCall(cafter, INSERT_POINT.AFTER)\r\n\r\n    # Run Program\r\n    runProgram()\r\n```\r\nFor the above script, if I firstly do  ```insertCall(cbefore, INSERT_POINT.BEFORE)```, the output is as following:\r\n```\r\n4005b3: push rbp\r\n4005b4: mov rbp, rsp\r\n4005b7: sub rsp, 0x20\r\n4005bb: mov dword ptr [rbp - 0x14], edi\r\n4005be: mov qword ptr [rbp - 0x20], rsi\r\ncurrent value 0x7ffc859c3988L\r\nSymVar_0:64\r\n4005be: mov qword ptr [rbp - 0x20], rsi\r\nAST: (0x7FFC859C3988 & 0xFF)\r\nFULL AST: (0x7FFC859C3988 & 0xFF)\r\n\r\n4005c2: cmp dword ptr [rbp - 0x14], 2\r\n4005c6: je 0x4005cf\r\n4005cf: mov rax, qword ptr [rbp - 0x20]\r\n4005cf: mov rax, qword ptr [rbp - 0x20]\r\nAST: (((((((((ref_27 & 0xFF)) << 8 | (ref_28 & 0xFF)) << 8 | (ref_29 & 0xFF)) << 8 | (ref_30 & 0xFF)) << 8 | (ref_31 & 0xFF)) << 8 | (ref_32 & 0xFF)) << 8 | (ref_33 & 0xFF)) << 8 | (ref_34 & 0xFF))\r\nFULLAST: (((((((((((0x7FFC859C3988 >> 56) & 0xFF) & 0xFF)) << 8 | (((0x7FFC859C3988 >> 48) & 0xFF) & 0xFF)) << 8 | (((0x7FFC859C3988 >> 40) & 0xFF) & 0xFF)) << 8 | (((0x7FFC859C3988 >> 32) & 0xFF) & 0xFF)) << 8 | (((0x7FFC859C3988 >> 24) & 0xFF) & 0xFF)) << 8 | (((0x7FFC859C3988 >> 16) & 0xFF) & 0xFF)) << 8 | (((0x7FFC859C3988 >> 8) & 0xFF) & 0xFF)) << 8 | ((0x7FFC859C3988 & 0xFF) & 0xFF))\r\n\r\n4005d3: add rax, 8\r\n```\r\nFor ```4005be: mov qword ptr [rbp - 0x20], rsi```, I convert rsi to symbolic variable **SymVar_0:64**, in ```cafter```, ``` mov qword ptr [rbp - 0x20]``` should have the same symbolic variable **SymVar_0:64**, but the output show the SymbolicExpression is concrete value ```0x7FFC859C3988```. In instruction ```4005cf: mov rax, qword ptr [rbp - 0x20]```, it also keep the concrete value. The symbolic variable doesn't spread. \r\n\r\nBut When I  ```insertCall(cbefore, INSERT_POINT.BEFORE_SYMPROC)```, the output looks correct.\r\n```\r\n4005b3: push rbp\r\n4005b4: mov rbp, rsp\r\n4005b7: sub rsp, 0x20\r\n4005bb: mov dword ptr [rbp - 0x14], edi\r\n4005be: mov qword ptr [rbp - 0x20], rsi\r\ncurrent value 0x7ffc7e5d04b8L\r\nSymVar_0:64\r\n4005be: mov qword ptr [rbp - 0x20], rsi\r\nAST: ((ref_27 & 0xFFFFFFFFFFFFFFFF) & 0xFF)\r\nFULL AST: ((SymVar_0 & 0xFFFFFFFFFFFFFFFF) & 0xFF)\r\n\r\n4005c2: cmp dword ptr [rbp - 0x14], 2\r\n4005c6: je 0x4005cf\r\n4005cf: mov rax, qword ptr [rbp - 0x20]\r\n4005cf: mov rax, qword ptr [rbp - 0x20]\r\nAST: (((((((((ref_28 & 0xFF)) << 8 | (ref_29 & 0xFF)) << 8 | (ref_30 & 0xFF)) << 8 | (ref_31 & 0xFF)) << 8 | (ref_32 & 0xFF)) << 8 | (ref_33 & 0xFF)) << 8 | (ref_34 & 0xFF)) << 8 | (ref_35 & 0xFF))\r\nFULLAST: ((((((((((((SymVar_0 & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | ((((SymVar_0 & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | ((((SymVar_0 & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | ((((SymVar_0 & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | ((((SymVar_0 & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | ((((SymVar_0 & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | ((((SymVar_0 & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | (((SymVar_0 & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF))\r\n\r\n4005d3: add rax, 8\r\n```\r\n\r\nWe can see ```mov qword ptr [rbp - 0x20]``` in ```0x4005be```, ```rax``` in ```0x4005cf``` both keep the symbolic variable **SymVar_0:64**.\r\n\r\nSo I wonder why they are different when spread symbolic variable?\r\n\r\nThank you."},"comment":{"url":"https://api.github.com/repos/JonathanSalwan/Triton/issues/comments/286893219","html_url":"https://github.com/JonathanSalwan/Triton/issues/494#issuecomment-286893219","issue_url":"https://api.github.com/repos/JonathanSalwan/Triton/issues/494","id":286893219,"user":{"login":"pfsun","id":4397561,"avatar_url":"https://avatars1.githubusercontent.com/u/4397561?v=3","gravatar_id":"","url":"https://api.github.com/users/pfsun","html_url":"https://github.com/pfsun","followers_url":"https://api.github.com/users/pfsun/followers","following_url":"https://api.github.com/users/pfsun/following{/other_user}","gists_url":"https://api.github.com/users/pfsun/gists{/gist_id}","starred_url":"https://api.github.com/users/pfsun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfsun/subscriptions","organizations_url":"https://api.github.com/users/pfsun/orgs","repos_url":"https://api.github.com/users/pfsun/repos","events_url":"https://api.github.com/users/pfsun/events{/privacy}","received_events_url":"https://api.github.com/users/pfsun/received_events","type":"User","site_admin":false},"created_at":"2017-03-15T22:00:17Z","updated_at":"2017-03-15T22:00:17Z","body":"@JonathanSalwan Follow our previous discussion. I prepare one simple case for [movsd](https://github.com/JonathanSalwan/Triton/commit/72f079d511a4b6793b9446d24881214a83f932dc). In the following case, I will focus on ```4005ce:   movsd  xmm0,QWORD PTR [rbp-0x28]```. I symbolize ```QWORD PTR [rbp-0x28]```, and then I will check ```xmm0``` FULL AST.\r\n\r\n\r\nFor test case source code:\r\n```\r\n#include <stdio.h>\r\nint main()\r\n{\r\n    double firstNumber, secondNumber, productOfTwoNumbers;\r\n    printf(\"Enter two numbers: \");\r\n    scanf(\"%lf %lf\", &firstNumber, &secondNumber);  \r\n    productOfTwoNumbers = firstNumber;  \r\n    printf(\"Product = %.2lf\", productOfTwoNumbers);\r\n    return 0;\r\n}\r\n```\r\n\r\nFor test script based on Triton:\r\n```\r\n# ./triton test.py ./float  ## (gcc -o float float.c)\r\n\r\nimport sys\r\n\r\nfrom pintool import *\r\nfrom triton  import *\r\nfrom triton.ast import *\r\n\r\ndef cbefore(inst):\r\n\r\n### 4005ce:       f2 0f 10 45 d8          movsd  xmm0,QWORD PTR [rbp-0x28]\r\n\r\n    if inst.getAddress() == 0x4005ce: ## the address may be different\r\n        print inst\r\n        memaddress = inst.getOperands()[1].getAddress()\r\n        var1 = convertMemoryToSymbolicVariable(MemoryAccess(memaddress,  CPUSIZE.QWORD))\r\n        print var1\r\n        print \r\n\r\ndef cafter(inst):\r\n            \r\n    if inst.getAddress() == 0x4005ce: ## the address may be different\r\n        print inst\r\n        for expr in inst.getSymbolicExpressions():\r\n            print expr\r\n\r\n        print \"XMM0:\", hex(getCurrentRegisterValue(REG.XMM0))\r\n        XMM0id = getSymbolicRegisterId(REG.XMM0)\r\n        partialTree = getSymbolicExpressionFromId(XMM0id).getAst()\r\n        print \"XMM0 AST:\", partialTree\r\n        fullTree = getFullAst(partialTree)\r\n        print \"XMM0 Full AST:\", fullTree\r\n        print\r\n\r\n\t\t\r\n\r\nif __name__ == '__main__':\r\n    # Set arch\r\n    setArchitecture(ARCH.X86_64)\r\n    setAstRepresentationMode(AST_REPRESENTATION.PYTHON)\r\n\r\n\r\n    setupImageWhitelist(['float'])\r\n\r\n    startAnalysisFromSymbol('main')\r\n\r\n    # Add callback\r\n    insertCall(cbefore, INSERT_POINT.BEFORE_SYMPROC) #_SYMPROC\r\n    insertCall(cafter, INSERT_POINT.AFTER)\r\n\r\n    # Run Program\r\n    runProgram()\r\n\r\n```\r\n\r\nThe output result is as folllows. It shows that ```SymVar_0``` doesn't spread to ```xmm0```.\r\n```\r\n$ ./triton src/examples/sun/test.py /home/sun/Desktop/float\r\nEnter two numbers: 0.2 0.3\r\n4005ce: movsd xmm0, qword ptr [rbp - 0x28]\r\nSymVar_0:64\r\n\r\n4005ce: movsd xmm0, qword ptr [rbp - 0x28]\r\nref_91 = (((((((((ref_73 & 0xFF)) << 8 | (ref_74 & 0xFF)) << 8 | (ref_75 & 0xFF)) << 8 | (ref_76 & 0xFF)) << 8 | (ref_77 & 0xFF)) << 8 | (ref_78 & 0xFF)) << 8 | (ref_79 & 0xFF)) << 8 | (ref_80 & 0xFF)) # MOVSD operation\r\nref_92 = (((0x7FFCF62AE080 + 0x4) & 0xFFFFFFFFFFFFFFFF) if (0x0 == 0x0) else ((0x7FFCF62AE080 - 0x4) & 0xFFFFFFFFFFFFFFFF)) # Index (DI) operation\r\nref_93 = (((0x7F4535A989F0 + 0x4) & 0xFFFFFFFFFFFFFFFF) if (0x0 == 0x0) else ((0x7F4535A989F0 - 0x4) & 0xFFFFFFFFFFFFFFFF)) # Index (SI) operation\r\nref_94 = 0x4005D3 # Program Counter\r\nXMM0: 0x3fc999999999999aL\r\nXMM0 AST: (((((((((ref_73 & 0xFF)) << 8 | (ref_74 & 0xFF)) << 8 | (ref_75 & 0xFF)) << 8 | (ref_76 & 0xFF)) << 8 | (ref_77 & 0xFF)) << 8 | (ref_78 & 0xFF)) << 8 | (ref_79 & 0xFF)) << 8 | (ref_80 & 0xFF))\r\nXMM0 Full AST: (((((((((((((((((((((((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | ((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | (((((((((((((((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | ((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | (((((((((((((((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | ((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | (((((((((((((((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | ((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | (((((((((((((((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | ((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | (((((((((((((((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | ((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | (((((((((((((((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | ((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | ((((((((((((((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 56) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 48) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 40) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 32) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 24) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 16) & 0xFF) & 0xFF)) << 8 | (((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) >> 8) & 0xFF) & 0xFF)) << 8 | ((((((((((((0x3F & 0xFF)) << 8 | (0xC9 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x99 & 0xFF)) << 8 | (0x9A & 0xFF)) & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF)) & 0xFFFFFFFFFFFFFFFF) & 0xFF) & 0xFF))\r\n\r\n```\r\n\r\nIf change  ```insertCall(cbefore, INSERT_POINT.BEFORE_SYMPROC) ``` to  ```insertCall(cbefore, INSERT_POINT.BEFORE)``` in Triton script. \r\nThe result is as follows. ```SymVar_0``` spreads to ```xmm0```. \r\n```\r\n$ ./triton src/examples/sun/test.py /home/sun/Desktop/float\r\nEnter two numbers: 0.2 0.3\r\n4005ce: movsd xmm0, qword ptr [rbp - 0x28]\r\nSymVar_0:64\r\n\r\n4005ce: movsd xmm0, qword ptr [rbp - 0x28]\r\nref_83 = (((((((((ref_73 & 0xFF)) << 8 | (ref_74 & 0xFF)) << 8 | (ref_75 & 0xFF)) << 8 | (ref_76 & 0xFF)) << 8 | (ref_77 & 0xFF)) << 8 | (ref_78 & 0xFF)) << 8 | (ref_79 & 0xFF)) << 8 | (ref_80 & 0xFF)) # MOVSD operation\r\nref_84 = (((0x7FFFB18C6890 + 0x4) & 0xFFFFFFFFFFFFFFFF) if (0x0 == 0x0) else ((0x7FFFB18C6890 - 0x4) & 0xFFFFFFFFFFFFFFFF)) # Index (DI) operation\r\nref_85 = (((0x7FCC92BBE9F0 + 0x4) & 0xFFFFFFFFFFFFFFFF) if (0x0 == 0x0) else ((0x7FCC92BBE9F0 - 0x4) & 0xFFFFFFFFFFFFFFFF)) # Index (SI) operation\r\nref_86 = 0x4005D3 # Program Counter\r\nXMM0: 0x3fc999999999999aL\r\nXMM0 AST: (((((((((ref_73 & 0xFF)) << 8 | (ref_74 & 0xFF)) << 8 | (ref_75 & 0xFF)) << 8 | (ref_76 & 0xFF)) << 8 | (ref_77 & 0xFF)) << 8 | (ref_78 & 0xFF)) << 8 | (ref_79 & 0xFF)) << 8 | (ref_80 & 0xFF))\r\nXMM0 Full AST: (((((((((((SymVar_0 >> 56) & 0xFF) & 0xFF)) << 8 | (((SymVar_0 >> 48) & 0xFF) & 0xFF)) << 8 | (((SymVar_0 >> 40) & 0xFF) & 0xFF)) << 8 | (((SymVar_0 >> 32) & 0xFF) & 0xFF)) << 8 | (((SymVar_0 >> 24) & 0xFF) & 0xFF)) << 8 | (((SymVar_0 >> 16) & 0xFF) & 0xFF)) << 8 | (((SymVar_0 >> 8) & 0xFF) & 0xFF)) << 8 | ((SymVar_0 & 0xFF) & 0xFF))\r\n\r\n```\r\n\r\nBased on your have mentioned that creating a symbolic variable you should do it before the ir processing. For ```MOVSD```, INSERT_POINT.BEFORE and INSERT_POINT.BEFORE_SYMPROC doesn't follow the rule."}}
{"actor":{"display_login":"pfsun"}}