angr 9.2.175__cp310-abi3-macosx_11_0_arm64.whl → 9.2.177__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 (51) hide show
  1. angr/__init__.py +1 -1
  2. angr/analyses/calling_convention/calling_convention.py +12 -0
  3. angr/analyses/complete_calling_conventions.py +39 -26
  4. angr/analyses/decompiler/ail_simplifier.py +14 -12
  5. angr/analyses/decompiler/ccall_rewriters/rewriter_base.py +5 -1
  6. angr/analyses/decompiler/clinic.py +54 -40
  7. angr/analyses/decompiler/optimization_passes/ite_region_converter.py +3 -3
  8. angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +2 -2
  9. angr/analyses/decompiler/peephole_optimizations/__init__.py +4 -4
  10. angr/analyses/decompiler/peephole_optimizations/cas_intrinsics.py +69 -12
  11. angr/analyses/decompiler/peephole_optimizations/{inlined_wstrcpy.py → inlined_wcscpy.py} +16 -8
  12. angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy_consolidation.py +296 -0
  13. angr/analyses/decompiler/ssailification/rewriting_engine.py +14 -1
  14. angr/analyses/decompiler/structured_codegen/c.py +6 -5
  15. angr/analyses/decompiler/structuring/dream.py +2 -2
  16. angr/analyses/decompiler/structuring/phoenix.py +101 -23
  17. angr/analyses/decompiler/utils.py +10 -3
  18. angr/analyses/flirt/flirt.py +5 -4
  19. angr/analyses/stack_pointer_tracker.py +4 -3
  20. angr/analyses/typehoon/lifter.py +29 -18
  21. angr/analyses/typehoon/simple_solver.py +157 -50
  22. angr/analyses/typehoon/translator.py +34 -34
  23. angr/analyses/typehoon/typeconsts.py +33 -15
  24. angr/analyses/typehoon/typevars.py +9 -2
  25. angr/analyses/variable_recovery/engine_ail.py +43 -2
  26. angr/analyses/variable_recovery/engine_base.py +4 -1
  27. angr/analyses/variable_recovery/variable_recovery_fast.py +3 -1
  28. angr/emulator.py +2 -1
  29. angr/engines/hook.py +1 -1
  30. angr/engines/icicle.py +21 -5
  31. angr/engines/vex/claripy/ccall.py +3 -3
  32. angr/knowledge_plugins/functions/function.py +19 -2
  33. angr/procedures/definitions/__init__.py +9 -0
  34. angr/procedures/definitions/parse_win32json.py +11 -0
  35. angr/procedures/definitions/wdk/ntoskrnl.json +4 -0
  36. angr/procedures/posix/pthread.py +4 -4
  37. angr/procedures/stubs/format_parser.py +3 -3
  38. angr/rustylib.abi3.so +0 -0
  39. angr/sim_type.py +11 -6
  40. angr/simos/windows.py +1 -1
  41. angr/storage/memory_mixins/paged_memory/page_backer_mixins.py +1 -1
  42. angr/unicornlib.dylib +0 -0
  43. angr/utils/constants.py +1 -1
  44. angr/utils/strings.py +20 -0
  45. {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/METADATA +5 -5
  46. {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/RECORD +50 -49
  47. angr/analyses/decompiler/peephole_optimizations/inlined_wstrcpy_consolidation.py +0 -113
  48. {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/WHEEL +0 -0
  49. {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/entry_points.txt +0 -0
  50. {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/licenses/LICENSE +0 -0
  51. {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/top_level.txt +0 -0
@@ -52,20 +52,20 @@ class pthread_cond_signal(angr.SimProcedure):
52
52
 
53
53
  class pthread_mutex_lock(angr.SimProcedure):
54
54
  """
55
- A no-op.
55
+ Always returns 0 (SUCCESS).
56
56
  """
57
57
 
58
58
  def run(self, arg):
59
- pass
59
+ return 0
60
60
 
61
61
 
62
62
  class pthread_mutex_unlock(angr.SimProcedure):
63
63
  """
64
- A no-op.
64
+ Always returns 0 (SUCCESS).
65
65
  """
66
66
 
67
67
  def run(self, arg):
68
- pass
68
+ return 0
69
69
 
70
70
 
71
71
  class pthread_once(angr.SimProcedure):
@@ -99,11 +99,11 @@ class FormatString:
99
99
  elif fmt_spec.spec_type == b"c":
100
100
  s_val = chr(c_val & 0xFF)
101
101
  elif fmt_spec.spec_type == b"x":
102
- s_val = hex(c_val)[2:]
102
+ s_val = f"{c_val:x}"[2:]
103
103
  elif fmt_spec.spec_type == b"o":
104
- s_val = oct(c_val)[2:]
104
+ s_val = f"{c_val:o}"[2:]
105
105
  elif fmt_spec.spec_type == b"p":
106
- s_val = hex(c_val)
106
+ s_val = f"{c_val:x}"
107
107
  else:
108
108
  raise SimProcedureError(f"Unimplemented format specifier '{fmt_spec.spec_type}'")
109
109
 
angr/rustylib.abi3.so CHANGED
Binary file
angr/sim_type.py CHANGED
@@ -872,6 +872,8 @@ class SimTypePointer(SimTypeReg):
872
872
  self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
873
873
  ): # pylint: disable=unused-argument
874
874
  # if pts_to is SimTypeBottom, we return a void*
875
+ if self.label is not None and name is not None:
876
+ return super().c_repr(name=name, full=full, memo=memo, indent=indent, name_parens=name_parens)
875
877
  if isinstance(self.pts_to, SimTypeBottom):
876
878
  out = "void*"
877
879
  if name is None:
@@ -2192,10 +2194,10 @@ class SimTypeRef(SimType):
2192
2194
  ) -> str: # pylint: disable=unused-argument
2193
2195
  prefix = "unknown"
2194
2196
  if self.original_type is SimStruct:
2195
- prefix = "struct"
2197
+ prefix = "struct "
2196
2198
  if name is None:
2197
2199
  name = ""
2198
- return f"{prefix}{name} {self.name}"
2200
+ return f"{prefix}{self.label} {name}"
2199
2201
 
2200
2202
  def _init_str(self) -> str:
2201
2203
  original_type_name = self.original_type.__name__.split(".")[-1]
@@ -3752,7 +3754,7 @@ def _cpp_decl_to_type(
3752
3754
  for idx, param in enumerate(the_func.parameters):
3753
3755
  arg_type = param.type
3754
3756
  args.append(_cpp_decl_to_type(arg_type, extra_types, opaque_classes=opaque_classes))
3755
- arg_name = param.name if param.name is not None else f"unknown_{idx}"
3757
+ arg_name = param.name if param.name is not None else f"arg_{idx}"
3756
3758
  arg_names.append(arg_name)
3757
3759
 
3758
3760
  args = tuple(args)
@@ -3799,7 +3801,7 @@ def _cpp_decl_to_type(
3799
3801
  for idx, param in enumerate(the_func.parameters):
3800
3802
  arg_type = param.type
3801
3803
  args.append(_cpp_decl_to_type(arg_type, extra_types, opaque_classes=opaque_classes))
3802
- arg_name = param.name if param.name is not None else f"unknown_{idx}"
3804
+ arg_name = param.name if param.name is not None else f"arg_{idx}"
3803
3805
  arg_names.append(arg_name)
3804
3806
 
3805
3807
  args = tuple(args)
@@ -3821,8 +3823,11 @@ def _cpp_decl_to_type(
3821
3823
  elif lbl in ALL_TYPES:
3822
3824
  t = ALL_TYPES[lbl]
3823
3825
  elif opaque_classes is True:
3824
- # create a class without knowing the internal members
3825
- t = SimCppClass(unique_name=lbl, name=lbl, members={}, size=32)
3826
+ # create a struct or a class without knowing the internal members
3827
+ if decl.typename.classkey == "struct":
3828
+ t = SimTypeRef(lbl.removeprefix("struct "), SimStruct)
3829
+ else:
3830
+ t = SimCppClass(unique_name=lbl, name=lbl, members={}, size=32)
3826
3831
  else:
3827
3832
  raise TypeError(f'Unknown type "{lbl}"')
3828
3833
 
angr/simos/windows.py CHANGED
@@ -440,7 +440,7 @@ class SimWindows(SimOS):
440
440
  :param state: The state to get the syscall number from
441
441
  :param allow_unsupported: Whether to return a "dummy" sycall instead of raising an unsupported exception
442
442
  """
443
- if state.block(state.history.jump_source).bytes.hex() == "cd29": # int 29h
443
+ if state.history.jump_source and state.block(state.history.jump_source).bytes.hex() == "cd29": # int 29h
444
444
  return self.fastfail
445
445
  return None
446
446
 
@@ -192,7 +192,7 @@ class ConcreteBackerMixin(ClemoryBackerMixin):
192
192
 
193
193
  try:
194
194
  backer_iter = self._clemory_backer.backers(addr)
195
- backer_start, backer = next(backer_iter)
195
+ backer_start, _backer = next(backer_iter)
196
196
  except StopIteration:
197
197
  return super()._initialize_page(pageno, permissions=permissions, **kwargs)
198
198
 
angr/unicornlib.dylib CHANGED
Binary file
angr/utils/constants.py CHANGED
@@ -6,4 +6,4 @@ MAX_POINTSTO_BITS = -1330 * 8
6
6
 
7
7
 
8
8
  def is_alignment_mask(n):
9
- return n in {0xFFFFFFFFFFFFFFE0, 0xFFFFFFFFFFFFFFF0, 0xFFFFFFE0, 0xFFFFFFF0, 0xFFFFFFFC, 0xFFFFFFF8}
9
+ return n in {0xFFFFFFFFFFFFFFE0, 0xFFFFFFFFFFFFFFF0, 0xFFFFFFC0, 0xFFFFFFE0, 0xFFFFFFF0, 0xFFFFFFFC, 0xFFFFFFF8}
angr/utils/strings.py ADDED
@@ -0,0 +1,20 @@
1
+ from __future__ import annotations
2
+
3
+
4
+ def decode_utf16_string(data: bytes) -> str:
5
+ """
6
+ Decode a UTF-16 encoded string from a bytes object in a resilient manner.
7
+
8
+ :param data: The bytes object containing the UTF-16 encoded string.
9
+ :param errors: The error handling scheme. Default is 'strict'.
10
+ Other options include 'ignore', 'replace', etc.
11
+ :return: The decoded string.
12
+ """
13
+ if len(data) % 2 == 1:
14
+ data = data[:-1] # Trim off the last byte if the length is odd
15
+
16
+ # If no BOM, try to decode as little-endian first
17
+ try:
18
+ return data.decode("utf-16-le")
19
+ except UnicodeDecodeError:
20
+ return "<utf16-decode-error>"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: angr
3
- Version: 9.2.175
3
+ Version: 9.2.177
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.175
19
+ Requires-Dist: archinfo==9.2.177
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.175
24
- Requires-Dist: cle==9.2.175
23
+ Requires-Dist: claripy==9.2.177
24
+ Requires-Dist: cle==9.2.177
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.175
34
+ Requires-Dist: pyvex==9.2.177
35
35
  Requires-Dist: rich>=13.1.0
36
36
  Requires-Dist: sortedcontainers
37
37
  Requires-Dist: sympy
@@ -1,23 +1,23 @@
1
- angr-9.2.175.dist-info/RECORD,,
2
- angr-9.2.175.dist-info/WHEEL,sha256=kFn0Fg1gyV9Pk02-Hr4CbqbhAvYPyosBpF5pwZB07jU,135
3
- angr-9.2.175.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
4
- angr-9.2.175.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
5
- angr-9.2.175.dist-info/METADATA,sha256=mebKSVkG14DWy-syxp7TYRdR7oNAWUPi3I-ytwHpHIM,4366
6
- angr-9.2.175.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
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
7
  angr/vaults.py,sha256=D_gkDegCyPlZMKGC5E8zINYAaZfSXNWbmhX0rXCYpvM,9718
8
- angr/unicornlib.dylib,sha256=1mDztYjv0WMCv-JbH9IPmkSbYxiOh-OuFV0pSiMLynU,234064
8
+ angr/unicornlib.dylib,sha256=J-Pq_MLBdri_wUoTGGajWX7XliBS5OWjaVAbeR65s9g,234064
9
9
  angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
10
10
  angr/callable.py,sha256=j9Orwd4H4fPqOYylcEt5GuLGPV7ZOqyA_OYO2bp5PAA,6437
11
- angr/sim_type.py,sha256=Hb2USgXG8alwjKF2PORFEpUvo55rVOcWyLeTEXiiZ0k,144401
11
+ angr/sim_type.py,sha256=8AJjzu_hp4GvgXogz8KnLiPXSnxBGUy-D3G8w4wEicQ,144714
12
12
  angr/knowledge_base.py,sha256=hRoSLuLaOXmddTSF9FN5TVs7liftpBGq_IICz5AaYBk,4533
13
- angr/emulator.py,sha256=572e9l-N4VUzUzLKylqpv3JmBvVC5VExi1tLy6MZSoU,4633
14
- angr/rustylib.abi3.so,sha256=NJJLtUZvVTzx9fFXhjBUDhrzBPJQ7tqK_8_Mpgv8WbU,4790512
13
+ angr/emulator.py,sha256=aZXi8-jQ_9uelN2zvlecR2ZYXPey4PHyju6yVJIWDAk,4708
14
+ angr/rustylib.abi3.so,sha256=aGZvJI_y93xVD7WXHapKlqJf6uqBfzecs3-7EjPzkWQ,4790512
15
15
  angr/codenode.py,sha256=hCrQRp4Ebb2X6JicNmY1PXo3_Pm8GDxVivVW0Pwe84k,3918
16
16
  angr/graph_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  angr/sim_manager.py,sha256=w7yTfWR-P9yoN5x85eeiNpj9dTrnjpJ3o5aoFpDAPnc,39396
18
18
  angr/serializable.py,sha256=l908phj_KcqopEEL_oCufbP_H6cm3Wc9v-5xdux1-6g,1533
19
19
  angr/code_location.py,sha256=kXNJDEMge9VRHadrK4E6HQ8wDdCaHSXNqyAZuHDEGuM,5397
20
- angr/__init__.py,sha256=FXSXRAhoObjfB2A_U0cDvr9i4x_JLD-93PunqXYtijM,9246
20
+ angr/__init__.py,sha256=aC71aVWcBP7xns-lX1-sgjw1ZhoYMyYpT71RqZaJHsc,9246
21
21
  angr/blade.py,sha256=OGGW-oggqI9_LvgZhiQuh9Ktkvf3vhRBmH0XviNyZ6o,15801
22
22
  angr/factory.py,sha256=PPNWvTiWaIgzxzyoTr8ObSF-TXp1hCdbY2e-0xBePNc,17815
23
23
  angr/sim_state_options.py,sha256=dsMY3UefvL7yZKXloubMhzUET3N2Crw-Fpw2Vd1ouZQ,12468
@@ -66,7 +66,7 @@ angr/procedures/stubs/ReturnUnconstrained.py,sha256=FFrZAdUViFi-8yzWuUwpmvJapj0q
66
66
  angr/procedures/stubs/UserHook.py,sha256=muRdWND98X2Eg3F7k-_D-yqb8jLjp1VrnM2sxCwCYuU,604
67
67
  angr/procedures/stubs/UnresolvableCallTarget.py,sha256=Q8LPW3xiySQjUUVUQyDA6NndyLEdtye1bieC8dm9tZY,188
68
68
  angr/procedures/stubs/Redirect.py,sha256=gZBhMcayajSMAS4im9ED638XP5euFd7m-pv9uBmUxoI,482
69
- angr/procedures/stubs/format_parser.py,sha256=6P027c6qhCmOffC7x861W-KRJn6ANxXj7kv8Wvjx9zM,27669
69
+ angr/procedures/stubs/format_parser.py,sha256=chwn-spkRefyf83V9JM9X1JQZIwSIyNLlA2ZyNQjZ_U,27675
70
70
  angr/procedures/stubs/__init__.py,sha256=44m1-NIxNEwXtyCkYnHnH1jYw5Mp53ObHGzw1bTdXVc,67
71
71
  angr/procedures/stubs/syscall_stub.py,sha256=XaxmYrO4T0anV3c0r7DKrGHY8D5mBRBrc-J_m7I6BVA,826
72
72
  angr/procedures/stubs/PathTerminator.py,sha256=d4WzGNwKtcUZygeub0iaEfD0PW6amYHCZ7G9CRBAAL0,143
@@ -85,7 +85,7 @@ angr/procedures/posix/getsockopt.py,sha256=EM169ORkFGkGyqLKZoLJCJiA2H5_LVVln_Kui
85
85
  angr/procedures/posix/sigaction.py,sha256=E3SM6BhpuKufaAityNstPUiigTfAPOtOoT1zTtvuWsI,821
86
86
  angr/procedures/posix/send.py,sha256=suypMy-ismXqf17TmDfv8gc4D7ZlAeFk198E3NvNVl4,725
87
87
  angr/procedures/posix/sim_time.py,sha256=71PvgIxfh9xKBkHbvnruaLGFmGP5eJrO4_h7vGnYKJI,1691
88
- angr/procedures/posix/pthread.py,sha256=PrSgAx1ygixmEwIaYW-on1EZBSf8hWq3HwLnYLWlXkE,2426
88
+ angr/procedures/posix/pthread.py,sha256=6Uxl68HxcUWedYe8HwSol7-EtVjU6NaPDvrwK_DNH6M,2472
89
89
  angr/procedures/posix/fork.py,sha256=j49y7IVmMvYlex2HRwv21z4nY_m_O_sr-zkOzFM_HNg,303
90
90
  angr/procedures/posix/__init__.py,sha256=yg0t_r5-yU38GbJmr2QhhNupgoicttNLkuxFfu13_FY,66
91
91
  angr/procedures/posix/usleep.py,sha256=lXo-DT5YEhD9368n7HRwkjQMrs9zC7gj5MThSNy-wQw,175
@@ -310,8 +310,8 @@ angr/procedures/definitions/cgc.py,sha256=Jrb74dNzy05h_nmsC3GjN5Yr5_jWIjpZ24ZsVk
310
310
  angr/procedures/definitions/gnulib.py,sha256=GK4eVXFxwgwhJ9cr47PiTUS4fKYrqPfMtIvwM464Oyo,1107
311
311
  angr/procedures/definitions/linux_kernel.py,sha256=xPpfHkfaA_5jS6mPX1YDCPLHEAirAmeGW6mLDBKIlC8,239128
312
312
  angr/procedures/definitions/parse_glibc.py,sha256=-vmm4hKO2GnBVXmk6Nq4fxGHuLxesRbF52UIrPk4a6Q,2092
313
- angr/procedures/definitions/parse_win32json.py,sha256=z4Rjr3L9HTSWsKtKImUynpcvMUJCinG4fIii-o7dPXw,109101
314
- angr/procedures/definitions/__init__.py,sha256=_0icfYOL57Jz4yUNZ0hVemX-CaUfKe93f_rWG-_8oso,43342
313
+ angr/procedures/definitions/parse_win32json.py,sha256=LzvSZC5u6Jkbe-tx9L7swZmJ0DOm26BjTmJWZGiMhBw,109413
314
+ angr/procedures/definitions/__init__.py,sha256=wYoWkHRSh6wjWE-9wPgNJbTfyeHaqkN2zDWOtHJMdF8,43644
315
315
  angr/procedures/definitions/msvcr.py,sha256=CQgWXrKcEjx9xfPf2BZOOPaQJ5AUqwdNtN_5FdYtRzg,651
316
316
  angr/procedures/definitions/parse_syscalls_from_local_system.py,sha256=ssyMjeyuPVYHnbmArwDPO0XXMW1n5Odv__n17cdLVcY,1823
317
317
  angr/procedures/definitions/linux_loader.py,sha256=uEeMktLesh0NzHmRfgP76IuSzL4YMssR_SSjBRSqA9c,267
@@ -328,7 +328,7 @@ angr/procedures/definitions/wdk/hal.json,sha256=RxvRTa5sumqXXPJai2YrdssJD5fbWeTQ
328
328
  angr/procedures/definitions/wdk/api-ms-win-dx-d3dkmt-l1-1-6.json,sha256=W4md-By6xMbKPnSvDQG4Sqh5C6HSrl_61NHY9GWGbQM,460
329
329
  angr/procedures/definitions/wdk/gdi32.json,sha256=YByprF-byACUskCT17vLClW6P0b3BfA53HRgCYxPGTk,44925
330
330
  angr/procedures/definitions/wdk/fwpuclnt.json,sha256=EYx_oyvbqFnSvI6LeiPy1BbAEnc-WMyn_7aOr3qxP_M,69854
331
- angr/procedures/definitions/wdk/ntoskrnl.json,sha256=YpUmEfHaIMctYyqWoNauhnnnK-fe-NpA6Hb7FQLm3Ic,680493
331
+ angr/procedures/definitions/wdk/ntoskrnl.json,sha256=Y7NWnwB-Yg4_ecbz9yZwmwH2UofZcNB1D8T-3keJpEg,680550
332
332
  angr/procedures/definitions/wdk/fwpkclnt.json,sha256=W_0xXafBO0bheqpLGXOO0tVORvx2KXMwrhPaoBUJTko,1225
333
333
  angr/procedures/definitions/wdk/ksecdd.json,sha256=xYYdocSCK8LBeQYFlhZ7ZKiTK-ju26KDWRIQiw7rBKQ,13262
334
334
  angr/procedures/definitions/wdk/secur32.json,sha256=M9aMvWxz7zzLtZU4X7Ue5tNJOuNtHvHWHz81e7DvTNs,3432
@@ -758,7 +758,7 @@ angr/utils/env.py,sha256=aO4N2h7DUsUQtTgnC5J_oPHvMxJRur20m5UFSkmy4XU,398
758
758
  angr/utils/library.py,sha256=N8-7DTJhbBFe9f-Yvx0--dHs43nAEDcTXhqm4aUBOj0,7386
759
759
  angr/utils/ail.py,sha256=-N59ISc-k-0jHFu0Bg5FIhvhBY8HT6zK3OYSVhXawWo,2838
760
760
  angr/utils/graph.py,sha256=-8cipOvaBeD4owh2cksAwBgcIx2jOeKZa-zcFk73WeM,34787
761
- angr/utils/constants.py,sha256=8tQ1QnFw9U1kM9Q8YQ7StWxXHiqQHbWvrZanQK0eY2A,269
761
+ angr/utils/constants.py,sha256=kY8SvX3475AT7JWD2uKHiLKuFEAMxn6OFVtnfbIJzaE,281
762
762
  angr/utils/cowdict.py,sha256=qx2iO1rrCDTQUGX9dqi9ZAly2Dgm6bCEgdSAQw9MxRM,2159
763
763
  angr/utils/__init__.py,sha256=kBUIJCp9WSgzb62zMg4puUUeheMSl9U4RFqkfiL3en8,1159
764
764
  angr/utils/types.py,sha256=688trvR0_j93sfeRgFT1npcmjNGSx99m_IPe9Xyy9WY,4967
@@ -775,6 +775,7 @@ angr/utils/funcid.py,sha256=Rd4r8juv2IpeMtCpPp4wxJoEZTnZZ1NsxdT42tvrKVA,6353
775
775
  angr/utils/algo.py,sha256=4TaEFE4tU-59KyRVFASqXeoiwH01ZMj5fZd_JVcpdOY,1038
776
776
  angr/utils/enums_conv.py,sha256=fA6qeoRZ6Cj6gCIS_PZbP4PX7E8IybnYQ90OZGnBVrc,2746
777
777
  angr/utils/endness.py,sha256=PDpDNbiIbaSx1DGH1z16nU2B5GMrTqONGivGeVNiGyU,506
778
+ angr/utils/strings.py,sha256=iv3Mg_KCyyPx9dkIw-O0ZidWyGl8mqPDkyNJwZYQr_U,688
778
779
  angr/utils/vex.py,sha256=epcrCexi_NjKnPGM2gfpiRsUea_Scd-71UMuF32ZAQo,306
779
780
  angr/utils/ssa/tmp_uses_collector.py,sha256=digAUQpYoFR1VYfwoXlF3T1pYdDi6Pdq_ck54SjMabQ,813
780
781
  angr/utils/ssa/vvar_uses_collector.py,sha256=HewqUQluNE9EsaiLeFo7LaBvws_DDBDYNt9RBExy464,1367
@@ -811,7 +812,7 @@ angr/simos/simos.py,sha256=L43oFMGRWiVEpfMWhb_Y_iawsaxm7qw_fG-sfKF344M,18464
811
812
  angr/simos/javavm.py,sha256=8WatgrjfiSPyUyHmRhrKWvKxYCvUG3F3xh3LSJDpxhQ,20566
812
813
  angr/simos/userland.py,sha256=jvHdMocEJAlwrTjupubdGfD6snt_DpQ_pyHrIZyV7NE,7354
813
814
  angr/simos/xbox.py,sha256=f0IL9ZTgYX8feEck5nBu87bYcehbdmYKQVoze6wsmY0,971
814
- angr/simos/windows.py,sha256=EneZrucxYgw5wII0FNYIEPjiLnhv0ju_nAEOpk8ssME,27878
815
+ angr/simos/windows.py,sha256=aiay_aqwIbUYXvTWJIWh5YAq3QT4csPGNI6DhAon_mU,27908
815
816
  angr/simos/linux.py,sha256=ShLsqFIut1jGuo6NGQSlT7ymoaEEwgTNkloJNN0pDDI,23204
816
817
  angr/simos/snimmuc_nxp.py,sha256=kMBcgEJ1gyYRXtgYD8H4edQ2rKGIc2rGysnwTY9HaXw,5592
817
818
  angr/storage/memory_object.py,sha256=EyRSgADKDt0IMNfUoDfu-uE1ycpK7U30ORduxPUgk6w,6242
@@ -855,7 +856,7 @@ angr/storage/memory_mixins/paged_memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
855
856
  angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py,sha256=E2LNktW8ln2e5ofMfhQlyUjB4XVChkkqVwit32NWamY,29386
856
857
  angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py,sha256=9kaf0ULBMwdC7vQobp1yjAQZ6Me4UvmTR3alje_PQ5A,2265
857
858
  angr/storage/memory_mixins/paged_memory/privileged_mixin.py,sha256=YYFxpXsf9-ALl1x86_Gm71H45jqtdkkgLWPf0twqefU,1578
858
- angr/storage/memory_mixins/paged_memory/page_backer_mixins.py,sha256=7DSOkDioqJOqmEgWXO974uD3Ogmhm7m9c4zQ8druZOs,10520
859
+ angr/storage/memory_mixins/paged_memory/page_backer_mixins.py,sha256=77Wx5vLXr4sMX2eVdQNZz2AYTEZ09YWySyKHAQMXlnw,10521
859
860
  angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py,sha256=AxzHQwf1f5J5W8jnMzgTzMdAYhw2UIKpp31OQDMESak,3320
860
861
  angr/storage/memory_mixins/paged_memory/pages/permissions_mixin.py,sha256=1RKRsZE2xn4hta1kTT0p6n4WTduQJKiPqhipN0Xi8p8,1002
861
862
  angr/storage/memory_mixins/paged_memory/pages/refcount_mixin.py,sha256=8sAIQgcZrMefCT9_DmToiF71SGFe1YkTEW5rJ6fZ7qI,1728
@@ -913,15 +914,15 @@ angr/knowledge_plugins/functions/soot_function.py,sha256=OzCvQPWxnjbwPWTW0JXrQey
913
914
  angr/knowledge_plugins/functions/function_parser.py,sha256=DTdVwYt6nXLMc0EOh-V_GhvZYQ947UNBaA77qn7Y6Vo,12379
914
915
  angr/knowledge_plugins/functions/function_manager.py,sha256=StsK3biTFRRA2ugrmeQLuHiN894p789Tlw1CIKlE0PY,23462
915
916
  angr/knowledge_plugins/functions/__init__.py,sha256=asiLNiT6sHbjP6eU-kDpawIoVxv4J35cwz5yQHtQ2E0,167
916
- angr/knowledge_plugins/functions/function.py,sha256=6pFpPcFTiz8kSHZW87TIAajLlMVCx9fyMvi6rBBmei8,71669
917
+ angr/knowledge_plugins/functions/function.py,sha256=orSBM5R073Tf-PDWw8NcvKl_iUgCnnk1SyFFMPZP6VE,72303
917
918
  angr/knowledge_plugins/xrefs/xref.py,sha256=U2H1rfffp5EXoh0awlGxMBxA4K5MIwl3CXjV3Uih3tA,4856
918
919
  angr/knowledge_plugins/xrefs/xref_manager.py,sha256=1n373rtV91xicAfSUresRigsZ6qCBhPOaJKrN_SW3QY,4157
919
920
  angr/knowledge_plugins/xrefs/__init__.py,sha256=5PhqVOtTZ27lCjJ9wp7akUeJydqILbyCBZK0gP7BGQs,193
920
921
  angr/knowledge_plugins/xrefs/xref_types.py,sha256=LcQ9pD4E4XlC51Us49xiqAoGAFGpnCrpYO4mOzILiKI,308
921
922
  angr/engines/unicorn.py,sha256=fq2akQ4dVFAWqek0Yr4JTaTJWwp5vICiSQ7Sg4wuDJE,24533
922
923
  angr/engines/concrete.py,sha256=kEt6Dyp8QAIaOP3oW5lRcDs_2UMP2vbiNzylGiqvf7g,2143
923
- angr/engines/icicle.py,sha256=8mAL_YEumoP95C3p0r7yoGdi68Xq2sz9-qpGjAu5ffE,10333
924
- angr/engines/hook.py,sha256=lAEYYAXQY_GDOpsz3JZ7IswxrBccZnZ6EaQwyNBb4W8,2590
924
+ angr/engines/icicle.py,sha256=JSbHnTJePV1l6dmF5WPhlzYjm6ZApQfjCUrgJ4jewOg,11033
925
+ angr/engines/hook.py,sha256=YMCUWs-cC3fQCN9xlYAy7vaMPKWDNJkl9KtCMYUyMP0,2569
925
926
  angr/engines/__init__.py,sha256=_3oRkiTrPO7QPiCg3qXymt4o9ZAOrAHt5pdfjkp3W9k,1661
926
927
  angr/engines/procedure.py,sha256=8kgFH56nkqSWm0p1apuGBaFngl-4BnAzE0bXhq9mc6Y,2561
927
928
  angr/engines/engine.py,sha256=2kwOT-sbxKXAVX2PmsPTr8Ax36Vxq6hkRdDKaITBQNc,657
@@ -975,7 +976,7 @@ angr/engines/soot/expressions/base.py,sha256=7y6a_euE8TNsrCA1jZfyjHjh7TH91nKaP_Z
975
976
  angr/engines/soot/expressions/phi.py,sha256=XS44tYMD-70WCL0EH0BdVcLIfYXLEHgSW9Tywl67uIk,1227
976
977
  angr/engines/vex/lifter.py,sha256=BqeajzzpLL32nmGaszWASBPDhluhTec2m3ods1ZTIIo,17207
977
978
  angr/engines/vex/__init__.py,sha256=k8cIQpJO2Wv6erLCOa4boEywRcwlFOTgAgGP6wNQcwM,525
978
- angr/engines/vex/claripy/ccall.py,sha256=1ozZd6hLoFFcbREohzqJPu8zc34QVrYomnjwtgM40JI,82955
979
+ angr/engines/vex/claripy/ccall.py,sha256=sxWkTmCFwVto9dqTW74sCSgl47kn8HV3NSTU0LCcxts,82962
979
980
  angr/engines/vex/claripy/datalayer.py,sha256=kb-QSvwRzc6Mufwsv012Tgg_PNJPUTec8ElSuJcFzNQ,4971
980
981
  angr/engines/vex/claripy/irop.py,sha256=_xiVGT5YbguTm8c0DaAqHnPUVrD2lp3ELtiBJTPwTOA,46240
981
982
  angr/engines/vex/claripy/__init__.py,sha256=4B8H1VOHrrKJMjAXZkZ0r_02issFP_bxDJJMw50yVe4,109
@@ -1051,7 +1052,7 @@ angr/analyses/analysis.py,sha256=2ABUppMZr97ZEAmxOQuXo-eyw5aF0ZASAii8SuuncNo,156
1051
1052
  angr/analyses/init_finder.py,sha256=lSiBfmKExmhK7wsLGsBaJYQKjW9t7S5mlcH3U--B6CI,9259
1052
1053
  angr/analyses/boyscout.py,sha256=KIxl1chV_hQV2Unn-vnoYne1dmFVy1WTUdoidkUpQ8I,2469
1053
1054
  angr/analyses/congruency_check.py,sha256=QeYRrdrs_iluLLnKz3KUHkCTPRVl5PgM2T0ZXd786HA,16165
1054
- angr/analyses/stack_pointer_tracker.py,sha256=MX4wcvmTpV9HsCybYofYdkSt3aaCwXL94RSJJ1tPD5o,38082
1055
+ angr/analyses/stack_pointer_tracker.py,sha256=tsiA8VHyrUsR9sCFh6CL0BS1Ubunv2pat6D3DLanDgI,38151
1055
1056
  angr/analyses/binary_optimizer.py,sha256=xFDv8c1s5nQUKY_EWYRCuVroSXFkMiSLl5LngPiysDA,26145
1056
1057
  angr/analyses/proximity_graph.py,sha256=KoRvdQswRrDygotrY_6hPnrzUf1U5c5mht-b7lowyFM,16087
1057
1058
  angr/analyses/vtable.py,sha256=1Ed7jzr99rk9VgOGzcxBw_6GFqby5mIdSTGPqQPhcZM,3872
@@ -1060,7 +1061,7 @@ angr/analyses/__init__.py,sha256=KFu0Otm7bqAcjX8dsnQzphJmkUVxMLssjFIJJOci32U,347
1060
1061
  angr/analyses/ddg.py,sha256=AWPPsL2bfTAua5meuQfPFL6b29PLpCLZzw-LGCv5iVo,63214
1061
1062
  angr/analyses/dominance_frontier.py,sha256=kRoOCr3EaIUW1YnvtjmKFJW65zYsJHNe-HtVx2LR15s,2002
1062
1063
  angr/analyses/smc.py,sha256=DC4l7fTmoOybD_lSQaLjcUdeLUifQhhsSu1nx8Ax6pM,5176
1063
- angr/analyses/complete_calling_conventions.py,sha256=nVrDHhCV3cawD_KxkAYj2fsszAskkFUHC1677rI6xEM,20490
1064
+ angr/analyses/complete_calling_conventions.py,sha256=a-hJQ6yRusDhRADGcLxjY6ETlD1vN_QsHd2c0VZlo7I,21079
1064
1065
  angr/analyses/callee_cleanup_finder.py,sha256=lQRn5rHS6mGNOqDh-UsxX-gs4cDpwQ6KNjvzQFVCdio,2800
1065
1066
  angr/analyses/static_hooker.py,sha256=AYJXoHtdq2m-MgpJbx4eur7wy7llrKXvsVM5NdPcKHU,1852
1066
1067
  angr/analyses/code_tagging.py,sha256=Gj7Ms24RnmhC9OD57gw7R6_c-pLfqSug-LVUMw_JmXE,3510
@@ -1072,14 +1073,14 @@ angr/analyses/xrefs.py,sha256=vs6cpVmwXHOmxrI9lJUwCRMYbPSqvIQXS5_fINMaOGI,10290
1072
1073
  angr/analyses/loop_analysis.py,sha256=up6N3SZzya6N6OlKldo_MP36DqiY_tMbVdFWSM8fByU,9311
1073
1074
  angr/analyses/class_identifier.py,sha256=7zOIryNL_DrXW11GGzZjp6TPwv--2VZ5ZuSzYpXirmQ,2951
1074
1075
  angr/analyses/disassembly_utils.py,sha256=Pj9vnyji9fBDL3a3vAo2D3H4CfB-XrvVDLIsNXrp9pU,2877
1075
- angr/analyses/typehoon/lifter.py,sha256=hxYJmM_A0Kl6YgY7NyWBtA3ieaY49Ey3ESCHC61lMys,4000
1076
+ angr/analyses/typehoon/lifter.py,sha256=FGu990mwsMRvPwiRIcu7pHtfXQ54sZ6bVGxwtb8W9EQ,4523
1076
1077
  angr/analyses/typehoon/__init__.py,sha256=KjKBUZadAd3grXUy48_qO0L4Me-riSqPGteVDcTL59M,92
1077
1078
  angr/analyses/typehoon/variance.py,sha256=3wYw3of8uoar-MQ7gD6arALiwlJRW990t0BUqMarXIY,193
1078
- angr/analyses/typehoon/simple_solver.py,sha256=CCGsuxzcRwPxh3S3fU_CJNQ7KVJaTP_SzH5ZImuPhDw,67609
1079
- angr/analyses/typehoon/typevars.py,sha256=ZDnKaGEwBTzYWUPQzacQkJ4rMpUDlnLzzJuKyQuEEtA,17839
1079
+ angr/analyses/typehoon/simple_solver.py,sha256=F34YE16C80Q8p5u_MPvJ-kPcVvm9_PQ-YMIBkjqKwOQ,73163
1080
+ angr/analyses/typehoon/typevars.py,sha256=oFRDzN9JoznJ8MPTNNla_0OA6OeBQOfZZYMTeAufW9s,18090
1080
1081
  angr/analyses/typehoon/dfa.py,sha256=41lzhE-QmkC342SjfaaPI41lr4Au5XROTu_7oenvg7g,3823
1081
- angr/analyses/typehoon/translator.py,sha256=_UE1JC4KNDXXl4plula9OApK1ee07z9BFdX9HKa5uqw,10568
1082
- angr/analyses/typehoon/typeconsts.py,sha256=5xyZakTTra4K4-8icVqT5JMM__ZfnBVEBV_1kydQn50,8028
1082
+ angr/analyses/typehoon/translator.py,sha256=4gbgKg7ZGK_-97OCVnzaRjDrS2ZSl6WGbcR0E7OC_7Q,10615
1083
+ angr/analyses/typehoon/typeconsts.py,sha256=1By-4oluuW00kDJPrKlugpAHxpSNB_GB3rbbZVtV2eI,8890
1083
1084
  angr/analyses/typehoon/typehoon.py,sha256=qj5MBJdzVB-5f73N_Da0gs5fG-eIFN272VNfsdYn7lo,12777
1084
1085
  angr/analyses/forward_analysis/job_info.py,sha256=5iYthtygg22taqFTR9oFhmB2FX6z2rCuoXfBULHhFsU,1592
1085
1086
  angr/analyses/forward_analysis/__init__.py,sha256=Du2Ng6EzDQzQYcRCffkOKjLztqa5GBNhiLSgErIPnHE,319
@@ -1098,17 +1099,17 @@ angr/analyses/cfg_slice_to_sink/graph.py,sha256=80erWbctYEpsLjpw2TNjntDLDGQFdYRo
1098
1099
  angr/analyses/cfg_slice_to_sink/__init__.py,sha256=YaWvUc-iQ--9tnsCgHYy1lbe6M7cQJljppMPkJ0ZK_o,267
1099
1100
  angr/analyses/cfg_slice_to_sink/transitions.py,sha256=9Y1qG789dsAcv73FwgYtppUzPWXbKdV5qIfIZHfhfmg,888
1100
1101
  angr/analyses/variable_recovery/irsb_scanner.py,sha256=1dL2IC7fZGuRrhmcpa2Q-G666aMPmbM8zSzmIRpLNSY,5141
1101
- angr/analyses/variable_recovery/variable_recovery_fast.py,sha256=xahVegmxq0jl_mSu0EuoQLO_-GHtARPFPwoLyppBnHY,27910
1102
+ angr/analyses/variable_recovery/variable_recovery_fast.py,sha256=OeSnBVpcNlZU-miBlIrbyaPt2IHtExtnpBoACnWNs_Q,27996
1102
1103
  angr/analyses/variable_recovery/__init__.py,sha256=eA1SHzfSx8aPufUdkvgMmBnbI6VDYKKMJklcOoCO7Ao,208
1103
- angr/analyses/variable_recovery/engine_ail.py,sha256=8yqrl_qfO_DCvaIxwsa_eits5rIbly4rBEFh5W_U2O4,33709
1104
+ angr/analyses/variable_recovery/engine_ail.py,sha256=N9sEHMUT9qVMJCm1h4da3vLnSLPDp3oY9fE3WN60ioc,35652
1104
1105
  angr/analyses/variable_recovery/variable_recovery.py,sha256=I45eVUpOOcSobA_QyXl3aRNa0kppJH_7YOj95fPPTdE,22272
1105
1106
  angr/analyses/variable_recovery/engine_vex.py,sha256=Sjh3bZZfnEaich7PLTitaZITSMW7agqgyxck4gWKDbQ,21465
1106
1107
  angr/analyses/variable_recovery/variable_recovery_base.py,sha256=Ewd0TzNdZ_gRYXtXjVrJfODNABMMPjnuvMy9-Nnyui0,16813
1107
1108
  angr/analyses/variable_recovery/annotations.py,sha256=2va7cXnRHYqVqXeVt00QanxfAo3zanL4BkAcC0-Bk20,1438
1108
- angr/analyses/variable_recovery/engine_base.py,sha256=MJ6h-dq_0r-3I3ZOhR8E4So2VqxlyudNeSrAHyQCNRg,53171
1109
+ angr/analyses/variable_recovery/engine_base.py,sha256=S3-CynLxRXlZ-hDXDZnru_wzApjR8a7hBiJOHquzBjk,53389
1109
1110
  angr/analyses/calling_convention/fact_collector.py,sha256=9qx3jvBBrhKvRoZrCir61KZBqFtduiFzhbHAtWFvMic,28762
1110
1111
  angr/analyses/calling_convention/__init__.py,sha256=bK5VS6AxT5l86LAhTL7l1HUT9IuvXG9x9ikbIohIFoE,194
1111
- angr/analyses/calling_convention/calling_convention.py,sha256=vdGqrv7SQDnO6Rg9rgDuQSUPxHYGRgEeneTEQhGM-2M,46762
1112
+ angr/analyses/calling_convention/calling_convention.py,sha256=UfMXXoa51UvqHS5XGyFY09Vs_OVFvro51vfCtaYw7aw,47496
1112
1113
  angr/analyses/calling_convention/utils.py,sha256=twkO073RvkkFXnOTc-KYQT1GKUtz0OPjxh0N6AWIriQ,2110
1113
1114
  angr/analyses/propagator/values.py,sha256=L41ue9PjPpA_tEe8YlTwv3ly9o3Sbo8uQESALfbUr4c,2026
1114
1115
  angr/analyses/propagator/__init__.py,sha256=lxvNUfUJYOPqO8se8Nej_NNCObLt90QFIrZhzgt5a_o,114
@@ -1214,24 +1215,24 @@ angr/analyses/decompiler/region_identifier.py,sha256=kQJ_KCd3Qx9LWStTM_iUNBG10bD
1214
1215
  angr/analyses/decompiler/empty_node_remover.py,sha256=4CdxTM1AVmRoEdRIwJg1YEy10AgkEoRmJ8SU7xGbKnM,7424
1215
1216
  angr/analyses/decompiler/seq_to_blocks.py,sha256=4-tqstendHHO2J0WD3JHQkm8c4c2KG3AO3mYWrn4xvg,569
1216
1217
  angr/analyses/decompiler/__init__.py,sha256=eyxt2UKvPkbuS_l_1GPb0CJ6hrj2wTavh-mVf23wwiQ,1162
1217
- angr/analyses/decompiler/clinic.py,sha256=IK8wY6JuQw7wwBxmvo57M-N6cvnb4FAm6NnIQLo02Ho,151535
1218
+ angr/analyses/decompiler/clinic.py,sha256=LIsOw2U3P72AQ0GMK5DSn8JyQ7uY-cLcJPNpTcCERNo,151635
1218
1219
  angr/analyses/decompiler/decompilation_cache.py,sha256=06oiG299mVpGOTL54Xy1CUxz5s8QLgYJn5XIvKFLYkU,1566
1219
1220
  angr/analyses/decompiler/block_simplifier.py,sha256=vjlugXCB3xFYBDBn3LPxOtU1dDc76PpYtVEoju3i9-4,15513
1220
1221
  angr/analyses/decompiler/node_replacer.py,sha256=jJd3XkIwFE07bIbLriJ6_mQEvfhm90C8lqlrL5Mz1Xg,1450
1221
1222
  angr/analyses/decompiler/decompilation_options.py,sha256=bs6CNpU3UxepgBB_9eUH4jriNpGoryyPP0sR1hDWpTk,8477
1222
1223
  angr/analyses/decompiler/region_walker.py,sha256=u0hR0bEX1hSwkv-vejIM1gS-hcX2F2DLsDqpKhQ5_pQ,752
1223
1224
  angr/analyses/decompiler/graph_region.py,sha256=uSDdCLXfLZJVcb0wMdgBh-KtBJUUhLGHQ-Ap4dNs8wo,18186
1224
- angr/analyses/decompiler/utils.py,sha256=slKEGEpWBN7X1ACbMDbd3e4Zs9txgDYeGBFqnFGCpD4,42705
1225
+ angr/analyses/decompiler/utils.py,sha256=B7YwnEBF6AZ5DG3E7zHK0TF7zOLeiMWEcc18YL_eUyA,43074
1225
1226
  angr/analyses/decompiler/decompiler.py,sha256=adX2UJv6s4JAF7Qf6HTgwPo28QQ6yCzrrQrtlqDZyfE,31864
1226
1227
  angr/analyses/decompiler/goto_manager.py,sha256=wVoeXJcadIda84LloGgqW-rL0QHLv3fx4vZHLhmz-_o,4027
1227
1228
  angr/analyses/decompiler/block_similarity.py,sha256=S1lTlXFyOmJlQa7I3y7xgLsENLS4XGET7tdD55k_6Vg,6859
1228
- angr/analyses/decompiler/ail_simplifier.py,sha256=s9hFXhNwU8fBKDOkw4vtSWhSWy9xBdF9p1463cO5930,93071
1229
+ angr/analyses/decompiler/ail_simplifier.py,sha256=NdPdj7IpmltxdPuhxdwHnd6qG2xHrA5ZPlDLvDyaH8U,93303
1229
1230
  angr/analyses/decompiler/jump_target_collector.py,sha256=CucT99luxIVrioM-keMMjyNKWE5QaXEFQOFphtyU8b4,1189
1230
1231
  angr/analyses/decompiler/label_collector.py,sha256=fsCkldy8ZKH4FjkREByg-NDmfCd7Pmuz2K1Dks9oVjM,814
1231
1232
  angr/analyses/decompiler/jumptable_entry_condition_rewriter.py,sha256=f_JyNiSZfoudElfl2kIzONoYCiosR4xYFOe8Q5SkvLg,2176
1232
1233
  angr/analyses/decompiler/structured_codegen/__init__.py,sha256=mxG4yruPAab8735wVgXZ1zu8qFPz-njKe0m5UcywE3o,633
1233
1234
  angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=J6V40RuIyKXN7r6ESftIYfoREgmgFavnUL5m3lyTzlM,7072
1234
- angr/analyses/decompiler/structured_codegen/c.py,sha256=sFizu2EWABRhv_yaBXd85rPhoRIEZNZ6zdLp5Q4XHa8,150180
1235
+ angr/analyses/decompiler/structured_codegen/c.py,sha256=7rcmoqzbUa_Cv9Dnab1Vs72gVAOb2gGYR17G33BoQ98,150245
1235
1236
  angr/analyses/decompiler/structured_codegen/dummy.py,sha256=JZLeovXE-8C-unp2hbejxCG30l-yCx4sWFh7JMF_iRM,570
1236
1237
  angr/analyses/decompiler/structured_codegen/base.py,sha256=mb5d5iQO1N2wMl7QySvfHemXM-e0yQBhjtlmnLsVSgE,5134
1237
1238
  angr/analyses/decompiler/ssailification/rewriting.py,sha256=aIYuFGlroEXqxaf6lZCfodLD2B53Sb8UJgl2nNb4lg8,15076
@@ -1241,10 +1242,10 @@ angr/analyses/decompiler/ssailification/__init__.py,sha256=zcHoI7e2El2RSU_bHTpQR
1241
1242
  angr/analyses/decompiler/ssailification/traversal_state.py,sha256=RDs2mTc6GYnbMom2gBfNfNMcazKMSkhemEmse8uELTY,1558
1242
1243
  angr/analyses/decompiler/ssailification/ssailification.py,sha256=LGRFDz6tQmKeJKomSQlxTTr3ILdJaI0iYBaizE5BNCI,11288
1243
1244
  angr/analyses/decompiler/ssailification/rewriting_state.py,sha256=NAwVcBYh-BQo9K7nfnUlNDBAYflfFMgBYzsVD3BwiN8,1898
1244
- angr/analyses/decompiler/ssailification/rewriting_engine.py,sha256=IrEznHKUlzuAufysLgQ1fyoEt_f25pMvNXdONzmQ1n4,40925
1245
+ angr/analyses/decompiler/ssailification/rewriting_engine.py,sha256=wGUdybrGWTlE73hwS3gzyRiTtXL03tq8FL7-qYNl_X8,41486
1245
1246
  angr/analyses/decompiler/ccall_rewriters/x86_ccalls.py,sha256=dvdiAXWGte_4xcDZnP7h980DVZqpxMgQt-fTC1nxChQ,13437
1246
1247
  angr/analyses/decompiler/ccall_rewriters/__init__.py,sha256=TrnykR5cGCXy85f8OApJBjWSQ8WQSzjrnpND2fODWG8,207
1247
- angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=9BiexqY0fgB_UTmjcql71tg9HALx2mFhQMP1IVYAJpw,512
1248
+ angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=c7-GxWZbFfJvmg4DPdjYgLXyiasmfgmiQ6IY4fjOVWs,727
1248
1249
  angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py,sha256=8LA05CKwFzoNAloOJ3KF4AkFM3bDTQdstr1_46WauxM,24958
1249
1250
  angr/analyses/decompiler/dephication/seqnode_dephication.py,sha256=kigkzU78eNe-zD16hUI2YMNt_jHvixpohHpnLhAHMlw,5437
1250
1251
  angr/analyses/decompiler/dephication/graph_rewriting.py,sha256=cRMrYJgGV57H5TzWY70S8tl3D9GVkrzOetkxCUevyW4,3502
@@ -1270,7 +1271,7 @@ angr/analyses/decompiler/region_simplifiers/cascading_ifs.py,sha256=kPWajH8__ap-
1270
1271
  angr/analyses/decompiler/region_simplifiers/expr_folding.py,sha256=naCgnDUjdiDsh6dvoNO-VARfbTfaEYpu3EX9HkJ1cqE,31790
1271
1272
  angr/analyses/decompiler/peephole_optimizations/basepointeroffset_and_mask.py,sha256=2Tb4zGnFA5hZH8oI6t1hoRstGDmOBsOoQxf6fU5Ct7A,1105
1272
1273
  angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py,sha256=8gPWhFTcezgO7pZ_v0pxR7pweds4_GrrY82ur6Nrlf8,4796
1273
- angr/analyses/decompiler/peephole_optimizations/cas_intrinsics.py,sha256=2A7NZIzZpDCq3i8e72l7c7KHfEwfJvzi5NffoXU_NNE,4559
1274
+ angr/analyses/decompiler/peephole_optimizations/cas_intrinsics.py,sha256=lzlyhe1RP020ezYN77QRFu5p7zNaH4XSMkpBhxRP7ms,7959
1274
1275
  angr/analyses/decompiler/peephole_optimizations/remove_redundant_nots.py,sha256=V5Vm1zUGjsauyOYXbUgDfZEgmChLbY8wnvmcRbfdMk0,1278
1275
1276
  angr/analyses/decompiler/peephole_optimizations/bool_expr_xor_1.py,sha256=vLXt0ekjRep4SgaNq1wyxVkBTzOMTa03d3rgkjUOcUg,995
1276
1277
  angr/analyses/decompiler/peephole_optimizations/bswap.py,sha256=fXV_a58W2X30KCanYeSHdZ2yPcfDlyZq_OkYNMkglrg,6420
@@ -1287,7 +1288,7 @@ angr/analyses/decompiler/peephole_optimizations/a_mul_const_sub_a.py,sha256=5Gsq
1287
1288
  angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts.py,sha256=0R_ja5u2fO_BMSpfSk68sDMfhwpvBpyCBKahQh-SB4w,3997
1288
1289
  angr/analyses/decompiler/peephole_optimizations/rewrite_mips_gp_loads.py,sha256=YMfsqffIzsB7YslHVohBOeOWeNJydsrBowJ_6oD1QyY,1909
1289
1290
  angr/analyses/decompiler/peephole_optimizations/remove_noop_conversions.py,sha256=KRjv1VUMmzkmax_s1ZM3nz24iqz1wqInMgJn3NR9kd4,1788
1290
- angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=EbnjFKVoLce23AbmF-06EdW-TzAeoZjn_NHDkqNWATQ,5034
1291
+ angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=tfBb_Pi-GBcrOxChotrwk9h28Qo85okQLP7LKGC5c8s,5028
1291
1292
  angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_branch.py,sha256=1pbXLE65KwREUoB9GqCXBgz-BeUrzXxoIRFUYZAnBVA,1133
1292
1293
  angr/analyses/decompiler/peephole_optimizations/remove_redundant_reinterprets.py,sha256=NpjPio84lBFY76hPyvOWChRo1jgFEj9XKmSh_A3A-bg,1430
1293
1294
  angr/analyses/decompiler/peephole_optimizations/rewrite_conv_mul.py,sha256=nhV4URuLjH_G-te15cJJ3O2-9VJvpOnkRJjdHSBRoko,1481
@@ -1303,6 +1304,7 @@ angr/analyses/decompiler/peephole_optimizations/utils.py,sha256=KYDiAt0PUA4PcOlB
1303
1304
  angr/analyses/decompiler/peephole_optimizations/remove_empty_if_body.py,sha256=lq41TsLU8kSEduzt66i-Jva_HB5Pqlg4Q6acO-nGAYw,1612
1304
1305
  angr/analyses/decompiler/peephole_optimizations/cmpord_rewriter.py,sha256=sJV-8aP9KUx5Kt7pZmb3M28K3z2bGD3NWJFZOdYaBYc,2662
1305
1306
  angr/analyses/decompiler/peephole_optimizations/a_sub_a_div.py,sha256=XuR33qLQRVD_fX1kqyAdG2NNi4o6bJGvvxXD8uzfzmw,963
1307
+ angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy.py,sha256=_2Fdny7z31G22edctem0ySFpek2HT5tk-T9F8dQ5p1M,10122
1306
1308
  angr/analyses/decompiler/peephole_optimizations/one_sub_bool.py,sha256=zljXiUnoH6AwgAoXVRwz9dXEedW7RiUTkHvBMZIA-o8,1140
1307
1309
  angr/analyses/decompiler/peephole_optimizations/a_mul_const_div_shr_const.py,sha256=-V60wMaBKz1Ld1NcaQ8Dl0T4Xo9Qq6nfAQpXJ-MNsDI,1379
1308
1310
  angr/analyses/decompiler/peephole_optimizations/a_sub_a_sub_n.py,sha256=3ByEh3bbqaIeWcniCtKqzWFQqsULfeVEJlcEopN9iq0,667
@@ -1313,12 +1315,11 @@ angr/analyses/decompiler/peephole_optimizations/invert_negated_logical_conjuctio
1313
1315
  angr/analyses/decompiler/peephole_optimizations/rol_ror.py,sha256=hrtAJaWTZgphP6Wex50uz9vHIBeXy1ie5M5CBSruY7Y,5144
1314
1316
  angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py,sha256=4fZUQGdEY2qVANb6xQWZJRf5N7X78R_gyECxzhC_5vU,2384
1315
1317
  angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py,sha256=--C1JQluHt8ltdfUPBHvRD3SjW_ZcBU3oWdFwpCtpuw,1072
1316
- angr/analyses/decompiler/peephole_optimizations/inlined_wstrcpy.py,sha256=rR3eC_pjCVBuc8GuWzJJkn6h8c964ODf-5uiwlncwVE,9896
1317
1318
  angr/analyses/decompiler/peephole_optimizations/coalesce_adjacent_shrs.py,sha256=fXq-qFe7JUdD5LdtUhoA9AF3LnY-3Jrmo4t3ZRJIIiQ,1414
1318
1319
  angr/analyses/decompiler/peephole_optimizations/remove_redundant_bitmasks.py,sha256=FUf1bg9nADlwT1upwTKcVhhPcvZ98C-8PlmkWoHqwZ4,4787
1319
- angr/analyses/decompiler/peephole_optimizations/inlined_wstrcpy_consolidation.py,sha256=TsQEpHhyVr7MdiSFkijR6GFMHsuKlmmy9qvSCo32c2U,5409
1320
1320
  angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts_around_comparators.py,sha256=pMdKsNJtAIPqyWsR8cUEyujdF7e7kbqqvVgelVmKtqY,1610
1321
1321
  angr/analyses/decompiler/peephole_optimizations/optimized_div_simplifier.py,sha256=M4GxEWKs6V9aEYejGluZ8w8QpvPKpaESeFFzid88HjE,14208
1322
+ angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy_consolidation.py,sha256=TfimMI0FwpRBrWVQZy4m9XAf_BBPInu0zfywQ9CoGgs,12712
1322
1323
  angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py,sha256=HY6EQkThiyMaahz3bodJUqLBKWY2n4aKGbKyspMXN50,1641
1323
1324
  angr/analyses/decompiler/peephole_optimizations/rewrite_bit_extractions.py,sha256=tezg1gsxxH-iMmo_346NYO0YHwJz_Gpb8Ztm526o0G4,3300
1324
1325
  angr/analyses/decompiler/peephole_optimizations/single_bit_cond_to_boolexpr.py,sha256=3eQSTFUNRDWz0No90GzxM_TaIYa7-xouf8afytds5Dk,2967
@@ -1328,13 +1329,13 @@ angr/analyses/decompiler/peephole_optimizations/remove_cascading_conversions.py,
1328
1329
  angr/analyses/decompiler/structuring/sailr.py,sha256=aJCES4r5HaLs-l1tXagIPtXpWnqY_uTlJn7wCYKnwTg,6127
1329
1330
  angr/analyses/decompiler/structuring/recursive_structurer.py,sha256=iWFZdM54C1q2ezL7ouhH6rygJiGO2OCUH5JKXKgrf6w,7422
1330
1331
  angr/analyses/decompiler/structuring/__init__.py,sha256=kEFP-zv9CZrhJtLTKwT9-9cGVTls71wLYaLDUuYorBU,711
1331
- angr/analyses/decompiler/structuring/dream.py,sha256=_4JrXwF32UKoUOak_matUa81MwRptyXvEmOfygt-ix0,48736
1332
+ angr/analyses/decompiler/structuring/dream.py,sha256=QNZ8dKk79Uq0urUEpwmBgX2Ak3ZQLhiydcSKJTx968c,48738
1332
1333
  angr/analyses/decompiler/structuring/structurer_nodes.py,sha256=3T6QPeD1KlLkcjMDBblQCb1Cf50VF36C-hlFhiKi9nc,12823
1333
- angr/analyses/decompiler/structuring/phoenix.py,sha256=ietKstjp1OkSeONaTWxh5-nbe38pxZtQ9llPkQsqFWI,159757
1334
+ angr/analyses/decompiler/structuring/phoenix.py,sha256=-yGUKZt37N0tbqTJoRI4Pk_ohZhYaxT22wWEWsblzZ4,164692
1334
1335
  angr/analyses/decompiler/structuring/structurer_base.py,sha256=xzQMYBInNyeRYibbiuk6EYbvPO235El3guT1yh1qAxw,50690
1335
1336
  angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py,sha256=FBz1UGl5rj13GYSF2tYWaQR135q4VQUxCBPW6SgdQ2w,19485
1336
1337
  angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=VGpCQmx8H2w3HoVFGdqwYYZ0z_IdHrFjOhz37yvxxTQ,28169
1337
- angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=_p9puK2bvp055mqSW28QIqXWpZD-OpsunWPQrOWmT9Q,42130
1338
+ angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=RkZdMPJ_JKDkywVYp0MrCf6PK95GWT7Q0K7jsCVk_cE,42132
1338
1339
  angr/analyses/decompiler/optimization_passes/const_derefs.py,sha256=-vvd0QvLCmnRREmvN5LCLeKpUqisyPWj0yw1CHY8TwQ,10505
1339
1340
  angr/analyses/decompiler/optimization_passes/call_stmt_rewriter.py,sha256=INLmzfGDMsVzyQF2S6uwiQSoNcxM7DUBJrdWlL2gqlY,1325
1340
1341
  angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py,sha256=ez0tzV2MqNVBW7hhvNyJWQpJQUntLA4etK606hXixJM,5206
@@ -1356,7 +1357,7 @@ angr/analyses/decompiler/optimization_passes/const_prop_reverter.py,sha256=uccjV
1356
1357
  angr/analyses/decompiler/optimization_passes/deadblock_remover.py,sha256=RMvKYw0aWrisO6DB_g3BTY9CgIgAJ6JZXpOnOOm7fpo,2737
1357
1358
  angr/analyses/decompiler/optimization_passes/div_simplifier.py,sha256=di_yaOo_cBzau7tNZHmozCwNNkNou1LH99cUrsU2AKg,18744
1358
1359
  angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py,sha256=DzvgsAhU4GqvS0yN0Q2JezkJAuo2KInCgZ7fsB-ibz4,4021
1359
- angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=8Q2Yh7QcKuoO51zfEa0abnTPES_QQRWbjiu3ZUntwvQ,13792
1360
+ angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=O7b5hVV8UV7Q5nzEPovQZB4z8UsyYKvPkOTp2pljXiY,13774
1360
1361
  angr/analyses/decompiler/optimization_passes/eager_std_string_concatenation.py,sha256=O5EVUgJxPnRXBaReF8gxQlWFeFr3V1V313qe_QFS7bY,7087
1361
1362
  angr/analyses/decompiler/optimization_passes/return_duplicator_low.py,sha256=YHmS48Wyegq6Hb9pI9OKybFy9MWAo9r0ujDYJgykKk8,6866
1362
1363
  angr/analyses/decompiler/optimization_passes/code_motion.py,sha256=fdUvRseuFiH6ehpk9uWWMityDuBs_kqmIjYMi92dDkw,15353
@@ -1388,7 +1389,7 @@ angr/analyses/s_reaching_definitions/s_rda_model.py,sha256=FJSge_31FFzyzBJA1xm7d
1388
1389
  angr/analyses/s_reaching_definitions/s_rda_view.py,sha256=7o-llkMUJP_ZhnQ4tkCDrzYok4cAOA7PLt2tX9DY8Mo,13929
1389
1390
  angr/analyses/fcp/__init__.py,sha256=E9dxFckDM9DijfU4RRg9SGL6xDKCz7yBBP-XSkS-S9U,115
1390
1391
  angr/analyses/fcp/fcp.py,sha256=djkJsvSja_De7ptNwllmTHjvVl62BFcH_haBhwhzFtw,16373
1391
- angr/analyses/flirt/flirt.py,sha256=UNXtUBs11WafKeMAW2BwqKJLFhOyObqmRhfCqYdsJpc,10762
1392
+ angr/analyses/flirt/flirt.py,sha256=fZ0BvmJnx6ve1j76lMvKFHM2y3g17wg00fU8hWvSl14,10829
1392
1393
  angr/analyses/flirt/flirt_sig.py,sha256=9cWSXqFBEIpui7pluMTaskfD0mVMomNt1mPXN6pIdjg,11574
1393
1394
  angr/analyses/flirt/__init__.py,sha256=1jKkwUDhwwnxG5BRcYtwogLHLBvtZApXgvcAcHrJrdw,1293
1394
1395
  angr/analyses/flirt/consts.py,sha256=9ldvicgtJZa8Hw8cWOKxGkCYtc09I2q5ZWxctXcg20w,4861
@@ -1,113 +0,0 @@
1
- # pylint:disable=arguments-differ
2
- from __future__ import annotations
3
-
4
- from angr.ailment.expression import Expression, BinaryOp, Const, Register, StackBaseOffset, UnaryOp, VirtualVariable
5
- from angr.ailment.statement import Call, Store
6
-
7
- from angr.sim_type import SimTypePointer, SimTypeWideChar
8
- from .base import PeepholeOptimizationMultiStmtBase
9
- from .inlined_wstrcpy import InlinedWstrcpy
10
-
11
-
12
- class InlinedWstrcpyConsolidation(PeepholeOptimizationMultiStmtBase):
13
- """
14
- Consolidate multiple inlined wstrcpy/wstrncpy calls.
15
- """
16
-
17
- __slots__ = ()
18
-
19
- NAME = "Consolidate multiple inlined wstrncpy calls"
20
- stmt_classes = ((Call, Call), (Call, Store))
21
-
22
- def optimize( # type:ignore
23
- self, stmts: list[Call], stmt_idx: int | None = None, block=None, **kwargs
24
- ): # pylint:disable=unused-argument
25
- last_stmt, stmt = stmts
26
- if InlinedWstrcpy.is_inlined_wstrncpy(last_stmt):
27
- assert last_stmt.args is not None
28
- assert self.kb is not None
29
- s_last: bytes = self.kb.custom_strings[last_stmt.args[1].value]
30
- addr_last = last_stmt.args[0]
31
- new_str = None # will be set if consolidation should happen
32
-
33
- if isinstance(stmt, Call) and InlinedWstrcpy.is_inlined_wstrncpy(stmt):
34
- assert stmt.args is not None
35
- # consolidating two calls
36
- s_curr: bytes = self.kb.custom_strings[stmt.args[1].value]
37
- addr_curr = stmt.args[0]
38
- # determine if the two addresses are consecutive
39
- delta = self._get_delta(addr_last, addr_curr)
40
- if delta is not None and delta == len(s_last):
41
- # consolidate both calls!
42
- new_str = s_last + s_curr
43
- elif isinstance(stmt, Store) and isinstance(stmt.data, Const) and isinstance(stmt.data.value, int):
44
- # consolidating a call and a store, in case the store statement is storing the suffix of a string (but
45
- # the suffix is too short to qualify an inlined strcpy optimization)
46
- addr_curr = stmt.addr
47
- delta = self._get_delta(addr_last, addr_curr)
48
- if delta is not None and delta == len(s_last):
49
- if stmt.size == 2 and stmt.data.value == 0:
50
- # it's probably the terminating null byte
51
- r, s = True, b"\x00\x00"
52
- else:
53
- r, s = InlinedWstrcpy.is_integer_likely_a_wide_string(
54
- stmt.data.value, stmt.size, stmt.endness, min_length=1 # type:ignore
55
- )
56
- if r and s is not None:
57
- new_str = s_last + s
58
-
59
- if new_str is not None:
60
- assert self.project is not None
61
- wstr_type = SimTypePointer(SimTypeWideChar()).with_arch(self.project.arch)
62
- if new_str.endswith(b"\x00\x00"):
63
- call_name = "wstrcpy"
64
- new_str_idx = self.kb.custom_strings.allocate(new_str[:-2])
65
- args = [
66
- last_stmt.args[0],
67
- Const(None, None, new_str_idx, last_stmt.args[0].bits, custom_string=True, type=wstr_type),
68
- ]
69
- prototype = None
70
- else:
71
- call_name = "wstrncpy"
72
- new_str_idx = self.kb.custom_strings.allocate(new_str)
73
- args = [
74
- last_stmt.args[0],
75
- Const(None, None, new_str_idx, last_stmt.args[0].bits, custom_string=True, type=wstr_type),
76
- Const(None, None, len(new_str) // 2, self.project.arch.bits),
77
- ]
78
- prototype = None
79
-
80
- return [Call(stmt.idx, call_name, args=args, prototype=prototype, **stmt.tags)]
81
-
82
- return None
83
-
84
- @staticmethod
85
- def _parse_addr(addr: Expression) -> tuple[Expression, int]:
86
- if isinstance(addr, Register):
87
- return addr, 0
88
- if isinstance(addr, StackBaseOffset):
89
- return StackBaseOffset(None, addr.bits, 0), addr.offset
90
- if (
91
- isinstance(addr, UnaryOp)
92
- and addr.op == "Reference"
93
- and isinstance(addr.operand, VirtualVariable)
94
- and addr.operand.was_stack
95
- ):
96
- return StackBaseOffset(None, addr.bits, 0), addr.operand.stack_offset
97
- if isinstance(addr, BinaryOp):
98
- if addr.op == "Add" and isinstance(addr.operands[1], Const) and isinstance(addr.operands[1].value, int):
99
- base_0, offset_0 = InlinedWstrcpyConsolidation._parse_addr(addr.operands[0])
100
- return base_0, offset_0 + addr.operands[1].value
101
- if addr.op == "Sub" and isinstance(addr.operands[1], Const) and isinstance(addr.operands[1].value, int):
102
- base_0, offset_0 = InlinedWstrcpyConsolidation._parse_addr(addr.operands[0])
103
- return base_0, offset_0 - addr.operands[1].value
104
-
105
- return addr, 0
106
-
107
- @staticmethod
108
- def _get_delta(addr_0: Expression, addr_1: Expression) -> int | None:
109
- base_0, offset_0 = InlinedWstrcpyConsolidation._parse_addr(addr_0)
110
- base_1, offset_1 = InlinedWstrcpyConsolidation._parse_addr(addr_1)
111
- if base_0.likes(base_1):
112
- return offset_1 - offset_0
113
- return None
File without changes