angr 9.2.64__py3-none-manylinux2014_x86_64.whl → 9.2.66__py3-none-manylinux2014_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of angr might be problematic. Click here for more details.

Files changed (44) hide show
  1. angr/__init__.py +55 -2
  2. angr/analyses/calling_convention.py +4 -3
  3. angr/analyses/cfg/cfg_base.py +2 -2
  4. angr/analyses/cfg/cfg_fast.py +128 -60
  5. angr/analyses/decompiler/ail_simplifier.py +1 -2
  6. angr/analyses/decompiler/block_simplifier.py +4 -3
  7. angr/analyses/decompiler/callsite_maker.py +1 -1
  8. angr/analyses/decompiler/condition_processor.py +5 -3
  9. angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py +51 -8
  10. angr/analyses/decompiler/peephole_optimizations/__init__.py +1 -1
  11. angr/analyses/decompiler/peephole_optimizations/const_mull_a_shift.py +92 -0
  12. angr/analyses/decompiler/structured_codegen/c.py +59 -6
  13. angr/analyses/decompiler/utils.py +1 -1
  14. angr/analyses/find_objects_static.py +4 -4
  15. angr/analyses/propagator/engine_ail.py +2 -1
  16. angr/analyses/reaching_definitions/__init__.py +1 -3
  17. angr/analyses/reaching_definitions/dep_graph.py +33 -4
  18. angr/analyses/reaching_definitions/engine_ail.py +5 -6
  19. angr/analyses/reaching_definitions/engine_vex.py +6 -7
  20. angr/analyses/reaching_definitions/external_codeloc.py +0 -27
  21. angr/analyses/reaching_definitions/function_handler.py +145 -23
  22. angr/analyses/reaching_definitions/rd_initializer.py +221 -0
  23. angr/analyses/reaching_definitions/rd_state.py +95 -153
  24. angr/analyses/reaching_definitions/reaching_definitions.py +15 -3
  25. angr/calling_conventions.py +2 -2
  26. angr/code_location.py +24 -0
  27. angr/exploration_techniques/__init__.py +28 -0
  28. angr/knowledge_plugins/cfg/cfg_model.py +1 -1
  29. angr/knowledge_plugins/key_definitions/__init__.py +12 -1
  30. angr/knowledge_plugins/key_definitions/atoms.py +9 -0
  31. angr/knowledge_plugins/key_definitions/definition.py +13 -18
  32. angr/knowledge_plugins/key_definitions/live_definitions.py +350 -106
  33. angr/project.py +1 -1
  34. angr/sim_manager.py +15 -0
  35. angr/sim_state.py +3 -3
  36. angr/storage/memory_mixins/paged_memory/pages/multi_values.py +56 -8
  37. angr/storage/memory_object.py +3 -1
  38. angr/utils/typing.py +16 -0
  39. {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/METADATA +8 -8
  40. {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/RECORD +43 -41
  41. {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/WHEEL +1 -1
  42. angr/analyses/decompiler/peephole_optimizations/conv_const_mull_a_shift.py +0 -75
  43. {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/LICENSE +0 -0
  44. {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/top_level.txt +0 -0
angr/project.py CHANGED
@@ -180,7 +180,7 @@ class Project:
180
180
  )
181
181
  raise Exception("Incompatible options for the project")
182
182
 
183
- if self.concrete_target and self.arch.name not in ["X86", "AMD64", "ARMHF", "MIPS32"]:
183
+ if self.concrete_target and self.arch.name not in ["X86", "AMD64", "ARMHF", "ARMEL", "MIPS32"]:
184
184
  l.critical("Concrete execution does not support yet the selected architecture. Aborting.")
185
185
  raise Exception("Incompatible options for the project")
186
186
 
angr/sim_manager.py CHANGED
@@ -164,6 +164,21 @@ class SimulationManager:
164
164
  except AttributeError:
165
165
  return SimulationManager._fetch_states(self, stash=item)
166
166
 
167
+ active: List[SimState]
168
+ stashed: List[SimState]
169
+ pruned: List[SimState]
170
+ unsat: List[SimState]
171
+ deadended: List[SimState]
172
+ unconstrained: List[SimState]
173
+ found: List[SimState]
174
+ one_active: SimState
175
+ one_stashed: SimState
176
+ one_pruned: SimState
177
+ one_unsat: SimState
178
+ one_deadended: SimState
179
+ one_unconstrained: SimState
180
+ one_found: SimState
181
+
167
182
  def __dir__(self):
168
183
  return (
169
184
  list(self.__dict__)
angr/sim_state.py CHANGED
@@ -65,9 +65,9 @@ class SimState(PluginHub):
65
65
  # Type Annotations for default plugins to allow type inference
66
66
  solver: "SimSolver"
67
67
  posix: "SimSystemPosix"
68
- registers: "MemoryMixin"
68
+ registers: "DefaultMemory"
69
69
  regs: "SimRegNameView"
70
- memory: "MemoryMixin"
70
+ memory: "DefaultMemory"
71
71
  callstack: "CallStack"
72
72
  mem: "SimMemView"
73
73
  callstack: "CallStack"
@@ -995,7 +995,7 @@ from .errors import SimMergeError, SimValueError, SimStateError, SimSolverModeEr
995
995
 
996
996
  # Type imports for annotations
997
997
  if TYPE_CHECKING:
998
- from .storage import MemoryMixin
998
+ from .storage import DefaultMemory
999
999
  from .state_plugins.solver import SimSolver
1000
1000
  from .state_plugins.posix import SimSystemPosix
1001
1001
  from .state_plugins.view import SimRegNameView, SimMemView
@@ -1,7 +1,10 @@
1
- from typing import Dict, Optional, Set, Tuple, Iterator
1
+ from typing import Dict, Optional, Set, Tuple, Iterator, Union
2
+ import archinfo
2
3
 
3
4
  import claripy
4
5
 
6
+ from angr.storage.memory_object import bv_slice
7
+
5
8
 
6
9
  class MultiValues:
7
10
  """
@@ -17,15 +20,26 @@ class MultiValues:
17
20
  )
18
21
 
19
22
  _single_value: Optional[claripy.ast.BV]
23
+ _values: Optional[Dict[int, Set[claripy.ast.BV]]]
20
24
 
21
- def __init__(self, v: Optional[claripy.ast.BV] = None, offset_to_values=None):
25
+ def __init__(
26
+ self,
27
+ v: Union[claripy.ast.BV, "MultiValues", None, Dict[int, Set[claripy.ast.BV]]] = None,
28
+ offset_to_values=None,
29
+ ):
22
30
  if v is not None and offset_to_values is not None:
23
31
  raise TypeError("You cannot specify v and offset_to_values at the same time!")
24
32
 
25
- self._single_value = v if v is not None else None
26
- self._values: Optional[Dict[int, Set[claripy.ast.BV]]] = (
27
- offset_to_values if offset_to_values is not None else None
33
+ self._single_value = (
34
+ None
35
+ if v is None
36
+ else v
37
+ if isinstance(v, claripy.ast.BV)
38
+ else v._single_value
39
+ if isinstance(v, MultiValues)
40
+ else None
28
41
  )
42
+ self._values = offset_to_values if offset_to_values is not None else v if isinstance(v, dict) else None
29
43
 
30
44
  # if only one value is passed in, assign it to self._single_value
31
45
  if self._values:
@@ -40,7 +54,16 @@ class MultiValues:
40
54
  raise TypeError("Each value in offset_to_values must be a set!")
41
55
 
42
56
  def add_value(self, offset: int, value: claripy.ast.BV) -> None:
57
+ if len(value) == 0:
58
+ return
43
59
  if self._single_value is not None:
60
+ if len(self._single_value) == 0:
61
+ if offset == 0:
62
+ self._single_value = value
63
+ else:
64
+ self._single_value = None
65
+ self._values = {offset: {value}}
66
+ return
44
67
  self._values = {0: {self._single_value}}
45
68
  self._single_value = None
46
69
 
@@ -100,7 +123,7 @@ class MultiValues:
100
123
  for v in remaining_values:
101
124
  self.add_value(offset, v)
102
125
 
103
- def one_value(self) -> Optional[claripy.ast.BV]:
126
+ def one_value(self) -> Optional[claripy.ast.bv.BV]:
104
127
  if self._single_value is not None:
105
128
  return self._single_value
106
129
 
@@ -171,7 +194,7 @@ class MultiValues:
171
194
  return {0}
172
195
  return set() if not self._values else set(self._values.keys())
173
196
 
174
- def values(self) -> Iterator[Set[claripy.ast.BV]]:
197
+ def values(self) -> Iterator[Set[claripy.ast.bv.BV]]:
175
198
  if self._single_value is not None:
176
199
  yield {self._single_value}
177
200
  else:
@@ -179,7 +202,7 @@ class MultiValues:
179
202
  return
180
203
  yield from self._values.values()
181
204
 
182
- def items(self) -> Iterator[Tuple[int, Set[claripy.ast.BV]]]:
205
+ def items(self) -> Iterator[Tuple[int, Set[claripy.ast.bv.BV]]]:
183
206
  if self._single_value is not None:
184
207
  yield 0, {self._single_value}
185
208
  else:
@@ -195,6 +218,31 @@ class MultiValues:
195
218
  return 0
196
219
  return len(self._values)
197
220
 
221
+ def extract(self, offset: int, length: int, endness: archinfo.Endness) -> "MultiValues":
222
+ end = offset + length
223
+ result = MultiValues(claripy.BVV(b""))
224
+ for obj_offset, values in self.items():
225
+ for value in values:
226
+ obj_length = len(value) // 8
227
+ slice_start = max(0, offset - obj_offset)
228
+ slice_end = min(obj_length, end - obj_offset)
229
+ sliced = bv_slice(value, slice_start, slice_end - slice_start, endness == archinfo.Endness.LE, 8)
230
+ if len(sliced):
231
+ result.add_value(max(0, obj_offset - offset), sliced)
232
+
233
+ return result
234
+
235
+ def concat(self, other: Union["MultiValues", claripy.ast.BV, bytes]) -> "MultiValues":
236
+ if isinstance(other, bytes):
237
+ other = claripy.BVV(other)
238
+ if isinstance(other, claripy.ast.BV):
239
+ other = MultiValues(other)
240
+ result = MultiValues(self)
241
+ for k, v in other.items():
242
+ for v2 in v:
243
+ result.add_value(k, v2)
244
+ return result
245
+
198
246
  #
199
247
  # Private methods
200
248
  #
@@ -148,7 +148,7 @@ class SimLabeledMemoryObject(SimMemoryObject):
148
148
  self.label = label
149
149
 
150
150
 
151
- def bv_slice(value, offset, size, rev, bw):
151
+ def bv_slice(value: claripy.ast.BV, offset: int, size: int, rev: bool, bw: int) -> claripy.ast.BV:
152
152
  """
153
153
  Extremely cute utility to pretend you've serialized a value to stored bytes, sliced it a la python slicing, and then
154
154
  deserialized those bytes to an integer again.
@@ -176,4 +176,6 @@ def bv_slice(value, offset, size, rev, bw):
176
176
  return value
177
177
 
178
178
  bitstart = len(value) - offset * bw
179
+ if size == 0:
180
+ return claripy.BVV(b"")
179
181
  return value[bitstart - 1 : bitstart - size * bw]
angr/utils/typing.py ADDED
@@ -0,0 +1,16 @@
1
+ from typing import TypeVar, Optional, Iterable
2
+
3
+ _T = TypeVar("_T")
4
+
5
+
6
+ def unwrap(thing: Optional[_T]) -> _T:
7
+ assert thing is not None, "Tried to unwrap a `None` value"
8
+ return thing
9
+
10
+
11
+ def one(thing: Iterable[_T]) -> _T:
12
+ try:
13
+ (result,) = thing
14
+ except ValueError as e:
15
+ raise AssertionError("Tried to get only value of an iterable with some other number of items") from e
16
+ return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: angr
3
- Version: 9.2.64
3
+ Version: 9.2.66
4
4
  Summary: A multi-architecture binary analysis toolkit, with the ability to perform dynamic symbolic execution and various static analyses on binaries
5
5
  Home-page: https://github.com/angr/angr
6
6
  License: BSD-2-Clause
@@ -16,13 +16,13 @@ Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  Requires-Dist: CppHeaderParser
18
18
  Requires-Dist: GitPython
19
- Requires-Dist: ailment ==9.2.64
20
- Requires-Dist: archinfo ==9.2.64
19
+ Requires-Dist: ailment ==9.2.66
20
+ Requires-Dist: archinfo ==9.2.66
21
21
  Requires-Dist: cachetools
22
- Requires-Dist: capstone !=5.0.0rc2,>=3.0.5rc2
22
+ Requires-Dist: capstone ==5.0.0.post1
23
23
  Requires-Dist: cffi >=1.14.0
24
- Requires-Dist: claripy ==9.2.64
25
- Requires-Dist: cle ==9.2.64
24
+ Requires-Dist: claripy ==9.2.66
25
+ Requires-Dist: cle ==9.2.66
26
26
  Requires-Dist: dpkt
27
27
  Requires-Dist: itanium-demangler
28
28
  Requires-Dist: mulpyplexer
@@ -31,7 +31,7 @@ Requires-Dist: networkx !=2.8.1,>=2.0
31
31
  Requires-Dist: protobuf >=3.19.0
32
32
  Requires-Dist: psutil
33
33
  Requires-Dist: pycparser >=2.18
34
- Requires-Dist: pyvex ==9.2.64
34
+ Requires-Dist: pyvex ==9.2.66
35
35
  Requires-Dist: rich >=13.1.0
36
36
  Requires-Dist: rpyc
37
37
  Requires-Dist: sortedcontainers
@@ -111,7 +111,7 @@ project.execute()
111
111
  # Quick Start
112
112
 
113
113
  - [Install Instructions](https://docs.angr.io/introductory-errata/install)
114
- - Documentation as [HTML](https://docs.angr.io/) and as a [Github repository](https://github.com/angr/angr-doc)
114
+ - Documentation as [HTML](https://docs.angr.io/) and sources in the angr [Github repository](https://github.com/angr/angr/tree/master/docs)
115
115
  - Dive right in: [top-level-accessible methods](https://docs.angr.io/core-concepts/toplevel)
116
116
  - [Examples using angr to solve CTF challenges](https://docs.angr.io/examples).
117
117
  - [API Reference](https://angr.io/api-doc/)
@@ -1,23 +1,23 @@
1
- angr/__init__.py,sha256=x_8c33SzIKkoDyGRwCKYa8ExeSruAFkuKjr4BDfudwA,2800
1
+ angr/__init__.py,sha256=jZ7J_w9rxQK9DXdqVtnRFMKOIBAJpYuccC5KpQIjItk,3821
2
2
  angr/annocfg.py,sha256=dK5JAdN4Ig_jgxTBZeZXwk3kAS4-IQUvE6T02GBZTDQ,10818
3
3
  angr/blade.py,sha256=1f5cqw1w6mKtYszN2-5QMxaoP_bbqpIaVlE7Vpf8yjc,15161
4
4
  angr/block.py,sha256=RXro1XdUTztfPL2r62m2YA1XTNe7bP0lkBUDYzz_FyE,14371
5
5
  angr/callable.py,sha256=p98KlOijfkcGnUx1C-lNt-R5ncYF4md6oxC7aBKc8Ws,5513
6
- angr/calling_conventions.py,sha256=RiJO0pz7EImjZA4wJzQ4M_Ez8d26QTs-d2RXbFLzgQo,88701
7
- angr/code_location.py,sha256=_EXS1uAEkoOKBoxtvxAOluLsbKkcjyAWnCnviHdBK7w,4720
6
+ angr/calling_conventions.py,sha256=VGW33W7cbnrV0rPxRLVPjfwXPmhPvvQcqSsBw86HDeE,88751
7
+ angr/code_location.py,sha256=ow0Z8OF8FNBPZs4PUmRej_5aHaKTmUIanYPro3iHAMs,5476
8
8
  angr/codenode.py,sha256=uF9iObkowp87iBZimrpNl-JSr7vQanhL94dWESnw1Ks,3759
9
9
  angr/errors.py,sha256=uYZEr2kYrKeylLIkrfNOtLy68sA0R3OJ9CD77Ucg4NQ,8191
10
10
  angr/factory.py,sha256=rHwRkt47EeJW2tsL9aIq_NjantEJwCsqdd34mg2HmVk,17141
11
11
  angr/graph_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  angr/keyed_region.py,sha256=vgaJ7sUkUeGfXY-dRcRl40qNtB-JDbIWaL7xRdcDGdQ,17363
13
- angr/project.py,sha256=2Wi1VBGb94EQl8DeGi5cAE1_joF17O-kt5R0FFhHkw8,37023
13
+ angr/project.py,sha256=JkachB9bfKg3uLnleqb2E2Yjbu35Dts4auM0doTPKHw,37032
14
14
  angr/py.typed,sha256=SQuN8RfR7Scqb98Wf7vJndZle4ROvVL1kp6l5M7EpmY,7
15
15
  angr/serializable.py,sha256=6cljvzAqFwsLqFu9ouCno7hMpgstha5-8C7RyWNCRXc,1502
16
16
  angr/service.py,sha256=9R50bFaCf6zjxybiEIVIkODSVCsE2VcTul_KjjsjaGU,1102
17
- angr/sim_manager.py,sha256=NbnjwQ_xJ50YR4yW8eLtxGTxmEtp4gMRwf2_NBoWsUM,38917
17
+ angr/sim_manager.py,sha256=b7saPxVQmXInT4PmEUVHIV-Fuj1X1c8rxiCy9AIBiaY,39300
18
18
  angr/sim_options.py,sha256=OuT01xS_F3ifBD9MAfZmNCnfjtTg0HulZlrKcs1LNSY,18057
19
19
  angr/sim_procedure.py,sha256=uM4poyQYkVy_zlJqgyM_CbtVcDRbSsyZ1Z50i4yFwNw,25822
20
- angr/sim_state.py,sha256=BxL2lvo4bWmen5PKs1TegedOgnM8EFBgDJ-rsZf-XkE,37869
20
+ angr/sim_state.py,sha256=--Ou3Pprhu-iPGWhQV6wfcEH6XW-IPfo9c-MquRgHoQ,37875
21
21
  angr/sim_state_options.py,sha256=lfP7ygngjGe0AGV5rkE24tvBazJBZG-RTdrKj4rL9XE,12530
22
22
  angr/sim_type.py,sha256=71FRCbPM1sl0d-Wp7pzQeNsMC0nVE7wggoRa7YloeTM,115733
23
23
  angr/sim_variable.py,sha256=GhlHsMknbMs6OWfI0CM0VUMKlk16irBzPloSk7S8HuI,17235
@@ -32,7 +32,7 @@ angr/analyses/binary_optimizer.py,sha256=uXrvQ1pVKev9o0aqnuqz7Mbo20vMoZogJpvrjdj
32
32
  angr/analyses/bindiff.py,sha256=aFFfp4zHJqYGFp2ge-MBt7q2k1DFZb9VD1zC_cxFMmE,51815
33
33
  angr/analyses/boyscout.py,sha256=BFlxz4o8mpFXDiObd_x_9ObGvgBeh-zlxcC-_YT2wHs,2448
34
34
  angr/analyses/callee_cleanup_finder.py,sha256=gWeXZNM1wFYz6v2Fgy_0DlJSx53Zkf2M5lgvIGARCm8,2835
35
- angr/analyses/calling_convention.py,sha256=jvKlOVfPY7U-TwZC9Yw0Jlda1m3eksU5HYVq1MqSpM8,36523
35
+ angr/analyses/calling_convention.py,sha256=8w9xk639qECs-eFGdt_1vBjt_dof517Mgc_GCohUG4U,36481
36
36
  angr/analyses/cdg.py,sha256=OAnsjM1MgWXEToyOprxyWPTsn3BA_HBnrCXllB0h3h0,6361
37
37
  angr/analyses/class_identifier.py,sha256=4yVo0hbvcdf5xVr_OCqdEgYKsNFQy7RzMRMiqFyikW4,3031
38
38
  angr/analyses/code_tagging.py,sha256=_SnJd0FkE1ZXvv6uzxaoIACJANKCrGtK3nLWcuS7Lb0,3641
@@ -43,7 +43,7 @@ angr/analyses/ddg.py,sha256=DLDVy7jA20gobLLJkm617uoVK7sQ74v3bfwqq_61ETw,63433
43
43
  angr/analyses/disassembly.py,sha256=hLHnCSeHXm94rbtGJS3Ri-LfvVML92NO2tAm_sUTgTo,45143
44
44
  angr/analyses/disassembly_utils.py,sha256=4Np0PCPjr0h0jIVzUUG6KzrEKl9--IpTE3sgmmsmhcg,2989
45
45
  angr/analyses/dominance_frontier.py,sha256=XRfC_LUUetE8t1Cc9bwvWS9sl63Fx9sp8KFqN_Y9IDg,1245
46
- angr/analyses/find_objects_static.py,sha256=qrSNCLXsZQY8Jyx6jwCVF3k8jNfyV4ELpYuM3grhNio,10152
46
+ angr/analyses/find_objects_static.py,sha256=cgeNIl4EJOYUJIXhHUfUHFt1Ai7cGSjEIjL4gsJJlV4,10108
47
47
  angr/analyses/flirt.py,sha256=-n6GShXV6PLKDHr4nML49ZwAAlmMIP5SDeF2KmJVKOM,7847
48
48
  angr/analyses/init_finder.py,sha256=hFHPsHipF4QkWzVqcDeTgL6YIaYi8bAyaURZBksS4KI,8531
49
49
  angr/analyses/loop_analysis.py,sha256=nIbDIzvys-FRtJYnoZYNbMWH5V88qrhoMtrMRCTbkLY,9412
@@ -62,9 +62,9 @@ angr/analyses/cfg/__init__.py,sha256=DRCry4KO2k5VJLyfxD_O6dWAdi21IUoaN5TqCnukJJs
62
62
  angr/analyses/cfg/cfb.py,sha256=TqYdFau9ZH_m6cwkxbA35vDs2ES5rOFqfIuZi0lCBsQ,15450
63
63
  angr/analyses/cfg/cfg.py,sha256=1JpPGlqXXRFwE0tk26xjabT_-dq-kqAxMv7o6-DUhp4,3146
64
64
  angr/analyses/cfg/cfg_arch_options.py,sha256=YONHg6y-h6BCsBkJK9tuxb94DDfeOoy9CUS-LVyyDyg,3112
65
- angr/analyses/cfg/cfg_base.py,sha256=2uUMpylpVgM1bKHGavvCSxKd1Hseic-Jg4nbYlJczlw,121101
65
+ angr/analyses/cfg/cfg_base.py,sha256=Mq85r2uC1vU-1k9reB_0yTbaVphpOrZ35PP1wOx8Brk,121115
66
66
  angr/analyses/cfg/cfg_emulated.py,sha256=Fi3rDN5ByxhO-H4Y7qn-3WZgBG12JGyvxcWmrD_FnFQ,152842
67
- angr/analyses/cfg/cfg_fast.py,sha256=4DAyC7pNwJ7OUy7RkzthrnHUHu1Wt-s3GqpuJ3DY_gg,201265
67
+ angr/analyses/cfg/cfg_fast.py,sha256=e01dvIOShlkXFLqcVRVTSns8Joa7e67lcUpnGj-k6CI,204468
68
68
  angr/analyses/cfg/cfg_fast_soot.py,sha256=eA_P-OY3gRRNj2BBgSPMsB_llGyFFCNW3VyGZ2uiMoM,26047
69
69
  angr/analyses/cfg/cfg_job_base.py,sha256=3IQE_Iy17xtGfsIkrKc2ERIakAYiNdLtRb_jwOGQtHU,5989
70
70
  angr/analyses/cfg/segment_list.py,sha256=XM-rcLHkl008U5xu9pkVCenhcHWAFBKwVdDLa-kGFgY,20467
@@ -88,12 +88,12 @@ angr/analyses/data_dep/data_dependency_analysis.py,sha256=12WNVAdY196JZf37AfkdPD
88
88
  angr/analyses/data_dep/dep_nodes.py,sha256=BCpIPECRJhlX2sMO2LtaXxSD25-Edw2vXQOVcx5i55w,4650
89
89
  angr/analyses/data_dep/sim_act_location.py,sha256=4f8jp-ahitxoHCCOSSFGJ1olvNWuHyiE6iOLa5DA0k4,1527
90
90
  angr/analyses/decompiler/__init__.py,sha256=RkTvvTwAGpaLdGSTgXxVrKmGEDRxqLCNSB-b8fM6fBM,540
91
- angr/analyses/decompiler/ail_simplifier.py,sha256=1vWds_c62_D_muGGjdYZpPc_248zlETEdCuIiILeKtA,52456
91
+ angr/analyses/decompiler/ail_simplifier.py,sha256=D6EYpPHrsiE3RA34rt4V4XORf7AYCzlHIp6FyrvTjec,52395
92
92
  angr/analyses/decompiler/ailgraph_walker.py,sha256=sBz9Cn0GtdpuFt7R9y3oX6NFvETQTZRh6N80eM9ZdJQ,1595
93
- angr/analyses/decompiler/block_simplifier.py,sha256=xsHjw_brmhrYZB_K6aaEECzWS6UkCWWxS_a77JCfTwo,16809
94
- angr/analyses/decompiler/callsite_maker.py,sha256=Zro4ps4ZFie-iiB39Zg_xLkEFOgfwM1Czb8q-ReSEDk,14956
93
+ angr/analyses/decompiler/block_simplifier.py,sha256=hrqMeFu1mFwk-Nor-e1OKVkOar1nzx1ynJQoy8PY0nA,16756
94
+ angr/analyses/decompiler/callsite_maker.py,sha256=I1lgjCNIZxXW3K_4b_JhTeQ27_tYXP2bu71BXPVZeqU,14945
95
95
  angr/analyses/decompiler/clinic.py,sha256=HjR4x1NYuagWr0b_lK0W5i3oqAl9EdymMK0BOvwzZQs,71322
96
- angr/analyses/decompiler/condition_processor.py,sha256=6zuncOn59kDxl4DOm92U-d-rt3-R-LyJOv3vKKxJ7Y8,47723
96
+ angr/analyses/decompiler/condition_processor.py,sha256=hJSd3JI1Qwmr5f4aRkv7Bd5OdWD8uXSIpYqGO_9P89o,47904
97
97
  angr/analyses/decompiler/decompilation_cache.py,sha256=NveTVs6IY3TTdgsLvTb3ktftM4n0NrAJIkqjXqQ3550,1119
98
98
  angr/analyses/decompiler/decompilation_options.py,sha256=W_l0Sl6yLiYC2iLkXgC0I8staUWgYoeR2yevwcXri9c,6739
99
99
  angr/analyses/decompiler/decompiler.py,sha256=fYfM3UqQA_tjcjk1sWiLHNyfGDsvIMdHtG8z-0wOGHc,19690
@@ -107,7 +107,7 @@ angr/analyses/decompiler/redundant_label_remover.py,sha256=kDGGFWWV61I5fbASiTQTH
107
107
  angr/analyses/decompiler/region_identifier.py,sha256=doxPwx7B4DCMtIDCf_wosGNMR9zj_SOME3lQ6AvXDF8,44212
108
108
  angr/analyses/decompiler/region_walker.py,sha256=lTfweYbY4_a2f2yGztTKG6JtU1jXf-kaz-NHbX9nkXE,717
109
109
  angr/analyses/decompiler/sequence_walker.py,sha256=Ak8jog1BRJIQZdOv7QRzcv-SgXR0Wfh0QicqgXuWUIM,7410
110
- angr/analyses/decompiler/utils.py,sha256=8x-_FFK6TGv5Lj4_0u_y0J8U1i3cLBv74akOY69yzm4,14844
110
+ angr/analyses/decompiler/utils.py,sha256=z8gFuptbqw6lhKwZvO-yEpNo8SRoFgMEIv-c-E_gwrs,14845
111
111
  angr/analyses/decompiler/ccall_rewriters/__init__.py,sha256=wbWqZ8xG6ZvzEApkAwMsNQFC-iwF3swG1YJsaf1cIrQ,102
112
112
  angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py,sha256=tgNvZ6I5wPWcrc7EDnGPzgkn2Q9p4n4AAAnZaEM_Igk,10571
113
113
  angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=gWezEKB7A_YnlfUDs8V8D5syoYAyIXSIme1BKQRoouM,498
@@ -118,7 +118,7 @@ angr/analyses/decompiler/optimization_passes/div_simplifier.py,sha256=1yTI1mmFHB
118
118
  angr/analyses/decompiler/optimization_passes/eager_returns.py,sha256=zcAMF9dk0lV-K0oeSr3zC3CePJMFhUu781ySgRy8vfo,11053
119
119
  angr/analyses/decompiler/optimization_passes/engine_base.py,sha256=Q920CTvgxX4ueuRJVNvN30SYC-oH5_TreKVgQ2yJcq4,10392
120
120
  angr/analyses/decompiler/optimization_passes/expr_op_swapper.py,sha256=vlPhWDyvuEmbGcd1ka8rS68F72Ty6Hw3J00KM3tWCus,4701
121
- angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py,sha256=QozZWA5kOorUQVp0ohVrc00Myx95UGOstLNehhAn4EA,1585
121
+ angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py,sha256=qo3Sb288cqRRhVCylcTDwfvcI-w3tA18FVYrS5km2YU,3163
122
122
  angr/analyses/decompiler/optimization_passes/ite_expr_converter.py,sha256=VBzHsSIImh0Q_7TUN4cV7n-4itrqn1Edn13WkgjAkGc,7610
123
123
  angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=mnGBJ8r10cHHB0g9TV-xQYd4xO_PBj66Rzz7VAfroZA,19038
124
124
  angr/analyses/decompiler/optimization_passes/mod_simplifier.py,sha256=A9pPly7otXJlLkSbItU0wvjGGu6rUsNpcFw3bzy4DjY,3046
@@ -128,7 +128,7 @@ angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py,sh
128
128
  angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py,sha256=SNwCleooT3nS2d7dNUIf4_QQrkgwKLf23PSBtMZO-Q0,6206
129
129
  angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py,sha256=diqUO-k1hq9OzuC7OLMyJJODhy3i1c5Tb7d9f7lx6mU,12147
130
130
  angr/analyses/decompiler/optimization_passes/x86_gcc_getpc_simplifier.py,sha256=lwLc9QpOCTdSIb-0SK0hdxi2gzpABTk2kzdwBY20UOo,2980
131
- angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=I0Dp9EUpgsiVGpv8fCrfnzc0NcGiogCc1julkW61I1M,2623
131
+ angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=QpOYj2Wim4BY3D384C4dZfV8QdxzDVHgyz-SYxe8S1c,2614
132
132
  angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py,sha256=-cb1uohmx3o1ENFRKxTNvL61tQR4COq57cdL55bI_v8,1717
133
133
  angr/analyses/decompiler/peephole_optimizations/a_mul_const_div_shr_const.py,sha256=CMNNfuxsudSEXl9xkUGcd7VANkS4XA5zXbMd0H9XDx0,1355
134
134
  angr/analyses/decompiler/peephole_optimizations/a_shl_const_sub_a.py,sha256=jFRNyqZ3R4u8CcsBEa2EqpufQ5-oxJdhKLzMCzvb3Tg,978
@@ -143,9 +143,9 @@ angr/analyses/decompiler/peephole_optimizations/bitwise_or_to_logical_or.py,sha2
143
143
  angr/analyses/decompiler/peephole_optimizations/bool_expr_xor_1.py,sha256=qLjzpazS4vOfzUzjiSYATk9Wd9azVIjKz5eVL3Ma2-c,981
144
144
  angr/analyses/decompiler/peephole_optimizations/bswap.py,sha256=2NtQCw-whJImo9J-74G_Q15pVoAopTZTatIwJN0sJ8s,3653
145
145
  angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py,sha256=NTgzX67jatngaRXUbuVr89v39c5YBu4Xl8FT-pH_SZs,906
146
+ angr/analyses/decompiler/peephole_optimizations/const_mull_a_shift.py,sha256=R4ZyI68jMLQZQE52yuSjA8lH_01OqKYL-npfZTNerYc,3681
146
147
  angr/analyses/decompiler/peephole_optimizations/constant_derefs.py,sha256=n3SVw_gs7SL5vEbHfFcTrc4SGnD74TyasKYxLP9VBIQ,988
147
148
  angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py,sha256=pvIOzWNBYUyDjj634KeSlo5Qb8E_UBuezDoyYGE_CBw,2568
148
- angr/analyses/decompiler/peephole_optimizations/conv_const_mull_a_shift.py,sha256=0dX8tqr7qOgIuZaiQ1YT9o-t-uj6cQmDbz67wSEM79U,3569
149
149
  angr/analyses/decompiler/peephole_optimizations/conv_shl_shr.py,sha256=4zQ5DGNX6z-CAartjDM4vm-zCeiaRXYFbhriMKuOLp8,2060
150
150
  angr/analyses/decompiler/peephole_optimizations/eager_eval.py,sha256=SUjzkqLm0s-95zOdmg3oY1OBUoT0rXz08h5Ck_5Y-Tk,8464
151
151
  angr/analyses/decompiler/peephole_optimizations/extended_byte_and_mask.py,sha256=Snm7FXANsgoTUqV0_wVZvxNxFx75hJW9JYnazhMyMWg,2005
@@ -181,7 +181,7 @@ angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py,sha256=
181
181
  angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py,sha256=HGIiC6c3C91VfcqxUHe9aTsRohwmMXOHZH_G_dbwwx4,3327
182
182
  angr/analyses/decompiler/structured_codegen/__init__.py,sha256=Glc4jBCr7lZckltN9XZdSvMrGHf0swXFyKTr_QQKdWE,290
183
183
  angr/analyses/decompiler/structured_codegen/base.py,sha256=nJPOoeJCbewchYdXjSE4S2b1-WN6pT3TxmCQMDO0azw,3845
184
- angr/analyses/decompiler/structured_codegen/c.py,sha256=s55_oBWcjPcmwZel20reZYRlmncQCsmPwO1l0DCqr04,123302
184
+ angr/analyses/decompiler/structured_codegen/c.py,sha256=XofIIn12KHRwkGqC0CNYOhLO6dz9oODGkk4tSEfCk7g,125321
185
185
  angr/analyses/decompiler/structured_codegen/dummy.py,sha256=IVfmtcWpTgNCRVsuW3GdQgDnuPmvodX85V0bBYtF_BI,535
186
186
  angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=TMz65TkF_ID_Ipocj0aFDb84H6slolN90wq0tzhY2Rk,6773
187
187
  angr/analyses/decompiler/structuring/__init__.py,sha256=eSiT6xUpv9K5-enK3OZj2lNzxwowS9_5OTrjHiPgfFs,371
@@ -230,7 +230,7 @@ angr/analyses/identifier/functions/strncmp.py,sha256=XlqTTLjfPRj7LSw3-xHoH4SJyNi
230
230
  angr/analyses/identifier/functions/strncpy.py,sha256=1WUrhXMS5Sd5rfgBJbChZD_BZ_D47Z_H4AZwriyqDO0,2008
231
231
  angr/analyses/identifier/functions/strtol.py,sha256=Py_6Y9rR5dfy53LX8w9WktSBaxdyPlbrcLEiV6cWfHs,2426
232
232
  angr/analyses/propagator/__init__.py,sha256=5-UKSiAtYocLzmQWXPzxyBnPui_c8P_r617KDwtRnNw,43
233
- angr/analyses/propagator/engine_ail.py,sha256=V6jgqQb8fBNEjNdzZr9KX0IIkgzWcocgh_f0uRudUw4,50812
233
+ angr/analyses/propagator/engine_ail.py,sha256=qemofPgS_1m7j83UY6OM8HLL5alzbD0RR8B8g-goDuk,50780
234
234
  angr/analyses/propagator/engine_base.py,sha256=goOgu0QWurCThIYI0QeillAx8SfT5rLeuwGup5Njffo,1473
235
235
  angr/analyses/propagator/engine_vex.py,sha256=IEQ2bxM3HbEn4WkYzQHugOszGv8XT92Tqn87alExwfU,10012
236
236
  angr/analyses/propagator/outdated_definition_walker.py,sha256=OJnI9rlyutyy2qHMTqnrnQJCXKcBHvgwHfiqlWDECiY,6890
@@ -239,16 +239,17 @@ angr/analyses/propagator/tmpvar_finder.py,sha256=GqP1lm-_ez4AvXraDt1BQ1o7GvdjLI7
239
239
  angr/analyses/propagator/top_checker_mixin.py,sha256=8NujgeNTiaSb6JQ3J01P5QJSnQ_mnF88m7rXlATIruQ,359
240
240
  angr/analyses/propagator/values.py,sha256=b8zg2VIPJoZj4qtF3_XRfoxA7LjXxO9OIkqZ3y0Wc_M,1991
241
241
  angr/analyses/propagator/vex_vars.py,sha256=O0W7GekEZIVwiNiOdyu-BuxCZmHFZPh_ho7jmbnYAwk,1433
242
- angr/analyses/reaching_definitions/__init__.py,sha256=24NQuCGrTgHT6lNdw4gAL5lZ0SDDfnJdOhdRbvwCoMM,2070
242
+ angr/analyses/reaching_definitions/__init__.py,sha256=3itfNz4b0XcTDJJbU10gZfSuqUAx0s8poicXhXZUpys,1989
243
243
  angr/analyses/reaching_definitions/call_trace.py,sha256=5y8VtU-5-2ISamCkok6zoMahWASO2TBQYl5Q0pgeLGw,2217
244
- angr/analyses/reaching_definitions/dep_graph.py,sha256=3kyfEZpNo5ybTOZnl_6Xg08Wd6xvzVzJrJI6Z8fw0Mo,14374
245
- angr/analyses/reaching_definitions/engine_ail.py,sha256=hbRjCgjhW5ndDeCC2qoR6GN98Dq6TDLKfYENsuZE8LA,44047
246
- angr/analyses/reaching_definitions/engine_vex.py,sha256=coDol1V8UeZ-zqFKlHXcvnXasmbpTAZ8UrL1fAH6OK8,41014
247
- angr/analyses/reaching_definitions/external_codeloc.py,sha256=1tWKiupu1wTSFP11P5lEhWaSSe7iRwWtERPIxJcHtbI,814
248
- angr/analyses/reaching_definitions/function_handler.py,sha256=a9Kmd6pKYyaPprXqlbrLJ3QJt_41BiFZMjiVJIGcQ-A,20564
244
+ angr/analyses/reaching_definitions/dep_graph.py,sha256=WAgVUnVnq_K6dFeA5q1aeEq6BUyVv3iB3yQ7GhTfp4M,14819
245
+ angr/analyses/reaching_definitions/engine_ail.py,sha256=tVZldio05eSlR2fZONNUkjSh1BFhQKShaDxvLd4EAOs,43972
246
+ angr/analyses/reaching_definitions/engine_vex.py,sha256=0QNbqma8e5kpl9lrENPC8-fU-VcR0RXtKMEmd4kf7-Y,40926
247
+ angr/analyses/reaching_definitions/external_codeloc.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
248
+ angr/analyses/reaching_definitions/function_handler.py,sha256=FwCt0wCB0gO2JNUMSsoP6awTCz8dkLOZCx0ZOZhY5kU,25611
249
249
  angr/analyses/reaching_definitions/heap_allocator.py,sha256=L7LCcE-QvLd_vuc0slWmQ6X73wkYNMkUEDy1cJAV818,2634
250
- angr/analyses/reaching_definitions/rd_state.py,sha256=2b_lCaCTQ4vGZHcB71hwxsIAYnoq9w5eLaIQoKokZiY,27365
251
- angr/analyses/reaching_definitions/reaching_definitions.py,sha256=PYkWduHW6Vkz__zssNzkpOYYPD4NwvEC9jYE3f1mG9Y,21524
250
+ angr/analyses/reaching_definitions/rd_initializer.py,sha256=J4-VscXm7_7dNjCFFwdjAYJQs_ZkPoFQJKXuoobSjno,10353
251
+ angr/analyses/reaching_definitions/rd_state.py,sha256=BxWH0MS4Qmd8dUFOWnP67GjPNXWMgjHjEusUHH7ng3Q,23146
252
+ angr/analyses/reaching_definitions/reaching_definitions.py,sha256=4wAoyhHTV-ZLsT2asNFtT8SLRDYqnjOtwu9lelzGjxk,22225
252
253
  angr/analyses/reaching_definitions/subject.py,sha256=GVaI1jM-Nv2MWaCjJ-Q_54nSS3hvAaZthz14AJJNq-A,1995
253
254
  angr/analyses/typehoon/__init__.py,sha256=kCQMAuvsUKAdYFiOstBzMBCqpquJKJCQSe0CGAr2Rng,31
254
255
  angr/analyses/typehoon/lifter.py,sha256=IfkY27IyJ7QeQnVER89ZhdyScKLAoHCdVpcvtdqTy8I,1675
@@ -379,7 +380,7 @@ angr/engines/vex/light/__init__.py,sha256=WblrLgYRbdBAvNGbkzGsTgOq2A_pUBJP-FxANP
379
380
  angr/engines/vex/light/light.py,sha256=6aGk83QpcRFlfI-bI_tGM7EszGtdudCGI26qfTasoNI,21729
380
381
  angr/engines/vex/light/resilience.py,sha256=FaHiSMv_hsIiNEqA2Wga2F3bVyXGPtWudL00785ebEs,2002
381
382
  angr/engines/vex/light/slicing.py,sha256=lGZsF5_xtVKjCJmD2FMABkyz-kZWctWOMjuWnFWpe2g,2023
382
- angr/exploration_techniques/__init__.py,sha256=LMqJhfewovI5QeBIO0vE03LvjEwDlZDk_eLMYgtB0Fc,6486
383
+ angr/exploration_techniques/__init__.py,sha256=95T9fVNalvf0veq0NAmmHE-cEfBPoP_S-IRcilXGx5o,6980
383
384
  angr/exploration_techniques/bucketizer.py,sha256=H-5QyOfDNdCSTbCk8MQluwi9C9Y0iE7E1s_4EAb3LXk,2588
384
385
  angr/exploration_techniques/common.py,sha256=7vKlFQjuVoTmtKgYbYjhg67-e3weTzFtU2hC91wHHtI,2262
385
386
  angr/exploration_techniques/dfs.py,sha256=IpEmTGVqGAKUCmchKBR_w0SISIsBlNRjdp6sgZlcWis,1167
@@ -420,7 +421,7 @@ angr/knowledge_plugins/plugin.py,sha256=KCyO8mSxrFzOdEjiiuqaxvn_XF36FK7PPnDxie65
420
421
  angr/knowledge_plugins/types.py,sha256=fY1M8_21-ra5U7U0lXd2vxruMSOjb3F8-5iU5tpOw-A,1911
421
422
  angr/knowledge_plugins/cfg/__init__.py,sha256=L7qgnAg6rXGq8NCfdr1RLSSPRmQ1O87ZkLEDeC6k000,382
422
423
  angr/knowledge_plugins/cfg/cfg_manager.py,sha256=EmjrBpv3XtqzrPNTc5ugEytJ9YvFkTzjBV9a8sUtbHw,2257
423
- angr/knowledge_plugins/cfg/cfg_model.py,sha256=Y3bcz6-g-V51l9Ty-hYgkYyHs7XPvpzAD8hfbXPiL38,41299
424
+ angr/knowledge_plugins/cfg/cfg_model.py,sha256=DngKKxlbS3GGQvvyeqMPl_9rlECsFiftrkMpgg0-qek,41304
424
425
  angr/knowledge_plugins/cfg/cfg_node.py,sha256=Q_qqQ1LisCzTWROOQAfvyaBjS86zxcMw6ItzxwQqCHA,17229
425
426
  angr/knowledge_plugins/cfg/indirect_jump.py,sha256=yzPf1jjUNPgGP7D7IamqX6KF-EJX-heZjDEr4SRUWDA,2145
426
427
  angr/knowledge_plugins/cfg/memory_data.py,sha256=ZJMzA9ijo2O5TSsNutPK0pzq4k9fQmjcnNQnIS0uqmI,4167
@@ -429,14 +430,14 @@ angr/knowledge_plugins/functions/function.py,sha256=kCBJEz31DAdnnknJJAJ56xyxqkup
429
430
  angr/knowledge_plugins/functions/function_manager.py,sha256=vnUW-6RxRyjnO3doiuACRI-OgGuATwdOAQogLlxwv3M,17459
430
431
  angr/knowledge_plugins/functions/function_parser.py,sha256=cb_AD5oFqoyXapDBawnJV1D9XVRMBGa9GwwDudNSc3M,11916
431
432
  angr/knowledge_plugins/functions/soot_function.py,sha256=2zwz_tdKbEnF8eUkOEmpNr7AUeooun2-SiIoY_xIdMw,4971
432
- angr/knowledge_plugins/key_definitions/__init__.py,sha256=MQhTHLPpJd_tn44QtNr2J2HMZLOJRaU3YFczcKL-JHI,193
433
- angr/knowledge_plugins/key_definitions/atoms.py,sha256=iZ-ru9oyjBR_Gkwz5K-L2kX4jTj_HqpMviAINmFx8Ik,9514
433
+ angr/knowledge_plugins/key_definitions/__init__.py,sha256=xnn-6qL8csRtqWkHn6OTHQxiQChD8Z1xuqLN56GjZi4,397
434
+ angr/knowledge_plugins/key_definitions/atoms.py,sha256=FfEwsrSgaiupL_ZP205Tr0DWdl092SuCirdSp145SVM,9699
434
435
  angr/knowledge_plugins/key_definitions/constants.py,sha256=bbS81EF2cXvoIS7ORxH_j3tTxBL5fUaqaZ6plBWaVKw,458
435
- angr/knowledge_plugins/key_definitions/definition.py,sha256=7V81e7SgN0YKQPdeQ7dexkIEA8ID2eDHgLJlRgcdw1k,8838
436
+ angr/knowledge_plugins/key_definitions/definition.py,sha256=52sL9L4I-Kh9ZLIy3YAPjHbX-IbfUmVAZFYSx3VXknE,8681
436
437
  angr/knowledge_plugins/key_definitions/environment.py,sha256=cbNst29pGtv13Z6jlvdBIajYkE3X9MnAV5ixRTHkHzQ,3461
437
438
  angr/knowledge_plugins/key_definitions/heap_address.py,sha256=62vX5xkT91qO-6IKtGtGNUqgkfFUU1_Al6B9vU-SA7E,922
438
439
  angr/knowledge_plugins/key_definitions/key_definition_manager.py,sha256=PETOIDYYj7VPp2rtIO5XhXnvi3lgDr9qXa4pZrwbCho,3235
439
- angr/knowledge_plugins/key_definitions/live_definitions.py,sha256=wPvnEybnMq8zsRjPHIXbYAR944KblL7kxd29fdLoRew,31094
440
+ angr/knowledge_plugins/key_definitions/live_definitions.py,sha256=60kqc4vsrorUBgVlP6AJZ4fdP3Qnmv3X7v2bzZw0HHQ,39329
440
441
  angr/knowledge_plugins/key_definitions/liveness.py,sha256=PqciLk4cdHLxNp4mmyCDMpgCxSbk9VJZlx5Ai5_LYos,4054
441
442
  angr/knowledge_plugins/key_definitions/rd_model.py,sha256=pNPkHRVI41ObxZ_BDK-4cLoK-WfeCwxa9gOpAyHBQIM,7022
442
443
  angr/knowledge_plugins/key_definitions/tag.py,sha256=uBHlS71E3Ok_6V3K8NkMblctCrnAHmPYikaFTA02PyA,1682
@@ -1116,7 +1117,7 @@ angr/state_plugins/heap/heap_ptmalloc.py,sha256=G5R4CQ9iG3luayWiROfBGOLb5jO_mxMf
1116
1117
  angr/state_plugins/heap/utils.py,sha256=Peru_TgVCGRQEORQJVwJfQB1Wleglk_Hdp7aOHQa6no,793
1117
1118
  angr/storage/__init__.py,sha256=X3JnQg95SqAqahP1x10Kk5E0OXxyNlV2Xk3NKyXzykA,182
1118
1119
  angr/storage/file.py,sha256=5784YCroDh5RNc_DHeOuD8Qz3JebY82-dyQ0yd6xUqM,48231
1119
- angr/storage/memory_object.py,sha256=_U7YYEMVj97QvqsR8Ju5edvhGDyWGhsPvp7Nh_GdZpA,5558
1120
+ angr/storage/memory_object.py,sha256=U0T-XB7CxUqISODY6o2WONjiThHyzFKBjZ8D0pWLPj4,5663
1120
1121
  angr/storage/pcap.py,sha256=8n30ui0KO7qx_RgmGFL_cBYMF5AlQ5LzVFeCh9ODU6c,1940
1121
1122
  angr/storage/memory_mixins/__init__.py,sha256=kvkP1G7eLrHP7WAk2cJSfZmOkSIuxtzJveXJ5QjBZgs,11700
1122
1123
  angr/storage/memory_mixins/actions_mixin.py,sha256=KZSCMjGB_Sbk_rlgGxk4k02Pu3b569c6tG-xPoH31L0,3402
@@ -1154,7 +1155,7 @@ angr/storage/memory_mixins/paged_memory/pages/cooperation.py,sha256=pz7HEzWkNeti
1154
1155
  angr/storage/memory_mixins/paged_memory/pages/history_tracking_mixin.py,sha256=Az7lg1gXapWxj8tIx0Sz9x2nJfm71oBy5Rm87CUh9mM,2727
1155
1156
  angr/storage/memory_mixins/paged_memory/pages/ispo_mixin.py,sha256=mHt5nQYXkXifwGT0_UGvKirECEC2v7jNNtf_6oY57uI,2050
1156
1157
  angr/storage/memory_mixins/paged_memory/pages/list_page.py,sha256=ey-c8PLa_iH5gyz6VRcxtK1I9w8JbIrvkFO1Hj9V8L8,14108
1157
- angr/storage/memory_mixins/paged_memory/pages/multi_values.py,sha256=Jgapckk0x8zb9_KFgpivPs9RwEfDVI35WhhkRFi-j7s,8834
1158
+ angr/storage/memory_mixins/paged_memory/pages/multi_values.py,sha256=gI7Uj5eTthgSq2wxrOnsvc_wUdxB_okMZ5gBjAFZUQg,10585
1158
1159
  angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py,sha256=KoBLEZ1-3erAG45y_l9eGFcVTDjGYJcvvWIGqeL9cL4,15810
1159
1160
  angr/storage/memory_mixins/paged_memory/pages/permissions_mixin.py,sha256=Ek2YSmFOGUScFXPx8hqroNkl3gK1aqKCMv_X3_pImLs,830
1160
1161
  angr/storage/memory_mixins/paged_memory/pages/refcount_mixin.py,sha256=oES5tahTy4SgyDi2h5oRRC0PC4JHNcIvdAC4INKkeJw,1701
@@ -1182,8 +1183,9 @@ angr/utils/library.py,sha256=MYbY6rvC2Fi1ofbBHynh6-cdmaDETxj8hBz1gxKvsQQ,7178
1182
1183
  angr/utils/loader.py,sha256=QdkatPiyRfz5KdfCzRI1Xp3TJL_Pa75wY0dsILgMbwk,1944
1183
1184
  angr/utils/mp.py,sha256=xSWDnZdkLaTwGXntuSDwb2tIqMsIxJpmLrxd_YWBILw,1822
1184
1185
  angr/utils/timing.py,sha256=uOowCP8kotDrKDOjlAod-guBuYkAA8zEtiAwpdwMlIU,1334
1185
- angr-9.2.64.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1186
- angr-9.2.64.dist-info/METADATA,sha256=HgoI8rH3UlmQ2edoY3dL6oKrauhwDBqRGHKN4TxIt5w,4666
1187
- angr-9.2.64.dist-info/WHEEL,sha256=ymSzJ2YZ25t_egXIuQry-6pb8nf56ucm9a7akRG3hsE,109
1188
- angr-9.2.64.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1189
- angr-9.2.64.dist-info/RECORD,,
1186
+ angr/utils/typing.py,sha256=_I4dzZSh1_uRKQ3PpjXseA_CaJH6ru2yAxjICkJhfmI,417
1187
+ angr-9.2.66.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1188
+ angr-9.2.66.dist-info/METADATA,sha256=V_XJv0zQdYIc1Ar4PTYrFdRCaJCDMmnMpFaMz715gcQ,4686
1189
+ angr-9.2.66.dist-info/WHEEL,sha256=EIJ1YQRF7Vdkd0SZAEbpd1G47KYEg3Dx_E5NJZhc5tQ,109
1190
+ angr-9.2.66.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1191
+ angr-9.2.66.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.1)
2
+ Generator: bdist_wheel (0.41.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-manylinux2014_x86_64
5
5
 
@@ -1,75 +0,0 @@
1
- from ailment.expression import Convert, BinaryOp, Const
2
-
3
- from .base import PeepholeOptimizationExprBase
4
-
5
-
6
- class ConvConstMullAShift(PeepholeOptimizationExprBase):
7
- __slots__ = ()
8
-
9
- NAME = "Conv(64->32, (N * a) >> M) => a / N1"
10
- expr_classes = (Convert,)
11
-
12
- def optimize(self, expr: Convert):
13
- if expr.from_bits == 64 and expr.to_bits == 32:
14
- if (
15
- isinstance(expr.operand, BinaryOp)
16
- and expr.operand.op == "Shr"
17
- and isinstance(expr.operand.operands[1], Const)
18
- ):
19
- # (N * a) >> M ==> a / N1
20
- inner = expr.operand.operands[0]
21
- if isinstance(inner, BinaryOp) and inner.op == "Mull" and isinstance(inner.operands[0], Const):
22
- C = inner.operands[0].value
23
- X = inner.operands[1]
24
- V = expr.operand.operands[1].value
25
- ndigits = 5 if V == 32 else 6
26
- divisor = self._check_divisor(pow(2, V), C, ndigits)
27
- if divisor is not None:
28
- new_const = Const(None, None, divisor, X.bits)
29
- new_div = BinaryOp(inner.idx, "Div", [X, new_const], inner.signed, **inner.tags)
30
- return new_div
31
-
32
- elif isinstance(expr.operand, BinaryOp) and expr.operand.op in {"Add", "Sub"}:
33
- expr0, expr1 = expr.operand.operands
34
- if (
35
- isinstance(expr0, BinaryOp)
36
- and expr0.op in {"Shr", "Sar"}
37
- and isinstance(expr0.operands[1], Const)
38
- and isinstance(expr1, BinaryOp)
39
- and expr1.op in {"Shr", "Sar"}
40
- and isinstance(expr1.operands[1], Const)
41
- ):
42
- if (
43
- isinstance(expr0.operands[0], BinaryOp)
44
- and expr0.operands[0].op in {"Mull", "Mul"}
45
- and isinstance(expr0.operands[0].operands[1], Const)
46
- ):
47
- a0 = expr0.operands[0].operands[0]
48
- a1 = expr1.operands[0]
49
- if a0 == a1:
50
- # (a * x >> M1) +/- (a >> M2) ==> a / N
51
- C = expr0.operands[0].operands[1].value
52
- X = a0
53
- V = expr0.operands[1].value
54
- ndigits = 5 if V == 32 else 6
55
- divisor = self._check_divisor(pow(2, V), C, ndigits)
56
- if divisor is not None:
57
- new_const = Const(None, None, divisor, X.bits)
58
- new_div = BinaryOp(
59
- expr0.operands[0].idx,
60
- "Div",
61
- [X, new_const],
62
- expr0.operands[0].signed,
63
- **expr0.operands[0].tags,
64
- )
65
- # we cannot drop the convert
66
- new_div = Convert(
67
- expr.idx, expr.from_bits, expr.to_bits, expr.is_signed, new_div, **expr.tags
68
- )
69
- return new_div
70
-
71
- @staticmethod
72
- def _check_divisor(a, b, ndigits=6):
73
- divisor_1 = 1 + (a // b)
74
- divisor_2 = int(round(a / float(b), ndigits))
75
- return divisor_1 if divisor_1 == divisor_2 else None
File without changes