---
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
```