(self)
| 391 | return not (self == other) |
| 392 | |
| 393 | def _to_core_struct(self) -> core.BNPossibleValueSet: |
| 394 | result = core.BNPossibleValueSet() |
| 395 | result.state = RegisterValueType(self.type) |
| 396 | if self.type == RegisterValueType.UndeterminedValue: |
| 397 | return result |
| 398 | elif self.type == RegisterValueType.ConstantValue: |
| 399 | result.value = self.value |
| 400 | elif self.type == RegisterValueType.ConstantPointerValue: |
| 401 | result.value = self.value |
| 402 | elif self.type == RegisterValueType.StackFrameOffset: |
| 403 | result.offset = self.value |
| 404 | elif self.type & RegisterValueType.ConstantDataValue == RegisterValueType.ConstantDataValue: |
| 405 | result.value = self.value |
| 406 | result.size = self.size |
| 407 | elif self.type == RegisterValueType.SignedRangeValue: |
| 408 | result.offset = self.value |
| 409 | result.ranges = (core.BNValueRange * self.count)() |
| 410 | for i in range(0, self.count): |
| 411 | start = self.ranges[i].start |
| 412 | end = self.ranges[i].end |
| 413 | if start & (1 << 63): |
| 414 | start |= ~((1 << 63) - 1) |
| 415 | if end & (1 << 63): |
| 416 | end |= ~((1 << 63) - 1) |
| 417 | value_range = core.BNValueRange() |
| 418 | value_range.start = start |
| 419 | value_range.end = end |
| 420 | value_range.step = self.ranges[i].step |
| 421 | result.ranges[i] = value_range |
| 422 | result.count = self.count |
| 423 | elif self.type == RegisterValueType.UnsignedRangeValue: |
| 424 | result.offset = self.value |
| 425 | result.ranges = (core.BNValueRange * self.count)() |
| 426 | for i in range(0, self.count): |
| 427 | value_range = core.BNValueRange() |
| 428 | value_range.start = self.ranges[i].start |
| 429 | value_range.end = self.ranges[i].end |
| 430 | value_range.step = self.ranges[i].step |
| 431 | result.ranges[i] = value_range |
| 432 | result.count = self.count |
| 433 | elif self.type == RegisterValueType.LookupTableValue: |
| 434 | result.table = [] |
| 435 | result.mapping = {} |
| 436 | for i in range(self.count): |
| 437 | from_list = [] |
| 438 | for j in range(0, len(self.table[i].from_values)): |
| 439 | from_list.append(self.table[i].from_values[j]) |
| 440 | result.mapping[self.table[i].from_values[j]] = result.table[i].to_value |
| 441 | result.table.append(LookupTableEntry(from_list, result.table[i].to_value)) |
| 442 | result.count = self.count |
| 443 | elif (self.type == RegisterValueType.InSetOfValues) or (self.type == RegisterValueType.NotInSetOfValues): |
| 444 | values = (ctypes.c_longlong * self.count)() |
| 445 | i = 0 |
| 446 | for value in self.values: |
| 447 | values[i] = value |
| 448 | i += 1 |
| 449 | int_ptr = ctypes.POINTER(ctypes.c_longlong) |
| 450 | result.valueSet = ctypes.cast(values, int_ptr) |
nothing calls this directly
no test coverage detected