--- tags: decompiler --- # MWEs 1: 0-20 Note: - Python versions are selected based on the original pyc (Using command `file`) - MWEs generated will be compiled using `compileall` via the same python version ## Error 1/0 Source: [link](https://github.com/JohnathonNow/arrows-esolang/blob/edd3e353ef33d7c00478375e44ae824300c6ad2b/arrows_esolang/Util.py#L115) Python version: 3.7 Decompyle3: Compiles but incorrect output Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Fail | Pass | Pass | ### MWE: ```python= def is_at_turn(): return (x or z) and not y ``` #### Closest Solution: * Solution Type: Breaking down the logic ```python= def is_at_turn(): t1 = x or z return t1 and not y ``` ```c= 1 0 LOAD_CONST 0 (<code object is_at_turn at 0x7f051d0a0c00, file "main.py", line 1>) 2 LOAD_CONST 1 ('is_at_turn') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (is_at_turn) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object is_at_turn at 0x7f051d0a0c00, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (x) 2 JUMP_IF_TRUE_OR_POP 6 4 LOAD_GLOBAL 1 (z) >> 6 STORE_FAST 0 (t1) 3 8 LOAD_FAST 0 (t1) 10 JUMP_IF_FALSE_OR_POP 16 12 LOAD_GLOBAL 2 (y) 14 UNARY_NOT >> 16 RETURN_VALUE ``` #### MWE data Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object is_at_turn at 0x7fa5ce38ec00, file "main.py", line 1>) 2 LOAD_CONST 1 ('is_at_turn') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (is_at_turn) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object is_at_turn at 0x7fa5ce38ec00, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (x) 2 POP_JUMP_IF_TRUE 8 4 LOAD_GLOBAL 1 (z) 6 JUMP_IF_FALSE_OR_POP 12 >> 8 LOAD_GLOBAL 2 (y) 10 UNARY_NOT >> 12 RETURN_VALUE ``` Output uncompyle6: ```python= def is_at_turn--- This code section failed: --- L. 2 0 LOAD_GLOBAL x 2 POP_JUMP_IF_TRUE 8 'to 8' 4 LOAD_GLOBAL z 6 JUMP_IF_FALSE_OR_POP 12 'to 12' 8_0 COME_FROM 2 '2' 8 LOAD_GLOBAL y 10 UNARY_NOT 12_0 COME_FROM 6 '6' 12 RETURN_VALUE -1 RETURN_LAST Parse error at or near `None' instruction at offset -1 ``` Output Decompyle3: ```python= def is_at_turn(): if not x: return z and not y ``` ## Error 1/1 Source: [link](https://github.com/ArtellaPipe/artellapipe-libs-ffmpeg/blob/692ce4380a40a703141495c1c3b730425e0ee351/artellapipe/libs/ffmpeg/core/ffmpeglib.py#L47) Python version: 3.6 Decompyle3: Failed Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Pass/Incorrect | Pass/Incorrect | Fail | Pass | ### MWE: ```python= def get_file_input(): if input_file and x: if check_file_path: if a: return z else: return z else: print("foo") return None ``` #### Closest Solution: * Solution Type: Merging predicates ```python= def get_file_input(): if input_file and x: if check_file_path and a: # add and here to prevent nesting return z else: return z else: print("foo") return None ``` ```c= 1 0 LOAD_CONST 0 (<code object get_file_input at 0x7f9208fbdd20, file "main.py", line 1>) 2 LOAD_CONST 1 ('get_file_input') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (get_file_input) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of get_file_input: 2 0 LOAD_GLOBAL 0 (input_file) 2 POP_JUMP_IF_FALSE 26 4 LOAD_GLOBAL 1 (x) 6 POP_JUMP_IF_FALSE 26 3 8 LOAD_GLOBAL 2 (check_file_path) 10 POP_JUMP_IF_FALSE 20 12 LOAD_GLOBAL 3 (a) 14 POP_JUMP_IF_FALSE 20 4 16 LOAD_GLOBAL 4 (z) 18 RETURN_VALUE 6 >> 20 LOAD_GLOBAL 4 (z) 22 RETURN_VALUE 24 JUMP_FORWARD 8 (to 34) 8 >> 26 LOAD_GLOBAL 5 (print) 28 LOAD_CONST 1 ('foo') 30 CALL_FUNCTION 1 32 POP_TOP 9 >> 34 LOAD_CONST 0 (None) 36 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object get_file_input at 0x7f6696f7ad20, file "main.py", line 1>) 2 LOAD_CONST 1 ('get_file_input') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (get_file_input) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of get_file_input: 2 0 LOAD_GLOBAL 0 (input_file) 2 POP_JUMP_IF_FALSE 28 4 LOAD_GLOBAL 1 (x) 6 POP_JUMP_IF_FALSE 28 3 8 LOAD_GLOBAL 2 (check_file_path) 10 POP_JUMP_IF_FALSE 22 4 12 LOAD_GLOBAL 3 (a) 14 POP_JUMP_IF_FALSE 26 5 16 LOAD_GLOBAL 4 (z) 18 RETURN_VALUE 20 JUMP_ABSOLUTE 36 7 >> 22 LOAD_GLOBAL 4 (z) 24 RETURN_VALUE >> 26 JUMP_FORWARD 8 (to 36) 9 >> 28 LOAD_GLOBAL 5 (print) 30 LOAD_CONST 1 ('foo') 32 CALL_FUNCTION 1 34 POP_TOP 10 >> 36 LOAD_CONST 0 (None) 38 RETURN_VALUE ``` Output uncompyle6: ```python= def get_file_input--- This code section failed: --- L. 2 0 LOAD_GLOBAL input_file 2 POP_JUMP_IF_FALSE 28 'to 28' 4 LOAD_GLOBAL x 6 POP_JUMP_IF_FALSE 28 'to 28' L. 3 8 LOAD_GLOBAL check_file_path 10 POP_JUMP_IF_FALSE 22 'to 22' L. 4 12 LOAD_GLOBAL a 14 POP_JUMP_IF_FALSE 26 'to 26' L. 5 16 LOAD_GLOBAL z 18 RETURN_VALUE 20_0 COME_FROM 14 '14' 20 JUMP_ABSOLUTE 36 'to 36' 22 ELSE '26' L. 7 22 LOAD_GLOBAL z 24 RETURN_VALUE 26 JUMP_FORWARD 36 'to 36' 28_0 COME_FROM 2 '2' L. 9 28 LOAD_GLOBAL print 30 LOAD_STR 'foo' 32 CALL_FUNCTION_1 1 '1 positional argument' 34 POP_TOP 36_0 COME_FROM 26 '26' Parse error at or near `POP_TOP' instruction at offset 34 ``` Output Decompyle3: ```python= # Empty Unsupported Python version 3.6 test/1/1.pyc -- decompiled 0 files: 0 okay, 0 failed # Unsupported bytecode in file test/3/3.pyc # Unsupported Python version 3.6 ``` ## Error 1/2 - Duplicate Same as previous one - They are different by project version only but the code snippet is the same ## Error 1/3 Source: [link](https://github.com/ArtellaPipe/artellapipe-tools-outliner/blob/e2182f04513343f1d254efc0be67d044f630b8df/artellapipe/tools/outliner/widgets/baseoutliner.py#L95) Python version: 3.6 Decompyle3: Failed Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Pass | Pass | Fail | Pass | ### MWE: ```python= def _on_item_clicked(): for x in items(): if x: if is_modified: if not is_selected: deselect() else: deselect() else: select() ``` #### Closest Solution: Most solutions give incorrect solutions #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object _on_item_clicked at 0x7f88ea368d20, file "main.py", line 1>) 2 LOAD_CONST 1 ('_on_item_clicked') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_on_item_clicked) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of _on_item_clicked: 2 0 SETUP_LOOP 48 (to 50) 2 LOAD_GLOBAL 0 (items) 4 CALL_FUNCTION 0 6 GET_ITER >> 8 FOR_ITER 38 (to 48) 10 STORE_FAST 0 (x) 3 12 LOAD_FAST 0 (x) 14 POP_JUMP_IF_FALSE 40 4 16 LOAD_GLOBAL 1 (is_modified) 18 POP_JUMP_IF_FALSE 32 5 20 LOAD_GLOBAL 2 (is_selected) 22 POP_JUMP_IF_TRUE 38 6 24 LOAD_GLOBAL 3 (deselect) 26 CALL_FUNCTION 0 28 POP_TOP 30 JUMP_ABSOLUTE 46 8 >> 32 LOAD_GLOBAL 3 (deselect) 34 CALL_FUNCTION 0 36 POP_TOP >> 38 JUMP_ABSOLUTE 8 10 >> 40 LOAD_GLOBAL 4 (select) 42 CALL_FUNCTION 0 44 POP_TOP >> 46 JUMP_ABSOLUTE 8 >> 48 POP_BLOCK >> 50 LOAD_CONST 0 (None) 52 RETURN_VALUE ``` Output uncompyle6: ```python= def _on_item_clicked--- This code section failed: --- L. 2 0 SETUP_LOOP 50 'to 50' 2 LOAD_GLOBAL items 4 CALL_FUNCTION_0 0 '0 positional arguments' 6 GET_ITER 8 FOR_ITER 48 'to 48' 10 STORE_FAST 'x' L. 3 12 LOAD_FAST 'x' 14 POP_JUMP_IF_FALSE 40 'to 40' L. 4 16 LOAD_GLOBAL is_modified 18 POP_JUMP_IF_FALSE 32 'to 32' L. 5 20 LOAD_GLOBAL is_selected 22 POP_JUMP_IF_TRUE 38 'to 38' L. 6 24 LOAD_GLOBAL deselect 26 CALL_FUNCTION_0 0 '0 positional arguments' 28 POP_TOP 30 JUMP_ABSOLUTE 46 'to 46' 32 ELSE '38' L. 8 32 LOAD_GLOBAL deselect 34 CALL_FUNCTION_0 0 '0 positional arguments' 36 POP_TOP 38_0 COME_FROM 22 '22' 38 JUMP_BACK 8 'to 8' 40 ELSE '46' L. 10 40 LOAD_GLOBAL select 42 CALL_FUNCTION_0 0 '0 positional arguments' 44 POP_TOP 46 JUMP_BACK 8 'to 8' 48 POP_BLOCK 50_0 COME_FROM_LOOP 0 '0' Parse error at or near `ELSE' instruction at offset 40 ``` Output Decompyle3: ```python= # Empty Unsupported Python version 3.6 test/3/3.pyc -- decompiled 0 files: 0 okay, 0 failed # Unsupported bytecode in file test/3/3.pyc # Unsupported Python version 3.6 ``` ## Error 1/4 - Duplicate Same as previous one ## Error 1/5 Source: [link](https://svn.apache.org/repos/infra/infrastructure/trunk/projects/asfpy/asfpy/justone.py) Python version: 3.8 Decompyle3: Failed Uncompyle6: Failed Error: `Deparsing stopped due to parse error` MWE 1: | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Pass/Inefficient | Pass | Pass | MWE2: | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Pass | Pass | Pass | MWE3: | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Pass | Pass | Pass | ### MWE: #### MWE_1: ```python= def maybe_run(): try: temp = 1 except OSError as e: if e.errno == errno.ENOENT: return foo() ``` ##### Solution1: ```python= def maybe_run(): tmp = None try: temp = 1 except OSError as e: if e.errno == errno.ENOENT: tmp = foo() finally: pass if tmp: return tmp ``` ```c= 1 0 LOAD_CONST 0 (<code object maybe_run at 0x40021eea80, file "main.py", line 1>) 2 LOAD_CONST 1 ('maybe_run') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (maybe_run) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object maybe_run at 0x40021eea80, file "main.py", line 1>: 2 0 LOAD_CONST 0 (None) 2 STORE_FAST 0 (tmp) 3 4 SETUP_FINALLY 66 (to 72) 6 SETUP_FINALLY 8 (to 16) 4 8 LOAD_CONST 1 (1) 10 STORE_FAST 1 (temp) 12 POP_BLOCK 14 JUMP_FORWARD 52 (to 68) 5 >> 16 DUP_TOP 18 LOAD_GLOBAL 0 (OSError) 20 COMPARE_OP 10 (exception match) 22 POP_JUMP_IF_FALSE 66 24 POP_TOP 26 STORE_FAST 2 (e) 28 POP_TOP 30 SETUP_FINALLY 22 (to 54) 6 32 LOAD_FAST 2 (e) 34 LOAD_ATTR 1 (errno) 36 LOAD_GLOBAL 1 (errno) 38 LOAD_ATTR 2 (ENOENT) 40 COMPARE_OP 2 (==) 42 POP_JUMP_IF_FALSE 50 7 44 LOAD_GLOBAL 3 (foo) 46 CALL_FUNCTION 0 48 STORE_FAST 0 (tmp) >> 50 POP_BLOCK 52 BEGIN_FINALLY >> 54 LOAD_CONST 0 (None) 56 STORE_FAST 2 (e) 58 DELETE_FAST 2 (e) 60 END_FINALLY 62 POP_EXCEPT 64 JUMP_FORWARD 2 (to 68) >> 66 END_FINALLY >> 68 POP_BLOCK 70 BEGIN_FINALLY 9 >> 72 END_FINALLY 10 74 LOAD_FAST 0 (tmp) 76 POP_JUMP_IF_FALSE 82 78 LOAD_FAST 0 (tmp) 80 RETURN_VALUE >> 82 LOAD_CONST 0 (None) 84 RETURN_VALUE ``` ##### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object maybe_run at 0x7f72be38da80, file "main.py", line 1>) 2 LOAD_CONST 1 ('maybe_run') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (maybe_run) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object maybe_run at 0x7f72be38da80, file "main.py", line 1>: 2 0 SETUP_FINALLY 8 (to 10) 3 2 LOAD_CONST 1 (1) 4 STORE_FAST 0 (temp) 6 POP_BLOCK 8 JUMP_FORWARD 60 (to 70) 4 >> 10 DUP_TOP 12 LOAD_GLOBAL 0 (OSError) 14 COMPARE_OP 10 (exception match) 16 POP_JUMP_IF_FALSE 68 18 POP_TOP 20 STORE_FAST 1 (e) 22 POP_TOP 24 SETUP_FINALLY 30 (to 56) 5 26 LOAD_FAST 1 (e) 28 LOAD_ATTR 1 (errno) 30 LOAD_GLOBAL 1 (errno) 32 LOAD_ATTR 2 (ENOENT) 34 COMPARE_OP 2 (==) 36 POP_JUMP_IF_FALSE 52 6 38 LOAD_GLOBAL 3 (foo) 40 CALL_FUNCTION 0 42 ROT_FOUR 44 POP_BLOCK 46 POP_EXCEPT 48 CALL_FINALLY 6 (to 56) 50 RETURN_VALUE >> 52 POP_BLOCK 54 BEGIN_FINALLY >> 56 LOAD_CONST 0 (None) 58 STORE_FAST 1 (e) 60 DELETE_FAST 1 (e) 62 END_FINALLY 64 POP_EXCEPT 66 JUMP_FORWARD 2 (to 70) >> 68 END_FINALLY >> 70 LOAD_CONST 0 (None) 72 RETURN_VALUE ``` Output uncompyle6: ```python= def maybe_run--- This code section failed: --- L. 2 0 SETUP_FINALLY 10 'to 10' L. 3 2 LOAD_CONST 1 4 STORE_FAST 'temp' 6 POP_BLOCK 8 JUMP_FORWARD 70 'to 70' 10_0 COME_FROM_FINALLY 0 '0' L. 4 10 DUP_TOP 12 LOAD_GLOBAL OSError 14 COMPARE_OP exception-match 16 POP_JUMP_IF_FALSE 68 'to 68' 18 POP_TOP 20 STORE_FAST 'e' 22 POP_TOP 24 SETUP_FINALLY 56 'to 56' L. 5 26 LOAD_FAST 'e' 28 LOAD_ATTR errno 30 LOAD_GLOBAL errno 32 LOAD_ATTR ENOENT 34 COMPARE_OP == 36 POP_JUMP_IF_FALSE 52 'to 52' L. 6 38 LOAD_GLOBAL foo 40 CALL_FUNCTION_0 0 '' 42 ROT_FOUR 44 POP_BLOCK 46 POP_EXCEPT 48 CALL_FINALLY 56 'to 56' 50 RETURN_VALUE 52_0 COME_FROM 36 '36' 52 POP_BLOCK 54 BEGIN_FINALLY 56_0 COME_FROM 48 '48' 56_1 COME_FROM_FINALLY 24 '24' 56 LOAD_CONST None 58 STORE_FAST 'e' 60 DELETE_FAST 'e' 62 END_FINALLY 64 POP_EXCEPT 66 JUMP_FORWARD 70 'to 70' 68_0 COME_FROM 16 '16' 68 END_FINALLY 70_0 COME_FROM 66 '66' 70_1 COME_FROM 8 '8' Parse error at or near `POP_BLOCK' instruction at offset 44 ``` Output Decompyle3: ```python= Instruction context: L. 6 38 LOAD_GLOBAL foo 40 CALL_FUNCTION_0 0 '' 42 ROT_FOUR -> 44 POP_BLOCK 46 POP_EXCEPT 48 CALL_FINALLY 56 'to 56' 50 RETURN_VALUE 52_0 COME_FROM 36 '36' 52 POP_BLOCK 54 BEGIN_FINALLY 56_0 COME_FROM 48 '48' 56_1 COME_FROM_FINALLY 24 '24' 56 LOAD_CONST None 58 STORE_FAST 'e' 60 DELETE_FAST 'e' 62 END_FINALLY 64 POP_EXCEPT 66 JUMP_FORWARD 70 'to 70' 68_0 COME_FROM 16 '16' 68 END_FINALLY 70_0 COME_FROM 66 '66' test/main.pyc -- # decompile failed # file test/main.pyc # Deparsing stopped due to parse error ``` #### MWE_2: ```python= def _run_func(fifo_fname, func): with _temp_fifo(fifo_fname) as okay: return func() ``` ##### Solution2: ```python= def _run_func(fifo_fname, func): temp = None with _temp_fifo(fifo_fname) as okay: tmp = func() return tmp ``` ```c= 1 0 LOAD_CONST 0 (<code object _run_func at 0x40021aea80, file "main.py", line 1>) 2 LOAD_CONST 1 ('_run_func') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_run_func) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object _run_func at 0x40021aea80, file "main.py", line 1>: 2 0 LOAD_CONST 0 (None) 2 STORE_FAST 2 (temp) 3 4 LOAD_GLOBAL 0 (_temp_fifo) 6 LOAD_FAST 0 (fifo_fname) 8 CALL_FUNCTION 1 10 SETUP_WITH 12 (to 24) 12 STORE_FAST 3 (okay) 4 14 LOAD_FAST 1 (func) 16 CALL_FUNCTION 0 18 STORE_FAST 4 (tmp) 20 POP_BLOCK 22 BEGIN_FINALLY >> 24 WITH_CLEANUP_START 26 WITH_CLEANUP_FINISH 28 END_FINALLY 5 30 LOAD_FAST 4 (tmp) 32 RETURN_VALUE ``` ##### MWE data: Bytecode for MWE: ```c= 2 0 LOAD_CONST 0 (<code object _run_func at 0x7f1b809ecb30, file "main.py", line 2>) 2 LOAD_CONST 1 ('_run_func') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_run_func) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object _run_func at 0x7f1b809ecb30, file "main.py", line 2>: 3 0 LOAD_GLOBAL 0 (_temp_fifo) 2 LOAD_FAST 0 (fifo_fname) 4 CALL_FUNCTION 1 6 SETUP_WITH 20 (to 28) 8 STORE_FAST 2 (okay) 4 10 LOAD_FAST 1 (func) 12 CALL_FUNCTION 0 14 POP_BLOCK 16 ROT_TWO 18 BEGIN_FINALLY 20 WITH_CLEANUP_START 22 WITH_CLEANUP_FINISH 24 POP_FINALLY 0 26 RETURN_VALUE >> 28 WITH_CLEANUP_START 30 WITH_CLEANUP_FINISH 32 END_FINALLY 34 LOAD_CONST 0 (None) 36 RETURN_VALUE ``` Output uncompyle6: ```python= def _run_func--- This code section failed: --- L. 3 0 LOAD_GLOBAL _temp_fifo 2 LOAD_FAST 'fifo_fname' 4 CALL_FUNCTION_1 1 '' 6 SETUP_WITH 28 'to 28' 8 STORE_FAST 'okay' L. 4 10 LOAD_FAST 'func' 12 CALL_FUNCTION_0 0 '' 14 POP_BLOCK 16 ROT_TWO 18 BEGIN_FINALLY 20 WITH_CLEANUP_START 22 WITH_CLEANUP_FINISH 24 POP_FINALLY 0 '' 26 RETURN_VALUE 28_0 COME_FROM_WITH 6 '6' 28 WITH_CLEANUP_START 30 WITH_CLEANUP_FINISH 32 END_FINALLY Parse error at or near `ROT_TWO' instruction at offset 16 ``` Output Decompyle3: ```python= # Successfully decompiled ``` #### MWE_3: ```python= def _temp_fifo(fifo_fname): # Create the FIFO try: pass# os.mkfifo(fifo_fname) except: yield False # not okay return # stop iterating ``` ##### Solution3: ```python= def _temp_fifo(fifo_fname): # Create the FIFO try: pass# os.mkfifo(fifo_fname) except: tmp = False return tmp ``` ```c= 1 0 LOAD_CONST 0 (<code object _temp_fifo at 0x400236ea80, file "main.py", line 1>) 2 LOAD_CONST 1 ('_temp_fifo') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_temp_fifo) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object _temp_fifo at 0x400236ea80, file "main.py", line 1>: 3 0 SETUP_FINALLY 4 (to 6) 4 2 POP_BLOCK 4 JUMP_FORWARD 20 (to 26) 5 >> 6 POP_TOP 8 POP_TOP 10 POP_TOP 6 12 LOAD_CONST 1 (False) 14 STORE_FAST 1 (tmp) 7 16 LOAD_FAST 1 (tmp) 18 ROT_FOUR 20 POP_EXCEPT 22 RETURN_VALUE 24 END_FINALLY >> 26 LOAD_CONST 0 (None) 28 RETURN_VALUE ``` ##### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object _temp_fifo at 0x7f69e767b9d0, file "main.py", line 1>) 2 LOAD_CONST 1 ('_temp_fifo') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_temp_fifo) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object _temp_fifo at 0x7f69e767b9d0, file "main.py", line 1>: 3 0 SETUP_FINALLY 4 (to 6) 4 2 POP_BLOCK 4 JUMP_FORWARD 20 (to 26) 5 >> 6 POP_TOP 8 POP_TOP 10 POP_TOP 6 12 LOAD_CONST 1 (False) 14 YIELD_VALUE 16 POP_TOP 7 18 POP_EXCEPT 20 LOAD_CONST 0 (None) 22 RETURN_VALUE 24 END_FINALLY >> 26 LOAD_CONST 0 (None) 28 RETURN_VALUE ``` Output uncompyle6: ```python= def _temp_fifo--- This code section failed: --- L. 3 0 SETUP_FINALLY 6 'to 6' L. 4 2 POP_BLOCK 4 JUMP_FORWARD 26 'to 26' 6_0 COME_FROM_FINALLY 0 '0' L. 5 6 POP_TOP 8 POP_TOP 10 POP_TOP L. 6 12 LOAD_CONST False 14 YIELD_VALUE 16 POP_TOP L. 7 18 POP_EXCEPT 20 LOAD_CONST None 22 RETURN_VALUE 24 END_FINALLY 26_0 COME_FROM 4 '4' Parse error at or near `LOAD_CONST' instruction at offset 20 ``` Output Decompyle3: ```python= Instruction context: L. 7 18 POP_EXCEPT -> 20 LOAD_CONST None 22 RETURN_VALUE 24 END_FINALLY test/main.pyc -- # decompile failed # file test/main.pyc # Deparsing stopped due to parse error ``` ## Error 1/6 Source: [link](https://svn.apache.org/repos/infra/infrastructure/trunk/projects/asfpy/asfpy/ldap.py) Python version: 3.8 Decompyle3: Failed - Different part Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Pass | Pass | Pass | ### MWE: ```python= def nextUid(): try: return x except z: raise "errr" ``` #### Closest Solution: Unavailable. Changes control flow. Refer [link](https://hackmd.io/Pnoy0j14Qy2172yNDlYF2A?view#MWE-1) #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object nextUid at 0x40021aea80, file "main.py", line 1>) 2 LOAD_CONST 1 ('nextUid') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (nextUid) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object nextUid at 0x40021aea80, file "main.py", line 1>: 2 0 SETUP_FINALLY 6 (to 8) 3 2 LOAD_GLOBAL 0 (x) 4 POP_BLOCK 6 RETURN_VALUE 4 >> 8 DUP_TOP 10 LOAD_GLOBAL 1 (z) 12 COMPARE_OP 10 (exception match) 14 POP_JUMP_IF_FALSE 30 16 POP_TOP 18 POP_TOP 20 POP_TOP 5 22 LOAD_CONST 1 ('errr') 24 RAISE_VARARGS 1 26 POP_EXCEPT 28 JUMP_FORWARD 2 (to 32) >> 30 END_FINALLY >> 32 LOAD_CONST 0 (None) 34 RETURN_VALUE ``` Output uncompyle6: ```python= def nextUid--- This code section failed: --- L. 2 0 SETUP_FINALLY 8 'to 8' L. 3 2 LOAD_GLOBAL x 4 POP_BLOCK 6 RETURN_VALUE 8_0 COME_FROM_FINALLY 0 '0' L. 4 8 DUP_TOP 10 LOAD_GLOBAL z 12 COMPARE_OP exception-match 14 POP_JUMP_IF_FALSE 30 'to 30' 16 POP_TOP 18 POP_TOP 20 POP_TOP L. 5 22 LOAD_STR 'errr' 24 RAISE_VARARGS_1 1 'exception instance' 26 POP_EXCEPT 28 JUMP_FORWARD 32 'to 32' 30_0 COME_FROM 14 '14' 30 END_FINALLY 32_0 COME_FROM 28 '28' Parse error at or near `POP_TOP' instruction at offset 18 ``` Output Decompyle3: ```python= test/main.pyc -- # Successfully decompiled file ``` ## Error 1/7 Source: [link](https://svn.apache.org/repos/infra/infrastructure/trunk/projects/asfpy/asfpy/pubsub.py) Python version: 3.8 Decompyle3: Failed Uncompyle6: Failed Error: `Deparsing stopped due to parse error` MWE1: | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Pass | Pass | Pass | MWE2: | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Pass/Inefficient | Pass | Pass | ### MWE: #### MWE1: ```python= def attach(): while 1: try: self.connection = urllib.request.urlopen(self.url, None, 30) except: continue ``` ##### Solution 1: Control flow changes with changing except block. Refer [link](https://hackmd.io/Pnoy0j14Qy2172yNDlYF2A?view#MWE-1) ##### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object attach at 0x40021aea80, file "main.py", line 1>) 2 LOAD_CONST 1 ('attach') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (attach) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object attach at 0x40021aea80, file "main.py", line 1>: 3 >> 0 SETUP_FINALLY 24 (to 26) 4 2 LOAD_GLOBAL 0 (urllib) 4 LOAD_ATTR 1 (request) 6 LOAD_METHOD 2 (urlopen) 8 LOAD_GLOBAL 3 (self) 10 LOAD_ATTR 4 (url) 12 LOAD_CONST 0 (None) 14 LOAD_CONST 1 (30) 16 CALL_METHOD 3 18 LOAD_GLOBAL 3 (self) 20 STORE_ATTR 5 (connection) 22 POP_BLOCK 24 JUMP_ABSOLUTE 0 5 >> 26 POP_TOP 28 POP_TOP 30 POP_TOP 6 32 POP_EXCEPT 34 JUMP_ABSOLUTE 0 36 POP_EXCEPT 38 JUMP_ABSOLUTE 0 40 END_FINALLY 42 JUMP_ABSOLUTE 0 44 LOAD_CONST 0 (None) 46 RETURN_VALUE ``` Output uncompyle6: ```python= def attach--- This code section failed: --- L. 3 0 SETUP_FINALLY 26 'to 26' L. 4 2 LOAD_GLOBAL urllib 4 LOAD_ATTR request 6 LOAD_METHOD urlopen 8 LOAD_GLOBAL self 10 LOAD_ATTR url 12 LOAD_CONST None 14 LOAD_CONST 30 16 CALL_METHOD_3 3 '' 18 LOAD_GLOBAL self 20 STORE_ATTR connection 22 POP_BLOCK 24 JUMP_BACK 0 'to 0' 26_0 COME_FROM_FINALLY 0 '0' L. 5 26 POP_TOP 28 POP_TOP 30 POP_TOP L. 6 32 POP_EXCEPT 34 JUMP_BACK 0 'to 0' 36 POP_EXCEPT 38 JUMP_BACK 0 'to 0' 40 END_FINALLY 42 JUMP_BACK 0 'to 0' Parse error at or near `POP_EXCEPT' instruction at offset 36 ``` Output Decompyle3: ```python= Instruction context: L. 6 32 POP_EXCEPT -> 34 JUMP_BACK 0 'to 0' 36 POP_EXCEPT 38 JUMP_BACK 0 'to 0' 40 END_FINALLY test/main.pyc -- # decompile failed # file test/main.pyc # Deparsing stopped due to parse error ``` #### MWE2: ```python= def read_payload(self): while True: try: pass except Exception as info: break ``` ##### Solution2: ```python= def read_payload(self): while True: try: pass except: # remove exception type break ``` ```c= 1 0 LOAD_CONST 0 (<code object read_payload at 0x40021eea80, file "main.py", line 1>) 2 LOAD_CONST 1 ('read_payload') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (read_payload) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object read_payload at 0x40021eea80, file "main.py", line 1>: 3 >> 0 SETUP_FINALLY 4 (to 6) 4 2 POP_BLOCK 4 JUMP_ABSOLUTE 0 5 >> 6 POP_TOP 8 POP_TOP 10 POP_TOP 6 12 POP_EXCEPT 14 JUMP_ABSOLUTE 24 16 POP_EXCEPT 18 JUMP_ABSOLUTE 0 20 END_FINALLY 22 JUMP_ABSOLUTE 0 >> 24 LOAD_CONST 0 (None) 26 RETURN_VALUE ``` ##### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object read_payload at 0x40021aebe0, file "main.py", line 1>) 2 LOAD_CONST 1 ('read_payload') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (read_payload) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object read_payload at 0x40021aebe0, file "main.py", line 1>: 3 >> 0 SETUP_FINALLY 4 (to 6) 4 2 POP_BLOCK 4 JUMP_ABSOLUTE 0 5 >> 6 DUP_TOP 8 LOAD_GLOBAL 0 (Exception) 10 COMPARE_OP 10 (exception match) 12 POP_JUMP_IF_FALSE 46 14 POP_TOP 16 STORE_FAST 1 (info) 18 POP_TOP 20 SETUP_FINALLY 12 (to 34) 6 22 POP_BLOCK 24 POP_EXCEPT 26 CALL_FINALLY 6 (to 34) 28 JUMP_ABSOLUTE 50 30 POP_BLOCK 32 BEGIN_FINALLY >> 34 LOAD_CONST 0 (None) 36 STORE_FAST 1 (info) 38 DELETE_FAST 1 (info) 40 END_FINALLY 42 POP_EXCEPT 44 JUMP_ABSOLUTE 0 >> 46 END_FINALLY 48 JUMP_ABSOLUTE 0 >> 50 LOAD_CONST 0 (None) 52 RETURN_VALUE ``` Output uncompyle6: ```python= def read_payload--- This code section failed: --- L. 3 0 SETUP_FINALLY 6 'to 6' L. 4 2 POP_BLOCK 4 JUMP_BACK 0 'to 0' 6_0 COME_FROM_FINALLY 0 '0' L. 5 6 DUP_TOP 8 LOAD_GLOBAL Exception 10 COMPARE_OP exception-match 12 POP_JUMP_IF_FALSE 46 'to 46' 14 POP_TOP 16 STORE_FAST 'info' 18 POP_TOP 20 SETUP_FINALLY 34 'to 34' L. 6 22 POP_BLOCK 24 POP_EXCEPT 26 CALL_FINALLY 34 'to 34' 28 BREAK_LOOP 50 'to 50' 30 POP_BLOCK 32 BEGIN_FINALLY 34_0 COME_FROM 26 '26' 34_1 COME_FROM_FINALLY 20 '20' 34 LOAD_CONST None 36 STORE_FAST 'info' 38 DELETE_FAST 'info' 40 END_FINALLY 42 POP_EXCEPT 44 JUMP_BACK 0 'to 0' 46_0 COME_FROM 12 '12' 46 END_FINALLY 48 JUMP_BACK 0 'to 0' Parse error at or near `CALL_FINALLY' instruction at offset 26 ``` Output Decompyle3: ```python= Instruction context: L. 6 22 POP_BLOCK 24 POP_EXCEPT 26 CALL_FINALLY 34 'to 34' -> 28 JUMP_FORWARD 50 'to 50' 30 POP_BLOCK 32 BEGIN_FINALLY 34_0 COME_FROM 26 '26' 34_1 COME_FROM_FINALLY 20 '20' 34 LOAD_CONST None 36 STORE_FAST 'info' 38 DELETE_FAST 'info' 40 END_FINALLY 42 POP_EXCEPT 44 JUMP_BACK 0 'to 0' 46_0 COME_FROM 12 '12' 46 END_FINALLY 48 JUMP_BACK 0 'to 0' test/main.pyc -- # decompile failed # file test/main.pyc # Deparsing stopped due to parse error ``` ## Error 1/8 Source: [link](https://github.com/eteq/astropysics/blob/3d8fa228f84700d5e45e4a5273b88f4e2d3dd5c7/astropysics/external/configobj.py#L582) Python version: 2.7 Decompyle3: Unsupported Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Pass | Pass | Pass/Incorrect | Fail | ### MWE: ```python= def __setitem__(self, key, value, unrepr=False): if not self.main.stringify: if a: pass elif b: x= 1 else: x= 2 ``` #### Closest Solution: ```python= def __setitem__(self, key, value, unrepr=False): if not self.main.stringify: if a: x= x # Add instruction before pass pass elif b: x= 1 else: x= 2 ``` ```c= 1 0 LOAD_NAME 0 (False) 3 LOAD_CONST 0 (<code object __setitem__ at 0x400203c530, file "main.py", line 1>) 6 MAKE_FUNCTION 1 9 STORE_NAME 1 (__setitem__) 12 LOAD_CONST 1 (None) 15 RETURN_VALUE Disassembly of __setitem__: 2 0 LOAD_FAST 0 (self) 3 LOAD_ATTR 0 (main) 6 LOAD_ATTR 1 (stringify) 9 POP_JUMP_IF_TRUE 51 3 12 LOAD_GLOBAL 2 (a) 15 POP_JUMP_IF_FALSE 27 4 18 LOAD_FAST 4 (x) 21 STORE_FAST 4 (x) 5 24 JUMP_ABSOLUTE 51 6 >> 27 LOAD_GLOBAL 3 (b) 30 POP_JUMP_IF_FALSE 42 7 33 LOAD_CONST 1 (1) 36 STORE_FAST 4 (x) 39 JUMP_ABSOLUTE 51 9 >> 42 LOAD_CONST 2 (2) 45 STORE_FAST 4 (x) 48 JUMP_FORWARD 0 (to 51) >> 51 LOAD_CONST 0 (None) 54 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_NAME 0 (False) 3 LOAD_CONST 0 (<code object __setitem__ at 0x400203c530, file "main.py", line 1>) 6 MAKE_FUNCTION 1 9 STORE_NAME 1 (__setitem__) 12 LOAD_CONST 1 (None) 15 RETURN_VALUE Disassembly of __setitem__: 2 0 LOAD_FAST 0 (self) 3 LOAD_ATTR 0 (main) 6 LOAD_ATTR 1 (stringify) 9 POP_JUMP_IF_TRUE 45 3 12 LOAD_GLOBAL 2 (a) 15 POP_JUMP_IF_FALSE 21 4 18 JUMP_ABSOLUTE 45 5 >> 21 LOAD_GLOBAL 3 (b) 24 POP_JUMP_IF_FALSE 36 6 27 LOAD_CONST 1 (1) 30 STORE_FAST 4 (x) 33 JUMP_ABSOLUTE 45 8 >> 36 LOAD_CONST 2 (2) 39 STORE_FAST 4 (x) 42 JUMP_FORWARD 0 (to 45) >> 45 LOAD_CONST 0 (None) 48 RETURN_VALUE ``` Output uncompyle6: ```python= def __setitem__--- This code section failed: --- L. 2 0 LOAD_FAST 0 'self' 3 LOAD_ATTR 0 'main' 6 LOAD_ATTR 1 'stringify' 9 POP_JUMP_IF_TRUE 45 'to 45' L. 3 12 LOAD_GLOBAL 2 'a' 15_0 COME_FROM 9 '9' 15 POP_JUMP_IF_FALSE 21 'to 21' L. 4 18 JUMP_ABSOLUTE 45 'to 45' L. 5 21 LOAD_GLOBAL 3 'b' 24 POP_JUMP_IF_FALSE 36 'to 36' L. 6 27 LOAD_CONST 1 30 STORE_FAST 4 'x' 33 JUMP_ABSOLUTE 45 'to 45' L. 8 36 LOAD_CONST 2 39 STORE_FAST 4 'x' 42 JUMP_FORWARD 0 'to 45' 45_0 COME_FROM 42 '42' Parse error at or near `JUMP_ABSOLUTE' instruction at offset 18 ``` Output Decompyle3: ```python= Traceback (most recent call last): File "/usr/local/bin/decompyle3", line 5, in <module> from decompyle3.bin.decompile import main_bin File "/usr/local/lib/python2.7/site-packages/decompyle3/__init__.py", line 39 PYTHON_VERSION: float = sys.version_info[0] + (sys.version_info[1] / 10.0) ^ SyntaxError: invalid syntax ``` ## Error 1/9 Source: [link](https://github.com/eteq/astropysics/blob/3d8fa228f84700d5e45e4a5273b88f4e2d3dd5c7/astropysics/objcat.py#L1201) Python version: 2.7 Decompyle3: Unsupported Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Pass | Pass | Pass/Incorrect | Fail | ### MWE: ```python= def _checkConvInVal(self, key, value, unrepr=False): if not self.main.stringify: if a: pass elif b: x= 1 else: x= 2 ``` #### Closest Solution: ```python= def _checkConvInVal(self, key, value, unrepr=False): if not self.main.stringify: if a: x= x # Add instruction before pass pass elif b: x= 1 else: x= 2 ``` ```c= 1 0 LOAD_NAME 0 (False) 3 LOAD_CONST 0 (<code object _checkConvInVal at 0x400203c530, file "main.py", line 1>) 6 MAKE_FUNCTION 1 9 STORE_NAME 1 (_checkConvInVal) 12 LOAD_CONST 1 (None) 15 RETURN_VALUE Disassembly of _checkConvInVal: 2 0 LOAD_FAST 0 (self) 3 LOAD_ATTR 0 (main) 6 LOAD_ATTR 1 (stringify) 9 POP_JUMP_IF_TRUE 51 3 12 LOAD_GLOBAL 2 (a) 15 POP_JUMP_IF_FALSE 27 4 18 LOAD_FAST 4 (x) 21 STORE_FAST 4 (x) 5 24 JUMP_ABSOLUTE 51 6 >> 27 LOAD_GLOBAL 3 (b) 30 POP_JUMP_IF_FALSE 42 7 33 LOAD_CONST 1 (1) 36 STORE_FAST 4 (x) 39 JUMP_ABSOLUTE 51 9 >> 42 LOAD_CONST 2 (2) 45 STORE_FAST 4 (x) 48 JUMP_FORWARD 0 (to 51) >> 51 LOAD_CONST 0 (None) 54 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_NAME 0 (False) 3 LOAD_CONST 0 (<code object _checkConvInVal at 0x400203c530, file "main.py", line 1>) 6 MAKE_FUNCTION 1 9 STORE_NAME 1 (_checkConvInVal) 12 LOAD_CONST 1 (None) 15 RETURN_VALUE Disassembly of _checkConvInVal: 2 0 LOAD_FAST 0 (self) 3 LOAD_ATTR 0 (main) 6 LOAD_ATTR 1 (stringify) 9 POP_JUMP_IF_TRUE 45 3 12 LOAD_GLOBAL 2 (a) 15 POP_JUMP_IF_FALSE 21 4 18 JUMP_ABSOLUTE 45 5 >> 21 LOAD_GLOBAL 3 (b) 24 POP_JUMP_IF_FALSE 36 6 27 LOAD_CONST 1 (1) 30 STORE_FAST 4 (x) 33 JUMP_ABSOLUTE 45 8 >> 36 LOAD_CONST 2 (2) 39 STORE_FAST 4 (x) 42 JUMP_FORWARD 0 (to 45) >> 45 LOAD_CONST 0 (None) 48 RETURN_VALUE ``` Output uncompyle6: ```python= def _checkConvInVal--- This code section failed: --- L. 2 0 LOAD_FAST 0 'self' 3 LOAD_ATTR 0 'main' 6 LOAD_ATTR 1 'stringify' 9 POP_JUMP_IF_TRUE 45 'to 45' L. 3 12 LOAD_GLOBAL 2 'a' 15_0 COME_FROM 9 '9' 15 POP_JUMP_IF_FALSE 21 'to 21' L. 4 18 JUMP_ABSOLUTE 45 'to 45' L. 5 21 LOAD_GLOBAL 3 'b' 24 POP_JUMP_IF_FALSE 36 'to 36' L. 6 27 LOAD_CONST 1 30 STORE_FAST 4 'x' 33 JUMP_ABSOLUTE 45 'to 45' L. 8 36 LOAD_CONST 2 39 STORE_FAST 4 'x' 42 JUMP_FORWARD 0 'to 45' 45_0 COME_FROM 42 '42' Parse error at or near `JUMP_ABSOLUTE' instruction at offset 18 ``` Output Decompyle3: ```python= Traceback (most recent call last): File "/usr/local/bin/decompyle3", line 5, in <module> from decompyle3.bin.decompile import main_bin File "/usr/local/lib/python2.7/site-packages/decompyle3/__init__.py", line 39 PYTHON_VERSION: float = sys.version_info[0] + (sys.version_info[1] / 10.0) ^ SyntaxError: invalid syntax ``` ## Error 1/10 Source: [link](https://github.com/davisyoshida/asyncbots/blob/c35bbccc7b9f13dc6acf970d2413922215f2dd90/asyncbots/events.py#L4) Python version: 3.7 Decompyle3: Successful Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Fail | Pass | Pass | ### MWE: ```python= def is_message(event, no_channel=False): return ( a and (e or c is d) and z) ``` #### Closest Solution: ```python= def is_message(event, no_channel=False): if not a: return False if not z: return False if not (e or c is d): return False return True ``` ```c= 1 0 LOAD_CONST 4 ((False,)) 2 LOAD_CONST 1 (<code object is_message at 0x40022aee40, file "main.py", line 1>) 4 LOAD_CONST 2 ('is_message') 6 MAKE_FUNCTION 1 8 STORE_NAME 0 (is_message) 10 LOAD_CONST 3 (None) 12 RETURN_VALUE Disassembly of <code object is_message at 0x40022aee40, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (a) 2 POP_JUMP_IF_TRUE 8 3 4 LOAD_CONST 1 (False) 6 RETURN_VALUE 4 >> 8 LOAD_GLOBAL 1 (z) 10 POP_JUMP_IF_TRUE 16 5 12 LOAD_CONST 1 (False) 14 RETURN_VALUE 6 >> 16 LOAD_GLOBAL 2 (e) 18 POP_JUMP_IF_TRUE 32 20 LOAD_GLOBAL 3 (c) 22 LOAD_GLOBAL 4 (d) 24 COMPARE_OP 8 (is) 26 POP_JUMP_IF_TRUE 32 7 28 LOAD_CONST 1 (False) 30 RETURN_VALUE 8 >> 32 LOAD_CONST 2 (True) 34 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 4 ((False,)) 2 LOAD_CONST 1 (<code object is_message at 0x40022aee40, file "main.py", line 1>) 4 LOAD_CONST 2 ('is_message') 6 MAKE_FUNCTION 1 8 STORE_NAME 0 (is_message) 10 LOAD_CONST 3 (None) 12 RETURN_VALUE Disassembly of <code object is_message at 0x40022aee40, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (a) 2 JUMP_IF_FALSE_OR_POP 18 3 4 LOAD_GLOBAL 1 (e) 6 POP_JUMP_IF_TRUE 16 8 LOAD_GLOBAL 2 (c) 10 LOAD_GLOBAL 3 (d) 12 COMPARE_OP 8 (is) 14 JUMP_IF_FALSE_OR_POP 18 4 >> 16 LOAD_GLOBAL 4 (z) >> 18 RETURN_VALUE ``` Output uncompyle6: ```python= def is_message--- This code section failed: --- L. 2 0 LOAD_GLOBAL a 2 JUMP_IF_FALSE_OR_POP 18 'to 18' L. 3 4 LOAD_GLOBAL e 6 POP_JUMP_IF_TRUE 16 'to 16' 8 LOAD_GLOBAL c 10 LOAD_GLOBAL d 12 COMPARE_OP is 14 JUMP_IF_FALSE_OR_POP 18 'to 18' 16_0 COME_FROM 6 '6' L. 4 16 LOAD_GLOBAL z 18_0 COME_FROM 14 '14' 18_1 COME_FROM 2 '2' 18 RETURN_VALUE -1 RETURN_LAST Parse error at or near `COME_FROM' instruction at offset 18_1 ``` Output Decompyle3: ```python= def is_message(event, no_channel=False): if a and not e: return c is d and z ``` ## Error 1/11 Source: [link](https://github.com/Fuyukai/asyncqlio/blob/9bdb49076dea14730ec39e6d033061d6bccc016c/asyncqlio/orm/query.py#L126) Python version: 3.6 Decompyle3: Unsupported Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Pass/Incorrect | Pass | Fail | Incompatible | ### MWE: ```python= async def flatten(self): l = [] async for result in self: l.append(result) return l ``` #### Closest Solution: No solution #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object flatten at 0x4002216c90, file "main.py", line 1>) 2 LOAD_CONST 1 ('flatten') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (flatten) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of flatten: 2 0 BUILD_LIST 0 2 STORE_FAST 1 (l) 3 4 SETUP_LOOP 56 (to 62) 6 LOAD_FAST 0 (self) 8 GET_AITER 10 LOAD_CONST 0 (None) 12 YIELD_FROM >> 14 SETUP_EXCEPT 12 (to 28) 16 GET_ANEXT 18 LOAD_CONST 0 (None) 20 YIELD_FROM 22 STORE_FAST 2 (result) 24 POP_BLOCK 26 JUMP_FORWARD 10 (to 38) >> 28 DUP_TOP 30 LOAD_GLOBAL 0 (StopAsyncIteration) 32 COMPARE_OP 10 (exception match) 34 POP_JUMP_IF_TRUE 50 36 END_FINALLY 4 >> 38 LOAD_FAST 1 (l) 40 LOAD_ATTR 1 (append) 42 LOAD_FAST 2 (result) 44 CALL_FUNCTION 1 46 POP_TOP 48 JUMP_ABSOLUTE 14 >> 50 POP_TOP 52 POP_TOP 54 POP_TOP 56 POP_EXCEPT 58 POP_TOP 60 POP_BLOCK 5 >> 62 LOAD_FAST 1 (l) 64 RETURN_VALUE ``` Output uncompyle6: ```python= async def flatten--- This code section failed: --- L. 2 0 BUILD_LIST_0 0 2 STORE_FAST 'l' L. 3 4 SETUP_LOOP 62 'to 62' 6 LOAD_FAST 'self' 8 GET_AITER 10 LOAD_CONST None 12 YIELD_FROM 14 SETUP_EXCEPT 28 'to 28' 16 GET_ANEXT 18 LOAD_CONST None 20 YIELD_FROM 22 STORE_FAST 'result' 24 POP_BLOCK 26 JUMP_FORWARD 38 'to 38' 28_0 COME_FROM_EXCEPT 14 '14' 28 DUP_TOP 30 LOAD_GLOBAL StopAsyncIteration 32 COMPARE_OP exception-match 34 POP_JUMP_IF_TRUE 50 'to 50' 36 END_FINALLY 38_0 COME_FROM 26 '26' L. 4 38 LOAD_FAST 'l' 40 LOAD_ATTR append 42 LOAD_FAST 'result' 44 CALL_FUNCTION_1 1 '1 positional argument' 46 POP_TOP 48 JUMP_BACK 14 'to 14' 50_0 COME_FROM 34 '34' 50 POP_TOP 52 POP_TOP 54 POP_TOP 56 POP_EXCEPT 58 POP_TOP 60 POP_BLOCK 62_0 COME_FROM_LOOP 4 '4' L. 5 62 LOAD_FAST 'l' 64 RETURN_VALUE -1 RETURN_LAST Parse error at or near `POP_JUMP_IF_TRUE' instruction at offset 34 ``` Output Decompyle3: ```python= Error: decompyle3 requires Python 3.7-3.8 ``` ## Error 1/12 Source: N/A (need to download from [here](https://pypi.org/project/AsyncSpider/#files)) Python version: 3.6 Decompyle3: Failed Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Pass | Fail | Incompatible | ### MWE: ```python= async def fetch(self, method, url, **kwargs): async with self._session.request(method, url, **kwargs) as resp: return await Response.from_client_response(resp) ``` #### Closest Solution: No solution. #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object fetch at 0x4002216c90, file "main.py", line 1>) 2 LOAD_CONST 1 ('fetch') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (fetch) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of fetch: 2 0 LOAD_FAST 0 (self) 2 LOAD_ATTR 0 (_session) 4 LOAD_ATTR 1 (request) 6 LOAD_FAST 1 (method) 8 LOAD_FAST 2 (url) 10 BUILD_TUPLE 2 12 LOAD_FAST 3 (kwargs) 14 CALL_FUNCTION_EX 1 16 BEFORE_ASYNC_WITH 18 GET_AWAITABLE 20 LOAD_CONST 0 (None) 22 YIELD_FROM 24 SETUP_ASYNC_WITH 18 (to 44) 26 STORE_FAST 4 (resp) 3 28 LOAD_GLOBAL 2 (Response) 30 LOAD_ATTR 3 (from_client_response) 32 LOAD_FAST 4 (resp) 34 CALL_FUNCTION 1 36 GET_AWAITABLE 38 LOAD_CONST 0 (None) 40 YIELD_FROM 42 RETURN_VALUE >> 44 WITH_CLEANUP_START 46 GET_AWAITABLE 48 LOAD_CONST 0 (None) 50 YIELD_FROM 52 WITH_CLEANUP_FINISH 54 END_FINALLY 56 LOAD_CONST 0 (None) 58 RETURN_VALUE ``` Output uncompyle6: ```python= async def fetch--- This code section failed: --- L. 2 0 LOAD_FAST 'self' 2 LOAD_ATTR _session 4 LOAD_ATTR request 6 LOAD_FAST 'method' 8 LOAD_FAST 'url' 10 BUILD_TUPLE_2 2 12 LOAD_FAST 'kwargs' 14 CALL_FUNCTION_EX_KW 1 'keyword and positional arguments' 16 BEFORE_ASYNC_WITH 18 GET_AWAITABLE 20 LOAD_CONST None 22 YIELD_FROM 24 SETUP_ASYNC_WITH 44 'to 44' 26 STORE_FAST 'resp' L. 3 28 LOAD_GLOBAL Response 30 LOAD_ATTR from_client_response 32 LOAD_FAST 'resp' 34 CALL_FUNCTION_1 1 '1 positional argument' 36 GET_AWAITABLE 38 LOAD_CONST None 40 YIELD_FROM 42 RETURN_VALUE 44_0 COME_FROM_ASYNC_WITH 24 '24' 44 WITH_CLEANUP_START 46 GET_AWAITABLE 48 LOAD_CONST None 50 YIELD_FROM 52 WITH_CLEANUP_FINISH 54 END_FINALLY Parse error at or near `COME_FROM_ASYNC_WITH' instruction at offset 44_0 ``` Output Decompyle3: ```python= Error: decompyle3 requires Python 3.7-3.8 ``` ## Error 1/13 Source: N/A (need to download from [here](https://pypi.org/project/AsyncSpider/#files)) Python version: 3.6 Decompyle3: Failed Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Fail | Fail | Incompatible | ### MWE: ```python= async def _drive(self, action): async for obj in action: if obj is None: pass ``` #### Closest Solution: ```python= async def _drive(self, action): async for obj in action: pass ``` ```c= 1 0 LOAD_CONST 0 (<code object _drive at 0x4002216c90, file "main.py", line 1>) 2 LOAD_CONST 1 ('_drive') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_drive) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of _drive: 2 0 SETUP_LOOP 46 (to 48) 2 LOAD_FAST 1 (action) 4 GET_AITER 6 LOAD_CONST 0 (None) 8 YIELD_FROM >> 10 SETUP_EXCEPT 12 (to 24) 12 GET_ANEXT 14 LOAD_CONST 0 (None) 16 YIELD_FROM 18 STORE_FAST 2 (obj) 20 POP_BLOCK 22 JUMP_ABSOLUTE 10 >> 24 DUP_TOP 26 LOAD_GLOBAL 0 (StopAsyncIteration) 28 COMPARE_OP 10 (exception match) 30 POP_JUMP_IF_TRUE 36 32 END_FINALLY 3 34 JUMP_ABSOLUTE 10 >> 36 POP_TOP 38 POP_TOP 40 POP_TOP 42 POP_EXCEPT 44 POP_TOP 46 POP_BLOCK >> 48 LOAD_CONST 0 (None) 50 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object _drive at 0x4002216c90, file "main.py", line 1>) 2 LOAD_CONST 1 ('_drive') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_drive) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of _drive: 2 0 SETUP_LOOP 54 (to 56) 2 LOAD_FAST 1 (action) 4 GET_AITER 6 LOAD_CONST 0 (None) 8 YIELD_FROM >> 10 SETUP_EXCEPT 12 (to 24) 12 GET_ANEXT 14 LOAD_CONST 0 (None) 16 YIELD_FROM 18 STORE_FAST 2 (obj) 20 POP_BLOCK 22 JUMP_FORWARD 10 (to 34) >> 24 DUP_TOP 26 LOAD_GLOBAL 0 (StopAsyncIteration) 28 COMPARE_OP 10 (exception match) 30 POP_JUMP_IF_TRUE 44 32 END_FINALLY 3 >> 34 LOAD_FAST 2 (obj) 36 LOAD_CONST 0 (None) 38 COMPARE_OP 8 (is) 40 POP_JUMP_IF_FALSE 10 4 42 JUMP_ABSOLUTE 10 >> 44 POP_TOP 46 POP_TOP 48 POP_TOP 50 POP_EXCEPT 52 POP_TOP 54 POP_BLOCK >> 56 LOAD_CONST 0 (None) 58 RETURN_VALUE ``` Output uncompyle6: ```python= async def _drive--- This code section failed: --- L. 2 0 SETUP_LOOP 56 'to 56' 2 LOAD_FAST 'action' 4 GET_AITER 6 LOAD_CONST None 8 YIELD_FROM 10 SETUP_EXCEPT 24 'to 24' 12 GET_ANEXT 14 LOAD_CONST None 16 YIELD_FROM 18 STORE_FAST 'obj' 20 POP_BLOCK 22 JUMP_FORWARD 34 'to 34' 24_0 COME_FROM_EXCEPT 10 '10' 24 DUP_TOP 26 LOAD_GLOBAL StopAsyncIteration 28 COMPARE_OP exception-match 30 POP_JUMP_IF_TRUE 44 'to 44' 32 END_FINALLY 34_0 COME_FROM 22 '22' L. 3 34 LOAD_FAST 'obj' 36 LOAD_CONST None 38 COMPARE_OP is 40 POP_JUMP_IF_FALSE 10 'to 10' L. 4 42 CONTINUE 10 'to 10' 44_0 COME_FROM 30 '30' 44 POP_TOP 46 POP_TOP 48 POP_TOP 50 POP_EXCEPT 52 POP_TOP 54 POP_BLOCK 56_0 COME_FROM_LOOP 0 '0' Parse error at or near `None' instruction at offset -1 ``` Output Decompyle3: ```python= Error: decompyle3 requires Python 3.7-3.8 ``` ## Error 1/14 Source: [link](https://github.com/PendragonLore/async_pokepy/blob/9982505fbc360eae349086bfa8f6faad0133f5fa/async_pokepy/utils.py#L65) Python version: 3.5 Decompyle3: Failed Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Pass | Pass | Pass | Incompatible | ### MWE: ```python= def outer(func): print("hello") async def inner(query: Union[int, str]): val = await func(query) return val ``` #### Closest Solution: Annotations [ref](https://stackoverflow.com/questions/54962869/function-parameter-with-colon) ```python= def outer(func): print("hello") async def inner(query): # Annotations can be ignored val = await func(query) return val ``` ```c= 1 0 LOAD_CONST 0 (<code object outer at 0x400231b9c0, file "main.py", line 1>) 3 LOAD_CONST 1 ('outer') 6 MAKE_FUNCTION 0 9 STORE_NAME 0 (outer) 12 LOAD_CONST 2 (None) 15 RETURN_VALUE Disassembly of outer: 2 0 LOAD_GLOBAL 0 (print) 3 LOAD_CONST 1 ('hello') 6 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 9 POP_TOP 3 10 LOAD_CLOSURE 0 (func) 13 BUILD_TUPLE 1 16 LOAD_CONST 2 (<code object inner at 0x40022aded0, file "main.py", line 3>) 19 LOAD_CONST 3 ('outer.<locals>.inner') 22 MAKE_CLOSURE 0 25 STORE_FAST 1 (inner) 28 LOAD_CONST 0 (None) 31 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object outer at 0x400231b9c0, file "main.py", line 1>) 3 LOAD_CONST 1 ('outer') 6 MAKE_FUNCTION 0 9 STORE_NAME 0 (outer) 12 LOAD_CONST 2 (None) 15 RETURN_VALUE Disassembly of outer: 2 0 LOAD_GLOBAL 0 (print) 3 LOAD_CONST 1 ('hello') 6 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 9 POP_TOP 3 10 LOAD_GLOBAL 1 (Union) 13 LOAD_GLOBAL 2 (int) 16 LOAD_GLOBAL 3 (str) 19 BUILD_TUPLE 2 22 BINARY_SUBSCR 23 LOAD_CONST 2 (('query',)) 26 LOAD_CLOSURE 0 (func) 29 BUILD_TUPLE 1 32 LOAD_CONST 3 (<code object inner at 0x40022aded0, file "main.py", line 3>) 35 LOAD_CONST 4 ('outer.<locals>.inner') 38 EXTENDED_ARG 2 41 MAKE_CLOSURE 131072 44 STORE_FAST 1 (inner) 47 LOAD_CONST 0 (None) 50 RETURN_VALUE ``` Output uncompyle6: ```python= def outer--- This code section failed: --- L. 2 0 LOAD_GLOBAL print 3 LOAD_STR 'hello' 6 CALL_FUNCTION_1 1 '1 positional, 0 named' 9 POP_TOP L. 3 10 LOAD_GLOBAL Union 13 LOAD_GLOBAL int 16 LOAD_GLOBAL str 19 BUILD_TUPLE_2 2 22 BINARY_SUBSCR 23 LOAD_CONST ('query',) 26 LOAD_CLOSURE 'func' 29 BUILD_TUPLE_1 1 32 LOAD_CODE <code_object inner> 35 LOAD_STR 'outer.<locals>.inner' 38 MAKE_CLOSURE_A_2_0 '0 positional, 0 keyword only, 2 annotated' 44 STORE_FAST 'inner' Parse error at or near `LOAD_CODE' instruction at offset 32 ``` Output Decompyle3: ```python= Traceback (most recent call last): File "/usr/local/bin/decompyle3", line 5, in <module> from decompyle3.bin.decompile import main_bin File "/usr/local/lib/python3.5/site-packages/decompyle3/__init__.py", line 39 PYTHON_VERSION: float = sys.version_info[0] + (sys.version_info[1] / 10.0) ^ SyntaxError: invalid syntax ``` ## Error 1/15 Source: [link](https://github.com/hixan/av_slice/blob/d33644984739992eb8760f9fdb5103c6e7f614a2/av_slice/video.py#L6) Python version: 3.7 Decompyle3: Failed Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Fail | Fail | Pass | ### MWE: ```python= def remove_sections(): return x for start in sections: pass ``` #### Closest Solution: ```python= def remove_sections(): return x ``` ```c= 1 0 LOAD_CONST 0 (<code object remove_sections at 0x40022eee40, file "main.py", line 1>) 2 LOAD_CONST 1 ('remove_sections') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (remove_sections) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object remove_sections at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (x) 2 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object remove_sections at 0x40022eee40, file "main.py", line 1>) 2 LOAD_CONST 1 ('remove_sections') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (remove_sections) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object remove_sections at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (x) 2 RETURN_VALUE 3 >> 4 FOR_ITER 4 (to 10) 6 STORE_FAST 0 (start) 4 8 JUMP_ABSOLUTE 4 >> 10 POP_BLOCK 12 LOAD_CONST 0 (None) 14 RETURN_VALUE ``` Output uncompyle6: ```python= def remove_sections--- This code section failed: --- L. 2 0 LOAD_GLOBAL x 2 RETURN_VALUE L. 3 4 FOR_ITER 10 'to 10' 6 STORE_FAST 'start' L. 4 8 JUMP_BACK 4 'to 4' 10 POP_BLOCK Parse error at or near `FOR_ITER' instruction at offset 4 ``` Output Decompyle3: ```python= test/main.pyc -- # decompile failed # file test/main.pyc # Deparsing stopped due to parse error ``` ## Error 1/16 Source: [link](https://github.com/theowenyoung/aws-sam-cli/blob/27dbe8f426531365c26788382dbf0a1b0844192b/samcli/commands/_utils/template.py#L192) Python version: 3.7 Decompyle3: Successful - incorrect Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Fail | Pass/Incorrect | Pass | ### MWE: ```python= def _resolve_relative_to(path, original_root, new_root): if w or x or y or z: return None return a ``` #### Closest Solution: ```python= def _resolve_relative_to(path, original_root, new_root): temp = w or x or y if temp or z: return None return a ``` ```c= 1 0 LOAD_CONST 0 (<code object _resolve_relative_to at 0x40022eee40, file "main.py", line 1>) 2 LOAD_CONST 1 ('_resolve_relative_to') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_resolve_relative_to) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object _resolve_relative_to at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (w) 2 JUMP_IF_TRUE_OR_POP 10 4 LOAD_GLOBAL 1 (x) 6 JUMP_IF_TRUE_OR_POP 10 8 LOAD_GLOBAL 2 (y) >> 10 STORE_FAST 3 (temp) 3 12 LOAD_FAST 3 (temp) 14 POP_JUMP_IF_TRUE 20 16 LOAD_GLOBAL 3 (z) 18 POP_JUMP_IF_FALSE 24 4 >> 20 LOAD_CONST 0 (None) 22 RETURN_VALUE 5 >> 24 LOAD_GLOBAL 4 (a) 26 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object _resolve_relative_to at 0x40022eee40, file "main.py", line 1>) 2 LOAD_CONST 1 ('_resolve_relative_to') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_resolve_relative_to) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object _resolve_relative_to at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (w) 2 POP_JUMP_IF_TRUE 16 4 LOAD_GLOBAL 1 (x) 6 POP_JUMP_IF_TRUE 16 8 LOAD_GLOBAL 2 (y) 10 POP_JUMP_IF_TRUE 16 12 LOAD_GLOBAL 3 (z) 14 POP_JUMP_IF_FALSE 20 3 >> 16 LOAD_CONST 0 (None) 18 RETURN_VALUE 4 >> 20 LOAD_GLOBAL 4 (a) 22 RETURN_VALUE ``` Output uncompyle6: ```python= def _resolve_relative_to--- This code section failed: --- L. 2 0 LOAD_GLOBAL w 2 POP_JUMP_IF_TRUE 16 'to 16' 4 LOAD_GLOBAL x 6 POP_JUMP_IF_TRUE 16 'to 16' 8 LOAD_GLOBAL y 10 POP_JUMP_IF_TRUE 16 'to 16' 12 LOAD_GLOBAL z 14 POP_JUMP_IF_FALSE 20 'to 20' 16_0 COME_FROM 10 '10' 16_1 COME_FROM 6 '6' 16_2 COME_FROM 2 '2' L. 3 16 LOAD_CONST None 18 RETURN_VALUE 20_0 COME_FROM 14 '14' L. 4 20 LOAD_GLOBAL a 22 RETURN_VALUE -1 RETURN_LAST Parse error at or near `RETURN_VALUE' instruction at offset 22 ``` Output Decompyle3: ```python= def _resolve_relative_to(path, original_root, new_root): if not w: if x or (y or z): return return a ``` ## Error 1/17 Source: [link](https://github.com/theowenyoung/aws-sam-cli/blob/27dbe8f426531365c26788382dbf0a1b0844192b/samcli/lib/package/artifact_exporter.py#L432) Python version: 3.7 Decompyle3: Successful Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Fail | Pass | Pass | ### MWE: * Interesting case that we need to traverse the CFG a few times to fix this bug. Bug is at return near the with. We need to go up to if to resolve. ```python= def do_export(self, resource_id, resource_dict, parent_dir): if ( a is None or b or c or d): return with mktempfile() as temporary_file: pass ``` #### Closest Solution: ```python= def do_export(self, resource_id, resource_dict, parent_dir): temp = c or d if ( a is None or b or temp): return with mktempfile() as temporary_file: pass ``` ```c= 1 0 LOAD_CONST 0 (<code object do_export at 0x40022eee40, file "main.py", line 1>) 2 LOAD_CONST 1 ('do_export') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (do_export) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object do_export at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (c) 2 JUMP_IF_TRUE_OR_POP 6 4 LOAD_GLOBAL 1 (d) >> 6 STORE_FAST 4 (temp) 3 8 LOAD_GLOBAL 2 (a) 10 LOAD_CONST 0 (None) 12 COMPARE_OP 8 (is) 14 POP_JUMP_IF_TRUE 24 16 LOAD_GLOBAL 3 (b) 18 POP_JUMP_IF_TRUE 24 20 LOAD_FAST 4 (temp) 22 POP_JUMP_IF_FALSE 28 4 >> 24 LOAD_CONST 0 (None) 26 RETURN_VALUE 5 >> 28 LOAD_GLOBAL 4 (mktempfile) 30 CALL_FUNCTION 0 32 SETUP_WITH 6 (to 40) 34 STORE_FAST 5 (temporary_file) 6 36 POP_BLOCK 38 LOAD_CONST 0 (None) >> 40 WITH_CLEANUP_START 42 WITH_CLEANUP_FINISH 44 END_FINALLY 46 LOAD_CONST 0 (None) 48 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object do_export at 0x40022eee40, file "main.py", line 1>) 2 LOAD_CONST 1 ('do_export') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (do_export) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object do_export at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_GLOBAL 0 (a) 2 LOAD_CONST 0 (None) 4 COMPARE_OP 8 (is) 6 POP_JUMP_IF_TRUE 20 8 LOAD_GLOBAL 1 (b) 10 POP_JUMP_IF_TRUE 20 12 LOAD_GLOBAL 2 (c) 14 POP_JUMP_IF_TRUE 20 16 LOAD_GLOBAL 3 (d) 18 POP_JUMP_IF_FALSE 24 3 >> 20 LOAD_CONST 0 (None) 22 RETURN_VALUE 4 >> 24 LOAD_GLOBAL 4 (mktempfile) 26 CALL_FUNCTION 0 28 SETUP_WITH 6 (to 36) 30 STORE_FAST 4 (temporary_file) 5 32 POP_BLOCK 34 LOAD_CONST 0 (None) >> 36 WITH_CLEANUP_START 38 WITH_CLEANUP_FINISH 40 END_FINALLY 42 LOAD_CONST 0 (None) 44 RETURN_VALUE ``` Output uncompyle6: ```python= def do_export--- This code section failed: --- L. 2 0 LOAD_GLOBAL a 2 LOAD_CONST None 4 COMPARE_OP is 6 POP_JUMP_IF_TRUE 20 'to 20' 8 LOAD_GLOBAL b 10 POP_JUMP_IF_TRUE 20 'to 20' 12 LOAD_GLOBAL c 14 POP_JUMP_IF_TRUE 20 'to 20' 16 LOAD_GLOBAL d 18 POP_JUMP_IF_FALSE 24 'to 24' 20_0 COME_FROM 14 '14' 20_1 COME_FROM 10 '10' 20_2 COME_FROM 6 '6' L. 3 20 LOAD_CONST None 22 RETURN_VALUE 24_0 COME_FROM 18 '18' L. 4 24 LOAD_GLOBAL mktempfile 26 CALL_FUNCTION_0 0 '0 positional arguments' 28 SETUP_WITH 36 'to 36' 30 STORE_FAST 'temporary_file' L. 5 32 POP_BLOCK 34 LOAD_CONST None 36_0 COME_FROM_WITH 28 '28' 36 WITH_CLEANUP_START 38 WITH_CLEANUP_FINISH 40 END_FINALLY Parse error at or near `WITH_CLEANUP_FINISH' instruction at offset 38 ``` Output Decompyle3: ```python= def do_export(self, resource_id, resource_dict, parent_dir): if a is None or (b or c or d): return with mktempfile() as temporary_file: pass ``` ## Error 1/18 Source: [link](https://github.com/aestrivex/bctpy/blob/32c7fe7345b281c2d4e184f5379c425c36f3bbc7/bct/nbs.py#L14) Python version: 3.7 Decompyle3: Failed Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Fail | Fail | Pass | Pass | ### MWE: ```python= def nbs_bct(): rng = 1 if not ix == jx == iy == jy: raise "err" else: n = ix ``` #### Closest Solution: ```python= def nbs_bct(): rng = 1 a = jx == iy == jy b = not ix == jx if a and b: raise "err" else: n = ix ``` ```c= 1 0 LOAD_CONST 0 (<code object nbs_bct at 0x40022eee40, file "main.py", line 1>) 2 LOAD_CONST 1 ('nbs_bct') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (nbs_bct) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object nbs_bct at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_CONST 1 (1) 2 STORE_FAST 0 (rng) 3 4 LOAD_GLOBAL 0 (jx) 6 LOAD_GLOBAL 1 (iy) 8 DUP_TOP 10 ROT_THREE 12 COMPARE_OP 2 (==) 14 JUMP_IF_FALSE_OR_POP 22 16 LOAD_GLOBAL 2 (jy) 18 COMPARE_OP 2 (==) 20 JUMP_FORWARD 4 (to 26) >> 22 ROT_TWO 24 POP_TOP >> 26 STORE_FAST 1 (a) 4 28 LOAD_GLOBAL 3 (ix) 30 LOAD_GLOBAL 0 (jx) 32 COMPARE_OP 2 (==) 34 UNARY_NOT 36 STORE_FAST 2 (b) 5 38 LOAD_FAST 1 (a) 40 POP_JUMP_IF_FALSE 52 42 LOAD_FAST 2 (b) 44 POP_JUMP_IF_FALSE 52 6 46 LOAD_CONST 2 ('err') 48 RAISE_VARARGS 1 50 JUMP_FORWARD 4 (to 56) 8 >> 52 LOAD_GLOBAL 3 (ix) 54 STORE_FAST 3 (n) >> 56 LOAD_CONST 0 (None) 58 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object nbs_bct at 0x40022eee40, file "main.py", line 1>) 2 LOAD_CONST 1 ('nbs_bct') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (nbs_bct) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of <code object nbs_bct at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_CONST 1 (1) 2 STORE_FAST 0 (rng) 3 4 LOAD_GLOBAL 0 (ix) 6 LOAD_GLOBAL 1 (jx) 8 DUP_TOP 10 ROT_THREE 12 COMPARE_OP 2 (==) 14 POP_JUMP_IF_FALSE 34 16 LOAD_GLOBAL 2 (iy) 18 DUP_TOP 20 ROT_THREE 22 COMPARE_OP 2 (==) 24 POP_JUMP_IF_FALSE 34 26 LOAD_GLOBAL 3 (jy) 28 COMPARE_OP 2 (==) 30 POP_JUMP_IF_TRUE 42 32 JUMP_FORWARD 2 (to 36) >> 34 POP_TOP 4 >> 36 LOAD_CONST 2 ('err') 38 RAISE_VARARGS 1 40 JUMP_FORWARD 4 (to 46) 6 >> 42 LOAD_GLOBAL 0 (ix) 44 STORE_FAST 1 (n) >> 46 LOAD_CONST 0 (None) 48 RETURN_VALUE ``` Output uncompyle6: ```python= def nbs_bct--- This code section failed: --- L. 2 0 LOAD_CONST 1 2 STORE_FAST 'rng' L. 3 4 LOAD_GLOBAL ix 6 LOAD_GLOBAL jx 8 DUP_TOP 10 ROT_THREE 12 COMPARE_OP == 14 POP_JUMP_IF_FALSE 34 'to 34' 16 LOAD_GLOBAL iy 18 DUP_TOP 20 ROT_THREE 22 COMPARE_OP == 24 POP_JUMP_IF_FALSE 34 'to 34' 26 LOAD_GLOBAL jy 28 COMPARE_OP == 30 POP_JUMP_IF_TRUE 42 'to 42' 32 JUMP_FORWARD 36 'to 36' 34_0 COME_FROM 24 '24' 34_1 COME_FROM 14 '14' 34 POP_TOP 36_0 COME_FROM 32 '32' L. 4 36 LOAD_STR 'err' 38 RAISE_VARARGS_1 1 'exception instance' 40 JUMP_FORWARD 46 'to 46' 42_0 COME_FROM 30 '30' L. 6 42 LOAD_GLOBAL ix 44 STORE_FAST 'n' 46_0 COME_FROM 40 '40' Parse error at or near `POP_TOP' instruction at offset 34 ``` Output Decompyle3: ```python= Instruction context: L. 3 4 LOAD_GLOBAL ix 6 LOAD_GLOBAL jx 8 DUP_TOP 10 ROT_THREE 12 COMPARE_OP == 14 POP_JUMP_IF_FALSE 34 'to 34' 16 LOAD_GLOBAL iy 18 DUP_TOP 20 ROT_THREE 22 COMPARE_OP == 24 POP_JUMP_IF_FALSE 34 'to 34' 26 LOAD_GLOBAL jy 28 COMPARE_OP == 30 POP_JUMP_IF_TRUE 42 'to 42' 32 JUMP_FORWARD 36 'to 36' 34_0 COME_FROM 24 '24' 34_1 COME_FROM 14 '14' -> 34 POP_TOP 36_0 COME_FROM 32 '32' test/main.pyc -- # decompile failed # file test/main.pyc # Deparsing stopped due to parse error ``` ## Error 1/19 Source: [link](https://github.com/hchauvet/beampy/blob/1d2d4deaa4994094628361446285f110abe0529e/beampy/functions.py#L30) Python version: 3.7 Decompyle3: Successful Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Pass | Fail | Pass | Pass | ### MWE: ```python= def unit_operation(value, to=0): if '+' in value: vsplited = value.split('+') for v in vsplited : to += v elif '-' in value: pass return to ``` #### Closest Solution: ```python= def unit_operation(value, to=0): if '+' in value: vsplited = value.split('+') for v in vsplited : to += v if '-' in value and not '+' in value: pass return to ``` ```c= 1 0 LOAD_CONST 4 ((0,)) 2 LOAD_CONST 1 (<code object unit_operation at 0x40022eee40, file "main.py", line 1>) 4 LOAD_CONST 2 ('unit_operation') 6 MAKE_FUNCTION 1 8 STORE_NAME 0 (unit_operation) 10 LOAD_CONST 3 (None) 12 RETURN_VALUE Disassembly of <code object unit_operation at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_CONST 1 ('+') 2 LOAD_FAST 0 (value) 4 COMPARE_OP 6 (in) 6 POP_JUMP_IF_FALSE 40 3 8 LOAD_FAST 0 (value) 10 LOAD_METHOD 0 (split) 12 LOAD_CONST 1 ('+') 14 CALL_METHOD 1 16 STORE_FAST 2 (vsplited) 4 18 SETUP_LOOP 20 (to 40) 20 LOAD_FAST 2 (vsplited) 22 GET_ITER >> 24 FOR_ITER 12 (to 38) 26 STORE_FAST 3 (v) 5 28 LOAD_FAST 1 (to) 30 LOAD_FAST 3 (v) 32 INPLACE_ADD 34 STORE_FAST 1 (to) 36 JUMP_ABSOLUTE 24 >> 38 POP_BLOCK 7 >> 40 LOAD_CONST 2 ('-') 42 LOAD_FAST 0 (value) 44 COMPARE_OP 6 (in) 46 POP_JUMP_IF_FALSE 56 48 LOAD_CONST 1 ('+') 50 LOAD_FAST 0 (value) 52 COMPARE_OP 7 (not in) 54 POP_JUMP_IF_FALSE 56 9 >> 56 LOAD_FAST 1 (to) 58 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 4 ((0,)) 2 LOAD_CONST 1 (<code object unit_operation at 0x40022eee40, file "main.py", line 1>) 4 LOAD_CONST 2 ('unit_operation') 6 MAKE_FUNCTION 1 8 STORE_NAME 0 (unit_operation) 10 LOAD_CONST 3 (None) 12 RETURN_VALUE Disassembly of <code object unit_operation at 0x40022eee40, file "main.py", line 1>: 2 0 LOAD_CONST 1 ('+') 2 LOAD_FAST 0 (value) 4 COMPARE_OP 6 (in) 6 POP_JUMP_IF_FALSE 42 3 8 LOAD_FAST 0 (value) 10 LOAD_METHOD 0 (split) 12 LOAD_CONST 1 ('+') 14 CALL_METHOD 1 16 STORE_FAST 2 (vsplited) 4 18 SETUP_LOOP 30 (to 50) 20 LOAD_FAST 2 (vsplited) 22 GET_ITER >> 24 FOR_ITER 12 (to 38) 26 STORE_FAST 3 (v) 5 28 LOAD_FAST 1 (to) 30 LOAD_FAST 3 (v) 32 INPLACE_ADD 34 STORE_FAST 1 (to) 36 JUMP_ABSOLUTE 24 >> 38 POP_BLOCK 40 JUMP_FORWARD 8 (to 50) 6 >> 42 LOAD_CONST 2 ('-') 44 LOAD_FAST 0 (value) 46 COMPARE_OP 6 (in) 48 POP_JUMP_IF_FALSE 50 8 >> 50 LOAD_FAST 1 (to) 52 RETURN_VALUE ``` Output uncompyle6: ```python= def unit_operation--- This code section failed: --- L. 2 0 LOAD_STR '+' 2 LOAD_FAST 'value' 4 COMPARE_OP in 6 POP_JUMP_IF_FALSE 42 'to 42' L. 3 8 LOAD_FAST 'value' 10 LOAD_METHOD split 12 LOAD_STR '+' 14 CALL_METHOD_1 1 '1 positional argument' 16 STORE_FAST 'vsplited' L. 4 18 SETUP_LOOP 50 'to 50' 20 LOAD_FAST 'vsplited' 22 GET_ITER 24 FOR_ITER 38 'to 38' 26 STORE_FAST 'v' L. 5 28 LOAD_FAST 'to' 30 LOAD_FAST 'v' 32 INPLACE_ADD 34 STORE_FAST 'to' 36 JUMP_BACK 24 'to 24' 38 POP_BLOCK 40 JUMP_FORWARD 50 'to 50' 42_0 COME_FROM 6 '6' L. 6 42 LOAD_STR '-' 44 LOAD_FAST 'value' 46 COMPARE_OP in 48 POP_JUMP_IF_FALSE 50 'to 50' 50_0 COME_FROM 48 '48' 50_1 COME_FROM 40 '40' 50_2 COME_FROM_LOOP 18 '18' L. 8 50 LOAD_FAST 'to' 52 RETURN_VALUE -1 RETURN_LAST Parse error at or near `COME_FROM_LOOP' instruction at offset 50_2 ``` Output Decompyle3: ```python= def unit_operation(value, to=0): if '+' in value: vsplited = value.split('+') for v in vsplited: to += v elif '-' in value: pass return to ``` ## Error 1/20 Source: [link](https://github.com/OldhamMade/beanstalktop/blob/3d032220c6edcdf3583381ecde8aa6bbddfb7bb6/beanstalktop.py#L52) Python version: 3.6 Decompyle3: Unsupported Uncompyle6: Failed Error: `Deparsing stopped due to parse error` | Py3.8 | Py3.7 | Py3.6 | Py2.7 | | -------- | -------- | -------- | -------- | | Pass | Fail | Fail | Pass | ### MWE: ```python= def _get_connection(): return z try: pass except x: raise "err" ``` #### Closest Solution: ```python= def _get_connection(): return z ``` ```c= 1 0 LOAD_CONST 0 (<code object _get_connection at 0x4002216c90, file "main.py", line 1>) 2 LOAD_CONST 1 ('_get_connection') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_get_connection) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of _get_connection: 2 0 LOAD_GLOBAL 0 (z) 2 RETURN_VALUE ``` #### MWE data: Bytecode for MWE: ```c= 1 0 LOAD_CONST 0 (<code object _get_connection at 0x4002284810, file "main.py", line 1>) 2 LOAD_CONST 1 ('_get_connection') 4 MAKE_FUNCTION 0 6 STORE_NAME 0 (_get_connection) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of _get_connection: 2 0 LOAD_GLOBAL 0 (z) 2 RETURN_VALUE 5 4 DUP_TOP 6 LOAD_GLOBAL 1 (x) 8 COMPARE_OP 10 (exception match) 10 POP_JUMP_IF_FALSE 26 12 POP_TOP 14 POP_TOP 16 POP_TOP 6 18 LOAD_CONST 1 ('err') 20 RAISE_VARARGS 1 22 POP_EXCEPT 24 JUMP_FORWARD 2 (to 28) >> 26 END_FINALLY >> 28 LOAD_CONST 0 (None) 30 RETURN_VALUE ``` Output uncompyle6: ```python= def _get_connection--- This code section failed: --- L. 2 0 LOAD_GLOBAL z 2 RETURN_VALUE L. 5 4 DUP_TOP 6 LOAD_GLOBAL x 8 COMPARE_OP exception-match 10 POP_JUMP_IF_FALSE 26 'to 26' 12 POP_TOP 14 POP_TOP 16 POP_TOP L. 6 18 LOAD_STR 'err' 20 RAISE_VARARGS_1 1 'exception' 22 POP_EXCEPT 24 JUMP_FORWARD 28 'to 28' 26 END_FINALLY 28_0 COME_FROM 24 '24' Parse error at or near `DUP_TOP' instruction at offset 4 ``` Output Decompyle3: ```python= Error: decompyle3 requires Python 3.7-3.8 ```