angr 9.2.177__cp310-abi3-macosx_11_0_arm64.whl → 9.2.178__cp310-abi3-macosx_11_0_arm64.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 (30) hide show
  1. angr/__init__.py +1 -1
  2. angr/analyses/cfg/cfg_fast.py +15 -0
  3. angr/analyses/decompiler/ail_simplifier.py +68 -0
  4. angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py +45 -7
  5. angr/analyses/decompiler/clinic.py +15 -7
  6. angr/analyses/decompiler/dirty_rewriters/__init__.py +7 -0
  7. angr/analyses/decompiler/dirty_rewriters/amd64_dirty.py +69 -0
  8. angr/analyses/decompiler/dirty_rewriters/rewriter_base.py +27 -0
  9. angr/analyses/decompiler/optimization_passes/__init__.py +3 -0
  10. angr/analyses/decompiler/optimization_passes/optimization_pass.py +10 -8
  11. angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py +44 -6
  12. angr/analyses/decompiler/optimization_passes/register_save_area_simplifier_adv.py +198 -0
  13. angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py +111 -55
  14. angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts_around_comparators.py +72 -1
  15. angr/analyses/decompiler/presets/basic.py +2 -0
  16. angr/analyses/decompiler/presets/fast.py +2 -0
  17. angr/analyses/decompiler/presets/full.py +2 -0
  18. angr/analyses/s_propagator.py +23 -21
  19. angr/analyses/smc.py +2 -3
  20. angr/knowledge_plugins/labels.py +4 -4
  21. angr/rustylib.abi3.so +0 -0
  22. angr/unicornlib.dylib +0 -0
  23. angr/utils/funcid.py +85 -0
  24. angr/utils/ssa/__init__.py +2 -6
  25. {angr-9.2.177.dist-info → angr-9.2.178.dist-info}/METADATA +6 -5
  26. {angr-9.2.177.dist-info → angr-9.2.178.dist-info}/RECORD +30 -26
  27. {angr-9.2.177.dist-info → angr-9.2.178.dist-info}/WHEEL +0 -0
  28. {angr-9.2.177.dist-info → angr-9.2.178.dist-info}/entry_points.txt +0 -0
  29. {angr-9.2.177.dist-info → angr-9.2.178.dist-info}/licenses/LICENSE +0 -0
  30. {angr-9.2.177.dist-info → angr-9.2.178.dist-info}/top_level.txt +0 -0
@@ -15,6 +15,7 @@ from angr.ailment.expression import (
15
15
  Load,
16
16
  Convert,
17
17
  Expression,
18
+ Tmp,
18
19
  )
19
20
  from angr.ailment.statement import Assignment, Store, Return, Jump, ConditionalJump
20
21
 
@@ -164,7 +165,7 @@ class SPropagatorAnalysis(Analysis):
164
165
  assert v is not None
165
166
  const_vvars[vvar_id] = v
166
167
  for vvar_at_use, useloc in vvar_uselocs[vvar_id]:
167
- replacements[useloc][vvar_at_use] = v
168
+ self.replace(replacements, useloc, vvar_at_use, v)
168
169
  continue
169
170
 
170
171
  v = phi_assignment_get_src(stmt)
@@ -185,7 +186,7 @@ class SPropagatorAnalysis(Analysis):
185
186
  const_value = const_vvars[next(iter(all_int_src_varids))]
186
187
  const_vvars[vvar.varid] = const_value
187
188
  for vvar_at_use, useloc in vvar_uselocs[vvar.varid]:
188
- replacements[useloc][vvar_at_use] = const_value
189
+ self.replace(replacements, useloc, vvar_at_use, const_value)
189
190
 
190
191
  # function mode only
191
192
  if self.mode == "function":
@@ -226,7 +227,7 @@ class SPropagatorAnalysis(Analysis):
226
227
  if can_replace:
227
228
  # we can propagate this load because there is no store between its def and use
228
229
  for vvar_used, vvar_useloc in vvar_uselocs_set:
229
- replacements[vvar_useloc][vvar_used] = stmt.src
230
+ self.replace(replacements, vvar_useloc, vvar_used, stmt.src)
230
231
  continue
231
232
 
232
233
  if (
@@ -241,7 +242,7 @@ class SPropagatorAnalysis(Analysis):
241
242
  uselocs = {loc for _, loc in vvar_uselocs_set}
242
243
  if self.is_vvar_used_for_addr_loading_switch_case(uselocs, blocks) and not has_tmp_expr(stmt.src):
243
244
  for vvar_used, vvar_useloc in vvar_uselocs_set:
244
- replacements[vvar_useloc][vvar_used] = stmt.src
245
+ self.replace(replacements, vvar_useloc, vvar_used, stmt.src)
245
246
  # mark the vvar as dead and should be removed
246
247
  self.model.dead_vvar_ids.add(vvar.varid)
247
248
  continue
@@ -255,7 +256,7 @@ class SPropagatorAnalysis(Analysis):
255
256
  and not has_tmp_expr(stmt.src)
256
257
  ):
257
258
  # we can propagate this load because there is no store between its def and use
258
- replacements[vvar_useloc][vvar_used] = stmt.src
259
+ self.replace(replacements, vvar_useloc, vvar_used, stmt.src)
259
260
  continue
260
261
 
261
262
  if is_const_and_vvar_assignment(stmt) and not has_tmp_expr(stmt.src):
@@ -272,9 +273,9 @@ class SPropagatorAnalysis(Analysis):
272
273
  and stmt.src.oident == useloc_stmt.dst.oident
273
274
  and stmt.src.category == useloc_stmt.dst.category
274
275
  ):
275
- replacements[vvar_useloc][vvar_used] = stmt.src
276
+ self.replace(replacements, vvar_useloc, vvar_used, stmt.src)
276
277
  else:
277
- replacements[vvar_useloc][vvar_used] = stmt.src
278
+ self.replace(replacements, vvar_useloc, vvar_used, stmt.src)
278
279
  continue
279
280
 
280
281
  else:
@@ -288,7 +289,7 @@ class SPropagatorAnalysis(Analysis):
288
289
  # this vvar is used once if we exclude its uses at ret sites or jump sites. we can
289
290
  # propagate it
290
291
  for vvar_used, vvar_useloc in vvar_uselocs_set:
291
- replacements[vvar_useloc][vvar_used] = stmt.src
292
+ self.replace(replacements, vvar_useloc, vvar_used, stmt.src)
292
293
  continue
293
294
 
294
295
  if (
@@ -304,7 +305,7 @@ class SPropagatorAnalysis(Analysis):
304
305
  # remove duplicate use locs (e.g., if the variable is used multiple times by the
305
306
  # same statement) - but ensure stmt is simple enough
306
307
  for vvar_used, vvar_useloc in vvar_uselocs_set:
307
- replacements[vvar_useloc][vvar_used] = stmt.src
308
+ self.replace(replacements, vvar_useloc, vvar_used, stmt.src)
308
309
  continue
309
310
 
310
311
  # special logic for global variables: if it's used once or multiple times, and the variable is never
@@ -332,7 +333,7 @@ class SPropagatorAnalysis(Analysis):
332
333
  )
333
334
  if not gv_updated:
334
335
  for vvar_used, vvar_useloc in vvar_uselocs_set:
335
- replacements[vvar_useloc][vvar_used] = stmt.src
336
+ self.replace(replacements, vvar_useloc, vvar_used, stmt.src)
336
337
  continue
337
338
 
338
339
  for vvar_id, uselocs in vvar_uselocs.items():
@@ -353,7 +354,7 @@ class SPropagatorAnalysis(Analysis):
353
354
  if sp_bits is not None and vvar.bits < sp_bits:
354
355
  # truncation needed
355
356
  v = Convert(None, sp_bits, vvar.bits, False, v)
356
- replacements[useloc][vvar_at_use] = v
357
+ self.replace(replacements, useloc, vvar_at_use, v)
357
358
  continue
358
359
  if not self._bp_as_gpr and vvar.oident == self.project.arch.bp_offset:
359
360
  bp_bits = (
@@ -368,7 +369,7 @@ class SPropagatorAnalysis(Analysis):
368
369
  if bp_bits is not None and vvar.bits < bp_bits:
369
370
  # truncation needed
370
371
  v = Convert(None, bp_bits, vvar.bits, False, v)
371
- replacements[useloc][vvar_at_use] = v
372
+ self.replace(replacements, useloc, vvar_at_use, v)
372
373
  continue
373
374
 
374
375
  # find all tmp definitions
@@ -390,9 +391,8 @@ class SPropagatorAnalysis(Analysis):
390
391
  if r:
391
392
  # we can propagate it!
392
393
  for tmp_used, tmp_use_stmtidx in tmp_uses:
393
- replacements[
394
- CodeLocation(block_loc.block_addr, tmp_use_stmtidx, block_idx=block_loc.block_idx)
395
- ][tmp_used] = stmt.src
394
+ loc = CodeLocation(block_loc.block_addr, tmp_use_stmtidx, block_idx=block_loc.block_idx)
395
+ self.replace(replacements, loc, tmp_used, stmt.src)
396
396
  continue
397
397
 
398
398
  r = is_const_vvar_tmp_assignment(stmt)
@@ -404,9 +404,8 @@ class SPropagatorAnalysis(Analysis):
404
404
  v = stmt.src
405
405
 
406
406
  for tmp_used, tmp_use_stmtidx in tmp_uses:
407
- replacements[
408
- CodeLocation(block_loc.block_addr, tmp_use_stmtidx, block_idx=block_loc.block_idx)
409
- ][tmp_used] = v
407
+ loc = CodeLocation(block_loc.block_addr, tmp_use_stmtidx, block_idx=block_loc.block_idx)
408
+ self.replace(replacements, loc, tmp_used, v)
410
409
  continue
411
410
 
412
411
  if len(tmp_uses) <= 2 and is_const_vvar_load_dirty_assignment(stmt):
@@ -422,9 +421,8 @@ class SPropagatorAnalysis(Analysis):
422
421
  # we can propagate this load because either we do not consider memory aliasing problem
423
422
  # within the same instruction (blocks must be originally lifted with
424
423
  # CROSS_INSN_OPT=False), or there is no store between its def and use.
425
- replacements[
426
- CodeLocation(block_loc.block_addr, tmp_use_stmtidx, block_idx=block_loc.block_idx)
427
- ][tmp_used] = stmt.src
424
+ loc = CodeLocation(block_loc.block_addr, tmp_use_stmtidx, block_idx=block_loc.block_idx)
425
+ self.replace(replacements, loc, tmp_used, stmt.src)
428
426
 
429
427
  self.model.replacements = replacements
430
428
 
@@ -538,5 +536,9 @@ class SPropagatorAnalysis(Analysis):
538
536
 
539
537
  return g
540
538
 
539
+ @staticmethod
540
+ def replace(replacements: dict, loc, expr: VirtualVariable | Tmp, value: Expression) -> None:
541
+ replacements[loc][expr] = value
542
+
541
543
 
542
544
  register_analysis(SPropagatorAnalysis, "SPropagator")
angr/analyses/smc.py CHANGED
@@ -112,9 +112,8 @@ class SelfModifyingCodeAnalysis(Analysis):
112
112
  if subject is None:
113
113
  subject = self.project.entry
114
114
  if isinstance(subject, str):
115
- try:
116
- addr = self.project.kb.labels.lookup(subject)
117
- except KeyError:
115
+ addr = self.project.kb.labels.lookup(subject)
116
+ if addr is None:
118
117
  addr = self.project.kb.functions[subject].addr
119
118
  elif isinstance(subject, Function):
120
119
  addr = subject.addr
@@ -68,19 +68,19 @@ class Labels(KnowledgeBasePlugin):
68
68
  def items(self):
69
69
  return self._labels.items()
70
70
 
71
- def get(self, addr):
71
+ def get(self, addr, default=None):
72
72
  """
73
73
  Get a label as string for a given address
74
74
  Same as .labels[x]
75
75
  """
76
- return self[addr]
76
+ return self._labels.get(addr, default)
77
77
 
78
- def lookup(self, name):
78
+ def lookup(self, name, default=None):
79
79
  """
80
80
  Returns an address to a given label
81
81
  To show all available labels, iterate over .labels or list(b.kb.labels)
82
82
  """
83
- return self._reverse_labels[name]
83
+ return self._reverse_labels.get(name, default)
84
84
 
85
85
  def copy(self):
86
86
  o = Labels(self._kb)
angr/rustylib.abi3.so CHANGED
Binary file
angr/unicornlib.dylib CHANGED
Binary file
angr/utils/funcid.py CHANGED
@@ -1,5 +1,6 @@
1
1
  # pylint:disable=too-many-boolean-expressions
2
2
  from __future__ import annotations
3
+ from typing import Any
3
4
 
4
5
  import capstone
5
6
 
@@ -47,6 +48,90 @@ def is_function_security_check_cookie(func, project, security_cookie_addr: int)
47
48
  return False
48
49
 
49
50
 
51
+ def is_function_security_check_cookie_strict(func: Function, project) -> tuple[bool, int | None]:
52
+ # security_cookie_addr is unavailable; we examine all bytes in this function
53
+ if func.is_plt or func.is_syscall or func.is_simprocedure:
54
+ return False, None
55
+ if len(func.block_addrs_set) not in {5, 6}:
56
+ return False, None
57
+ block_bytes: list[tuple[int, Any, bytes]] = [
58
+ (b.addr, b, b.bytes)
59
+ for b in sorted(func.blocks, key=lambda b: b.addr)
60
+ if isinstance(b.addr, int) and b.bytes is not None
61
+ ]
62
+ if block_bytes[0][0] != func.addr:
63
+ # the first block is probably the BugCheck function - skip it
64
+ block_bytes = block_bytes[1:]
65
+ elif len(block_bytes) == 6:
66
+ # skip the last block, which is probably the BugCheck function
67
+ block_bytes = block_bytes[:-1]
68
+ if len(block_bytes) != 5:
69
+ return False, None
70
+
71
+ # check the first block
72
+ # cmp rcx, [xxx]
73
+ # jnz xxx
74
+ first_block = block_bytes[0][1]
75
+ if len(first_block.capstone.insns) != 2:
76
+ return False, None
77
+ ins0 = first_block.capstone.insns[0]
78
+ security_cookie_addr = None
79
+ if (
80
+ project.arch.name == "AMD64"
81
+ and ins0.mnemonic == "cmp"
82
+ and len(ins0.operands) == 2
83
+ and ins0.operands[0].type == capstone.x86.X86_OP_REG
84
+ and ins0.operands[0].reg == capstone.x86.X86_REG_RCX
85
+ and ins0.operands[1].type == capstone.x86.X86_OP_MEM
86
+ and ins0.operands[1].mem.base == capstone.x86.X86_REG_RIP
87
+ and ins0.operands[1].mem.index == 0
88
+ ):
89
+ ins1 = first_block.capstone.insns[1]
90
+ if ins1.mnemonic == "jne":
91
+ security_cookie_addr = ins0.operands[1].mem.disp + ins0.address + ins0.size
92
+ if (
93
+ project.arch.name == "X86"
94
+ and ins0.mnemonic == "cmp"
95
+ and len(ins0.operands) == 2
96
+ and ins0.operands[0].type == capstone.x86.X86_OP_REG
97
+ and ins0.operands[0].reg == capstone.x86.X86_REG_ECX
98
+ and ins0.operands[1].type == capstone.x86.X86_OP_MEM
99
+ and ins0.operands[1].mem.base == 0
100
+ and ins0.operands[1].mem.index == 0
101
+ ):
102
+ ins1 = first_block.capstone.insns[1]
103
+ if ins1.mnemonic == "jne":
104
+ security_cookie_addr = ins0.operands[1].mem.disp
105
+
106
+ if security_cookie_addr is None:
107
+ return False, None
108
+
109
+ # the last block should be a jump
110
+ last_block = block_bytes[-1][1]
111
+ if len(last_block.capstone.insns) != 1:
112
+ return False, None
113
+ last_insn = last_block.capstone.insns[-1]
114
+ if last_insn.mnemonic != "jmp":
115
+ return False, None
116
+
117
+ # check the bytes of the remaining three blocks
118
+ if project.arch.name == "AMD64":
119
+ expected_bytes = [b"\x48\xc1\xc1\x10\x66\xf7\xc1\xff\xff\x75\x01", b"\xc3", b"\x48\xc1\xc9\x10"]
120
+ else:
121
+ # TODO: x86 bytes
122
+ expected_bytes = []
123
+
124
+ existing_bytes = []
125
+ for i, b in enumerate(block_bytes[1:-1]):
126
+ block = b[2]
127
+ max_block_size = block_bytes[1 + i + 1][0] - b[0]
128
+ existing_bytes.append(block[:max_block_size])
129
+ # normalize the block bytes if needed
130
+ if existing_bytes == expected_bytes:
131
+ return True, security_cookie_addr
132
+ return False, None
133
+
134
+
50
135
  def is_function_security_init_cookie(func: Function, project, security_cookie_addr: int | None) -> bool:
51
136
  if func.is_plt or func.is_syscall or func.is_simprocedure:
52
137
  return False
@@ -288,9 +288,7 @@ class AILReferenceFinder(AILBlockWalkerBase):
288
288
  self.vvar_id = vvar_id
289
289
  self.has_references_to_vvar = False
290
290
 
291
- def _handle_UnaryOp(
292
- self, expr_idx: int, expr: UnaryOp, stmt_idx: int, stmt: Statement | None, block: Block | None
293
- ) -> Any:
291
+ def _handle_UnaryOp(self, expr_idx: int, expr: UnaryOp, stmt_idx: int, stmt: Statement, block: Block | None) -> Any:
294
292
  if expr.op == "Reference" and isinstance(expr.operand, VirtualVariable) and expr.operand.varid == self.vvar_id:
295
293
  self.has_references_to_vvar = True
296
294
  return None
@@ -386,9 +384,7 @@ def has_load_expr_in_between_stmts(
386
384
  def is_vvar_propagatable(vvar: VirtualVariable, def_stmt: Statement | None) -> bool:
387
385
  if vvar.was_tmp or vvar.was_reg or vvar.was_parameter:
388
386
  return True
389
- if vvar.was_stack and isinstance(def_stmt, Assignment):
390
- if isinstance(def_stmt.src, Const):
391
- return True
387
+ if vvar.was_stack and isinstance(def_stmt, Assignment): # noqa:SIM102
392
388
  if (
393
389
  isinstance(def_stmt.src, VirtualVariable)
394
390
  and def_stmt.src.was_stack
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: angr
3
- Version: 9.2.177
3
+ Version: 9.2.178
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.177
19
+ Requires-Dist: archinfo==9.2.178
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.177
24
- Requires-Dist: cle==9.2.177
23
+ Requires-Dist: claripy==9.2.178
24
+ Requires-Dist: cle==9.2.178
25
25
  Requires-Dist: msgspec
26
26
  Requires-Dist: mulpyplexer
27
27
  Requires-Dist: networkx!=2.8.1,>=2.0
@@ -31,7 +31,7 @@ Requires-Dist: pycparser>=2.18
31
31
  Requires-Dist: pydemumble
32
32
  Requires-Dist: pyformlang
33
33
  Requires-Dist: pypcode<4.0,>=3.2.1
34
- Requires-Dist: pyvex==9.2.177
34
+ Requires-Dist: pyvex==9.2.178
35
35
  Requires-Dist: rich>=13.1.0
36
36
  Requires-Dist: sortedcontainers
37
37
  Requires-Dist: sympy
@@ -46,6 +46,7 @@ Provides-Extra: telemetry
46
46
  Requires-Dist: opentelemetry-api; extra == "telemetry"
47
47
  Provides-Extra: unicorn
48
48
  Requires-Dist: unicorn==2.0.1.post1; extra == "unicorn"
49
+ Requires-Dist: setuptools; extra == "unicorn"
49
50
  Dynamic: license-file
50
51
 
51
52
  # angr
@@ -1,23 +1,17 @@
1
- angr-9.2.177.dist-info/RECORD,,
2
- angr-9.2.177.dist-info/WHEEL,sha256=kFn0Fg1gyV9Pk02-Hr4CbqbhAvYPyosBpF5pwZB07jU,135
3
- angr-9.2.177.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
4
- angr-9.2.177.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
5
- angr-9.2.177.dist-info/METADATA,sha256=nSqVeQ_B1EMMDD_YHtcBhdpPcIoiE-1rh_ekW4aiSFs,4366
6
- angr-9.2.177.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
7
1
  angr/vaults.py,sha256=D_gkDegCyPlZMKGC5E8zINYAaZfSXNWbmhX0rXCYpvM,9718
8
- angr/unicornlib.dylib,sha256=J-Pq_MLBdri_wUoTGGajWX7XliBS5OWjaVAbeR65s9g,234064
2
+ angr/unicornlib.dylib,sha256=I63V6zKOQHoPRNohN06z4IyiigGt4OD1YMhFiTHW7w0,234064
9
3
  angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
10
4
  angr/callable.py,sha256=j9Orwd4H4fPqOYylcEt5GuLGPV7ZOqyA_OYO2bp5PAA,6437
11
5
  angr/sim_type.py,sha256=8AJjzu_hp4GvgXogz8KnLiPXSnxBGUy-D3G8w4wEicQ,144714
12
6
  angr/knowledge_base.py,sha256=hRoSLuLaOXmddTSF9FN5TVs7liftpBGq_IICz5AaYBk,4533
13
7
  angr/emulator.py,sha256=aZXi8-jQ_9uelN2zvlecR2ZYXPey4PHyju6yVJIWDAk,4708
14
- angr/rustylib.abi3.so,sha256=aGZvJI_y93xVD7WXHapKlqJf6uqBfzecs3-7EjPzkWQ,4790512
8
+ angr/rustylib.abi3.so,sha256=LoK2BUZxT4aUd3fBgo884clsFeP-Rg9JWGJjdfMwrFE,4772320
15
9
  angr/codenode.py,sha256=hCrQRp4Ebb2X6JicNmY1PXo3_Pm8GDxVivVW0Pwe84k,3918
16
10
  angr/graph_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
11
  angr/sim_manager.py,sha256=w7yTfWR-P9yoN5x85eeiNpj9dTrnjpJ3o5aoFpDAPnc,39396
18
12
  angr/serializable.py,sha256=l908phj_KcqopEEL_oCufbP_H6cm3Wc9v-5xdux1-6g,1533
19
13
  angr/code_location.py,sha256=kXNJDEMge9VRHadrK4E6HQ8wDdCaHSXNqyAZuHDEGuM,5397
20
- angr/__init__.py,sha256=aC71aVWcBP7xns-lX1-sgjw1ZhoYMyYpT71RqZaJHsc,9246
14
+ angr/__init__.py,sha256=vN_wwQPUaez8llCxHPyGbA0xDZPdNi9jbjCSU0hqngI,9246
21
15
  angr/blade.py,sha256=OGGW-oggqI9_LvgZhiQuh9Ktkvf3vhRBmH0XviNyZ6o,15801
22
16
  angr/factory.py,sha256=PPNWvTiWaIgzxzyoTr8ObSF-TXp1hCdbY2e-0xBePNc,17815
23
17
  angr/sim_state_options.py,sha256=dsMY3UefvL7yZKXloubMhzUET3N2Crw-Fpw2Vd1ouZQ,12468
@@ -771,7 +765,7 @@ angr/utils/timing.py,sha256=n-YZ86g0ZWmLhsoNvcimRpKzewR5hmquLZe6fagxlBw,2224
771
765
  angr/utils/mp.py,sha256=y6Q0nDOykRZvcQ805DZpcJHQTGN-gqFi0eERGNhb3C0,1903
772
766
  angr/utils/loader.py,sha256=5PtUlonkbqENNg3AMJ4YI3-g5dyyXJ0GP83SwO2dECY,1951
773
767
  angr/utils/tagged_interval_map.py,sha256=rXKBuT14N23AAntpOKhZhmA-qqymnsvjpheFXoTRVRA,4417
774
- angr/utils/funcid.py,sha256=Rd4r8juv2IpeMtCpPp4wxJoEZTnZZ1NsxdT42tvrKVA,6353
768
+ angr/utils/funcid.py,sha256=PA115tjmdUpfrGQvva4Ad3Q5SoToRiGjJzNRhX2Ca6Y,9567
775
769
  angr/utils/algo.py,sha256=4TaEFE4tU-59KyRVFASqXeoiwH01ZMj5fZd_JVcpdOY,1038
776
770
  angr/utils/enums_conv.py,sha256=fA6qeoRZ6Cj6gCIS_PZbP4PX7E8IybnYQ90OZGnBVrc,2746
777
771
  angr/utils/endness.py,sha256=PDpDNbiIbaSx1DGH1z16nU2B5GMrTqONGivGeVNiGyU,506
@@ -779,7 +773,7 @@ angr/utils/strings.py,sha256=iv3Mg_KCyyPx9dkIw-O0ZidWyGl8mqPDkyNJwZYQr_U,688
779
773
  angr/utils/vex.py,sha256=epcrCexi_NjKnPGM2gfpiRsUea_Scd-71UMuF32ZAQo,306
780
774
  angr/utils/ssa/tmp_uses_collector.py,sha256=digAUQpYoFR1VYfwoXlF3T1pYdDi6Pdq_ck54SjMabQ,813
781
775
  angr/utils/ssa/vvar_uses_collector.py,sha256=HewqUQluNE9EsaiLeFo7LaBvws_DDBDYNt9RBExy464,1367
782
- angr/utils/ssa/__init__.py,sha256=xbuVllFoPane9lHACdRQP5OO99Mca-4sqpFrtoAvnxo,17464
776
+ angr/utils/ssa/__init__.py,sha256=rKlgdaTSouwofsLNMa8MKfWb_tqntfp_B5nm-FOeh2Y,17390
783
777
  angr/exploration_techniques/spiller.py,sha256=B5qy8B3l_0JSo8YDH9cJUX97anf9YdDeJMVAsN1xZi8,9415
784
778
  angr/exploration_techniques/memory_watcher.py,sha256=9grrkwq4ha5u8gtJIqTFhVG9Yur18r7Tec7bv_HpNlw,1312
785
779
  angr/exploration_techniques/lengthlimiter.py,sha256=To8SlXhtdDVSqAlCSIvhvqyY8BUs37ZU7ABymhJDz14,590
@@ -870,7 +864,7 @@ angr/storage/memory_mixins/paged_memory/pages/multi_values.py,sha256=aeKBWosclmN
870
864
  angr/storage/memory_mixins/paged_memory/pages/list_page.py,sha256=dAZIA0Z7tM5ZDQPtmkQ7OsUHq6bTqWPl_NcIj0RO7X0,14421
871
865
  angr/storage/memory_mixins/paged_memory/pages/base.py,sha256=NiIZdOH1nrkP1AO6QKd1x-Ax_l1vRkDmFgR4mHpIH0c,1421
872
866
  angr/knowledge_plugins/custom_strings.py,sha256=5qYAvmcm9BkTA247hZngDaHHrO9iIipYKJgGH9vxLLA,1037
873
- angr/knowledge_plugins/labels.py,sha256=Q7BTpBWRfJl3vxtd0vci91EA3KXiIwLNPyO5UQh6QEA,3156
867
+ angr/knowledge_plugins/labels.py,sha256=HvDQjL3jayVmKNdOHTteNSIgd4aOrAp1qGaBIDqzdPQ,3218
874
868
  angr/knowledge_plugins/structured_code.py,sha256=9IKRF1Pb7E0eBz0uMK36Pk8HL0fmI7JqVaeihu7uiRQ,2167
875
869
  angr/knowledge_plugins/debug_variables.py,sha256=pxiY6l0OPX3y2ZEcCGu-vJCGfw60tiPvkjdDFE9Z4uM,8075
876
870
  angr/knowledge_plugins/__init__.py,sha256=T8ovRNYYhqk_QkKN2OU5JXzeYZob8iq3v0ZlnX8_Hho,1160
@@ -1060,13 +1054,13 @@ angr/analyses/soot_class_hierarchy.py,sha256=R4xeacn-a_Q7PxSyj_stu5mnglZkPB5US5s
1060
1054
  angr/analyses/__init__.py,sha256=KFu0Otm7bqAcjX8dsnQzphJmkUVxMLssjFIJJOci32U,3479
1061
1055
  angr/analyses/ddg.py,sha256=AWPPsL2bfTAua5meuQfPFL6b29PLpCLZzw-LGCv5iVo,63214
1062
1056
  angr/analyses/dominance_frontier.py,sha256=kRoOCr3EaIUW1YnvtjmKFJW65zYsJHNe-HtVx2LR15s,2002
1063
- angr/analyses/smc.py,sha256=DC4l7fTmoOybD_lSQaLjcUdeLUifQhhsSu1nx8Ax6pM,5176
1057
+ angr/analyses/smc.py,sha256=0jU8fJL3i96ouFcwwOb2DR0l2Xxy1eWiY6ThWyUiRdM,5155
1064
1058
  angr/analyses/complete_calling_conventions.py,sha256=a-hJQ6yRusDhRADGcLxjY6ETlD1vN_QsHd2c0VZlo7I,21079
1065
1059
  angr/analyses/callee_cleanup_finder.py,sha256=lQRn5rHS6mGNOqDh-UsxX-gs4cDpwQ6KNjvzQFVCdio,2800
1066
1060
  angr/analyses/static_hooker.py,sha256=AYJXoHtdq2m-MgpJbx4eur7wy7llrKXvsVM5NdPcKHU,1852
1067
1061
  angr/analyses/code_tagging.py,sha256=Gj7Ms24RnmhC9OD57gw7R6_c-pLfqSug-LVUMw_JmXE,3510
1068
1062
  angr/analyses/disassembly.py,sha256=YgU--tr1mZtlNhXTTWLBD4s-4g8vUs-01Vk6A04f5ng,46192
1069
- angr/analyses/s_propagator.py,sha256=pEq11sNPZoR0PrWLdIIjE0s5IEmOpCpNxYYnf2qMURY,24872
1063
+ angr/analyses/s_propagator.py,sha256=-pqaSlP6TmonDylPbQeHz1DirlpDBq0cMn29LuEzsU8,25157
1070
1064
  angr/analyses/s_liveness.py,sha256=mSWwwAPpXl-dIZNx5pAHA5vWXqCO_OivOXWoiaI7tss,7984
1071
1065
  angr/analyses/patchfinder.py,sha256=yf8FwkWPVOrvMRA90dKZizVz4s4QE-upq6B0Xxn8wj8,5063
1072
1066
  angr/analyses/xrefs.py,sha256=vs6cpVmwXHOmxrI9lJUwCRMYbPSqvIQXS5_fINMaOGI,10290
@@ -1146,7 +1140,7 @@ angr/analyses/reaching_definitions/function_handler_library/stdlib.py,sha256=YRN
1146
1140
  angr/analyses/cfg/cfg.py,sha256=dc9M91CaLeEKduYfMwpsT_01x6XyYuoNvgvcDKtbN-I,3177
1147
1141
  angr/analyses/cfg/cfb.py,sha256=HI25OJKs2OUlWkOSG4kLsZQFnBJcfDwSQKp6_ZRsoQY,15353
1148
1142
  angr/analyses/cfg/cfg_job_base.py,sha256=Zshze972MakTsd-licQz77lac17igQaaTsAteHeHhYQ,5974
1149
- angr/analyses/cfg/cfg_fast.py,sha256=sW6mvJr6dXp2mWte1otf2QZLuXmKV7vYRq95bLRi6L4,235307
1143
+ angr/analyses/cfg/cfg_fast.py,sha256=uTW7bOn8WR9aP0RZiZQFgEuHunrrHp4FhgU8wX_cpwo,236180
1150
1144
  angr/analyses/cfg/__init__.py,sha256=-w8Vd6FD6rtjlQaQ7MxwmliFgS2zt-kZepAY4gHas04,446
1151
1145
  angr/analyses/cfg/cfg_fast_soot.py,sha256=8YgMtY_8w4nAMcHR6n-q_eFvKwsvNz0anUH7EzIL1B4,25924
1152
1146
  angr/analyses/cfg/cfg_arch_options.py,sha256=_XRewFZ51SeNaxChadb6_ER7-8LW8KXeTIpoP8_iRj0,3506
@@ -1215,7 +1209,7 @@ angr/analyses/decompiler/region_identifier.py,sha256=kQJ_KCd3Qx9LWStTM_iUNBG10bD
1215
1209
  angr/analyses/decompiler/empty_node_remover.py,sha256=4CdxTM1AVmRoEdRIwJg1YEy10AgkEoRmJ8SU7xGbKnM,7424
1216
1210
  angr/analyses/decompiler/seq_to_blocks.py,sha256=4-tqstendHHO2J0WD3JHQkm8c4c2KG3AO3mYWrn4xvg,569
1217
1211
  angr/analyses/decompiler/__init__.py,sha256=eyxt2UKvPkbuS_l_1GPb0CJ6hrj2wTavh-mVf23wwiQ,1162
1218
- angr/analyses/decompiler/clinic.py,sha256=LIsOw2U3P72AQ0GMK5DSn8JyQ7uY-cLcJPNpTcCERNo,151635
1212
+ angr/analyses/decompiler/clinic.py,sha256=src88SCieo4EXC-n9_vRPzMFsKMnBvxN4y--AXl4v7U,151838
1219
1213
  angr/analyses/decompiler/decompilation_cache.py,sha256=06oiG299mVpGOTL54Xy1CUxz5s8QLgYJn5XIvKFLYkU,1566
1220
1214
  angr/analyses/decompiler/block_simplifier.py,sha256=vjlugXCB3xFYBDBn3LPxOtU1dDc76PpYtVEoju3i9-4,15513
1221
1215
  angr/analyses/decompiler/node_replacer.py,sha256=jJd3XkIwFE07bIbLriJ6_mQEvfhm90C8lqlrL5Mz1Xg,1450
@@ -1226,7 +1220,7 @@ angr/analyses/decompiler/utils.py,sha256=B7YwnEBF6AZ5DG3E7zHK0TF7zOLeiMWEcc18YL_
1226
1220
  angr/analyses/decompiler/decompiler.py,sha256=adX2UJv6s4JAF7Qf6HTgwPo28QQ6yCzrrQrtlqDZyfE,31864
1227
1221
  angr/analyses/decompiler/goto_manager.py,sha256=wVoeXJcadIda84LloGgqW-rL0QHLv3fx4vZHLhmz-_o,4027
1228
1222
  angr/analyses/decompiler/block_similarity.py,sha256=S1lTlXFyOmJlQa7I3y7xgLsENLS4XGET7tdD55k_6Vg,6859
1229
- angr/analyses/decompiler/ail_simplifier.py,sha256=NdPdj7IpmltxdPuhxdwHnd6qG2xHrA5ZPlDLvDyaH8U,93303
1223
+ angr/analyses/decompiler/ail_simplifier.py,sha256=1qzHYpc5zS9Ei0wstbNUgbV7wkb0z0-6dPJEvK_Vh1g,95948
1230
1224
  angr/analyses/decompiler/jump_target_collector.py,sha256=CucT99luxIVrioM-keMMjyNKWE5QaXEFQOFphtyU8b4,1189
1231
1225
  angr/analyses/decompiler/label_collector.py,sha256=fsCkldy8ZKH4FjkREByg-NDmfCd7Pmuz2K1Dks9oVjM,814
1232
1226
  angr/analyses/decompiler/jumptable_entry_condition_rewriter.py,sha256=f_JyNiSZfoudElfl2kIzONoYCiosR4xYFOe8Q5SkvLg,2176
@@ -1246,7 +1240,7 @@ angr/analyses/decompiler/ssailification/rewriting_engine.py,sha256=wGUdybrGWTlE7
1246
1240
  angr/analyses/decompiler/ccall_rewriters/x86_ccalls.py,sha256=dvdiAXWGte_4xcDZnP7h980DVZqpxMgQt-fTC1nxChQ,13437
1247
1241
  angr/analyses/decompiler/ccall_rewriters/__init__.py,sha256=TrnykR5cGCXy85f8OApJBjWSQ8WQSzjrnpND2fODWG8,207
1248
1242
  angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=c7-GxWZbFfJvmg4DPdjYgLXyiasmfgmiQ6IY4fjOVWs,727
1249
- angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py,sha256=8LA05CKwFzoNAloOJ3KF4AkFM3bDTQdstr1_46WauxM,24958
1243
+ angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py,sha256=pANATa8vdZ9zeVau_VHatCY3ZeSmMszjDpfNI0r3C-4,26634
1250
1244
  angr/analyses/decompiler/dephication/seqnode_dephication.py,sha256=kigkzU78eNe-zD16hUI2YMNt_jHvixpohHpnLhAHMlw,5437
1251
1245
  angr/analyses/decompiler/dephication/graph_rewriting.py,sha256=cRMrYJgGV57H5TzWY70S8tl3D9GVkrzOetkxCUevyW4,3502
1252
1246
  angr/analyses/decompiler/dephication/__init__.py,sha256=xd6YSsoXLKVB2g52l-TZGsDwN5Vm3p4b35lqAYcrlhU,280
@@ -1317,7 +1311,7 @@ angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py,sha256=4f
1317
1311
  angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py,sha256=--C1JQluHt8ltdfUPBHvRD3SjW_ZcBU3oWdFwpCtpuw,1072
1318
1312
  angr/analyses/decompiler/peephole_optimizations/coalesce_adjacent_shrs.py,sha256=fXq-qFe7JUdD5LdtUhoA9AF3LnY-3Jrmo4t3ZRJIIiQ,1414
1319
1313
  angr/analyses/decompiler/peephole_optimizations/remove_redundant_bitmasks.py,sha256=FUf1bg9nADlwT1upwTKcVhhPcvZ98C-8PlmkWoHqwZ4,4787
1320
- angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts_around_comparators.py,sha256=pMdKsNJtAIPqyWsR8cUEyujdF7e7kbqqvVgelVmKtqY,1610
1314
+ angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts_around_comparators.py,sha256=N0TGL6V9AzhXGbt1SS6UCW3Ney_SgOf_YgV2UTLvLvs,4512
1321
1315
  angr/analyses/decompiler/peephole_optimizations/optimized_div_simplifier.py,sha256=M4GxEWKs6V9aEYejGluZ8w8QpvPKpaESeFFzid88HjE,14208
1322
1316
  angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy_consolidation.py,sha256=TfimMI0FwpRBrWVQZy4m9XAf_BBPInu0zfywQ9CoGgs,12712
1323
1317
  angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py,sha256=HY6EQkThiyMaahz3bodJUqLBKWY2n4aKGbKyspMXN50,1641
@@ -1333,8 +1327,9 @@ angr/analyses/decompiler/structuring/dream.py,sha256=QNZ8dKk79Uq0urUEpwmBgX2Ak3Z
1333
1327
  angr/analyses/decompiler/structuring/structurer_nodes.py,sha256=3T6QPeD1KlLkcjMDBblQCb1Cf50VF36C-hlFhiKi9nc,12823
1334
1328
  angr/analyses/decompiler/structuring/phoenix.py,sha256=-yGUKZt37N0tbqTJoRI4Pk_ohZhYaxT22wWEWsblzZ4,164692
1335
1329
  angr/analyses/decompiler/structuring/structurer_base.py,sha256=xzQMYBInNyeRYibbiuk6EYbvPO235El3guT1yh1qAxw,50690
1336
- angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py,sha256=FBz1UGl5rj13GYSF2tYWaQR135q4VQUxCBPW6SgdQ2w,19485
1337
- angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=VGpCQmx8H2w3HoVFGdqwYYZ0z_IdHrFjOhz37yvxxTQ,28169
1330
+ angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py,sha256=M9ywJ3WuQBurI5hZw9WqcwLCppW9iHGvK9HkqSXUIbY,22115
1331
+ angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=cr_9dkuQdvlhErrf221V2ugpNDj0ReAwO6FD3ksf9f8,28307
1332
+ angr/analyses/decompiler/optimization_passes/register_save_area_simplifier_adv.py,sha256=sYucCf43c7LYH8kfXylS2wa5GYWRK77MZVad_75m5XU,8670
1338
1333
  angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=RkZdMPJ_JKDkywVYp0MrCf6PK95GWT7Q0K7jsCVk_cE,42132
1339
1334
  angr/analyses/decompiler/optimization_passes/const_derefs.py,sha256=-vvd0QvLCmnRREmvN5LCLeKpUqisyPWj0yw1CHY8TwQ,10505
1340
1335
  angr/analyses/decompiler/optimization_passes/call_stmt_rewriter.py,sha256=INLmzfGDMsVzyQF2S6uwiQSoNcxM7DUBJrdWlL2gqlY,1325
@@ -1344,11 +1339,11 @@ angr/analyses/decompiler/optimization_passes/condition_constprop.py,sha256=8UBN1
1344
1339
  angr/analyses/decompiler/optimization_passes/ret_deduplicator.py,sha256=hqOBkbiyQwGDoPdkMLwJjJOI_90QQ2R6ESs2HQ4z0iw,8005
1345
1340
  angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py,sha256=A7azHMeTQDXPFj44lI-mK7wnbJZ6cdSL-lwwqxiBTk0,6420
1346
1341
  angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py,sha256=154pzAHjRaDJA1bc69Z49qDBouToemUL0BoT2ybmjw8,6476
1347
- angr/analyses/decompiler/optimization_passes/__init__.py,sha256=v6LlcY49Z816sgba6FORCZUQ0XHtw58AztlZ9hsTtms,5354
1342
+ angr/analyses/decompiler/optimization_passes/__init__.py,sha256=np49PaxIYrNgFBSrQR3TJ_lOI2_EXsFPYEBX5GTVohQ,5518
1348
1343
  angr/analyses/decompiler/optimization_passes/ite_expr_converter.py,sha256=DA2H1Uk8ZUTBcebQ3SFFl5n8pDSsZnQZC1Hnjv-A1a0,7835
1349
1344
  angr/analyses/decompiler/optimization_passes/switch_reused_entry_rewriter.py,sha256=6-b3u4zCwSQkMaYXDP4aTjTZdFTlIWlYfd8zC1vNuRM,4035
1350
1345
  angr/analyses/decompiler/optimization_passes/tag_slicer.py,sha256=VSlwk9ZdnFZnAAxL0gUAgqAtP6HEk4fqcYGWlD3ylGg,1181
1351
- angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py,sha256=-MoVamrPN9fMakQMZPwRYQ5rbeuQURXvyELuUhPVXKI,9088
1346
+ angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py,sha256=hKT0lUyKGPVLYuOG89nrvAW9KlYrBUh6v787V6wlFm0,11126
1352
1347
  angr/analyses/decompiler/optimization_passes/expr_op_swapper.py,sha256=GNrqp7-CakO6JmxXHoaDKqiNslRI0mSBoNmImU5rNh4,4730
1353
1348
  angr/analyses/decompiler/optimization_passes/determine_load_sizes.py,sha256=cyDEGP7be5FAHX32eTE6FD_RZHF6G3vRo5rCYrNCfJM,2246
1354
1349
  angr/analyses/decompiler/optimization_passes/return_duplicator_base.py,sha256=cU4p-QGklqgillWLdD-o1nBPAsrfZS66GfAhuhHSz1I,27395
@@ -1380,9 +1375,12 @@ angr/analyses/decompiler/counters/__init__.py,sha256=UT5K0cWgkVTAXZxy1qBBzrQip3Y
1380
1375
  angr/analyses/decompiler/counters/boolean_counter.py,sha256=FG3M8dMpbU_WAyr8PV2iEI43OLUxoZ6JQ1johkMtivw,893
1381
1376
  angr/analyses/decompiler/presets/__init__.py,sha256=NWARH5yOyBz4-5qKhzH56PNfPNRViNKMDeESlpplFxo,375
1382
1377
  angr/analyses/decompiler/presets/preset.py,sha256=LvX7ydyO0ZzQsC0M2fy1wXA_0ygSqeP9P52VJAK0Eeo,1264
1383
- angr/analyses/decompiler/presets/fast.py,sha256=0q9DEyWZOzt6MMJe2bb9LjlGrgv5NxgEjAb6Z1fah24,1636
1384
- angr/analyses/decompiler/presets/full.py,sha256=j6ccrb3I8RFnxAZXbkdnMwCmG6AwIddP0qGD-7LzXz8,1880
1385
- angr/analyses/decompiler/presets/basic.py,sha256=sHT2oalBmINVSZfpEbx4LmK0G1zqbZmLaVCAH-r-VDI,897
1378
+ angr/analyses/decompiler/presets/fast.py,sha256=pR1EDVih9we_Gwepoqi2DfPitC_9YCvnDVpXVlkivcU,1720
1379
+ angr/analyses/decompiler/presets/full.py,sha256=a2oBOQicpKfwLWLsYLdBfK5YGq1BFJyheHXkbADU0qk,1964
1380
+ angr/analyses/decompiler/presets/basic.py,sha256=lb4TyVOHL-NqHsGPDOvw5XeGOfuKyzlQAY8fUMrwMI4,981
1381
+ angr/analyses/decompiler/dirty_rewriters/__init__.py,sha256=Go9Znxszue8UZD8w7nHJXcU885ZvZ8fa6BAuOa3Qpms,136
1382
+ angr/analyses/decompiler/dirty_rewriters/rewriter_base.py,sha256=ghiYgB5O78ozGaCti7SqR_YlXQJrHtMEHnxQKe3Rw2I,817
1383
+ angr/analyses/decompiler/dirty_rewriters/amd64_dirty.py,sha256=QM0mUMKm5eyTybGL7yaXgGDuewHfmuctpZ4faxXczsg,2409
1386
1384
  angr/analyses/s_reaching_definitions/__init__.py,sha256=TyfVplxkJj8FAAAw9wegzJlcrbGwlFpIB23PdCcwrLA,254
1387
1385
  angr/analyses/s_reaching_definitions/s_reaching_definitions.py,sha256=gNdg8xpu5by_McWU8j0g0502yQsO2evkTlben9yimV0,7826
1388
1386
  angr/analyses/s_reaching_definitions/s_rda_model.py,sha256=FJSge_31FFzyzBJA1xm7dQz40TfuNna6v_RWAZMZvi0,5801
@@ -1400,3 +1398,9 @@ angr/analyses/flirt/flirt_node.py,sha256=ecfJq4Ymp38zzvoZPDfLcLSR045GNOM9je-F_NP
1400
1398
  angr/analyses/flirt/flirt_utils.py,sha256=ojZ_01s7O23vU7dN6xZL7Wyx5M3pgm43frxjbZzSmyU,819
1401
1399
  angr/flirt/__init__.py,sha256=uPA4ff2d8FQYfGzq2rgM5pJ9PAH82275On3EFKqXktE,3514
1402
1400
  angr/flirt/build_sig.py,sha256=AO48uuWi76eMiw4-RTJn58j6DDyziy7HCuWMNpApcOQ,10020
1401
+ angr-9.2.178.dist-info/RECORD,,
1402
+ angr-9.2.178.dist-info/WHEEL,sha256=kFn0Fg1gyV9Pk02-Hr4CbqbhAvYPyosBpF5pwZB07jU,135
1403
+ angr-9.2.178.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1404
+ angr-9.2.178.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1405
+ angr-9.2.178.dist-info/METADATA,sha256=eFS8mj0EGjYZtRGsL89HOjuId2Xhn5DVxTroY727LgA,4412
1406
+ angr-9.2.178.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
File without changes