angr 9.2.170__cp310-abi3-win_amd64.whl → 9.2.172__cp310-abi3-win_amd64.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.

angr/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
  # pylint: disable=wrong-import-position
3
3
  from __future__ import annotations
4
4
 
5
- __version__ = "9.2.170"
5
+ __version__ = "9.2.172"
6
6
 
7
7
  if bytes is str:
8
8
  raise Exception(
angr/analyses/cfg/cfb.py CHANGED
@@ -155,7 +155,7 @@ class CFBlanket(Analysis):
155
155
  self._regions.append(mr)
156
156
  elif isinstance(obj, ExternObject):
157
157
  if "extern" not in self._exclude_region_types:
158
- size = obj.max_addr - obj.min_addr
158
+ size = obj.next_addr
159
159
  mr = MemoryRegion(obj.min_addr, size, "extern", obj, None)
160
160
  self._regions.append(mr)
161
161
  elif isinstance(obj, ELFTLSObject):
@@ -562,7 +562,13 @@ class Decompiler(Analysis):
562
562
  continue
563
563
 
564
564
  pass_ = timethis(pass_)
565
- a = pass_(self.func, seq=seq_node, scratch=self._optimization_scratch, **kwargs)
565
+ a = pass_(
566
+ self.func,
567
+ seq=seq_node,
568
+ scratch=self._optimization_scratch,
569
+ peephole_optimizations=self._peephole_optimizations,
570
+ **kwargs,
571
+ )
566
572
  if a.out_seq:
567
573
  seq_node = a.out_seq
568
574
 
@@ -35,6 +35,7 @@ from .switch_reused_entry_rewriter import SwitchReusedEntryRewriter
35
35
  from .condition_constprop import ConditionConstantPropagation
36
36
  from .determine_load_sizes import DetermineLoadSizes
37
37
  from .eager_std_string_concatenation import EagerStdStringConcatenationPass
38
+ from .peephole_simplifier import PostStructuringPeepholeOptimizationPass
38
39
 
39
40
  if TYPE_CHECKING:
40
41
  from angr.analyses.decompiler.presets import DecompilationPreset
@@ -72,6 +73,7 @@ ALL_OPTIMIZATION_PASSES = [
72
73
  ConditionConstantPropagation,
73
74
  DetermineLoadSizes,
74
75
  EagerStdStringConcatenationPass,
76
+ PostStructuringPeepholeOptimizationPass,
75
77
  ]
76
78
 
77
79
  # these passes may duplicate code to remove gotos or improve the structure of the graph
@@ -0,0 +1,75 @@
1
+ from __future__ import annotations
2
+
3
+ from angr import ailment
4
+ from angr.analyses.decompiler.utils import (
5
+ peephole_optimize_expr,
6
+ )
7
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
8
+ from angr.analyses.decompiler.peephole_optimizations import (
9
+ PeepholeOptimizationExprBase,
10
+ EXPR_OPTS,
11
+ )
12
+ from .optimization_pass import OptimizationPassStage, SequenceOptimizationPass
13
+
14
+
15
+ class ExpressionSequenceWalker(SequenceWalker):
16
+ """
17
+ Walks sequences with generic expression handling.
18
+ """
19
+
20
+ def _handle(self, node, **kwargs):
21
+ if isinstance(node, ailment.Expr.Expression):
22
+ handler = self._handlers.get(ailment.Expr.Expression, None)
23
+ if handler:
24
+ return handler(node, **kwargs)
25
+ return super()._handle(node, **kwargs)
26
+
27
+
28
+ class PostStructuringPeepholeOptimizationPass(SequenceOptimizationPass):
29
+ """
30
+ Perform a post-structuring peephole optimization pass to simplify node statements and expressions.
31
+ """
32
+
33
+ ARCHES = None
34
+ PLATFORMS = None
35
+ STAGE = OptimizationPassStage.AFTER_STRUCTURING
36
+ NAME = "Post-Structuring Peephole Optimization"
37
+ DESCRIPTION = (__doc__ or "").strip()
38
+
39
+ def __init__(self, func, peephole_optimizations=None, **kwargs):
40
+ super().__init__(func, **kwargs)
41
+ self._peephole_optimizations = peephole_optimizations
42
+ self._expr_peephole_opts = [
43
+ cls(self.project, self.kb, self._func.addr)
44
+ for cls in (self._peephole_optimizations or EXPR_OPTS)
45
+ if issubclass(cls, PeepholeOptimizationExprBase)
46
+ ]
47
+ self.analyze()
48
+
49
+ def _check(self):
50
+ return True, None
51
+
52
+ def _analyze(self, cache=None):
53
+ walker = ExpressionSequenceWalker(
54
+ handlers={ailment.Expr.Expression: self._optimize_expr, ailment.Block: self._optimize_block}
55
+ )
56
+ walker.walk(self.seq)
57
+ self.out_seq = self.seq
58
+
59
+ def _optimize_expr(self, expr, **_):
60
+ new_expr = peephole_optimize_expr(expr, self._expr_peephole_opts)
61
+ return new_expr if expr != new_expr else None
62
+
63
+ def _optimize_block(self, block, **_):
64
+ old_block, new_block = None, block
65
+ while old_block != new_block:
66
+ old_block = new_block
67
+ # Note: AILBlockSimplifier updates expressions in place
68
+ simp = self.project.analyses.AILBlockSimplifier(
69
+ new_block,
70
+ func_addr=self._func.addr,
71
+ peephole_optimizations=self._peephole_optimizations,
72
+ )
73
+ assert simp.result_block is not None
74
+ new_block = simp.result_block
75
+ return new_block if block != new_block else None
@@ -10,6 +10,7 @@ from angr.analyses.decompiler.optimization_passes import (
10
10
  X86GccGetPcSimplifier,
11
11
  CallStatementRewriter,
12
12
  SwitchReusedEntryRewriter,
13
+ PostStructuringPeepholeOptimizationPass,
13
14
  )
14
15
 
15
16
 
@@ -25,6 +26,7 @@ preset_basic = DecompilationPreset(
25
26
  X86GccGetPcSimplifier,
26
27
  CallStatementRewriter,
27
28
  SwitchReusedEntryRewriter,
29
+ PostStructuringPeepholeOptimizationPass,
28
30
  ],
29
31
  )
30
32
 
@@ -23,6 +23,7 @@ from angr.analyses.decompiler.optimization_passes import (
23
23
  SwitchReusedEntryRewriter,
24
24
  ConditionConstantPropagation,
25
25
  DetermineLoadSizes,
26
+ PostStructuringPeepholeOptimizationPass,
26
27
  )
27
28
 
28
29
 
@@ -51,6 +52,7 @@ preset_fast = DecompilationPreset(
51
52
  CallStatementRewriter,
52
53
  ConditionConstantPropagation,
53
54
  DetermineLoadSizes,
55
+ PostStructuringPeepholeOptimizationPass,
54
56
  ],
55
57
  )
56
58
 
@@ -28,6 +28,7 @@ from angr.analyses.decompiler.optimization_passes import (
28
28
  SwitchReusedEntryRewriter,
29
29
  ConditionConstantPropagation,
30
30
  DetermineLoadSizes,
31
+ PostStructuringPeepholeOptimizationPass,
31
32
  )
32
33
 
33
34
 
@@ -61,6 +62,7 @@ preset_full = DecompilationPreset(
61
62
  SwitchReusedEntryRewriter,
62
63
  ConditionConstantPropagation,
63
64
  DetermineLoadSizes,
65
+ PostStructuringPeepholeOptimizationPass,
64
66
  ],
65
67
  )
66
68
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from archinfo import Arch
4
4
 
5
- from angr.analyses.decompiler.optimization_passes.optimization_pass import OptimizationPass
5
+ from angr.analyses.decompiler.optimization_passes.optimization_pass import BaseOptimizationPass
6
6
 
7
7
 
8
8
  class DecompilationPreset:
@@ -10,7 +10,7 @@ class DecompilationPreset:
10
10
  A DecompilationPreset provides a preconfigured set of optimizations and configurations for the Decompiler analysis.
11
11
  """
12
12
 
13
- def __init__(self, name: str, opt_passes: list[type[OptimizationPass]]):
13
+ def __init__(self, name: str, opt_passes: list[type[BaseOptimizationPass]]):
14
14
  self.name = name
15
15
  self.opt_passes = opt_passes
16
16
 
angr/rustylib.pyd CHANGED
Binary file
angr/unicornlib.dll CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: angr
3
- Version: 9.2.170
3
+ Version: 9.2.172
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
  License: BSD-2-Clause
6
6
  Project-URL: Homepage, https://angr.io/
@@ -16,12 +16,12 @@ Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  Requires-Dist: cxxheaderparser
18
18
  Requires-Dist: GitPython
19
- Requires-Dist: archinfo==9.2.170
19
+ Requires-Dist: archinfo==9.2.172
20
20
  Requires-Dist: cachetools
21
21
  Requires-Dist: capstone==5.0.3
22
22
  Requires-Dist: cffi>=1.14.0
23
- Requires-Dist: claripy==9.2.170
24
- Requires-Dist: cle==9.2.170
23
+ Requires-Dist: claripy==9.2.172
24
+ Requires-Dist: cle==9.2.172
25
25
  Requires-Dist: mulpyplexer
26
26
  Requires-Dist: networkx!=2.8.1,>=2.0
27
27
  Requires-Dist: protobuf>=5.28.2
@@ -30,7 +30,7 @@ Requires-Dist: pycparser>=2.18
30
30
  Requires-Dist: pydemumble
31
31
  Requires-Dist: pyformlang
32
32
  Requires-Dist: pypcode<4.0,>=3.2.1
33
- Requires-Dist: pyvex==9.2.170
33
+ Requires-Dist: pyvex==9.2.172
34
34
  Requires-Dist: rich>=13.1.0
35
35
  Requires-Dist: sortedcontainers
36
36
  Requires-Dist: sympy
@@ -1,4 +1,4 @@
1
- angr/__init__.py,sha256=keS-cXXMrR19-dZYM2Qxu3Ci0aMvAIvhn26i5d-EcV0,9246
1
+ angr/__init__.py,sha256=ZeGnjkV15b26W_suDwvHXnFGn8nN22iB2dV9D0w5lW4,9246
2
2
  angr/__main__.py,sha256=AK9V6uPZ58UuTKmmiH_Kgn5pG9AvjnmJCPOku69A-WU,4993
3
3
  angr/annocfg.py,sha256=0NIvcuCskwz45hbBzigUTAuCrYutjDMwEXtMJf0y0S0,10742
4
4
  angr/blade.py,sha256=OGGW-oggqI9_LvgZhiQuh9Ktkvf3vhRBmH0XviNyZ6o,15801
@@ -15,7 +15,7 @@ angr/keyed_region.py,sha256=Cx6dadqFgEvRmEHTbCJpg9mXkBtKGc_BKckHc6bk1IU,17992
15
15
  angr/knowledge_base.py,sha256=hRoSLuLaOXmddTSF9FN5TVs7liftpBGq_IICz5AaYBk,4533
16
16
  angr/project.py,sha256=AJmBgv3U8iv-hGEfnpmESVVjK16NiBAemmahLuqz7yk,38096
17
17
  angr/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
18
- angr/rustylib.pyd,sha256=W8sVhtq3yhEa4Irb1A6cupY7tOd3e1veF627jbZdFVk,4466688
18
+ angr/rustylib.pyd,sha256=X-LW9eTPpVuP4tYisjR_7usNDOsPWObPbEl_ULvIE6Y,4466688
19
19
  angr/serializable.py,sha256=l908phj_KcqopEEL_oCufbP_H6cm3Wc9v-5xdux1-6g,1533
20
20
  angr/sim_manager.py,sha256=w7yTfWR-P9yoN5x85eeiNpj9dTrnjpJ3o5aoFpDAPnc,39396
21
21
  angr/sim_options.py,sha256=tfl57MFECmA7uvMMtQrRRbpG8g_A9jKOzwY6nApTW6Y,17782
@@ -27,7 +27,7 @@ angr/sim_variable.py,sha256=3DssmMw5G7m_-MYToJ3LBP-ooy2UQEuI2YgxIuX3d4Y,13177
27
27
  angr/slicer.py,sha256=DND0BERanYKafasRH9MDFAng0rSjdjmzXj2-phCD6CQ,10634
28
28
  angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
29
29
  angr/tablespecs.py,sha256=Kx1e87FxTx3_ZN7cAHWZSRpdInT4Vfj5gExAWtLkLTw,3259
30
- angr/unicornlib.dll,sha256=hnHg6wObmXg83Tp7IOAobbeV5lf6-p-6h2dBPvdTamY,813568
30
+ angr/unicornlib.dll,sha256=Iigc3QczuAVV_SzTx9yu0MnTRQFJR5qT5yM010wqFNY,813568
31
31
  angr/vaults.py,sha256=D_gkDegCyPlZMKGC5E8zINYAaZfSXNWbmhX0rXCYpvM,9718
32
32
  angr/ailment/__init__.py,sha256=X1LTS6MuTovGtbXBjZendUVOzRk-ib-bP0imuqJDOYI,2039
33
33
  angr/ailment/block.py,sha256=rkmimsNPhrUabVVbRd2IgCaW0hA2_isvAsKlYtHZhgY,2428
@@ -83,7 +83,7 @@ angr/analyses/calling_convention/calling_convention.py,sha256=vdGqrv7SQDnO6Rg9rg
83
83
  angr/analyses/calling_convention/fact_collector.py,sha256=SCdNm-6qfgj-SRnbtPpzzkZBS0nH0Ik3zPn5wLG6-7Y,28480
84
84
  angr/analyses/calling_convention/utils.py,sha256=twkO073RvkkFXnOTc-KYQT1GKUtz0OPjxh0N6AWIriQ,2110
85
85
  angr/analyses/cfg/__init__.py,sha256=-w8Vd6FD6rtjlQaQ7MxwmliFgS2zt-kZepAY4gHas04,446
86
- angr/analyses/cfg/cfb.py,sha256=7JibFw5NyGWIbZnWMn7NS0zOqpB5s3KvxRoK8bEJOOs,15367
86
+ angr/analyses/cfg/cfb.py,sha256=HI25OJKs2OUlWkOSG4kLsZQFnBJcfDwSQKp6_ZRsoQY,15353
87
87
  angr/analyses/cfg/cfg.py,sha256=dc9M91CaLeEKduYfMwpsT_01x6XyYuoNvgvcDKtbN-I,3177
88
88
  angr/analyses/cfg/cfg_arch_options.py,sha256=_XRewFZ51SeNaxChadb6_ER7-8LW8KXeTIpoP8_iRj0,3506
89
89
  angr/analyses/cfg/cfg_base.py,sha256=eleUmM_znfsl6KV7T2tUmSEy2iLmPsrT3dNB2BYudd4,124964
@@ -126,7 +126,7 @@ angr/analyses/decompiler/clinic.py,sha256=rGR5ODSEZyHX1cmEuUNPKxK3BNcVAg-97Tlppx
126
126
  angr/analyses/decompiler/condition_processor.py,sha256=ALx1EO82EWOfj1mjWhS_8GNMLdEO98jqnIqB-CtfELg,56692
127
127
  angr/analyses/decompiler/decompilation_cache.py,sha256=06oiG299mVpGOTL54Xy1CUxz5s8QLgYJn5XIvKFLYkU,1566
128
128
  angr/analyses/decompiler/decompilation_options.py,sha256=bs6CNpU3UxepgBB_9eUH4jriNpGoryyPP0sR1hDWpTk,8477
129
- angr/analyses/decompiler/decompiler.py,sha256=Mw1C-VPO283ghNS6P5KscjQLhH7Yj19SDCiSDzwU7ME,31716
129
+ angr/analyses/decompiler/decompiler.py,sha256=adX2UJv6s4JAF7Qf6HTgwPo28QQ6yCzrrQrtlqDZyfE,31864
130
130
  angr/analyses/decompiler/empty_node_remover.py,sha256=4CdxTM1AVmRoEdRIwJg1YEy10AgkEoRmJ8SU7xGbKnM,7424
131
131
  angr/analyses/decompiler/expression_narrower.py,sha256=lBtcsPu4V5JJ_u25GF-BJ3vaybu8TRr9XxmnjOrA4J8,10367
132
132
  angr/analyses/decompiler/goto_manager.py,sha256=wVoeXJcadIda84LloGgqW-rL0QHLv3fx4vZHLhmz-_o,4027
@@ -162,7 +162,7 @@ angr/analyses/decompiler/dephication/seqnode_dephication.py,sha256=kigkzU78eNe-z
162
162
  angr/analyses/decompiler/notes/__init__.py,sha256=4e5yTEQr5tnTQt8BfsMXqRUUpWPaQIFLzsgNVx55VJw,181
163
163
  angr/analyses/decompiler/notes/decompilation_note.py,sha256=MTFHVMlfmJGrKGuvlHppcIEFR1FWF9xW8_0U0xoFOUo,1352
164
164
  angr/analyses/decompiler/notes/deobfuscated_strings.py,sha256=f9AtSSVIB7kAlPUlkLxqNodco4KWbYivPV3Yh8KjVTo,1877
165
- angr/analyses/decompiler/optimization_passes/__init__.py,sha256=y7ND9Wg98M5SoMGuOespoLeh1s-wFqKyeW2_4esDsiw,5236
165
+ angr/analyses/decompiler/optimization_passes/__init__.py,sha256=v6LlcY49Z816sgba6FORCZUQ0XHtw58AztlZ9hsTtms,5354
166
166
  angr/analyses/decompiler/optimization_passes/base_ptr_save_simplifier.py,sha256=-kuCQk0ALYM1rmr6VaijrZYgHseeXqlWECaekKfI6hE,6120
167
167
  angr/analyses/decompiler/optimization_passes/call_stmt_rewriter.py,sha256=INLmzfGDMsVzyQF2S6uwiQSoNcxM7DUBJrdWlL2gqlY,1325
168
168
  angr/analyses/decompiler/optimization_passes/code_motion.py,sha256=fdUvRseuFiH6ehpk9uWWMityDuBs_kqmIjYMi92dDkw,15353
@@ -183,6 +183,7 @@ angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=8Q2Y
183
183
  angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=_p9puK2bvp055mqSW28QIqXWpZD-OpsunWPQrOWmT9Q,42130
184
184
  angr/analyses/decompiler/optimization_passes/mod_simplifier.py,sha256=9ekxyvxF8g3tN5oanUg96HaYiyYVbj5Nf-vSeeq86kI,3384
185
185
  angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=VGpCQmx8H2w3HoVFGdqwYYZ0z_IdHrFjOhz37yvxxTQ,28169
186
+ angr/analyses/decompiler/optimization_passes/peephole_simplifier.py,sha256=4PeOX1al4raJ7QCVLyNcffF_Q5XnPS1vDwz4riNUeHQ,2672
186
187
  angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py,sha256=-MoVamrPN9fMakQMZPwRYQ5rbeuQURXvyELuUhPVXKI,9088
187
188
  angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py,sha256=A7azHMeTQDXPFj44lI-mK7wnbJZ6cdSL-lwwqxiBTk0,6420
188
189
  angr/analyses/decompiler/optimization_passes/ret_deduplicator.py,sha256=hqOBkbiyQwGDoPdkMLwJjJOI_90QQ2R6ESs2HQ4z0iw,8005
@@ -258,10 +259,10 @@ angr/analyses/decompiler/peephole_optimizations/single_bit_xor.py,sha256=lxDgPnn
258
259
  angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py,sha256=8gPWhFTcezgO7pZ_v0pxR7pweds4_GrrY82ur6Nrlf8,4796
259
260
  angr/analyses/decompiler/peephole_optimizations/utils.py,sha256=KYDiAt0PUA4PcOlBK-OS0aBr16_ZSETMISPAnaUJiLM,724
260
261
  angr/analyses/decompiler/presets/__init__.py,sha256=NWARH5yOyBz4-5qKhzH56PNfPNRViNKMDeESlpplFxo,375
261
- angr/analyses/decompiler/presets/basic.py,sha256=KDHlMq_XWonN2-JIYYVIhbI6FbfzXttmkgXFrwi5MiA,803
262
- angr/analyses/decompiler/presets/fast.py,sha256=52ZiYOp165AaCjRok6P7WP9HCzMMYgWX8kMQgTNKkTw,1542
263
- angr/analyses/decompiler/presets/full.py,sha256=NbyJ3h589kWlYL6uDz6rv0R9gkGqX2TF0i-OLZM3Jb4,1786
264
- angr/analyses/decompiler/presets/preset.py,sha256=sTK5fJfx_Cdx0Gjn7y4bOrDp-2eFPeg1e1d5Eyc9uXk,1256
262
+ angr/analyses/decompiler/presets/basic.py,sha256=sHT2oalBmINVSZfpEbx4LmK0G1zqbZmLaVCAH-r-VDI,897
263
+ angr/analyses/decompiler/presets/fast.py,sha256=0q9DEyWZOzt6MMJe2bb9LjlGrgv5NxgEjAb6Z1fah24,1636
264
+ angr/analyses/decompiler/presets/full.py,sha256=j6ccrb3I8RFnxAZXbkdnMwCmG6AwIddP0qGD-7LzXz8,1880
265
+ angr/analyses/decompiler/presets/preset.py,sha256=LvX7ydyO0ZzQsC0M2fy1wXA_0ygSqeP9P52VJAK0Eeo,1264
265
266
  angr/analyses/decompiler/region_simplifiers/__init__.py,sha256=BSD9osrReTEdapOMmyI1kFiN7AmE1EeJGLBV7i0u-Uc,117
266
267
  angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py,sha256=xVY1NUqFudjdcFFO5RAfbdIlHyCRPLYDVPM8Z4J6uic,3832
267
268
  angr/analyses/decompiler/region_simplifiers/cascading_ifs.py,sha256=kPWajH8__ap-7713B-rT3Dun_O1gYW-AoS5gJHRoMlY,2610
@@ -1405,9 +1406,9 @@ angr/utils/vex.py,sha256=epcrCexi_NjKnPGM2gfpiRsUea_Scd-71UMuF32ZAQo,306
1405
1406
  angr/utils/ssa/__init__.py,sha256=xbuVllFoPane9lHACdRQP5OO99Mca-4sqpFrtoAvnxo,17464
1406
1407
  angr/utils/ssa/tmp_uses_collector.py,sha256=digAUQpYoFR1VYfwoXlF3T1pYdDi6Pdq_ck54SjMabQ,813
1407
1408
  angr/utils/ssa/vvar_uses_collector.py,sha256=HewqUQluNE9EsaiLeFo7LaBvws_DDBDYNt9RBExy464,1367
1408
- angr-9.2.170.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
1409
- angr-9.2.170.dist-info/METADATA,sha256=pfK7dUeXuyqoJW4QQoWrpHFJbhrAsEh8tGiLR4N8kqM,4453
1410
- angr-9.2.170.dist-info/WHEEL,sha256=OJ2zpOfp3Fst0GC5jHtFuY8tAf46LLgZ9O920dE4b3c,100
1411
- angr-9.2.170.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1412
- angr-9.2.170.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1413
- angr-9.2.170.dist-info/RECORD,,
1409
+ angr-9.2.172.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
1410
+ angr-9.2.172.dist-info/METADATA,sha256=kzqu9NoWtjz8McDJyDcFq-nxvTRXCmdaYSCKMvm_Znc,4453
1411
+ angr-9.2.172.dist-info/WHEEL,sha256=OJ2zpOfp3Fst0GC5jHtFuY8tAf46LLgZ9O920dE4b3c,100
1412
+ angr-9.2.172.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1413
+ angr-9.2.172.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1414
+ angr-9.2.172.dist-info/RECORD,,
File without changes