From 2e7ed8f28893a5b77d52e770e8766ec3b9c7b4ff Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 8 Sep 2026 21:32:27 -0400 Subject: [PATCH] lane AC: the tail DOES draw under active contents -- the trade-raid gate, decoded and fired MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TradeManager::Slot13RngCalleeA, entered 0 times in every measurement any lane had taken, is entered 1x/turn once a player fleet is parked on a trade-sector node, and OnAllCombatDone_Tail's RNG word delta goes 0 -> 1. Lane W3's open risk is realised, not retired: the RNG ledger and the standalone's generator model need extending by one draw site. The gate is neither freighters nor a deployed spy. It is a fleet whose LocID resolves to a node of kind 2 (TradeSector), positioned bit-equal to the sector, whose owner's bit is set in the sector's tscr mask -- which the CCC_ComRaid tech sets, taking tscr from 252 to 253 and setting ServerPlayer CnRad. Before the tech the game refuses in as many words: 'Alpha Fleet cannot raid trade sector.' Control: same guest, same build, same shim.cfg.l3probe, one End Turn on lane L3's turn-15 save -> all three inner callees 0, tail delta 0. Guest adoption: ref-turn2 hooks=off reproduces the published determinism oracle exactly. Corrects lane L3 §3.5 (the turn-15 save already had a freighter in service -- the AI's -- so 'freighters' was falsified before this lane started) and lane V2's 'trade slot 13 is draw-free'. The spy half is decoded but NOT reached: no AI system in that game has an asteroid belt, so a deploy was impossible, and spies2 is therefore still untested and stays a rule-6 hypothesis. Two new corpus saves; expect the coverage ratchet to break on CnRad, tscr=253, three rt records and a fleet whose LocID is a TradeSector. --- findings/control-flow/trade-raid-rng-gate.md | 387 ++++++++++++++++++ ghidra/addresses.d/lane-ac.json | 53 +++ verify/results/saves/ac-turn20-raider.sav | Bin 0 -> 94725 bytes verify/results/saves/ac-turn22-raider.sav | Bin 0 -> 96459 bytes verify/results/shim/ac/ac-probe-run-shim.log | 316 ++++++++++++++ verify/results/shim/ac/ac-probe-run-watch.txt | 175 ++++++++ verify/traces/ac-probe-baseline-turn15.jsonl | 27 ++ verify/traces/ac-probe-turn21-turn23.jsonl | 35 ++ 8 files changed, 993 insertions(+) create mode 100644 findings/control-flow/trade-raid-rng-gate.md create mode 100644 ghidra/addresses.d/lane-ac.json create mode 100644 verify/results/saves/ac-turn20-raider.sav create mode 100644 verify/results/saves/ac-turn22-raider.sav create mode 100644 verify/results/shim/ac/ac-probe-run-shim.log create mode 100644 verify/results/shim/ac/ac-probe-run-watch.txt create mode 100644 verify/traces/ac-probe-baseline-turn15.jsonl create mode 100644 verify/traces/ac-probe-turn21-turn23.jsonl diff --git a/findings/control-flow/trade-raid-rng-gate.md b/findings/control-flow/trade-raid-rng-gate.md new file mode 100644 index 0000000..b1910bd --- /dev/null +++ b/findings/control-flow/trade-raid-rng-gate.md @@ -0,0 +1,387 @@ +# The tail *does* draw under active contents — the trade-raid gate, decoded and fired + +- **Type:** control-flow (static decode + live measurement) +- **Status:** **verified** for the trade half; the spy half is decoded but **not reached** and is + labelled a hypothesis (rule 6) +- **Confidence:** high on the trade half — the callees were entered live, the RNG word delta moved, + and the state that moved it was reached by playing a stock game with no file edited +- **Owner / date:** lane AC · 2026-09-08 · guest **VM141** (`sots-re-win10-b`, 192.168.10.143) +- **Predicts / corrects:** lane W3's open risk (**not** retired — realised), lane L3's + `trade-and-spy-workload.md` §3.5, lane V2's "closure 185 functions, draw-free" reading of the + trade slots + +--- + +## 0. Headline + +> **Yes. The strategic-turn tail draws RNG once its containers are *active*.** +> `StrategyServer::OnAllCombatDone_Tail` consumes **1 word per turn** in the state this lane built, +> against **0** on the same guest, same build and same config on the state lane L3 left. +> `TradeManager::Slot13RngCalleeA` — entered **0** times in every measurement any lane had ever +> taken — was entered **1×/turn on both instrumented turns**, and `Slot13RngCalleeB` on one of them. +> +> **Lane W3's open risk is realised, not retired. The RNG ledger and the standalone's generator +> model need extending by one draw site.** + +And the condition that does it is **not** the one lane L3 named. Freighters in service do not do it +and a deployed spy would not do it either. The gate is: + +> **a player-owned fleet parked exactly on a trade-sector node, whose owner's bit is set in that +> sector's `tscr` mask — which is set by researching `CCC_ComRaid` ("Commerce Raiding").** + +That is the trade-raid roll. It had never fired in this campaign because no lane had ever +researched Commerce Raiding, and without it the game refuses the order in as many words: +**`Alpha Fleet cannot raid trade sector.`** + +--- + +## 1. What was measured + +Instrument: `shim.cfg.l3probe` verbatim (lane L3's, = lane H's `hp11` + `watch.mode=cont`), shim +build `ac-7e726b9-20260909T0017Z`, cross-built on the dev box. All eleven probes reported +`create=MH_OK enable=MH_OK`; no `COVERAGE:` line was emitted; the watchpoint canary printed +`SELFTEST canary writes=1 traps=1 dr7=0xdddd0055 PASS` on **every** End Turn. These are measured +numbers, not MinHook failures. + +### 1.1 Entry counts, active state (turns 21→22 and 22→23 of the AC lineage) + +The **baseline column is this lane's own control**, not a quotation: the same shim build, the same +`shim.cfg.l3probe`, the same guest, one End Turn on lane L3's `human-turn15-spyprogram.sav`, run +immediately after the active measurement. It reproduces lane H's and lane L3's published counts +line for line. + +| probe | active, turn 1 | active, turn 2 | **AC control** (L3's turn 15) | +|---|---|---|---| +| `ServerSpyManager::vslot13` | 1 | 1 | 1 | +| `ServerSpyManager::vslot14` | 1 | 1 | 1 | +| `ServerTradeManagerImpl::vslot13` | 1 | 1 | 1 | +| `ServerTradeManagerImpl::vslot15` | 1 | 1 | 1 | +| `SpyManager::Slot13RngCallee` | 0 | 0 | 0 | +| **`TradeManager::Slot13RngCalleeA`** | **1** | **1** | **0** | +| **`TradeManager::Slot13RngCalleeB`** | **1** | **0** | **0** | +| `ServerTradeManager::CreateRaidEncounter` | 0 | **1** | 0 | +| `ServerTradeManager::GenerateTradeRaidEncounters` | 1 | 1 | 1 | +| `ServerSpyManager::vslot15` [control] | 1 | 1 | 1 | +| `ServerTradeManagerImpl::vslot14` [control] | 1 | 1 | 1 | +| `EncounterDetect::Run` [control] | NOT INSTALLED | NOT INSTALLED | — | + +`Slot13RngCalleeB` firing on turn 1 and not on turn 2 is exactly what the decoded control flow +predicts: `B` is called only when `A` returns true, i.e. only when the raid roll **succeeds**. Two +turns, one success — the roll is doing what a roll does. + +### 1.2 The RNG ledger + +`side.rng` word deltas. **Control first** (L3's turn 15, no raider, same instrument): + +``` +ProcessTurn 353 -> 355 delta 2 + OnAllCombatDone_Tail 355 -> 355 delta 0 +``` + +**Active** (raider parked on sector 6's node), both turns: + +``` +ProcessTurn 448 -> 468 delta 20 + OnAllCombatDone_Tail 468 -> 469 delta 1 +ProcessTurn 469 -> 487 delta 18 + OnAllCombatDone_Tail 487 -> 488 delta 1 +``` + +**One word per turn inside the tail**, on a turn where the tail had never drawn a word before. The +draw is `FUN_0047d830(StrategyServer+0x16c + 4)` inside `Slot13RngCalleeA` — one uniform compared +against the raid odds. `Slot13RngCalleeB` and `CreateRaidEncounter` each cost 0 words on the turns +they ran, so the whole of the new consumption is `A`'s single roll. + +--- + +## 2. The gates, decoded from the instruction stream + +Read off `sots.exe` (image base `0x00400000`), disassembling to the next function start rather than +to Ghidra's reported size (rule 17). + +### 2.1 `Slot13RngCalleeA` / `B` — called from `ServerTradeManagerImpl::vslot13` + +Both calls are **direct** `E8 rel32`, not vtable slots: + +| callee | called from | at | +|---|---|---| +| `TradeManager::Slot13RngCalleeA` `0x00820ca0` | `ServerTradeManagerImpl::vslot13` `0x0088ef80` | `0x0088f036` | +| `TradeManager::Slot13RngCalleeB` `0x0088b440` | same function | `0x0088f042` | +| `SpyManager::Slot13RngCallee` `0x008408e0` | `ServerSpyManager::vslot13` `0x008877b0` | `0x00887af2` | + +`ServerTradeManagerImpl::vslot15` (`0x0082cca0`) and `ServerSpyManager::vslot14` (`0x0088db80`) do +**not** call any of the three. The only data references to the four outer callees are their vtable +slots (`0xa30770`, `0xa30774`, `0xa31ba8`, `0xa31bb0`). + +**`vslot13` does not iterate trade routes or trade sectors.** It iterates +`StrategyServer+0x64..+0x68` — the **fleet** vector — and per fleet requires, in order: + +``` +0088ef95 test ecx,0xfffffffc ; G0 no fleets -> return +0088efb1 je 0x88f047 ; G1 null slot +0088efb9 call 0x6fe320 ; StarFleet::GetLocationAsTradeSector() +0088efc0 je 0x88f047 ; G2 location is not a trade-sector node +0088efc7 call 0x80ed50 ; the raid predicate +0088efd1 je 0x88f047 ; G3 +0088efeb..0088f016 ; G4 fleet.Pos == sector.Pos, all three floats +0088f036 call 0x820ca0 ; <-- A +0088f03d je 0x88f047 ; G6 raid roll failed +0088f042 call 0x88b440 ; <-- B +``` + +**G2** is the one nobody had satisfied. `0x006fe320` reads `StarFleet+0xa0` (`LocID`, resolved to a +pointer) and returns it only if `node+0x14 == 2`. That kind word is written by +`StarMapNode::StarMapNode(int)` `0x00730900`, and enumerating **every** call to it gives exactly +three: `StarSystem` ctor `0x00752ea0` passes **0**, `StarFleet` ctor `0x00706140` passes **1**, +`TradeSector` ctor `0x00858020` passes **2**. So `vslot13` only ever acts on a fleet whose location +is a **trade-sector node**, never a star. Every fleet in every corpus save before this lane was +parked at a star, so G2 rejected all of them — which is why the "23-fleet Zuul save" experiment in +`tail-probes.md` §3.1 could not have worked no matter how many fleets it had. + +**G3** is `FUN_0080ed50(fleet)`: + +```c +if (!fleet->GetLocationAsTradeSector()) return false; +if (FUN_00813ab0(fleet, 0x80000, 0)) return false; // runtime flag pair +0xb8/+0xbc +ServerPlayer *p = fleet->[0x58]; if (!p) return false; +if (!(sector->[0x90] & (1u << p->[0x28]))) return false; // ** tscr ** +if (FUN_0080e9c0(sector, p)) // ** tsct ** bit, or p->[0x5c]==4 + if (!FUN_006fe1d0(fleet, 0x800)) return false; // FtFlg & 0x800 +return true; +``` + +`FUN_0080eac0` masks six consecutive words with a low-N-players mask, which is what identifies them +as per-player bitmasks and pins the tags: + +``` +0080ead7 and [ecx+0x88],edx tssec 0080eae3 and [ecx+0x90],edx tscr +0080eadd and [ecx+0x8c],edx tsct 0080eae9 and [ecx+0x94],edx ptssec … +``` + +**G4** requires the fleet's `Pos` (`+0x18`) to be **bit-equal** to the sector's — arrived, not in +transit. The `test ah,0x44 / jp` after `fucompp` is the MSVC float-not-equal idiom. + +### 2.2 `SpyManager::Slot13RngCallee` — decoded, and much further away than "deployed" + +``` +0088781d je 0x887e92 ; SpyCraft.deat (+0x10) == 0 -> next spy +00887856 je 0x887c5b ; SpyCraft.sdet (+0x40) == -1 -> DETECTION-ROLL branch, not P +00887867 jl 0x887e92 ; (turn - sdet) < 3 -> next spy +0088787a je 0x887c4f ; system unowned -> sdet = -1 +00887891 je 0x887c4f ; system owner == spy's owner -> sdet = -1 +00887af2 call 0x8408e0 ; <-- P +``` + +`P` itself is the **false-flag draw**: `0.25` (`0x009e5ac0`) for an ordinary owner, or `0.75` +(`0x009e5ac4`) plus a uniform pick over the other players when `owner->[0x5c] == 6`; its result is +the name that goes into `EVENT_SPY_DESTROYED`, posted to the *system* owner. + +So **deploying a spy is necessary but nowhere near sufficient for `P`**: the spy must be deployed, +then **detected** on an earlier turn, then survive **three more turns** at a system still owned by +someone else. Lane L3's "the next condition is `spyon = 0`" understates the distance by three turns +and a detection roll. + +**But the `sdet == -1` arm at `0x00887c5b` is itself an RNG draw** — +`FUN_008e6dd0(StrategyServer+0x16c, spy->sdo)`, gated on `FUN_00743f80(system) & 1` — and it sits +**inline in `vslot13`, not inside `P`**. That is a second, independent way for the tail to draw that +**no entry probe on `P` can see**. It is unreachable today only because `deat == 0` rejects the +docked spy two gates earlier. Rule 20, pointing the other way: instrumenting the entry was necessary +and was not sufficient — a probe on `P` reading 0 does **not** mean the spy half is draw-free. + +**This is a hypothesis, not a result** (rule 6): no save in the corpus has a deployed spy, and this +lane did not manage to build one (§5). + +--- + +## 3. `tscr` is the raid mask and `CCC_ComRaid` sets it — measured, before and after + +This is the part that turns the decode into a recipe, and it was **not** predicted: this lane's +committed prediction P6 said a player fleet on a sector node would *not* fire the callees, on the +reasoning that `tscr = 252 = 0b11111100` is exactly the six NPC player slots (2–7) and excludes both +real players (0 = `re`, 1 = `The Eternal Empire`). That reading of the *value* was right and the +inference from it was **wrong**, because the mask is not fixed. + +| save | `tscr`, all six sectors | player `re` `CnRad` | +|---|---|---| +| `human-turn15-spyprogram.sav` (L3) | **252** = `0b11111100` | absent/false | +| AC turn 19, after `CCC_ComRaid` completes | **253** = `0b11111101` | **true** | + +Researching Commerce Raiding sets **bit 0 — the researching player's index — in every trade +sector's `tscr`**, and sets the `ServerPlayer` flag serialised as **`CnRad`**. `CnRad` is to +`CCC_ComRaid` exactly what `CnTrd` (`ServerPlayer+0xff`) is to `CCC_FTLEcon`. The AI, which never +researched it, stays out of the mask: `CnRad` false, bit 1 clear, in the same save. + +So `tscr` reads: *the set of players permitted to raid this sector* — the six NPC slots by default +(which is why `TRADE_RAID_ODDS_NPC` and `TRADE_RAID_ODDS_REFUGEE` exist), plus any empire that has +bought its way in with the tech. + +Two further tags fall out of the same pair of saves: `tsct` is the set of players **trading through** +the sector (bit 1 on sectors 1, 2 and 5 — the AI's; 0 on sector 6, which is mine), and it is `tsct` +that switches on the extra `FtFlg & 0x800` requirement. Sector 6 has `tsct = 0`, so my raider needed +no flag. + +--- + +## 4. The recipe, end to end + +Stock game, stock data, no file edited, starting from lane L3's `human-turn15-spyprogram.sav`. +About 45 minutes of clicking. + +1. **Research `CCC_ComRaid`.** `MasterTechList.tech`: `CCC_FTLEcon -> CCC_ComRaid RP:12000 + Human:100`. At this game's settings it is **one turn**. In the tech tree it is the node + **directly above FTL Economics in the C3 branch**, and at the zoom the screen opens at it is + drawn *off the top of the viewport*: zoom out two notches with the wheel, then zoom back in one + notch **with the cursor low on the screen** (`wheel 365 560 120 1`), which shifts the camera down + far enough to expose it. Vertical right-drag does **not** pan the tech tree at all — only + horizontal, and only in ~600 px steps, and even then the response is not monotonic in distance. +2. **Toggle Trade View.** Bottom bar circle **(300,714)** opens a six-icon vertical strip; the fifth + icon **(301,626)** is `Toggle Trade View`. Trade sectors then draw as large translucent wireframe + cubes with a padlock/`$` marker at the sector node itself. **Nothing else in the UI shows a trade + sector**, and there is no bar button for trade. +3. **Order a fleet to the sector node.** Select the system, select the fleet row, click **`Move` + (155,464)**, hover the sector marker — the readout reads `Sector 6 / Range 5.0 / ETA 2 Turns` — + then **plain `click`** it. This must be **one `cmd.txt`**; and note the jiggle-click variant + (`jclick`) **silently failed to register the destination** where a plain `click` worked. Confirm + from the fleet panel: it reads `Dest: Sector 6, 2 Turns`. Confirm again from the save — do not + trust the panel: on the first attempt the panel showed nothing and the save showed `LocID 48` + (unmoved). +4. **Two End Turns.** The fleet arrives: `LocID 832` = `TradeID 832` = sector 6, `Pos [0, 0, 8.0]` + bit-identical to the sector's `Pos`. +5. **End Turn with the instrument on.** `Slot13RngCalleeA` fires. + +**The refusal is the oracle.** Before the tech, clicking the sector marker with a fleet selected pops +`Alpha Fleet cannot raid trade sector.` (`MOVEWARNING_NO_RAID`; the server-side twin is +`OnCommand: Fleet not able to raid.`). After the tech, the same click is accepted silently. That +single dialog is the cheapest possible test of the whole gate chain. + +--- + +## 5. What this lane could **not** reach: a deployed spy + +Reported as an absence, not inferred around. + +`ARes2` on `ServerSystem` is the **asteroid-belt** field — its non-zero values in this save (1703, +1948, 2061, 2172, 2531) sit inside `SYSTEM_MIN/MAX_ASTEROID_RESOURCES` 1500–3000, and it is 0 +elsewhere. Deploying a spy needs a system that is **not mine**, has **no enemy fleet present**, has +**no spy already**, and **has a belt**. In `human-turn15-spyprogram.sav` only five of 28 systems have +one: + +| idx | id | name | `ARes2` | owner | +|---|---|---|---|---| +| 1 | 64 | Ka'Palum | 2061 | unowned | +| 4 | 112 | Regulus | 1703 | unowned | +| 10 | 208 | Kam'Tara | 1948 | unowned, AI fleet parked on it | +| 12 | 240 | Downbelow | 2172 | **mine** | +| 27 | 480 | Hitomi | 2531 | player index **7**, `Independent Colony` | + +**No system owned by the AI has an asteroid belt.** The textbook target — an enemy colony with a +belt — does not exist in this game. The only non-own, player-owned belt system is **Hitomi**, held by +the NPC `Independent Colony`; it is 10.1 ly from the tender's berth against a hull range of 9.0, so +it needs a staging hop, and this lane ran out of session before establishing whether it is even +discovered. The `Special` menu at the tender's own system offers only +`Repair / Scuttle / Auto-repair / Flag As Guard` — no `Deploy Spy`, which is consistent with the +gate but does not locate it. + +So: **the spy half of "active contents" remains unreached**, and §2.2's prediction that a deployed +spy makes the tail draw through the inline detection roll is a hypothesis for the next lane. The +save to start from is `verify/results/saves/ac-turn22-raider.sav` or L3's turn-15. + +**`spies2` is still 0 in all 28 systems** in every save this lane produced, including the turn-22 +one. That is unchanged from L3 and is expected: no spy was ever deployed, so the experiment that +distinguishes "`spies2` is not the spy list" from "`spies2` fills only for a deployed spy" was **not +run**. The rule-6 flag on `spies2` / `SysMem` / `mts` stays up. What this lane can add is that the +question is now cheap for whoever reaches a deploy, because `deat` (`SpyCraft+0x10`) is the field +`vslot13` uses as the system handle, and `spies2` living on `ServerSystem` makes the deployed-spy +reading the natural one. + +--- + +## 6. Corrections to earlier findings (rule 11) + +**Lane L3, `trade-and-spy-workload.md` §3.5 — "every trade sector has `tsnumflt = 0`, no freighters +in service".** Not true of the save L3 shipped. `human-turn15-spyprogram.sav`, sector `TradeID 816` +(`tsgridID 5`): `tsnumflt 1`, `tsflt 2736` — and fleet 2736 is `Freighters`, `PID 32`, the **AI's**, +with all six member systems AI-owned. The single serialised route record is the AI's too. So across +L3's seven instrumented turns the game **already had a freighter in service on an active route**, and +the trade callees were entered 0 times anyway. **"Freighters in service" was already falsified as the +gate by L3's own data**, before this lane started, and §2.1 now says why: freighters are not in the +predicate at all. + +By turn 20 of this lane's lineage the AI had built two more (sector 5 `tsnumflt 2`, sector 2 +`tsnumflt 1`) with no effect on any probe. + +**Lane V2 — `ServerTradeManagerImpl` vftable slot 13 recorded as "closure 185 functions, +draw-free".** It is not draw-free. It reaches a `NextFloat` at `0x00820ca0` on any turn a permitted +raider is parked on a sector node. The closure was right; "draw-free" was a statement about the +states that occurred (rule 23). + +**Lane W3's standing risk — "if either container ever fills, the ledger needs extending".** The risk +was correctly identified and the trigger was wrong: filling the containers changes nothing, and the +ledger needs extending anyway, for a reason that has nothing to do with either container's contents. + +**`tsflt` is not a freighter list.** At turn 20, sector 6 reads `tsnumflt 1`, `tsflt 3744` — and 3744 +is **my raiding fleet's** id, not a freighter. Whatever the tag is named, it counts fleets present in +the sector. + +--- + +## 7. Controls and coverage (rules 15, 19, 26) + +**Guest adoption / instrument-removed control.** `hooks=off watch=off` on `ref-turn2.sav`, one End +Turn, on VM141 with this lane's own shim build: + +``` +(Autosave EndTurn).sav BB4FD9AC89F41E3BC0DB2AF08B18CE83417521AC4BCEE695FC9FA6CE16E30948 +(Autosave).sav 978041ACD168B56ED8EB3F5E42E78D5E70EAE6E6517D75E659A5EB7CA3D60921 +``` + +Both **identical to the published three-run oracle** in +`verify/results/saves/determinism-hashes.txt`. That is agreement with a control already reproduced +in three fresh processes by other lanes on another guest, which is the rule-26 bar; this lane ran it +once here rather than twice, and says so. + +**Instrument armed.** All eleven probes `create=MH_OK enable=MH_OK`, no `COVERAGE:` line; watchpoint +canary PASS on every End Turn; container watch read `trade routes count=46 -> 47`, +`spy programs count=1` across the two measured turns. + +**Thin coverage, stated plainly.** + +- **Two instrumented turns, one raiding fleet, one sector, one ship in the fleet.** The word cost is + 1 on both, but 1 fleet × 1 sector is the smallest possible workload and the per-fleet loop means + the cost should scale with *permitted raiders parked on sector nodes*, which this lane did not + vary. Do not fit a constant to two observations (rule 20). +- `Slot13RngCalleeA`'s own body has a **short-circuit that skips the draw entirely**: any ship whose + `design+0x12c > 1` returns true without rolling. My fleet is one `CR Repair and Salvage`, so the + short-circuit was not exercised, and a raid by a different hull could cost **0** words while still + firing `B`. Untested. +- The odds arithmetic (`0.20` vs `0.05` base, `+0.01·nShips`, doubled when a freighter shares the + sector, scaled by a per-ship float) was read statically and **not** validated against measured + success rates: two turns, one success. +- `probes=11` is **not** determinism-neutral (lane H bisected the detour on probe index 8). These + entry counts and word deltas are comparable line-for-line with lane H's and L3's tables, which is + what they are for; they are not a byte-identity claim. `probes=8` still installs indices 0–7, i.e. + all four outer and all three inner callees, and is the configuration to use if a future lane needs + both at once. +- `EncounterDetect::Run [control]` is index 11 and `probes=11` installs 0–10, so it reports + **NOT INSTALLED**, never 0. + +--- + +## 8. Artifacts + +| what | where | +|---|---| +| turn-22 save, raider parked on a trade sector, both callees having fired | `verify/results/saves/ac-turn22-raider.sav` | +| turn-20 save, the moment the fleet arrives on the node (pre-measurement) | `verify/results/saves/ac-turn20-raider.sav` | +| probe + ledger trace, two instrumented End Turns | `verify/traces/ac-probe-turn21-turn23.jsonl` | +| shim log and watch hits | `verify/results/shim/ac/ac-probe-run-{shim.log,watch.txt}` | +| predictions, committed before the workload and again after the decode | `sots-engine` `docs/AC-predictions.md` | +| instrument | `sots-engine` `src/shim/shim.cfg.l3probe`, unchanged | + +**New content these saves carry** (rule 27 — expect the coverage ratchet to break, and type the +content rather than moving the bar): a `ServerPlayer` with **`CnRad` true**; trade sectors with +**`tscr` = 253** rather than the corpus-universal 252; a `trdmgr` with **three** `rt` route records +rather than one; sectors with `tsnumflt` up to 2 and a `tsflt` entry that is a **warship** fleet id +rather than a freighter; and a `StarFleet` whose **`LocID` is a `TradeSector` id (832)** rather than a +star system id — the first fleet in the corpus located anywhere but a star, which is precisely the +state that makes the tail draw. diff --git a/ghidra/addresses.d/lane-ac.json b/ghidra/addresses.d/lane-ac.json new file mode 100644 index 0000000..a5bd03b --- /dev/null +++ b/ghidra/addresses.d/lane-ac.json @@ -0,0 +1,53 @@ +{ + "_note": "Lane AC (2026-09-08). The gate chain that stands between StrategyServer::OnAllCombatDone_Tail and its trade-raid RNG draw, decoded from the instruction stream of dumps/sots.exe (image base 0x00400000, disassembled to the next function start per rule 17) and then FIRED LIVE on VM141: with a player fleet parked on a trade-sector node, TradeManager::Slot13RngCalleeA (0x00820ca0, already in lane V2's fragment) was entered 1x per turn on two instrumented End Turns and OnAllCombatDone_Tail's RNG word delta went 0 -> 1. ReVa/CT111 was unreachable this session (ReVa CONNECTION_CLOSED), so nothing here was read in Ghidra; every entry was disassembled with capstone against the PE section table and the quoted instructions were re-checked byte for byte at the addresses given. Status is `mapped` for that reason, except where a live entry probe or a save field corroborates the decode. Evidence: findings/control-flow/trade-raid-rng-gate.md, verify/traces/ac-probe-turn21-turn23.jsonl (active) and ac-probe-baseline-turn15.jsonl (control).", + "entries": [ + { + "name": "StarFleet_GetLocationAsTradeSector", + "addr": "0x006fe320", + "convention": "__thiscall", + "prototype": "Game::TradeSector* (Game::StarFleet* this) /* THE GATE NOBODY HAD SATISFIED. Reads StarFleet+0xa0 (`LocID`, resolved to a StarMapNode*) and returns it ONLY if node+0x14 == 2, else NULL. Whole body, validated at this address: `mov eax,[ecx+0xa0]; test eax,eax; je +8; cmp dword ptr [eax+0x14],2; je +2; xor eax,eax; ret`. Called twice from ServerTradeManagerImpl::vslot13 (0x0088ef80+0x39 and +0x98) and once from the raid predicate 0x0080ed50. Because every fleet in every corpus save before this lane was parked at a STAR (kind 0), this returned NULL for all of them, which is why the trade-raid callees had never been entered by any lane. CORROBORATED BY SAVE: after this lane moved a fleet onto a sector node, its serialized `LocID` reads 832, which is the `TradeID` of trade sector 6 in the same file, and its `Pos` is bit-equal to that sector's. */", + "status": "mapped", + "source": "findings/control-flow/trade-raid-rng-gate.md (lane AC 2026-09-08)" + }, + { + "name": "StarMapNode_ctor_kind", + "addr": "0x00730900", + "convention": "__thiscall", + "prototype": "void (Mars::StarMapNode* this, int kind) /* StarMapNode::StarMapNode(int). Stores the ctor argument to this+0x14, the word GetLocationAsTradeSector tests. Enumerating EVERY call site is what pins the kind constants, and there are exactly three: Game::StarSystem's ctor 0x00752ea0 passes 0, Game::StarFleet's 0x00706140 passes 1, and Game::TradeSector's 0x00858020 passes 2. So node+0x14 == 2 means TradeSector and nothing else. Prologue validated at this address (push ebp; mov ebp,esp; push -1; push 0x982dc8; fs:[0] SEH frame; security cookie from 0xaf8b78). NOT READ IN GHIDRA: the rest of the body. */", + "status": "mapped", + "source": "findings/control-flow/trade-raid-rng-gate.md (lane AC 2026-09-08)" + }, + { + "name": "TradeSector_FleetMayRaid", + "addr": "0x0080ed50", + "convention": "__cdecl", + "prototype": "bool (Game::StarFleet* fleet) /* The raid predicate -- gate G3 of ServerTradeManagerImpl::vslot13, called at 0x0088efc7. Returns false unless: the fleet's location is a trade-sector node; FUN_00813ab0(fleet, 0x80000, 0) is false (a runtime-only 64-bit flag pair at StarFleet+0xb8/+0xbc, NOT serialized, so it has no save tag); the fleet has an owner (StarFleet+0x58 -> Game::ServerPlayer*); and the owner's player index bit is set in the sector's `tscr` mask at TradeSector+0x90. If the owner's bit is ALSO set in `tsct` (TradeSector+0x8c), or the owner's ServerPlayer+0x5c == 4, the fleet must additionally carry StarFleet.FtFlg (+0x10c) & 0x800. Mask test validated at 0x0080ed8f: `mov ecx,[edx+0x28]; push edi; mov edi,1; shl edi,cl; test [eax+0x90],edi`. THE UI SURFACES THIS PREDICATE VERBATIM: ordering a fleet onto a sector node without it pops ` cannot raid trade sector.` (MOVEWARNING_NO_RAID); the server-side twin string is `OnCommand: Fleet not able to raid.` */", + "status": "mapped", + "source": "findings/control-flow/trade-raid-rng-gate.md (lane AC 2026-09-08)" + }, + { + "name": "TradeSector_PlayerTradesHere", + "addr": "0x0080e9c0", + "convention": "__cdecl", + "prototype": "bool (Game::TradeSector* sector, Game::ServerPlayer* player) /* Tests the player's index bit in the sector's `tsct` mask (TradeSector+0x8c) at 0x0080e9de..0x0080e9e8, short-circuiting true when player->+0x5c == 4. Used by the raid predicate to decide whether the raider additionally needs FtFlg & 0x800, and by the juicy-target scan 0x0081a150. CORROBORATED BY SAVE: `tsct` is 2 on the three sectors the AI (player index 1) trades through and 0 on sector 6, which is the human player's -- and the human raider on sector 6 needed no flag. */", + "status": "mapped", + "source": "findings/control-flow/trade-raid-rng-gate.md (lane AC 2026-09-08)" + }, + { + "name": "TradeSector_TrimPlayerMasks", + "addr": "0x0080eac0", + "convention": "__cdecl", + "prototype": "void (Game::TradeSector* sector, uint32 keepMask) /* ANDs six consecutive words with a low-N-players mask: +0x88 `tssec`, +0x8c `tsct`, +0x90 `tscr`, +0x94 `ptssec`, +0x98 `ptsct`, +0x9c `ptscr` (stores at 0x0080ead7, 0x0080eadd, 0x0080eae3, 0x0080eae9, 0x0080eaef, 0x0080eaf5). This is what identifies all six of those save tags as PER-PLAYER BITMASKS rather than counts or colours, which had never been established -- `tscr` reads 252 in every save in the corpus and 252 is 0b11111100, i.e. the six NPC player slots. CORROBORATED BY SAVE: researching CCC_ComRaid takes `tscr` from 252 to 253 on all six sectors of the same game, i.e. it sets bit 0, the researching player's index, and sets that player's serialized `CnRad`. NOT LOCATED: the writer that sets a bit -- no `or`/`bts` against +0x8c/+0x90 was found in .text, so the masks are rebuilt wholesale somewhere this lane did not find. */", + "status": "mapped", + "source": "findings/control-flow/trade-raid-rng-gate.md (lane AC 2026-09-08)" + }, + { + "name": "SpyManager_DetectionRoll_Branch", + "addr": "0x00887c5b", + "convention": "__none", + "prototype": "/* NOT A FUNCTION -- the `sdet == -1` arm inside Game::ServerSpyManager::vslot13 (0x008877b0), branched to from 0x00887856. It calls FUN_0081f570(spy, system, owner), tests FUN_00743f80(system) & 1, and on that bit ROLLS FUN_008e6dd0(StrategyServer+0x16c, the RNG, with spy->sdo at SpyCraft+0x3c), then stamps sdet = turn and posts EVENT_SPY_DETECTED. Recorded here because it is a SECOND, INDEPENDENT WAY FOR THE TAIL TO DRAW that no entry probe on SpyManager::Slot13RngCallee can see: the draw is inline in the outer callee. It is unreachable in every save in the corpus because the gate before it, `SpyCraft.deat (+0x10) != 0` at 0x0088781d, rejects a built-but-undeployed spy. HYPOTHESIS, NOT MEASURED (rule 6): no save has a deployed spy and this lane did not build one. */", + "status": "hypothesis", + "source": "findings/control-flow/trade-raid-rng-gate.md (lane AC 2026-09-08)" + } + ] +} diff --git a/verify/results/saves/ac-turn20-raider.sav b/verify/results/saves/ac-turn20-raider.sav new file mode 100644 index 0000000000000000000000000000000000000000..46a526fcbdc2289d1d988d0fab937ac850eda238 GIT binary patch literal 94725 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 z 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 literal 0 HcmV?d00001 diff --git a/verify/results/shim/ac/ac-probe-run-shim.log b/verify/results/shim/ac/ac-probe-run-shim.log new file mode 100644 index 0000000..7aa983e --- /dev/null +++ b/verify/results/shim/ac/ac-probe-run-shim.log @@ -0,0 +1,316 @@ +21:05:37.236 [tid 6764] ==== sots-engine shim (binkw32 proxy) build ac-7e726b9-20260909T0017Z ==== +21:05:37.236 [tid 6764] exe: C:\SOTS\Sword of the Stars.exe +21:05:37.236 [tid 6764] exe base=0x00210000 (link-time image base 0x00400000, ASLR delta -2031616) pid=7220 shim=73430000 +21:05:37.236 [tid 6764] addresses: Source: sots-re ghidra/addresses.json @ 7d51767, generated 2026-09-08 by tools/gen_addresses.py +21:05:37.252 [tid 6764] config: hook.Shim::SelfTest::Fill=off +21:05:37.252 [tid 6764] config: hook.Mars::GlobalConsts::LoadFile=off +21:05:37.252 [tid 6764] config: hook.Game::WeaponDictionary::Init=off +21:05:37.252 [tid 6764] config: hook.Game::SectionDictionary::SectionDictionary=off +21:05:37.252 [tid 6764] config: hook.Game::ServerPlayer::ComputeBudget=off +21:05:37.252 [tid 6764] config: hook.Game::TechTree::ProcessResearch=off +21:05:37.252 [tid 6764] config: hook.Game::ServerPlayer::OnTechResearched=off +21:05:37.252 [tid 6764] config: hook.Game::ServerSystem::ProcessTurn=off +21:05:37.252 [tid 6764] config: hook.Game::ServerPlayer::ProcessTurn=off +21:05:37.252 [tid 6764] config: hook.Game::ServerSystem::GroupOutput=off +21:05:37.252 [tid 6764] config: hook.Game::ServerSystem::ComputeTotalOutput=off +21:05:37.252 [tid 6764] config: hook.Game::StrategyServer::MoveFleet=off +21:05:37.252 [tid 6764] config: hook.Game::StrategyServer::ProcessFleetMovement=off +21:05:37.252 [tid 6764] config: hook.Game::StrategyHost::Autosave=trace +21:05:37.252 [tid 6764] config: hook.Game::StrategyServer::ProcessTurn=trace +21:05:37.252 [tid 6764] config: hook.Game::StrategyServer::OnAllCombatDone_Tail=trace +21:05:37.252 [tid 6764] config: hook.Game::StrategyServer::ApplyEncounterResult=trace +21:05:37.252 [tid 6764] config: hook.Game::StrategyServer::NodeLineDecay=trace +21:05:37.252 [tid 6764] config: hook.Game::StrategyServer::ProcessNodeSpaceTravel=trace +21:05:37.252 [tid 6764] config: hook.Game::EncounterDetect::AssignContacts=trace +21:05:37.252 [tid 6764] config: hook.Game::EncounterDetect::ProcessTeamRecord=trace +21:05:37.252 [tid 6764] config: fpu.sample_turn=off +21:05:37.252 [tid 6764] config: fpu.sample_ticks=off +21:05:37.252 [tid 6764] config: trace.inline_max=64 +21:05:37.252 [tid 6764] config: trace.path=C:\SOTS\shim.trace.jsonl +21:05:37.252 [tid 6764] config: trace.flush=always +21:05:37.252 [tid 6764] config: probes=11 -> 11 lane-H entry probes +21:05:37.252 [tid 6764] config: watch=on +21:05:37.252 [tid 6764] config: watch.mode=cont +21:05:37.252 [tid 6764] config: watch.out=C:\SOTS\shim.watch.txt +21:05:37.377 [tid 6764] trace: C:\SOTS\shim.trace.jsonl (default mode trace, inline_max 64, flush always) +21:05:37.377 [tid 6764] hook: Mars_Application_Initialize rva=0x004a0e50 -> va=006b0e50 +21:05:37.377 [tid 6764] hook: MH_Initialize -> MH_OK +21:05:37.377 [tid 6764] hook: MH_CreateHook -> MH_OK (trampoline=019a0fe0) +21:05:37.392 [tid 6764] hook: MH_EnableHook -> MH_OK +21:05:37.392 [tid 6764] cfg: GlobalConsts hook ready (scale constant 0.017453292519943295) +21:05:37.392 [tid 6764] hook: Mars::GlobalConsts::LoadFile rva=0x004b73c0 mode=off (not installed) +21:05:37.392 [tid 6764] dict: dictionaries hook ready (crt new=7335232b delete=73350174) +21:05:37.392 [tid 6764] hook: Game::WeaponDictionary::Init rva=0x0019a4c0 mode=off (not installed) +21:05:37.392 [tid 6764] hook: Game::SectionDictionary::SectionDictionary rva=0x00176f40 mode=off (not installed) +21:05:37.392 [tid 6764] research: ProcessResearch hook ready (Cost=0038da00, node=0x34, rng=0x9cc, fpu_cw=0x027f) +21:05:37.392 [tid 6764] hook: Game::TechTree::ProcessResearch rva=0x001876c0 mode=off (not installed) +21:05:37.392 [tid 6764] techfx: OnTechResearched hook ready (regions=15, gate=0/0, fpu_cw=0x027f) +21:05:37.392 [tid 6764] hook: Game::ServerPlayer::OnTechResearched rva=0x00491790 mode=off (not installed) +21:05:37.392 [tid 6764] hook: Game::ServerPlayer::ComputeBudget rva=0x00463030 mode=off (not installed) +21:05:37.392 [tid 6764] hook: Game::ServerSystem::ProcessTurn rva=0x003598e0 mode=off (not installed) +21:05:37.392 [tid 6764] hook: Game::ServerSystem::GroupOutput rva=0x0034b7a0 mode=off (not installed) +21:05:37.392 [tid 6764] hook: Game::ServerSystem::ComputeTotalOutput rva=0x00350480 mode=off (not installed) +21:05:37.392 [tid 6764] player_turn: ServerPlayer::ProcessTurn hook armed (ratio helper at 0038e950) +21:05:37.392 [tid 6764] hook: Game::ServerPlayer::ProcessTurn rva=0x00491340 mode=off (not installed) +21:05:37.392 [tid 6764] hook: Game::StrategyServer::MoveFleet rva=0x003d9ee0 mode=off (not installed) +21:05:37.392 [tid 6764] hook: Game::StrategyServer::ProcessFleetMovement rva=0x003da9a0 mode=off (not installed) +21:05:37.392 [tid 6764] hook: Game::StrategyHost::Autosave rva=0x00495210 -> va=006a5210 MH_CreateHook -> MH_OK (trampoline=019a0fc0) +21:05:37.408 [tid 6764] hook: Game::StrategyHost::Autosave MH_EnableHook -> MH_OK mode=trace +21:05:37.408 [tid 6764] hook: Game::StrategyServer::ProcessTurn rva=0x003dc6c0 -> va=005ec6c0 MH_CreateHook -> MH_OK (trampoline=019a0fa0) +21:05:37.423 [tid 6764] hook: Game::StrategyServer::ProcessTurn MH_EnableHook -> MH_OK mode=trace +21:05:37.423 [tid 6764] hook: Game::StrategyServer::OnAllCombatDone_Tail rva=0x003d92a0 -> va=005e92a0 MH_CreateHook -> MH_OK (trampoline=019a0f80) +21:05:37.439 [tid 6764] hook: Game::StrategyServer::OnAllCombatDone_Tail MH_EnableHook -> MH_OK mode=trace +21:05:37.439 [tid 6764] hook: Game::StrategyServer::ApplyEncounterResult rva=0x003d8920 -> va=005e8920 MH_CreateHook -> MH_OK (trampoline=019a0f60) +21:05:37.470 [tid 6764] hook: Game::StrategyServer::ApplyEncounterResult MH_EnableHook -> MH_OK mode=trace +21:05:37.470 [tid 6764] hook: Game::StrategyServer::NodeLineDecay rva=0x003ae010 -> va=005be010 MH_CreateHook -> MH_OK (trampoline=019a0f40) +21:05:37.486 [tid 6764] hook: Game::StrategyServer::NodeLineDecay MH_EnableHook -> MH_OK mode=trace +21:05:37.486 [tid 6764] hook: Game::StrategyServer::ProcessNodeSpaceTravel rva=0x003a0e20 -> va=005b0e20 MH_CreateHook -> MH_OK (trampoline=019a0f20) +21:05:37.502 [tid 6764] hook: Game::StrategyServer::ProcessNodeSpaceTravel MH_EnableHook -> MH_OK mode=trace +21:05:37.502 [tid 6764] hook: Game::EncounterDetect::AssignContacts rva=0x003aa240 -> va=005ba240 MH_CreateHook -> MH_OK (trampoline=019a0f00) +21:05:37.517 [tid 6764] hook: Game::EncounterDetect::AssignContacts MH_EnableHook -> MH_OK mode=trace +21:05:37.517 [tid 6764] hook: Game::EncounterDetect::ProcessTeamRecord rva=0x003ca640 -> va=005da640 MH_CreateHook -> MH_OK (trampoline=019a0ee0) +21:05:37.548 [tid 6764] hook: Game::EncounterDetect::ProcessTeamRecord MH_EnableHook -> MH_OK mode=trace +21:05:37.548 [tid 6764] hook: Game::StrategyServer::BeginProcessTurn rva=0x003d98e0 -> va=005e98e0 MH_CreateHook -> MH_OK (trampoline=019a0ec0) +21:05:37.564 [tid 6764] hook: Game::StrategyServer::BeginProcessTurn MH_EnableHook -> MH_OK mode=trace +21:05:37.564 [tid 6764] hook: Game::SVSOSwarmQueen::OnTurnBegin rva=0x00129930 -> va=00339930 MH_CreateHook -> MH_OK (trampoline=019a0ea0) +21:05:37.580 [tid 6764] hook: Game::SVSOSwarmQueen::OnTurnBegin MH_EnableHook -> MH_OK mode=trace +21:05:37.580 [tid 6764] hook: Game::SVSOSwarmQueen::RegisterHives rva=0x00127630 -> va=00337630 MH_CreateHook -> MH_OK (trampoline=019a0e80) +21:05:37.595 [tid 6764] hook: Game::SVSOSwarmQueen::RegisterHives MH_EnableHook -> MH_OK mode=trace +21:05:37.595 [tid 6764] hook: Game::SVSOSwarmQueen::TickHives rva=0x00127770 -> va=00337770 MH_CreateHook -> MH_OK (trampoline=019a0e60) +21:05:37.627 [tid 6764] hook: Game::SVSOSwarmQueen::TickHives MH_EnableHook -> MH_OK mode=trace +21:05:37.627 [tid 6764] hook: Game::SVSOSlaversRefuel::UpdateDifficultyTier rva=0x00115820 -> va=00325820 MH_CreateHook -> MH_OK (trampoline=019a0e40) +21:05:37.642 [tid 6764] hook: Game::SVSOSlaversRefuel::UpdateDifficultyTier MH_EnableHook -> MH_OK mode=trace +21:05:37.642 [tid 6764] hook: Mars::RNG::Seed rva=0x0009fdf0 -> va=002afdf0 MH_CreateHook -> MH_OK (trampoline=019a0e20) +21:05:37.658 [tid 6764] hook: Mars::RNG::Seed MH_EnableHook -> MH_OK mode=trace +21:05:37.658 [tid 6764] hook: Game::StrategyApp::RunAI rva=0x004706f0 -> va=006806f0 MH_CreateHook -> MH_OK (trampoline=019a0e00) +21:05:37.673 [tid 6764] hook: Game::StrategyApp::RunAI MH_EnableHook -> MH_OK mode=trace +21:05:37.689 [tid 6764] drawsite: Mars::RNG::NextFloat rva=0x0007d830 -> va=0028d830 create=MH_OK enable=MH_OK +21:05:37.720 [tid 6764] drawsite: Mars::RNG::NextInt rva=0x000271c0 -> va=002371c0 create=MH_OK enable=MH_OK +21:05:37.736 [tid 6764] drawsite: Mars::RNG::Chance rva=0x004e6dd0 -> va=006f6dd0 create=MH_OK enable=MH_OK +21:05:37.752 [tid 6764] drawsite: Mars::RNG::NextUInt rva=0x000f7670 -> va=00307670 create=MH_OK enable=MH_OK +21:05:37.767 [tid 6764] drawsite: Mars::RNG::FloatRange rva=0x0007d8a0 -> va=0028d8a0 create=MH_OK enable=MH_OK +21:05:37.783 [tid 6764] drawsite: Mars::RNG::IntRangeBell rva=0x004e6d80 -> va=006f6d80 create=MH_OK enable=MH_OK +21:05:37.798 [tid 6764] drawsite: Mars::RNG::GaussianRange rva=0x004e6e30 -> va=006f6e30 create=MH_OK enable=MH_OK +21:05:37.798 [tid 6764] probe: installing 11 of 12 (probes= in shim.cfg) +21:05:37.814 [tid 6764] probe: Game::ServerSpyManager::vslot13 rva=0x004877b0 -> va=006977b0 create=MH_OK enable=MH_OK +21:05:37.830 [tid 6764] probe: Game::ServerSpyManager::vslot14 rva=0x0048db80 -> va=0069db80 create=MH_OK enable=MH_OK +21:05:37.845 [tid 6764] probe: Game::ServerTradeManagerImpl::vslot13 rva=0x0048ef80 -> va=0069ef80 create=MH_OK enable=MH_OK +21:05:37.861 [tid 6764] probe: Game::ServerTradeManagerImpl::vslot15 rva=0x0042cca0 -> va=0063cca0 create=MH_OK enable=MH_OK +21:05:37.877 [tid 6764] probe: Game::SpyManager::Slot13RngCallee rva=0x004408e0 -> va=006508e0 create=MH_OK enable=MH_OK +21:05:37.892 [tid 6764] probe: Game::TradeManager::Slot13RngCalleeA rva=0x00420ca0 -> va=00630ca0 create=MH_OK enable=MH_OK +21:05:37.923 [tid 6764] probe: Game::TradeManager::Slot13RngCalleeB rva=0x0048b440 -> va=0069b440 create=MH_OK enable=MH_OK +21:05:37.939 [tid 6764] probe: Game::ServerTradeManager::CreateRaidEncounter rva=0x004938a0 -> va=006a38a0 create=MH_OK enable=MH_OK +21:05:37.955 [tid 6764] probe: Game::ServerTradeManager::GenerateTradeRaidEncounters rva=0x00493290 -> va=006a3290 create=MH_OK enable=MH_OK +21:05:37.970 [tid 6764] probe: Game::ServerSpyManager::vslot15 [control] rva=0x00487f30 -> va=00697f30 create=MH_OK enable=MH_OK +21:05:37.986 [tid 6764] probe: Game::ServerTradeManagerImpl::vslot14 [control] rva=0x004590d0 -> va=006690d0 create=MH_OK enable=MH_OK +21:05:37.986 [tid 6764] watch: VEH=0137ab98 text=[0x00211000,0x007eca00) out=C:\SOTS\shim.watch.txt +21:05:38.002 [tid 6764] watch: arm hook StrategyServer::ApplyAllTurnCommands rva=0x0038f6a0 va=0059f6a0 create=MH_OK enable=MH_OK +21:05:38.002 [tid 6764] aiorders: disabled (aiorders=off) +21:05:38.002 [tid 6764] fpu: module init, entry cw=0x027f 53bit-double/nearest; force=off value=0x0000 sample_ticks=off +21:05:38.002 [tid 6764] fpu: sample_turn=off (off releases StrategyServer::ProcessTurn for another hook) +21:05:38.002 [tid 6764] fpu: StrategyClient::EndTurn rva=0x00383be0 -> va=00593be0 MH_CreateHook -> MH_OK (trampoline=019a0b80) +21:05:38.017 [tid 6764] fpu: StrategyClient::EndTurn MH_EnableHook -> MH_OK +21:05:38.017 [tid 6764] fpu: StrategyServer::BeginProcessTurn rva=0x003d98e0 -> va=005e98e0 MH_CreateHook -> MH_ERROR_ALREADY_CREATED (trampoline=00000000) +21:05:38.017 [tid 6764] fpu: StrategyServer::ProcessTurn rva=0x003dc6c0 not installed (sampler off) +21:05:38.017 [tid 6764] fpu: DemoApp::OnTick rva=0x0049a640 not installed (sampler off) +21:05:38.017 [tid 6764] selftest: Shim::SelfTest::Fill mode=off checksum=075ef0c3 records=0 +21:05:38.033 [tid 6764] Application::Initialize called (this=03588348) +21:11:30.470 [tid 6764] fpu: sample at StrategyClient::EndTurn (this=0e570b48): cw=0x127f 53bit-double/nearest [no fpu.force configured] +21:11:33.626 [tid 6764] fpu: sample at StrategyClient::EndTurn (this=34e87d50): cw=0x127f 53bit-double/nearest [no fpu.force configured] +21:11:33.642 [tid 6764] fpu: sample at StrategyClient::EndTurn (this=34e8bed8): cw=0x127f 53bit-double/nearest [no fpu.force configured] +21:11:33.705 [tid 6764] fpu: sample at StrategyClient::EndTurn (this=34e8cd68): cw=0x127f 53bit-double/nearest [no fpu.force configured] +21:11:34.611 [tid 6764] watch: trade routes -- manager=0x0e56e210 (S+4+0x154) vector@mgr+0x3c first=0x0436a668 last=0x0436a720 end=0x0436a764 count=46 +21:11:34.611 [tid 6764] watch: spy programs -- manager=0x0e5b10d8 (S+4+0x158) vector@mgr+0x10 first=0x0e611c50 last=0x0e611c54 end=0x0e611c54 count=1 +21:11:34.611 [tid 6764] watch: SELFTEST canary writes=1 traps=1 dr7=0xdddd0055 PASS +21:11:34.611 [tid 6764] watch: slot 0 -> trade routes _Myfirst (mgr+0x3c, count 46 at arm) = 0x0e56e24c +21:11:34.611 [tid 6764] watch: slot 1 -> trade routes _Mylast (mgr+0x40, count 46 at arm) = 0x0e56e250 +21:11:34.611 [tid 6764] watch: slot 2 -> spy programs _Myfirst (mgr+0x10, count 1 at arm) = 0x0e5b10e8 +21:11:34.611 [tid 6764] watch: slot 3 -> spy programs _Mylast (mgr+0x14, count 1 at arm) = 0x0e5b10ec +21:11:34.611 [tid 6764] watch: ARMED on tid 6764 dr7=0xdddd0055, S=0e568a18 (ApplyAllTurnCommands this) +21:11:36.611 [tid 992] watchhit seq=0 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690588(0x0436a71c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=1 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690584(0x0436a718) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=2 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690580(0x0436a714) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=3 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690576(0x0436a710) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=4 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690572(0x0436a70c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=5 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690568(0x0436a708) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=6 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690564(0x0436a704) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=7 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690560(0x0436a700) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=8 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690556(0x0436a6fc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=9 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690552(0x0436a6f8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=10 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690548(0x0436a6f4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=11 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690544(0x0436a6f0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=12 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690540(0x0436a6ec) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=13 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690536(0x0436a6e8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=14 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690532(0x0436a6e4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=15 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690528(0x0436a6e0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=16 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690524(0x0436a6dc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=17 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690520(0x0436a6d8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=18 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690516(0x0436a6d4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=19 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690512(0x0436a6d0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=20 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690508(0x0436a6cc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=21 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690504(0x0436a6c8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=22 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690500(0x0436a6c4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=23 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690496(0x0436a6c0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=24 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690492(0x0436a6bc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=25 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690488(0x0436a6b8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=26 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690484(0x0436a6b4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=27 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690480(0x0436a6b0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=28 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690476(0x0436a6ac) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=29 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690472(0x0436a6a8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=30 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690468(0x0436a6a4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=31 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690464(0x0436a6a0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=32 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690460(0x0436a69c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=33 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690456(0x0436a698) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=34 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690452(0x0436a694) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=35 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690448(0x0436a690) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=36 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690444(0x0436a68c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=37 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690440(0x0436a688) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=38 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690436(0x0436a684) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=39 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690432(0x0436a680) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=40 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690428(0x0436a67c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=41 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690424(0x0436a678) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=42 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690420(0x0436a674) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:11:36.611 [tid 992] watchhit seq=43 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690424(0x0436a678) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=44 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690428(0x0436a67c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=45 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690432(0x0436a680) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=46 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690436(0x0436a684) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=47 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690440(0x0436a688) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=48 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690444(0x0436a68c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=49 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690448(0x0436a690) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=50 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690452(0x0436a694) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=51 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690456(0x0436a698) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=52 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690460(0x0436a69c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=53 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690464(0x0436a6a0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=54 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690468(0x0436a6a4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=55 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690472(0x0436a6a8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=56 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690476(0x0436a6ac) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=57 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690480(0x0436a6b0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=58 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690484(0x0436a6b4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=59 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690488(0x0436a6b8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=60 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690492(0x0436a6bc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=61 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690496(0x0436a6c0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=62 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690500(0x0436a6c4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=63 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690504(0x0436a6c8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=64 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690508(0x0436a6cc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=65 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690512(0x0436a6d0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=66 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690516(0x0436a6d4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=67 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690520(0x0436a6d8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=68 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690524(0x0436a6dc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=69 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690528(0x0436a6e0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=70 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690532(0x0436a6e4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=71 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690536(0x0436a6e8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=72 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690540(0x0436a6ec) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=73 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690544(0x0436a6f0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=74 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690548(0x0436a6f4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=75 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690552(0x0436a6f8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=76 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690556(0x0436a6fc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=77 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690560(0x0436a700) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=78 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690564(0x0436a704) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=79 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690568(0x0436a708) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=80 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690572(0x0436a70c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=81 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690576(0x0436a710) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=82 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690580(0x0436a714) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=83 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690584(0x0436a718) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=84 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690588(0x0436a71c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=85 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690592(0x0436a720) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:11:36.611 [tid 992] watchhit seq=86 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690596(0x0436a724) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +21:12:56.501 [tid 6764] fpu: sample at StrategyClient::EndTurn (this=0e570b48): cw=0x127f 53bit-double/nearest [no fpu.force configured] +21:12:59.626 [tid 6764] fpu: sample at StrategyClient::EndTurn (this=34e87d50): cw=0x127f 53bit-double/nearest [no fpu.force configured] +21:12:59.658 [tid 6764] fpu: sample at StrategyClient::EndTurn (this=34e8bed8): cw=0x127f 53bit-double/nearest [no fpu.force configured] +21:12:59.689 [tid 6764] fpu: sample at StrategyClient::EndTurn (this=34e8cd68): cw=0x127f 53bit-double/nearest [no fpu.force configured] +21:13:00.611 [tid 6764] watch: trade routes -- manager=0x0e56e210 (S+4+0x154) vector@mgr+0x3c first=0x0436a668 last=0x0436a724 end=0x0436a764 count=47 +21:13:00.611 [tid 6764] watch: spy programs -- manager=0x0e5b10d8 (S+4+0x158) vector@mgr+0x10 first=0x0e611c50 last=0x0e611c54 end=0x0e611c54 count=1 +21:13:00.611 [tid 6764] watch: SELFTEST canary writes=1 traps=1 dr7=0xdddd0055 PASS +21:13:00.611 [tid 6764] watch: slot 0 -> trade routes _Myfirst (mgr+0x3c, count 47 at arm) = 0x0e56e24c +21:13:00.611 [tid 6764] watch: slot 1 -> trade routes _Mylast (mgr+0x40, count 47 at arm) = 0x0e56e250 +21:13:00.611 [tid 6764] watch: slot 2 -> spy programs _Myfirst (mgr+0x10, count 1 at arm) = 0x0e5b10e8 +21:13:00.611 [tid 6764] watch: slot 3 -> spy programs _Mylast (mgr+0x14, count 1 at arm) = 0x0e5b10ec +21:13:00.611 [tid 6764] watch: ARMED on tid 6764 dr7=0xdddd0055, S=0e568a18 (ApplyAllTurnCommands this) +21:13:01.251 [tid 992] watchhit seq=87 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690592(0x0436a720) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=88 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690588(0x0436a71c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=89 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690584(0x0436a718) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=90 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690580(0x0436a714) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=91 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690576(0x0436a710) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=92 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690572(0x0436a70c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=93 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690568(0x0436a708) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=94 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690564(0x0436a704) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=95 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690560(0x0436a700) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=96 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690556(0x0436a6fc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=97 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690552(0x0436a6f8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=98 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690548(0x0436a6f4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=99 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690544(0x0436a6f0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=100 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690540(0x0436a6ec) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=101 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690536(0x0436a6e8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=102 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690532(0x0436a6e4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=103 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690528(0x0436a6e0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=104 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690524(0x0436a6dc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=105 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690520(0x0436a6d8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=106 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690516(0x0436a6d4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=107 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690512(0x0436a6d0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=108 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690508(0x0436a6cc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=109 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690504(0x0436a6c8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=110 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690500(0x0436a6c4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=111 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690496(0x0436a6c0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=112 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690492(0x0436a6bc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=113 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690488(0x0436a6b8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=114 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690484(0x0436a6b4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=115 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690480(0x0436a6b0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=116 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690476(0x0436a6ac) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=117 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690472(0x0436a6a8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=118 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690468(0x0436a6a4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=119 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690464(0x0436a6a0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=120 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690460(0x0436a69c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=121 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690456(0x0436a698) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=122 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690452(0x0436a694) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=123 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690448(0x0436a690) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=124 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690444(0x0436a68c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=125 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690440(0x0436a688) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=126 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690436(0x0436a684) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=127 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690432(0x0436a680) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=128 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690428(0x0436a67c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=129 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690424(0x0436a678) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=130 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690420(0x0436a674) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +21:13:01.251 [tid 992] watchhit seq=131 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690424(0x0436a678) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=132 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690428(0x0436a67c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=133 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690432(0x0436a680) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=134 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690436(0x0436a684) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=135 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690440(0x0436a688) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=136 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690444(0x0436a68c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=137 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690448(0x0436a690) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=138 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690452(0x0436a694) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=139 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690456(0x0436a698) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=140 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690460(0x0436a69c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=141 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690464(0x0436a6a0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=142 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690468(0x0436a6a4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=143 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690472(0x0436a6a8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=144 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690476(0x0436a6ac) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=145 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690480(0x0436a6b0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=146 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690484(0x0436a6b4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=147 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690488(0x0436a6b8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=148 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690492(0x0436a6bc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=149 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690496(0x0436a6c0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=150 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690500(0x0436a6c4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=151 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690504(0x0436a6c8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=152 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690508(0x0436a6cc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=153 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690512(0x0436a6d0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=154 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690516(0x0436a6d4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=155 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690520(0x0436a6d8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=156 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690524(0x0436a6dc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=157 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690528(0x0436a6e0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=158 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690532(0x0436a6e4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=159 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690536(0x0436a6e8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=160 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690540(0x0436a6ec) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=161 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690544(0x0436a6f0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=162 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690548(0x0436a6f4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=163 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690552(0x0436a6f8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=164 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690556(0x0436a6fc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=165 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690560(0x0436a700) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=166 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690564(0x0436a704) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=167 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690568(0x0436a708) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=168 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690572(0x0436a70c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=169 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690576(0x0436a710) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=170 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690580(0x0436a714) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=171 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690584(0x0436a718) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=172 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690588(0x0436a71c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=173 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690592(0x0436a720) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +21:13:01.251 [tid 992] watchhit seq=174 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690596(0x0436a724) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 diff --git a/verify/results/shim/ac/ac-probe-run-watch.txt b/verify/results/shim/ac/ac-probe-run-watch.txt new file mode 100644 index 0000000..62da213 --- /dev/null +++ b/verify/results/shim/ac/ac-probe-run-watch.txt @@ -0,0 +1,175 @@ +watchhit seq=0 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690588(0x0436a71c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=1 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690584(0x0436a718) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=2 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690580(0x0436a714) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=3 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690576(0x0436a710) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=4 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690572(0x0436a70c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=5 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690568(0x0436a708) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=6 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690564(0x0436a704) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=7 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690560(0x0436a700) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=8 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690556(0x0436a6fc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=9 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690552(0x0436a6f8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=10 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690548(0x0436a6f4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=11 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690544(0x0436a6f0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=12 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690540(0x0436a6ec) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=13 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690536(0x0436a6e8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=14 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690532(0x0436a6e4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=15 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690528(0x0436a6e0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=16 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690524(0x0436a6dc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=17 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690520(0x0436a6d8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=18 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690516(0x0436a6d4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=19 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690512(0x0436a6d0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=20 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690508(0x0436a6cc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=21 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690504(0x0436a6c8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=22 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690500(0x0436a6c4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=23 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690496(0x0436a6c0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=24 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690492(0x0436a6bc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=25 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690488(0x0436a6b8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=26 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690484(0x0436a6b4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=27 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690480(0x0436a6b0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=28 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690476(0x0436a6ac) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=29 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690472(0x0436a6a8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=30 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690468(0x0436a6a4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=31 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690464(0x0436a6a0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=32 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690460(0x0436a69c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=33 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690456(0x0436a698) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=34 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690452(0x0436a694) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=35 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690448(0x0436a690) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=36 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690444(0x0436a68c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=37 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690440(0x0436a688) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=38 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690436(0x0436a684) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=39 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690432(0x0436a680) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=40 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690428(0x0436a67c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=41 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690424(0x0436a678) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=42 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690420(0x0436a674) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=43 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690424(0x0436a678) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=44 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690428(0x0436a67c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=45 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690432(0x0436a680) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=46 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690436(0x0436a684) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=47 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690440(0x0436a688) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=48 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690444(0x0436a68c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=49 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690448(0x0436a690) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=50 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690452(0x0436a694) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=51 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690456(0x0436a698) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=52 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690460(0x0436a69c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=53 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690464(0x0436a6a0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=54 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690468(0x0436a6a4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=55 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690472(0x0436a6a8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=56 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690476(0x0436a6ac) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=57 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690480(0x0436a6b0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=58 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690484(0x0436a6b4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=59 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690488(0x0436a6b8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=60 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690492(0x0436a6bc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=61 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690496(0x0436a6c0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=62 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690500(0x0436a6c4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=63 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690504(0x0436a6c8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=64 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690508(0x0436a6cc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=65 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690512(0x0436a6d0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=66 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690516(0x0436a6d4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=67 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690520(0x0436a6d8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=68 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690524(0x0436a6dc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=69 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690528(0x0436a6e0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=70 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690532(0x0436a6e4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=71 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690536(0x0436a6e8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=72 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690540(0x0436a6ec) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=73 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690544(0x0436a6f0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=74 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690548(0x0436a6f4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=75 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690552(0x0436a6f8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=76 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690556(0x0436a6fc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=77 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690560(0x0436a700) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=78 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690564(0x0436a704) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=79 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690568(0x0436a708) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=80 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690572(0x0436a70c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=81 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690576(0x0436a710) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=82 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690580(0x0436a714) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=83 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690584(0x0436a718) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=84 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690588(0x0436a71c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=85 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690592(0x0436a720) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=86 mark=1 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690596(0x0436a724) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00000000 +watchhit seq=87 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690592(0x0436a720) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=88 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690588(0x0436a71c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=89 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690584(0x0436a718) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=90 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690580(0x0436a714) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=91 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690576(0x0436a710) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=92 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690572(0x0436a70c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=93 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690568(0x0436a708) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=94 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690564(0x0436a704) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=95 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690560(0x0436a700) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=96 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690556(0x0436a6fc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=97 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690552(0x0436a6f8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=98 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690548(0x0436a6f4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=99 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690544(0x0436a6f0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=100 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690540(0x0436a6ec) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=101 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690536(0x0436a6e8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=102 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690532(0x0436a6e4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=103 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690528(0x0436a6e0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=104 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690524(0x0436a6dc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=105 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690520(0x0436a6d8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=106 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690516(0x0436a6d4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=107 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690512(0x0436a6d0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=108 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690508(0x0436a6cc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=109 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690504(0x0436a6c8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=110 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690500(0x0436a6c4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=111 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690496(0x0436a6c0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=112 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690492(0x0436a6bc) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=113 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690488(0x0436a6b8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=114 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690484(0x0436a6b4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=115 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690480(0x0436a6b0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=116 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690476(0x0436a6ac) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=117 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690472(0x0436a6a8) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=118 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690468(0x0436a6a4) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=119 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690464(0x0436a6a0) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=120 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690460(0x0436a69c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=121 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690456(0x0436a698) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=122 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690452(0x0436a694) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=123 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690448(0x0436a690) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=124 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690444(0x0436a68c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=125 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690440(0x0436a688) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=126 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690436(0x0436a684) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=127 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690432(0x0436a680) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=128 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690428(0x0436a67c) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=129 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690424(0x0436a678) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=130 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00651e57 value=70690420(0x0436a674) tid=6764 ebpret=0x00678092 ebpret2=0x005e97df scan=0x00658634,0x00658afa,0x0076da98,0x00678092 +watchhit seq=131 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690424(0x0436a678) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=132 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690428(0x0436a67c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=133 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690432(0x0436a680) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=134 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690436(0x0436a684) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=135 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690440(0x0436a688) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=136 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690444(0x0436a68c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=137 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690448(0x0436a690) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=138 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690452(0x0436a694) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=139 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690456(0x0436a698) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=140 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690460(0x0436a69c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=141 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690464(0x0436a6a0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=142 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690468(0x0436a6a4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=143 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690472(0x0436a6a8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=144 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690476(0x0436a6ac) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=145 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690480(0x0436a6b0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=146 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690484(0x0436a6b4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=147 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690488(0x0436a6b8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=148 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690492(0x0436a6bc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=149 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690496(0x0436a6c0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=150 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690500(0x0436a6c4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=151 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690504(0x0436a6c8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=152 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690508(0x0436a6cc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=153 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690512(0x0436a6d0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=154 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690516(0x0436a6d4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=155 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690520(0x0436a6d8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=156 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690524(0x0436a6dc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=157 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690528(0x0436a6e0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=158 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690532(0x0436a6e4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=159 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690536(0x0436a6e8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=160 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690540(0x0436a6ec) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=161 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690544(0x0436a6f0) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=162 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690548(0x0436a6f4) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=163 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690552(0x0436a6f8) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=164 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690556(0x0436a6fc) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=165 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690560(0x0436a700) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=166 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690564(0x0436a704) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=167 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690568(0x0436a708) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=168 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690572(0x0436a70c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=169 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690576(0x0436a710) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=170 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690580(0x0436a714) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=171 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690584(0x0436a718) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=172 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690588(0x0436a71c) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=173 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690592(0x0436a720) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 +watchhit seq=174 mark=2 slot=1 dr6=0xffff0ff2 eip=0x00678328 value=70690596(0x0436a724) tid=6764 ebpret=0x005e97df ebpret2=0x734c2dea scan=0x007a8438,0x005e97df,0x0079fca0,0x00270000 diff --git a/verify/traces/ac-probe-baseline-turn15.jsonl b/verify/traces/ac-probe-baseline-turn15.jsonl new file mode 100644 index 0000000..f89b9d0 --- /dev/null +++ b/verify/traces/ac-probe-baseline-turn15.jsonl @@ -0,0 +1,27 @@ +{"meta":{"format":1,"build":"ac-7e726b9-20260909T0017Z","exe_sha256":"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841","started":"2026-09-09T01:15:27Z","inline_max":64,"hooks":{"Shim::SelfTest::Fill":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"complete","why":"Fill writes buf[0..n) and nothing else; the whole range is a declared region","unmodelled":[]}},"Mars::GlobalConsts::LoadFile":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"erases each consumed key from the caller's std::map","risk":"medium","why":"the map is a LoadAll temporary; declaring a red-black tree as a region is not possible before the call. First-occurrence-wins is reproduced in game::config::apply instead, so the *effect* is modelled, the container is not","mitigation":"LoadAll's post-state would have to be hooked to see it"},{"what":"writes three kinds of line to the game log (unrecognised key, applied key, expected-but-not-found)","risk":"low","why":"log text is not part of the simulation state","mitigation":""},{"what":"opens the file through the VFS and allocates/releases a refcounted buffer","risk":"low","why":"ours performs the same two calls, so allocation behaviour matches by construction rather than by comparison","mitigation":""},{"what":"String slots assign through the engine's own std::string, leaking one heap block per long string in compare mode","risk":"low","why":"start-up only; documented in docs/M1.md","mitigation":""}]}},"Game::ServerPlayer::ComputeBudget":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"slots 1, 2, 3, 4, 7 and 11 are produced by callees this milestone does not model (per-system output, trade, ship-carried population, a second manager, the build-queue spend)","risk":"high","why":"they are copied out of the original's own output and back into the same slots, so they match BY CONSTRUCTION and prove nothing","mitigation":"declared input boundary; see budget_inputs.h"},{"what":"ServerSystem::ComputeOutput repairs damaged ships in orbit","risk":"high","why":"replace mode runs the original a second time on a scratch Budget to harvest the six unmodelled slots, so that repair happens TWICE per turn in replace mode and nothing in the trace would show it","mitigation":"guard:budget_object does not reach the ships; unverified"},{"what":"the difficulty-mods row still DRIVES `ours` as two fitted constants","risk":"low","why":"the old note here said the row was 'not reachable from a ServerPlayer'. That was wrong: the record is at ServerPlayer+0x36c and every consumer calls DifficultyMods_Select(p->+0x36c, p). Lane L5 now snapshots it and emits it as `inputs.live_difficulty` alongside the fitted pair, so a run SHOWS whether the fit is right instead of assuming it. `ours` was deliberately left on the fitted constants so that this run is evidence about them; switching it over is the next lane's one-line change","mitigation":"logged as `inputs.live_difficulty` on every record"},{"what":"three of the four float widths this routine turns on are unexercised by any reference turn","risk":"medium","why":"the savings-interest rate is a widened 0.01f and its boundary IS in the corpus (a treasury of 50,000 earns 499, not 500). The research yield factor is a widened 0.85f whose boundary needs a research money that is a multiple of 40,000, and the three research modifiers are summed in SINGLE precision, which needs two of them non-zero -- the corpus has shrm = TRM = 0. So a green compare here verifies one of the three and says nothing about the other two","mitigation":"the record carries `inputs.live_consts` so the widths are readable, and tests/game_sim/test_economy.cpp pins all three at their boundaries"},{"what":"the research-allocation vector's heap block","risk":"low","why":"only the element count is compared; the three words are heap pointers the default policy ignores","mitigation":""}]}},"Game::WeaponDictionary::Init":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"LoadWeapon -> WeaponDef::ParseScript registers each weapon's name with the string table and resolves `requires` against the live TechTree","risk":"high","why":"per-file parsing is M3 scope; ours delegates to the game's own LoadWeapon, so a compare run performs the registration a SECOND time and neither the string table nor the tech tree is a declared region","mitigation":"suspected cause of the sibling section hook's compare crash (docs/M2.md)"},{"what":"allocates 123 WeaponDef objects (0x278 bytes each) on the game heap","risk":"low","why":"the definitions do not exist when the hook is entered, so they cannot be a before-snapshot; the dictionary region compares them by id/name/path","mitigation":""},{"what":"the word at dictionary+0x14","risk":"low","why":"not modelled; emitted as an opaque pointer, which the default policy ignores -- a change is visible in a trace but never a divergence","mitigation":"guard:dict"},{"what":"writes lines to the game log for a missing manifest","risk":"low","why":"log text is not simulation state","mitigation":""},{"what":"std::sort tie order for equal weapon names","risk":"low","why":"msvc_sort.h replays MSVC 2010's introsort, but the shipped data has no tied names, so the tie rule is unexercised rather than verified","mitigation":""}]}},"Game::SectionDictionary::SectionDictionary":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"LoadSection registers each section with the string table and the live TechTree, and may append to the dictionary's own vector","risk":"high","why":"M3 scope; ours delegates to the game's LoadSection after the original has already built all 885 definitions, so the second pass registers duplicates -- the leading hypothesis for this hook's compare-mode crash","mitigation":"see docs/M2.md; compare mode for this hook is not safe to run"},{"what":"post-load validation pass over every definition's @-token against the string table","risk":"medium","why":"runs after the loop and touches no declared region","mitigation":""},{"what":"allocates 885 SectionDef objects (0x3d8 bytes each) on the game heap","risk":"low","why":"they do not exist at hook entry; compared by index/species/id/token","mitigation":""},{"what":"the word at dictionary+0x14","risk":"low","why":"not modelled; emitted as an ignored pointer","mitigation":"guard:dict"},{"what":"the before-snapshot of the object is uninitialised heap","risk":"medium","why":"the hook is on the constructor, so `before` is meaningless and only `after` carries information","mitigation":""}]}},"Game::TechTree::ProcessResearch":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"posts EVENT_RESEARCH_OVERBUDGET on the owner's EventStorage: ours reproduces the decision and the id sequence, so region:events compares next_id, but the composed EvDsc/EvMsg text is not reproduced and no region can see it","risk":"medium","why":"text comes from the game's string table, which the engine must not carry; ours posts into its own EventStorage and writes only the counts into the scratch copy, so no live byte moves and replace mode posts nothing at all","mitigation":"region:events"},{"what":"composes EVENT_TECHS_UNLOCKED's message from the unlocked techs' names","risk":"low","why":"the trigger and the list are modelled (SetResearched's availability sweep plus the tail collector, both read off the instruction stream), so region:events compares next_id; the names come from the game's string table, so the message is composed from node indices instead and is not the game's text","mitigation":"region:events"},{"what":"TechTree::SetResearched in REPLACE mode: nothing of it runs","risk":"high","why":"the cascade is compare-mode only. In replace mode every pointer is live game memory, and applying half of OnTechResearched -- the observed-tech append and the research-event roll, but not the tech-effect field writes -- would leave the player in a state no code path produces. A replace run therefore still leaves the completed node unstamped and no tech unlocked","mitigation":"guard:player, guard:tree_header"},{"what":"ServerPlayer::OnTechResearched's tech effects: the ~90 hard-coded ServerPlayer field writes, the plague-cure masks, the design-option bitmasks and the species tech flags","risk":"high","why":"B2's milestone. `ours` models only the two parts of the callback this hook's regions can see -- the observed-tech append and the RNG word RollResearchEvent draws before its branch (one word on a missed roll, two on a fired plague roll) -- and the rest is what the player guard reports","mitigation":"guard:player"},{"what":"the research-event branch RollResearchEvent takes when its roll beats the odds (ServerPlayer::OnResearchRollSucceeded: the plague and AI-rebellion event paths)","risk":"high","why":"RollResearchEvent draws one NextFloat unconditionally and that draw IS modelled -- but that is only the cost of REACHING the branch. A FIRED roll costs one or two words: the plague path draws a SECOND word (NextInt) to pick an owned system and posts EVENT_PLAGUE_OUTBREAK, while the rebellion path allocates an AIRebellion at ServerPlayer+0x3b8 and CANCELS the current research (no further draw). The branch is entered only for the plague and AI-rebellion tech families, whose odds are 0 everywhere else, and it has never been observed firing in three sessions -- which is why every earlier note in this repo said 'exactly one NextFloat' and nothing caught it. If it is ever entered, region:rng is the check","mitigation":"region:rng"},{"what":"constructs the ObservedTech element it appends to ServerPlayer+0x274","risk":"medium","why":"`ours` models the append DECISION -- RecordObservedTech de-duplicates by tech name, so it decides whether the vector grows -- and moves the scratch header's byte span by one 0x2c element per append. The element's own fields (turn_first, turn_last, detected, the name string, `with`) are not built, and no region can see them","mitigation":"region:observed_techs"},{"what":"the tree's completion-order counter (TechTree+0x20) is read pre-call, not modelled as a region","risk":"low","why":"the per-node `order` word IS compared, and it is stamped from a counter `ours` seeds from the pre-call read and advances itself; the counter's own final value is only seen by the tree_header guard","mitigation":"guard:tree_header"},{"what":"writes a completion line to the game log","risk":"low","why":"log text is not simulation state","mitigation":""}]}},"Game::ServerPlayer::OnTechResearched":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"posts EVENT_RESEARCH_COMPLETE / _UNDERBUDGET / _TEMPERANCE on the owner's EventStorage when !silent","risk":"high","why":"the same class of write as B3's defect, and this hook has no replace-mode oracle that could catch it: gotcha 4 in docs/B2.md says a changed save hash on a completion turn is expected and therefore not a finding","mitigation":"guard:player (EventStorage is inline at ServerPlayer+0x29c)"},{"what":"writes every owned system's AI flag (CCC_AIVrus / CCC_AISlv), re-evaluates the arcology civilian cap, cures addiction and clears plague across systems AND ships","risk":"high","why":"writes through pointers to other objects; compare mode must not touch live state, and no region reaches them","mitigation":""},{"what":"the pending plague-cure roll (ServerPlayer::RollResearchEvent)","risk":"high","why":"it draws one word from the strategic generator unconditionally, and a SECOND word (NextInt) when the roll beats the odds and takes the plague path -- which also posts EVENT_PLAGUE_OUTBREAK, while the rebellion path cancels the research. So a fired roll costs one or two words, not one; running it in compare mode would consume real randomness. The two words it guards are still cleared and the record says whether it would have fired","mitigation":"this is the extra draw B3 observed on a completion"},{"what":"TechTree::SetResearched for the Zuul boarding-pod grant","risk":"medium","why":"it would mutate the live tree, and it recurses","mitigation":""},{"what":"allocates or frees the node-bore block at ServerPlayer+0x308","risk":"medium","why":"ours has no allocator the game's runtime could free, so replace mode calls the game's own updater -- which means replace mode never exercises our node-bore selection at all","mitigation":"region:node_bore, declared only when the block already exists"}]}},"Game::ServerSystem::ProcessTurn":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"the addiction sweep raises MoraleEvents, which are constructed and appended to the system's capped morale history","risk":"high","why":"the same class of write as B3's defect. sim::ProcessColonyTurn does compute the morale events (ColonyTurnResult), but the hook never emits them: DescribeMoraleEvents is dead code, so they are neither compared nor logged","mitigation":"guard:system"},{"what":"every callee: the plague pass, imperial and civilian growth, the resource debit, in-orbit refuel, slaves, rebellion and the build queue","risk":"high","why":"declared input boundary -- ProcessTurn is a dispatcher and only the words it writes itself are modelled. The callees raise EVENT_SLAVES_DEAD, EVENT_SYSTEM_REBELLION_CONTINUES, the plague events and SEBuildCompleted, create ships and bump per-player ShipRecords counters","mitigation":"guard:system covers the system object only, not the other objects"},{"what":"ApplyInfraBonus / ApplyPopBonus read the owner's home-system id, and the build queue writes the owning ServerPlayer","risk":"medium","why":"writes through a pointer to another object; no region reaches the player","mitigation":""},{"what":"ProcessRebellion is the pass's only RNG consumer and its draw count is data-dependent","risk":"low","why":"the generator IS a declared region, so a moved post-state is visible and names the system whose rebellion fired -- it is reported, not modelled","mitigation":""},{"what":"replace mode is refused for this hook","risk":"medium","why":"our side models the dispatcher's own writes and none of the callees, so a replace run would silently skip a colony's whole turn. There is therefore no oracle layer behind the compare for this hook","mitigation":""}]}},"Game::ServerSystem::GroupOutput":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"the imperial and civilian output modifiers, the 1.8 factor and the 500000 divisor are literals inside the executable, so nothing about them is assumed from the data files","unmodelled":[{"what":"the station count that scales the imperial term","risk":"high","why":"the original gets it from a helper that walks the system's fleets and their ships through virtual calls and takes the system in EBX, which a hook cannot call portably. `ours` therefore assumes ZERO stations. A divergence on an imperial row is expected to be exactly the station factor, and the record carries `count` and the return, so the factor is MEASURED from the trace rather than fitted","mitigation":"declared input boundary; the trace makes it recoverable"},{"what":"the slave row's output modifier, and every value the data files supply","risk":"medium","why":"SLAVES_OUTPUT_MOD, the two morale thresholds and their two modifiers, and STATION_BONUS_IMPERIAL_OUTPUT are read out of the live process's globals and logged with every record, so the record says which value drove it","mitigation":"logged as `tuning` on every record"}]}},"Game::ServerSystem::ComputeTotalOutput":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"the station count, as for GroupOutput","risk":"high","why":"`ours` assumes zero stations, so a system with an imperial population and a station diverges by the station factor","mitigation":"declared input boundary"},{"what":"the slave population and its xenotech adjustment","risk":"high","why":"the original's slave count is not a plain field: it runs the count through a per-species xenotech factor. `ours` takes the slave term as ZERO, so any system holding slaves diverges. The record logs the raw group-2 population sums so a divergence can be attributed","mitigation":"declared input boundary"},{"what":"the capacity surplus the civilian term adds for the owner's own species","risk":"medium","why":"the original calls the carrying-capacity helper twice with different out-parameter slots and adds max(0, B - A) to the civilian count; `ours` uses the raw civilian population. The surplus is zero except when the colony is at its cap","mitigation":"declared input boundary"},{"what":"the addiction phase","risk":"low","why":"`ours` assumes it is below 3, so ADDICTION_OUTPUT_MOD never applies; the record logs the system's addiction table length so the case is visible","mitigation":""}]}},"Game::ServerPlayer::ProcessTurn":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"phases 2, 3 and 6 -- the savings apply Sav = SatAdd(budget[0], net), the three aid/trade records copied out of the budget, and the research refund -- are NOT declared and NOT compared","risk":"high","why":"all three are pure functions of ComputeBudget's 22-slot output and of ProcessResearch's overBudget out-parameter, and both live in the original's own stack frame ([ebp-0x90] and [ebp-0x14]). The three ways to reach them are each worse than not having them: call ComputeBudget ourselves (it repairs damaged ships in orbit -- harness-audit #6), read them out of the nested B1/B3 hooks (harness-audit #5, the self-fulfilling compare), or infer them from the observed Sav delta (the same trap). The formulas ARE written and unit-tested in player_turn_inputs.cpp; they are simply not wired into the verdict","mitigation":"guard:player reports Sav, +0xc8 and +0xcc moving"},{"what":"ComputeBudget (0x00863030) itself, including ServerSystem::ComputeOutput, which REPAIRS DAMAGED SHIPS IN ORBIT","risk":"high","why":"B1 is the hook that checks the budget; its ship-repair side effect happens inside this call too, once per system per player per turn","mitigation":"run hook.Game::ServerPlayer::ComputeBudget=compare alongside"},{"what":"TechTree::ProcessResearch and the whole SetResearched / OnTechResearched cascade it can trigger: progress, the completion roll, the 5% decay sweep, the child-unlock cascade, ~90 tech-effect field writes, EVENT_RESEARCH_* and EVENT_TECHS_UNLOCKED","risk":"high","why":"declared input boundary. B3/U own it; this hook reports the pre-call research state and lets the player guard say how much moved","mitigation":"guard:player, and hook.Game::TechTree::ProcessResearch=compare"},{"what":"RollResearchAccident (0x00889dc0) draws Mars::RNG::NextInt(100) whenever the research boost is non-zero, can apply progress loss across EVERY system, and posts EVENT_LABACCIDENT_{SMALL,MEDIUM,LARGE}","risk":"high","why":"it runs before ProcessResearch and gates it entirely. Its draws move the declared `rng` region, so they are visible -- but as an unexplained RNG divergence, not as their cause","mitigation":"region:rng shows the draws; nothing shows the systems it wrote"},{"what":"the ResearchRollPending roll: RollResearchEvent draws one NextFloat, and when it BEATS the odds the plague branch draws a SECOND word (NextInt) and posts EVENT_PLAGUE_OUTBREAK, while the rebellion branch allocates an AIRebellion at ServerPlayer+0x3b8 and cancels the current research","risk":"high","why":"every previous coverage note in this repo says 'exactly one NextFloat'. That is the cost of REACHING the branch; a fired roll costs one or two words. The branch has never been observed firing. `predict_roll` says whether we expected the roll, `region:rng` says what it actually cost, and `roll_flags` says whether ResErrRoll was consumed","mitigation":"region:rng + region:roll_flags + guard:player; ours never rolls"},{"what":"ServerPlayer::ProcessSpecialProjects (0x00840fe0) and, for an AI player, ConstructionSpend (0x00817f90)","risk":"medium","why":"1015 bytes of special-project state, plus the log line \"SpecialProject: %s completed investigation phase\"","mitigation":"guard:player"},{"what":"the EVENT_NO_RESEARCH post at 0x0089168c, which appends to the player's EventStorage (+0x29c) and bumps EvNxID (+0x2b0)","risk":"medium","why":"B3's exact failure mode: a list append outside every Result region. Its condition is fully known (ResT == 0, nothing completed this turn, and at least one state-2 tech exists) but ours posts nothing","mitigation":"guard:player reports the EvNxID bump"},{"what":"PruneRaidTargets (0x00863cf0) erases from the heap vector at +0x338","risk":"low","why":"the vector header is inside the player guard, but its elements are heap memory no region reaches, and the erase runs each removed element's scalar destructor","mitigation":"guard:player sees the header move only"},{"what":"the timed-bonus element regions are captured from the PRE-CALL element addresses, and the sweep may shrink the vector under them","risk":"low","why":"erase moves data down inside the same buffer and only lowers _Mylast, so the addresses stay valid and readable. Elements past the new _Mylast are compared as stale bytes; `bonus_header` is the region that carries the count, and ours writes the same stale tail the original leaves","mitigation":"region:bonus_header"},{"what":"replace mode is refused for this hook","risk":"medium","why":"ours models the driver's own writes and none of ComputeBudget, ProcessResearch, ProcessSpecialProjects or the raid-target prune. A replace run would leave a player in a state no code path produces, and there is therefore no oracle layer behind this compare","mitigation":""}]}},"Game::StrategyServer::MoveFleet":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"on arrival: dispatches SEFleetArrived and runs one of three arrival handlers by destination kind (enter system / join fleet / stop at point)","risk":"high","why":"declared input boundary -- an arriving call is expected to differ in all of it, and none of it is declared, so the compare says nothing about arrivals","mitigation":"guard:fleet sees the fleet's own words; the event and the system do not"},{"what":"on departure: cancels every still-acting ship (with a log line each) and calls ServerSystem::FleetDeparts, which rewrites the system's ownership bits","risk":"high","why":"writes through pointers to ships and to the system","mitigation":""},{"what":"the tanker top-up refuels other ships in the fleet","risk":"medium","why":"the per-ship range regions would show it, but ours does not model it, so a fleet with a tanker diverges for a known reason","mitigation":""},{"what":"a node-line waypoint's step comes from the stutter profile","risk":"medium","why":"NodeLineStep / BuildStutterSegments are written and unit-tested but not wired in; the hook steps every waypoint type as speed x dt, so a node-line leg is knowingly mis-stepped and only its type is recorded","mitigation":"declared gap: docs/B4.md"},{"what":"a missed probabilistic jump scatters the fleet in a random direction","risk":"medium","why":"the direction is a second draw whose mapping is not modelled; ours leaves the position alone and reports the scatter distance, so the generator region diverges by one word on a miss","mitigation":""},{"what":"the route revalidation and the waypoint list itself","risk":"medium","why":"declared input boundary; the waypoint vector is not a region","mitigation":""}]}},"Game::StrategyServer::ProcessFleetMovement":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"`ours` re-reads the LIVE fleet list after the original has run","risk":"high","why":"the gate-traffic total is computed by the original at the very end of the pass, so a pre-call snapshot would diverge for the wrong reason. It breaks the compare invariant that ours never touches live memory, and it makes this hook's verdict partly self-fulfilling: the input to our arithmetic is the original's own post-move state","mitigation":""},{"what":"drives MoveFleet up to five times per fleet","risk":"high","why":"every undeclared effect of MoveFleet happens inside this call too; the pass schedule is recorded in the arguments but never compared","mitigation":""},{"what":"writes FPdpos into every fleet and clears flags 0x2 and 0x100 on every fleet","risk":"high","why":"no region covers the fleets, only the players' gate-traffic words","mitigation":""},{"what":"OnFleetArrived posts EVENT_FLEET_ARRIVED","risk":"high","why":"the same class of write as B3's defect, and there is no replace mode for this hook, so nothing behind the compare could catch it either","mitigation":""},{"what":"the original accumulates by player->index but writes back by the player's position in the server vector, into a fixed 32-int array with no bounds check","risk":"medium","why":"a real latent bug in the original that our side reproduces only while index == position; the reference save never separates them","mitigation":""},{"what":"PassSchedule() is never called by the hook, and FleetSummary::targetFleetId / relation are never filled","risk":"medium","why":"the header claims ours predicts the call order for a trace to check; that prediction is not actually emitted","mitigation":""}]}},"Game::StrategyHost::Autosave":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the whole save write: four path buffers, the ENDTURN pair removal, the backup rotation, the per-player connection detach/reattach, and SaveGame_WriteFile 0x00877070 itself","risk":"low","why":"this hook exists to timestamp the generator at the two moments the two save files are written. It is a marker and models nothing","mitigation":"region:rng only"},{"what":"the generator is reached through a CACHED StrategyServer pointer, not from this call's own arguments","risk":"medium","why":"`this` is the global at 0x00b29f98, hardcoded by both call sites, and no argument here names the server. On the first pre-turn autosave after a load no turn driver has run yet, so the cache is empty and that record carries no ledger position -- the FIRST BRACKET OF A SESSION IS INCOMPLETE BY CONSTRUCTION and must not be read as a zero-cost turn","mitigation":"arg:server_cached / host_plus_0x54 / server_agrees say which pointer was used and whether the +0x54 candidate is the same object"}]}},"Game::StrategyServer::ProcessTurn":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"no model of the turn's RNG cost: 32 phases, each of which may draw","risk":"high","why":"ProcessResearch's completion roll, RollResearchAccident's NextInt(100), the ResearchRollPending roll (one word, or two on the plague path), and whatever ProcessStations / ProcessSurrenders / ProcessMissions / ProcessSpecialProjects spend -- none of which has ever been measured. `ours` predicts nothing and the record reports the measurement","mitigation":"region:rng measures the total; the per-phase split is not resolved here"},{"what":"this hook takes the address the fpu module also wants to sample","risk":"low","why":"MinHook allows one hook per target. `fpu.sample_turn=off` releases StrategyServer::ProcessTurn so this hook can install; with it on, this hook fails to install and the trace is missing half the ledger","mitigation":"shim.log records the MH_CreateHook status for both"}]}},"Game::StrategyServer::OnAllCombatDone_Tail":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"36 phases, of which two can draw and neither is modelled here","risk":"high","why":"phase 6 reaches the unread 7499-byte combat resolver 0x007d5af0 (NextInt on the node-cannon path, Twist plus NextInt on the salvage path) and phase 11 draws one word per expired node line. `predict_nodeline_words` covers only the second, and the nested ApplyEncounterResult / NodeLineDecay hooks are what attribute the split","mitigation":"region:rng plus the two nested hooks"},{"what":"whether this handler runs on a turn with NO combat is what this hook is here to settle, and until it has run it is a hypothesis","risk":"medium","why":"combat-done-tail.md \u00c2\u00a76 infers it from the determinism note -- the post-turn autosave appears on every End Turn and this handler is its only reachable caller -- not from the instruction stream","mitigation":"arg:encounters says how many encounters this call saw; a call with 0 settles it"}]}},"Game::StrategyServer::ApplyEncounterResult":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the combat resolver 0x007d5af0 (7499 B) is completely unread","risk":"high","why":"this hook measures what its subtree spends and models none of it. Nothing about combat determinism can be settled until that function is read; this only puts a number on the hole","mitigation":"region:rng measures the subtotal"},{"what":"the ~0xea0-byte combat report, the CombatReport list append at S+0x1fc, the ClientEncounterResults push into S+0x2f4, the per-ship turn stamps and the pairwise engagement bits","risk":"medium","why":"all of it is game state this hook does not declare and does not check","mitigation":""}]}},"Game::StrategyServer::NodeLineDecay":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the collapse itself: 0x007a92e0 (690 B) and 0x007a4700 (2244 B) destroy or halt fleets and post EVENT_NODEDECAY_FLEET_DESTROYED_VIANODE / _HALTED / _HALTED_VIANODE, and loop 3 posts two more decay-stage events","risk":"high","why":"ours advances the generator and writes nothing else. In compare mode that is the intent -- the check is the word count -- but it means a clean verdict here says nothing about which lines actually collapsed","mitigation":"region:rng only"},{"what":"the draw-count model is verified by a DIRECT-call sweep of the downstream pair; their subtrees contain unresolved indirect call sites","risk":"medium","why":"if one of those vtable slots reaches a generator, the measured delta will exceed `predict_words` and this hook will diverge -- which is the correct outcome, and the reason the prediction is recorded as an argument","mitigation":"arg:predict_words vs region:rng is exactly that check"},{"what":"the expiry formula reproduces a signed idiv on nptf/npdtf without knowing whether nptf can be negative","risk":"low","why":"the original never sign-checks the traffic accumulator. The model truncates toward zero the same way; if the field is always non-negative the question never arises, and no save has been observed with a negative one","mitigation":""}]}},"Game::StrategyServer::ProcessNodeSpaceTravel":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"2945 bytes of node-space movement, entirely unmodelled and never swept for RNG by any lane","risk":"medium","why":"it is hooked here only because it runs TWICE a turn -- ProcessTurn phase 7 and tail phase 10 -- so a draw inside it would be double-counted by anyone modelling it once. The record says whether it draws at all","mitigation":"region:rng"}]}},"Game::EncounterDetect::AssignContacts":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the contact-to-detector assignment itself, and the two-pass outer loop","risk":"medium","why":"this hook exists because the draw here is INLINED and therefore invisible to every call-graph sweep and to the entry-point detours -- it is the one site in ProcessTurn's closure that neither instrument can see. It measures the word cost of the whole call and models nothing","mitigation":"region:rng; arg:detectors/contacts/max_trials bound the expected count"},{"what":"the per-trial threshold is 0.25f or 0.0f depending on two tech lookups, and the accept test short-circuits the inner loop","risk":"low","why":"so the measured cost is between |contacts| and |contacts| x |detectors| and the exact number depends on tech state this hook does not read","mitigation":"arg:max_trials is the upper bound only"}]}},"Game::EncounterDetect::ProcessTeamRecord":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the whole body of ProcessTeamRecord: the gate call, the two vector builds and the bucket construction","risk":"medium","why":"this hook measures the word cost of the call and recomputes three integers the original derives from the same record. It models none of the work and asserts nothing about the contact assignment","mitigation":"region:rng; arg:gate/pred_contacts/pred_detectors are a prediction, not a check"},{"what":"`+0xfc` and `+0xfb` are read as BYTES, following lane I's reading of the classifier functions","risk":"medium","why":"if either is really a wider field, every count here is wrong in the same direction and no cross-check inside this hook would notice. So the dword at +0xfc is read as well and any row where the two disagree is COUNTED, not silently resolved -- a non-zero disagreement count means the byte reading is unsafe on this workload","mitigation":"arg:fc_byte_vs_dword_disagreements; arg:entry_flags carries the raw values"},{"what":"an entry whose object pointer is unreadable is skipped","risk":"low","why":"it is not counted into any of the three classes, so entries != contacts + detectors + neither is the signal that this happened","mitigation":"arg:entries against the three class counts"}]}}}}} +{"ts":254496680,"hook":"Mars::RNG::Seed","mode":"trace","call_id":0,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"u32","v":0,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x0dfacf10"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":234706624},"mt1":{"t":"u32","v":2231500545},"mt2":{"t":"u32","v":33580288},"mt623_left":{"t":"i32","v":-47493201}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":2443250962},"mt1":{"t":"u32","v":1093594115},"mt2":{"t":"u32","v":1878467924},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":254546291,"hook":"Mars::RNG::Seed","mode":"trace","call_id":1,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x1ea5d750","n":"rng"},{"t":"u32","v":1187448744,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x1ea5d750"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":234657552},"mt1":{"t":"u32","v":1},"mt2":{"t":"u32","v":19},"mt623_left":{"t":"i32","v":1718906990}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":909407005},"mt1":{"t":"u32","v":1454416830},"mt2":{"t":"u32","v":3817770727},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":313146718,"hook":"Mars::RNG::Seed","mode":"trace","call_id":3,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x0dfadd10","n":"rng"},{"t":"u32","v":4121979642,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x0dfadd10"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":868162600},"mt1":{"t":"u32","v":870963304},"mt2":{"t":"u32","v":870963336},"mt623_left":{"t":"i32","v":0}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":1326130201},"mt1":{"t":"u32","v":1954057949},"mt2":{"t":"u32","v":2849525833},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":313171387,"hook":"Game::StrategyApp::RunAI","mode":"trace","call_id":2,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"app"},{"t":"i32","v":32,"n":"player_net_id"},{"t":"str","v":"SavedGames/human-turn15-spyprogram.sav","n":"ai_data"},{"t":"u32","v":0,"n":"personality"},{"t":"u32","v":4121979642,"n":"rng_seed"}],"ret":null,"side":{}} +{"ts":313171590,"hook":"Mars::RNG::Seed","mode":"trace","call_id":5,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x33ef20d0","n":"rng"},{"t":"u32","v":229561593,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x33ef20d0"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":234568288},"mt1":{"t":"u32","v":0},"mt2":{"t":"u32","v":0},"mt623_left":{"t":"i32","v":-492260957}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":657930223},"mt1":{"t":"u32","v":4031172968},"mt2":{"t":"u32","v":3883053145},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":313190139,"hook":"Game::StrategyApp::RunAI","mode":"trace","call_id":4,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"app"},{"t":"i32","v":496,"n":"player_net_id"},{"t":"str","v":"SavedGames/human-turn15-spyprogram.sav","n":"ai_data"},{"t":"u32","v":0,"n":"personality"},{"t":"u32","v":229561593,"n":"rng_seed"}],"ret":null,"side":{}} +{"ts":313190408,"hook":"Mars::RNG::Seed","mode":"trace","call_id":7,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x1ea16d50","n":"rng"},{"t":"u32","v":2825613521,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x1ea16d50"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":872532720},"mt1":{"t":"u32","v":1038879488},"mt2":{"t":"u32","v":3574882313},"mt623_left":{"t":"i32","v":-775555461}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":2847638772},"mt1":{"t":"u32","v":1907547072},"mt2":{"t":"u32","v":2572994614},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":313208424,"hook":"Game::StrategyApp::RunAI","mode":"trace","call_id":6,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"app"},{"t":"i32","v":512,"n":"player_net_id"},{"t":"str","v":"SavedGames/human-turn15-spyprogram.sav","n":"ai_data"},{"t":"u32","v":0,"n":"personality"},{"t":"u32","v":2825613521,"n":"rng_seed"}],"ret":null,"side":{}} +{"ts":354040727,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":8,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"host"},{"t":"ptr","v":"0x00d5fd64","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x00000000","n":"server_cached"},{"t":"ptr","v":"0x03e085e0","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x00000000","n":"rng"},{"t":"null","v":null,"n":"rng_words_in"},{"t":"null","v":null,"n":"rng_left_in"}],"ret":{"t":"ptr","v":"0x00d5fd64"},"side":{}} +{"ts":354105429,"hook":"Game::SVSOSwarmQueen::RegisterHives","mode":"trace","call_id":11,"thread":8860,"depth":2,"args":[{"t":"ptr","v":"0x03ec1560","n":"queen"},{"t":"i32","v":3,"n":"scenario_tag"},{"t":"i32","v":10,"n":"enc_id"},{"t":"i32","v":-1,"n":"hives_in"},{"t":"i32","v":-1,"n":"queens_in"},{"t":"null","v":null,"n":"hives"},{"t":"i32","v":28,"n":"systems"},{"t":"i32","v":0,"n":"systems_tagged"},{"t":"i32","v":0,"n":"predict_new_hives"},{"t":"i32","v":0,"n":"predict_min_words"},{"t":"struct","v":{"rva":{"t":"u32","v":7209476},"ptr":{"t":"u32","v":9553888},"value":{"t":"i32","v":20}},"n":"hive_nextq_lo"},{"t":"struct","v":{"rva":{"t":"u32","v":7209480},"ptr":{"t":"u32","v":9553892},"value":{"t":"i32","v":30}},"n":"hive_nextq_hi"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":353,"n":"rng_words_in"},{"t":"i32","v":271,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":354105691,"hook":"Game::SVSOSwarmQueen::TickHives","mode":"trace","call_id":12,"thread":8860,"depth":2,"args":[{"t":"ptr","v":"0x03ec1560","n":"queen"},{"t":"i32","v":3,"n":"scenario_tag"},{"t":"i32","v":10,"n":"enc_id"},{"t":"i32","v":-1,"n":"hives_in"},{"t":"i32","v":-1,"n":"queens_in"},{"t":"null","v":null,"n":"hives"},{"t":"struct","v":{"rva":{"t":"u32","v":7209488},"ptr":{"t":"u32","v":9553900},"value":{"t":"i32","v":10}},"n":"gate_frame_floor"},{"t":"struct","v":{"rva":{"t":"u32","v":7209512},"ptr":{"t":"u32","v":9372196},"value":{"t":"i32","v":5}},"n":"gate_queen_age"},{"t":"struct","v":{"rva":{"t":"u32","v":7209504},"ptr":{"t":"u32","v":9372188},"value":{"t":"i32","v":3}},"n":"spawn_list_cap"},{"t":"bool","v":false,"n":"predict_gate1_fails"},{"t":"i32","v":0,"n":"predict_words"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":353,"n":"rng_words_in"},{"t":"i32","v":271,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":354105775,"hook":"Game::SVSOSwarmQueen::OnTurnBegin","mode":"trace","call_id":10,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x03ec1560","n":"queen"},{"t":"i32","v":3,"n":"scenario_tag"},{"t":"i32","v":10,"n":"enc_id"},{"t":"i32","v":-1,"n":"hives_in"},{"t":"i32","v":-1,"n":"queens_in"},{"t":"null","v":null,"n":"hives"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":353,"n":"rng_words_in"},{"t":"i32","v":271,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":354105895,"hook":"Game::StrategyServer::BeginProcessTurn","mode":"trace","call_id":9,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"i32","v":15,"n":"turn"},{"t":"i32","v":635,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":-1,"n":"encounters"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":353,"n":"rng_words_in"},{"t":"i32","v":271,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}}},"frame":{"before":{"t":"struct","v":{"value":{"t":"i32","v":15}}},"after":{"t":"struct","v":{"value":{"t":"i32","v":16}}}}}} +{"ts":354108157,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":14,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"i32","v":16,"n":"turn"},{"t":"i32","v":689,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":-1,"n":"encounters"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":353,"n":"rng_words_in"},{"t":"i32","v":271,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":354113044,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":15,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x00d5f238","n":"ctx"},{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"ptr","v":"0x1ea3fb60","n":"record"},{"t":"i32","v":2,"n":"entries"},{"t":"bool","v":false,"n":"gate"},{"t":"i32","v":0,"n":"pred_contacts"},{"t":"i32","v":2,"n":"pred_detectors"},{"t":"i32","v":0,"n":"pred_neither"},{"t":"i32","v":-1,"n":"pred_max_trials"},{"t":"i32","v":2,"n":"fc_byte_vs_dword_disagreements"},{"t":"list","v":[{"t":"struct","v":{"fb":{"t":"u32","v":0},"fc":{"t":"u32","v":0},"fc_dword":{"t":"u32","v":16843008}}},{"t":"struct","v":{"fb":{"t":"u32","v":0},"fc":{"t":"u32","v":0},"fc_dword":{"t":"u32","v":16843008}}}],"n":"entry_flags"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":354113155,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":16,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x00d5f238","n":"ctx"},{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"ptr","v":"0x1ea3fbd4","n":"record"},{"t":"i32","v":2,"n":"entries"},{"t":"bool","v":false,"n":"gate"},{"t":"i32","v":0,"n":"pred_contacts"},{"t":"i32","v":2,"n":"pred_detectors"},{"t":"i32","v":0,"n":"pred_neither"},{"t":"i32","v":-1,"n":"pred_max_trials"},{"t":"i32","v":2,"n":"fc_byte_vs_dword_disagreements"},{"t":"list","v":[{"t":"struct","v":{"fb":{"t":"u32","v":0},"fc":{"t":"u32","v":0},"fc_dword":{"t":"u32","v":16843008}}},{"t":"struct","v":{"fb":{"t":"u32","v":0},"fc":{"t":"u32","v":0},"fc_dword":{"t":"u32","v":16843008}}}],"n":"entry_flags"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":354113256,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":17,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x00d5f238","n":"ctx"},{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"ptr","v":"0x1ea3fc48","n":"record"},{"t":"i32","v":2,"n":"entries"},{"t":"bool","v":false,"n":"gate"},{"t":"i32","v":0,"n":"pred_contacts"},{"t":"i32","v":1,"n":"pred_detectors"},{"t":"i32","v":1,"n":"pred_neither"},{"t":"i32","v":-1,"n":"pred_max_trials"},{"t":"i32","v":2,"n":"fc_byte_vs_dword_disagreements"},{"t":"list","v":[{"t":"struct","v":{"fb":{"t":"u32","v":0},"fc":{"t":"u32","v":0},"fc_dword":{"t":"u32","v":16843008}}},{"t":"struct","v":{"fb":{"t":"u32","v":1},"fc":{"t":"u32","v":0},"fc_dword":{"t":"u32","v":16842752}}}],"n":"entry_flags"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":354113318,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":13,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":16,"n":"turn"},{"t":"i32","v":688,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":-1,"n":"encounters"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":353,"n":"rng_words_in"},{"t":"i32","v":271,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":271},"index":{"t":"i32","v":353},"block":{"t":"i32","v":0},"words":{"t":"i64","v":353},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":463647858,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":19,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"ptr","v":"0x1ea3fb60","n":"encounter"},{"t":"ptr","v":"0x0dff5bd8","n":"result"},{"t":"u8","v":0,"n":"res_no_battle"},{"t":"u8","v":0,"n":"res_peaceful"},{"t":"u8","v":0,"n":"res_surrendered"},{"t":"i32","v":16,"n":"turn"},{"t":"i32","v":690,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":3,"n":"encounters"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":463648203,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":20,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"ptr","v":"0x1ea3fbd4","n":"encounter"},{"t":"ptr","v":"0x0dff5d50","n":"result"},{"t":"u8","v":0,"n":"res_no_battle"},{"t":"u8","v":0,"n":"res_peaceful"},{"t":"u8","v":0,"n":"res_surrendered"},{"t":"i32","v":16,"n":"turn"},{"t":"i32","v":691,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":3,"n":"encounters"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":463648483,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":21,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"ptr","v":"0x1ea3fc48","n":"encounter"},{"t":"ptr","v":"0x0dff5ec8","n":"result"},{"t":"u8","v":0,"n":"res_no_battle"},{"t":"u8","v":0,"n":"res_peaceful"},{"t":"u8","v":0,"n":"res_surrendered"},{"t":"i32","v":16,"n":"turn"},{"t":"i32","v":692,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":3,"n":"encounters"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":463648654,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":22,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"i32","v":16,"n":"turn"},{"t":"i32","v":692,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":463648777,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":23,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"i32","v":16,"n":"turn"},{"t":"i32","v":692,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"i32","v":51,"n":"node_paths"},{"t":"i32","v":51,"n":"np_permanent"},{"t":"i32","v":0,"n":"np_immortal"},{"t":"i32","v":0,"n":"np_mortal"},{"t":"i32","v":-1,"n":"np_min_life"},{"t":"i32","v":0,"n":"np_within5"},{"t":"i32","v":0,"n":"predict_words"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":463648999,"hook":"Game::SVSOSlaversRefuel::UpdateDifficultyTier","mode":"trace","call_id":24,"thread":8860,"depth":1,"args":[{"t":"ptr","v":"0x03ec1248","n":"slavers"},{"t":"i32","v":16,"n":"frame"},{"t":"i32","v":0,"n":"cdiff_in"},{"t":"list","v":[{"t":"i32","v":1},{"t":"i32","v":50},{"t":"i32","v":100}],"n":"thresholds"},{"t":"str","v":"no_store_unchanged","n":"predict_path"},{"t":"null","v":null,"n":"predict_cdiff_out"},{"t":"i32","v":0,"n":"predict_words"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"cdiff":{"before":{"t":"struct","v":{"value":{"t":"i32","v":0}}},"after":{"t":"struct","v":{"value":{"t":"i32","v":0}}}},"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":463651346,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":18,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x0dfd5380","n":"server"},{"t":"ptr","v":"0x343fac54","n":"results"},{"t":"i32","v":3,"n":"result_count"},{"t":"i32","v":16,"n":"turn"},{"t":"i32","v":689,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":3,"n":"encounters"},{"t":"i32","v":51,"n":"node_paths"},{"t":"i32","v":51,"n":"np_permanent"},{"t":"i32","v":0,"n":"np_immortal"},{"t":"i32","v":0,"n":"np_mortal"},{"t":"i32","v":-1,"n":"np_min_life"},{"t":"i32","v":0,"n":"np_within5"},{"t":"i32","v":0,"n":"predict_nodeline_words"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":463709192,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":25,"thread":8860,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"host"},{"t":"ptr","v":"0x00d5fb54","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0dfd5380","n":"server_cached"},{"t":"ptr","v":"0x03e085e0","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0dfacf10","n":"rng"},{"t":"i64","v":355,"n":"rng_words_in"},{"t":"i32","v":269,"n":"rng_left_in"},{"t":"list","v":[{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":3489164},"calls":{"t":"u32","v":18},"words":{"t":"u32","v":0},"no_draw_calls":{"t":"u32","v":18},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":1603725},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":4775764},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":4596394},"calls":{"t":"u32","v":7},"words":{"t":"u32","v":11},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":3093783},"calls":{"t":"u32","v":53},"words":{"t":"u32","v":67},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":3053400},"calls":{"t":"u32","v":642},"words":{"t":"u32","v":642},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":5139977},"calls":{"t":"u32","v":1870},"words":{"t":"u32","v":1870},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":3126945},"calls":{"t":"u32","v":1867},"words":{"t":"u32","v":1867},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":3081184},"calls":{"t":"u32","v":24},"words":{"t":"u32","v":27},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":1272421},"calls":{"t":"u32","v":2},"words":{"t":"u32","v":2},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":1546517},"calls":{"t":"u32","v":3},"words":{"t":"u32","v":3},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":1543445},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":2743342},"calls":{"t":"u32","v":3},"words":{"t":"u32","v":3},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}}],"n":"draw_sites"},{"t":"u32","v":2,"n":"draw_site_words"},{"t":"u32","v":20,"n":"draw_site_calls"},{"t":"u32","v":4493,"n":"draw_site_words_other_rng"},{"t":"u32","v":4472,"n":"draw_site_calls_other_rng"},{"t":"u32","v":0,"n":"draw_site_overflow"},{"t":"list","v":[{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerSpyManager::vslot13"},"rva":{"t":"u32","v":4749232},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerSpyManager::vslot14"},"rva":{"t":"u32","v":4774784},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManagerImpl::vslot13"},"rva":{"t":"u32","v":4779904},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManagerImpl::vslot15"},"rva":{"t":"u32","v":4377760},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::SpyManager::Slot13RngCallee"},"rva":{"t":"u32","v":4458720},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::TradeManager::Slot13RngCalleeA"},"rva":{"t":"u32","v":4328608},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::TradeManager::Slot13RngCalleeB"},"rva":{"t":"u32","v":4764736},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManager::CreateRaidEncounter"},"rva":{"t":"u32","v":4798624},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManager::GenerateTradeRaidEncounters"},"rva":{"t":"u32","v":4797072},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerSpyManager::vslot15 [control]"},"rva":{"t":"u32","v":4751152},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManagerImpl::vslot14 [control]"},"rva":{"t":"u32","v":4559056},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::EncounterDetect::Run [control]"},"rva":{"t":"u32","v":3977344},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":false}}}],"n":"probe_entries"}],"ret":{"t":"ptr","v":"0x00d5fb54"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":269},"index":{"t":"i32","v":355},"block":{"t":"i32","v":0},"words":{"t":"i64","v":355},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} diff --git a/verify/traces/ac-probe-turn21-turn23.jsonl b/verify/traces/ac-probe-turn21-turn23.jsonl new file mode 100644 index 0000000..d0fd1c0 --- /dev/null +++ b/verify/traces/ac-probe-turn21-turn23.jsonl @@ -0,0 +1,35 @@ +{"meta":{"format":1,"build":"ac-7e726b9-20260909T0017Z","exe_sha256":"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841","started":"2026-09-09T01:05:37Z","inline_max":64,"hooks":{"Shim::SelfTest::Fill":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"complete","why":"Fill writes buf[0..n) and nothing else; the whole range is a declared region","unmodelled":[]}},"Mars::GlobalConsts::LoadFile":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"erases each consumed key from the caller's std::map","risk":"medium","why":"the map is a LoadAll temporary; declaring a red-black tree as a region is not possible before the call. First-occurrence-wins is reproduced in game::config::apply instead, so the *effect* is modelled, the container is not","mitigation":"LoadAll's post-state would have to be hooked to see it"},{"what":"writes three kinds of line to the game log (unrecognised key, applied key, expected-but-not-found)","risk":"low","why":"log text is not part of the simulation state","mitigation":""},{"what":"opens the file through the VFS and allocates/releases a refcounted buffer","risk":"low","why":"ours performs the same two calls, so allocation behaviour matches by construction rather than by comparison","mitigation":""},{"what":"String slots assign through the engine's own std::string, leaking one heap block per long string in compare mode","risk":"low","why":"start-up only; documented in docs/M1.md","mitigation":""}]}},"Game::ServerPlayer::ComputeBudget":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"slots 1, 2, 3, 4, 7 and 11 are produced by callees this milestone does not model (per-system output, trade, ship-carried population, a second manager, the build-queue spend)","risk":"high","why":"they are copied out of the original's own output and back into the same slots, so they match BY CONSTRUCTION and prove nothing","mitigation":"declared input boundary; see budget_inputs.h"},{"what":"ServerSystem::ComputeOutput repairs damaged ships in orbit","risk":"high","why":"replace mode runs the original a second time on a scratch Budget to harvest the six unmodelled slots, so that repair happens TWICE per turn in replace mode and nothing in the trace would show it","mitigation":"guard:budget_object does not reach the ships; unverified"},{"what":"the difficulty-mods row still DRIVES `ours` as two fitted constants","risk":"low","why":"the old note here said the row was 'not reachable from a ServerPlayer'. That was wrong: the record is at ServerPlayer+0x36c and every consumer calls DifficultyMods_Select(p->+0x36c, p). Lane L5 now snapshots it and emits it as `inputs.live_difficulty` alongside the fitted pair, so a run SHOWS whether the fit is right instead of assuming it. `ours` was deliberately left on the fitted constants so that this run is evidence about them; switching it over is the next lane's one-line change","mitigation":"logged as `inputs.live_difficulty` on every record"},{"what":"three of the four float widths this routine turns on are unexercised by any reference turn","risk":"medium","why":"the savings-interest rate is a widened 0.01f and its boundary IS in the corpus (a treasury of 50,000 earns 499, not 500). The research yield factor is a widened 0.85f whose boundary needs a research money that is a multiple of 40,000, and the three research modifiers are summed in SINGLE precision, which needs two of them non-zero -- the corpus has shrm = TRM = 0. So a green compare here verifies one of the three and says nothing about the other two","mitigation":"the record carries `inputs.live_consts` so the widths are readable, and tests/game_sim/test_economy.cpp pins all three at their boundaries"},{"what":"the research-allocation vector's heap block","risk":"low","why":"only the element count is compared; the three words are heap pointers the default policy ignores","mitigation":""}]}},"Game::WeaponDictionary::Init":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"LoadWeapon -> WeaponDef::ParseScript registers each weapon's name with the string table and resolves `requires` against the live TechTree","risk":"high","why":"per-file parsing is M3 scope; ours delegates to the game's own LoadWeapon, so a compare run performs the registration a SECOND time and neither the string table nor the tech tree is a declared region","mitigation":"suspected cause of the sibling section hook's compare crash (docs/M2.md)"},{"what":"allocates 123 WeaponDef objects (0x278 bytes each) on the game heap","risk":"low","why":"the definitions do not exist when the hook is entered, so they cannot be a before-snapshot; the dictionary region compares them by id/name/path","mitigation":""},{"what":"the word at dictionary+0x14","risk":"low","why":"not modelled; emitted as an opaque pointer, which the default policy ignores -- a change is visible in a trace but never a divergence","mitigation":"guard:dict"},{"what":"writes lines to the game log for a missing manifest","risk":"low","why":"log text is not simulation state","mitigation":""},{"what":"std::sort tie order for equal weapon names","risk":"low","why":"msvc_sort.h replays MSVC 2010's introsort, but the shipped data has no tied names, so the tie rule is unexercised rather than verified","mitigation":""}]}},"Game::SectionDictionary::SectionDictionary":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"LoadSection registers each section with the string table and the live TechTree, and may append to the dictionary's own vector","risk":"high","why":"M3 scope; ours delegates to the game's LoadSection after the original has already built all 885 definitions, so the second pass registers duplicates -- the leading hypothesis for this hook's compare-mode crash","mitigation":"see docs/M2.md; compare mode for this hook is not safe to run"},{"what":"post-load validation pass over every definition's @-token against the string table","risk":"medium","why":"runs after the loop and touches no declared region","mitigation":""},{"what":"allocates 885 SectionDef objects (0x3d8 bytes each) on the game heap","risk":"low","why":"they do not exist at hook entry; compared by index/species/id/token","mitigation":""},{"what":"the word at dictionary+0x14","risk":"low","why":"not modelled; emitted as an ignored pointer","mitigation":"guard:dict"},{"what":"the before-snapshot of the object is uninitialised heap","risk":"medium","why":"the hook is on the constructor, so `before` is meaningless and only `after` carries information","mitigation":""}]}},"Game::TechTree::ProcessResearch":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"posts EVENT_RESEARCH_OVERBUDGET on the owner's EventStorage: ours reproduces the decision and the id sequence, so region:events compares next_id, but the composed EvDsc/EvMsg text is not reproduced and no region can see it","risk":"medium","why":"text comes from the game's string table, which the engine must not carry; ours posts into its own EventStorage and writes only the counts into the scratch copy, so no live byte moves and replace mode posts nothing at all","mitigation":"region:events"},{"what":"composes EVENT_TECHS_UNLOCKED's message from the unlocked techs' names","risk":"low","why":"the trigger and the list are modelled (SetResearched's availability sweep plus the tail collector, both read off the instruction stream), so region:events compares next_id; the names come from the game's string table, so the message is composed from node indices instead and is not the game's text","mitigation":"region:events"},{"what":"TechTree::SetResearched in REPLACE mode: nothing of it runs","risk":"high","why":"the cascade is compare-mode only. In replace mode every pointer is live game memory, and applying half of OnTechResearched -- the observed-tech append and the research-event roll, but not the tech-effect field writes -- would leave the player in a state no code path produces. A replace run therefore still leaves the completed node unstamped and no tech unlocked","mitigation":"guard:player, guard:tree_header"},{"what":"ServerPlayer::OnTechResearched's tech effects: the ~90 hard-coded ServerPlayer field writes, the plague-cure masks, the design-option bitmasks and the species tech flags","risk":"high","why":"B2's milestone. `ours` models only the two parts of the callback this hook's regions can see -- the observed-tech append and the RNG word RollResearchEvent draws before its branch (one word on a missed roll, two on a fired plague roll) -- and the rest is what the player guard reports","mitigation":"guard:player"},{"what":"the research-event branch RollResearchEvent takes when its roll beats the odds (ServerPlayer::OnResearchRollSucceeded: the plague and AI-rebellion event paths)","risk":"high","why":"RollResearchEvent draws one NextFloat unconditionally and that draw IS modelled -- but that is only the cost of REACHING the branch. A FIRED roll costs one or two words: the plague path draws a SECOND word (NextInt) to pick an owned system and posts EVENT_PLAGUE_OUTBREAK, while the rebellion path allocates an AIRebellion at ServerPlayer+0x3b8 and CANCELS the current research (no further draw). The branch is entered only for the plague and AI-rebellion tech families, whose odds are 0 everywhere else, and it has never been observed firing in three sessions -- which is why every earlier note in this repo said 'exactly one NextFloat' and nothing caught it. If it is ever entered, region:rng is the check","mitigation":"region:rng"},{"what":"constructs the ObservedTech element it appends to ServerPlayer+0x274","risk":"medium","why":"`ours` models the append DECISION -- RecordObservedTech de-duplicates by tech name, so it decides whether the vector grows -- and moves the scratch header's byte span by one 0x2c element per append. The element's own fields (turn_first, turn_last, detected, the name string, `with`) are not built, and no region can see them","mitigation":"region:observed_techs"},{"what":"the tree's completion-order counter (TechTree+0x20) is read pre-call, not modelled as a region","risk":"low","why":"the per-node `order` word IS compared, and it is stamped from a counter `ours` seeds from the pre-call read and advances itself; the counter's own final value is only seen by the tree_header guard","mitigation":"guard:tree_header"},{"what":"writes a completion line to the game log","risk":"low","why":"log text is not simulation state","mitigation":""}]}},"Game::ServerPlayer::OnTechResearched":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"posts EVENT_RESEARCH_COMPLETE / _UNDERBUDGET / _TEMPERANCE on the owner's EventStorage when !silent","risk":"high","why":"the same class of write as B3's defect, and this hook has no replace-mode oracle that could catch it: gotcha 4 in docs/B2.md says a changed save hash on a completion turn is expected and therefore not a finding","mitigation":"guard:player (EventStorage is inline at ServerPlayer+0x29c)"},{"what":"writes every owned system's AI flag (CCC_AIVrus / CCC_AISlv), re-evaluates the arcology civilian cap, cures addiction and clears plague across systems AND ships","risk":"high","why":"writes through pointers to other objects; compare mode must not touch live state, and no region reaches them","mitigation":""},{"what":"the pending plague-cure roll (ServerPlayer::RollResearchEvent)","risk":"high","why":"it draws one word from the strategic generator unconditionally, and a SECOND word (NextInt) when the roll beats the odds and takes the plague path -- which also posts EVENT_PLAGUE_OUTBREAK, while the rebellion path cancels the research. So a fired roll costs one or two words, not one; running it in compare mode would consume real randomness. The two words it guards are still cleared and the record says whether it would have fired","mitigation":"this is the extra draw B3 observed on a completion"},{"what":"TechTree::SetResearched for the Zuul boarding-pod grant","risk":"medium","why":"it would mutate the live tree, and it recurses","mitigation":""},{"what":"allocates or frees the node-bore block at ServerPlayer+0x308","risk":"medium","why":"ours has no allocator the game's runtime could free, so replace mode calls the game's own updater -- which means replace mode never exercises our node-bore selection at all","mitigation":"region:node_bore, declared only when the block already exists"}]}},"Game::ServerSystem::ProcessTurn":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"the addiction sweep raises MoraleEvents, which are constructed and appended to the system's capped morale history","risk":"high","why":"the same class of write as B3's defect. sim::ProcessColonyTurn does compute the morale events (ColonyTurnResult), but the hook never emits them: DescribeMoraleEvents is dead code, so they are neither compared nor logged","mitigation":"guard:system"},{"what":"every callee: the plague pass, imperial and civilian growth, the resource debit, in-orbit refuel, slaves, rebellion and the build queue","risk":"high","why":"declared input boundary -- ProcessTurn is a dispatcher and only the words it writes itself are modelled. The callees raise EVENT_SLAVES_DEAD, EVENT_SYSTEM_REBELLION_CONTINUES, the plague events and SEBuildCompleted, create ships and bump per-player ShipRecords counters","mitigation":"guard:system covers the system object only, not the other objects"},{"what":"ApplyInfraBonus / ApplyPopBonus read the owner's home-system id, and the build queue writes the owning ServerPlayer","risk":"medium","why":"writes through a pointer to another object; no region reaches the player","mitigation":""},{"what":"ProcessRebellion is the pass's only RNG consumer and its draw count is data-dependent","risk":"low","why":"the generator IS a declared region, so a moved post-state is visible and names the system whose rebellion fired -- it is reported, not modelled","mitigation":""},{"what":"replace mode is refused for this hook","risk":"medium","why":"our side models the dispatcher's own writes and none of the callees, so a replace run would silently skip a colony's whole turn. There is therefore no oracle layer behind the compare for this hook","mitigation":""}]}},"Game::ServerSystem::GroupOutput":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"the imperial and civilian output modifiers, the 1.8 factor and the 500000 divisor are literals inside the executable, so nothing about them is assumed from the data files","unmodelled":[{"what":"the station count that scales the imperial term","risk":"high","why":"the original gets it from a helper that walks the system's fleets and their ships through virtual calls and takes the system in EBX, which a hook cannot call portably. `ours` therefore assumes ZERO stations. A divergence on an imperial row is expected to be exactly the station factor, and the record carries `count` and the return, so the factor is MEASURED from the trace rather than fitted","mitigation":"declared input boundary; the trace makes it recoverable"},{"what":"the slave row's output modifier, and every value the data files supply","risk":"medium","why":"SLAVES_OUTPUT_MOD, the two morale thresholds and their two modifiers, and STATION_BONUS_IMPERIAL_OUTPUT are read out of the live process's globals and logged with every record, so the record says which value drove it","mitigation":"logged as `tuning` on every record"}]}},"Game::ServerSystem::ComputeTotalOutput":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"the station count, as for GroupOutput","risk":"high","why":"`ours` assumes zero stations, so a system with an imperial population and a station diverges by the station factor","mitigation":"declared input boundary"},{"what":"the slave population and its xenotech adjustment","risk":"high","why":"the original's slave count is not a plain field: it runs the count through a per-species xenotech factor. `ours` takes the slave term as ZERO, so any system holding slaves diverges. The record logs the raw group-2 population sums so a divergence can be attributed","mitigation":"declared input boundary"},{"what":"the capacity surplus the civilian term adds for the owner's own species","risk":"medium","why":"the original calls the carrying-capacity helper twice with different out-parameter slots and adds max(0, B - A) to the civilian count; `ours` uses the raw civilian population. The surplus is zero except when the colony is at its cap","mitigation":"declared input boundary"},{"what":"the addiction phase","risk":"low","why":"`ours` assumes it is below 3, so ADDICTION_OUTPUT_MOD never applies; the record logs the system's addiction table length so the case is visible","mitigation":""}]}},"Game::ServerPlayer::ProcessTurn":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"phases 2, 3 and 6 -- the savings apply Sav = SatAdd(budget[0], net), the three aid/trade records copied out of the budget, and the research refund -- are NOT declared and NOT compared","risk":"high","why":"all three are pure functions of ComputeBudget's 22-slot output and of ProcessResearch's overBudget out-parameter, and both live in the original's own stack frame ([ebp-0x90] and [ebp-0x14]). The three ways to reach them are each worse than not having them: call ComputeBudget ourselves (it repairs damaged ships in orbit -- harness-audit #6), read them out of the nested B1/B3 hooks (harness-audit #5, the self-fulfilling compare), or infer them from the observed Sav delta (the same trap). The formulas ARE written and unit-tested in player_turn_inputs.cpp; they are simply not wired into the verdict","mitigation":"guard:player reports Sav, +0xc8 and +0xcc moving"},{"what":"ComputeBudget (0x00863030) itself, including ServerSystem::ComputeOutput, which REPAIRS DAMAGED SHIPS IN ORBIT","risk":"high","why":"B1 is the hook that checks the budget; its ship-repair side effect happens inside this call too, once per system per player per turn","mitigation":"run hook.Game::ServerPlayer::ComputeBudget=compare alongside"},{"what":"TechTree::ProcessResearch and the whole SetResearched / OnTechResearched cascade it can trigger: progress, the completion roll, the 5% decay sweep, the child-unlock cascade, ~90 tech-effect field writes, EVENT_RESEARCH_* and EVENT_TECHS_UNLOCKED","risk":"high","why":"declared input boundary. B3/U own it; this hook reports the pre-call research state and lets the player guard say how much moved","mitigation":"guard:player, and hook.Game::TechTree::ProcessResearch=compare"},{"what":"RollResearchAccident (0x00889dc0) draws Mars::RNG::NextInt(100) whenever the research boost is non-zero, can apply progress loss across EVERY system, and posts EVENT_LABACCIDENT_{SMALL,MEDIUM,LARGE}","risk":"high","why":"it runs before ProcessResearch and gates it entirely. Its draws move the declared `rng` region, so they are visible -- but as an unexplained RNG divergence, not as their cause","mitigation":"region:rng shows the draws; nothing shows the systems it wrote"},{"what":"the ResearchRollPending roll: RollResearchEvent draws one NextFloat, and when it BEATS the odds the plague branch draws a SECOND word (NextInt) and posts EVENT_PLAGUE_OUTBREAK, while the rebellion branch allocates an AIRebellion at ServerPlayer+0x3b8 and cancels the current research","risk":"high","why":"every previous coverage note in this repo says 'exactly one NextFloat'. That is the cost of REACHING the branch; a fired roll costs one or two words. The branch has never been observed firing. `predict_roll` says whether we expected the roll, `region:rng` says what it actually cost, and `roll_flags` says whether ResErrRoll was consumed","mitigation":"region:rng + region:roll_flags + guard:player; ours never rolls"},{"what":"ServerPlayer::ProcessSpecialProjects (0x00840fe0) and, for an AI player, ConstructionSpend (0x00817f90)","risk":"medium","why":"1015 bytes of special-project state, plus the log line \"SpecialProject: %s completed investigation phase\"","mitigation":"guard:player"},{"what":"the EVENT_NO_RESEARCH post at 0x0089168c, which appends to the player's EventStorage (+0x29c) and bumps EvNxID (+0x2b0)","risk":"medium","why":"B3's exact failure mode: a list append outside every Result region. Its condition is fully known (ResT == 0, nothing completed this turn, and at least one state-2 tech exists) but ours posts nothing","mitigation":"guard:player reports the EvNxID bump"},{"what":"PruneRaidTargets (0x00863cf0) erases from the heap vector at +0x338","risk":"low","why":"the vector header is inside the player guard, but its elements are heap memory no region reaches, and the erase runs each removed element's scalar destructor","mitigation":"guard:player sees the header move only"},{"what":"the timed-bonus element regions are captured from the PRE-CALL element addresses, and the sweep may shrink the vector under them","risk":"low","why":"erase moves data down inside the same buffer and only lowers _Mylast, so the addresses stay valid and readable. Elements past the new _Mylast are compared as stale bytes; `bonus_header` is the region that carries the count, and ours writes the same stale tail the original leaves","mitigation":"region:bonus_header"},{"what":"replace mode is refused for this hook","risk":"medium","why":"ours models the driver's own writes and none of ComputeBudget, ProcessResearch, ProcessSpecialProjects or the raid-target prune. A replace run would leave a player in a state no code path produces, and there is therefore no oracle layer behind this compare","mitigation":""}]}},"Game::StrategyServer::MoveFleet":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"on arrival: dispatches SEFleetArrived and runs one of three arrival handlers by destination kind (enter system / join fleet / stop at point)","risk":"high","why":"declared input boundary -- an arriving call is expected to differ in all of it, and none of it is declared, so the compare says nothing about arrivals","mitigation":"guard:fleet sees the fleet's own words; the event and the system do not"},{"what":"on departure: cancels every still-acting ship (with a log line each) and calls ServerSystem::FleetDeparts, which rewrites the system's ownership bits","risk":"high","why":"writes through pointers to ships and to the system","mitigation":""},{"what":"the tanker top-up refuels other ships in the fleet","risk":"medium","why":"the per-ship range regions would show it, but ours does not model it, so a fleet with a tanker diverges for a known reason","mitigation":""},{"what":"a node-line waypoint's step comes from the stutter profile","risk":"medium","why":"NodeLineStep / BuildStutterSegments are written and unit-tested but not wired in; the hook steps every waypoint type as speed x dt, so a node-line leg is knowingly mis-stepped and only its type is recorded","mitigation":"declared gap: docs/B4.md"},{"what":"a missed probabilistic jump scatters the fleet in a random direction","risk":"medium","why":"the direction is a second draw whose mapping is not modelled; ours leaves the position alone and reports the scatter distance, so the generator region diverges by one word on a miss","mitigation":""},{"what":"the route revalidation and the waypoint list itself","risk":"medium","why":"declared input boundary; the waypoint vector is not a region","mitigation":""}]}},"Game::StrategyServer::ProcessFleetMovement":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"`ours` re-reads the LIVE fleet list after the original has run","risk":"high","why":"the gate-traffic total is computed by the original at the very end of the pass, so a pre-call snapshot would diverge for the wrong reason. It breaks the compare invariant that ours never touches live memory, and it makes this hook's verdict partly self-fulfilling: the input to our arithmetic is the original's own post-move state","mitigation":""},{"what":"drives MoveFleet up to five times per fleet","risk":"high","why":"every undeclared effect of MoveFleet happens inside this call too; the pass schedule is recorded in the arguments but never compared","mitigation":""},{"what":"writes FPdpos into every fleet and clears flags 0x2 and 0x100 on every fleet","risk":"high","why":"no region covers the fleets, only the players' gate-traffic words","mitigation":""},{"what":"OnFleetArrived posts EVENT_FLEET_ARRIVED","risk":"high","why":"the same class of write as B3's defect, and there is no replace mode for this hook, so nothing behind the compare could catch it either","mitigation":""},{"what":"the original accumulates by player->index but writes back by the player's position in the server vector, into a fixed 32-int array with no bounds check","risk":"medium","why":"a real latent bug in the original that our side reproduces only while index == position; the reference save never separates them","mitigation":""},{"what":"PassSchedule() is never called by the hook, and FleetSummary::targetFleetId / relation are never filled","risk":"medium","why":"the header claims ours predicts the call order for a trace to check; that prediction is not actually emitted","mitigation":""}]}},"Game::StrategyHost::Autosave":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the whole save write: four path buffers, the ENDTURN pair removal, the backup rotation, the per-player connection detach/reattach, and SaveGame_WriteFile 0x00877070 itself","risk":"low","why":"this hook exists to timestamp the generator at the two moments the two save files are written. It is a marker and models nothing","mitigation":"region:rng only"},{"what":"the generator is reached through a CACHED StrategyServer pointer, not from this call's own arguments","risk":"medium","why":"`this` is the global at 0x00b29f98, hardcoded by both call sites, and no argument here names the server. On the first pre-turn autosave after a load no turn driver has run yet, so the cache is empty and that record carries no ledger position -- the FIRST BRACKET OF A SESSION IS INCOMPLETE BY CONSTRUCTION and must not be read as a zero-cost turn","mitigation":"arg:server_cached / host_plus_0x54 / server_agrees say which pointer was used and whether the +0x54 candidate is the same object"}]}},"Game::StrategyServer::ProcessTurn":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"no model of the turn's RNG cost: 32 phases, each of which may draw","risk":"high","why":"ProcessResearch's completion roll, RollResearchAccident's NextInt(100), the ResearchRollPending roll (one word, or two on the plague path), and whatever ProcessStations / ProcessSurrenders / ProcessMissions / ProcessSpecialProjects spend -- none of which has ever been measured. `ours` predicts nothing and the record reports the measurement","mitigation":"region:rng measures the total; the per-phase split is not resolved here"},{"what":"this hook takes the address the fpu module also wants to sample","risk":"low","why":"MinHook allows one hook per target. `fpu.sample_turn=off` releases StrategyServer::ProcessTurn so this hook can install; with it on, this hook fails to install and the trace is missing half the ledger","mitigation":"shim.log records the MH_CreateHook status for both"}]}},"Game::StrategyServer::OnAllCombatDone_Tail":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"36 phases, of which two can draw and neither is modelled here","risk":"high","why":"phase 6 reaches the unread 7499-byte combat resolver 0x007d5af0 (NextInt on the node-cannon path, Twist plus NextInt on the salvage path) and phase 11 draws one word per expired node line. `predict_nodeline_words` covers only the second, and the nested ApplyEncounterResult / NodeLineDecay hooks are what attribute the split","mitigation":"region:rng plus the two nested hooks"},{"what":"whether this handler runs on a turn with NO combat is what this hook is here to settle, and until it has run it is a hypothesis","risk":"medium","why":"combat-done-tail.md \u00c2\u00a76 infers it from the determinism note -- the post-turn autosave appears on every End Turn and this handler is its only reachable caller -- not from the instruction stream","mitigation":"arg:encounters says how many encounters this call saw; a call with 0 settles it"}]}},"Game::StrategyServer::ApplyEncounterResult":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the combat resolver 0x007d5af0 (7499 B) is completely unread","risk":"high","why":"this hook measures what its subtree spends and models none of it. Nothing about combat determinism can be settled until that function is read; this only puts a number on the hole","mitigation":"region:rng measures the subtotal"},{"what":"the ~0xea0-byte combat report, the CombatReport list append at S+0x1fc, the ClientEncounterResults push into S+0x2f4, the per-ship turn stamps and the pairwise engagement bits","risk":"medium","why":"all of it is game state this hook does not declare and does not check","mitigation":""}]}},"Game::StrategyServer::NodeLineDecay":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the collapse itself: 0x007a92e0 (690 B) and 0x007a4700 (2244 B) destroy or halt fleets and post EVENT_NODEDECAY_FLEET_DESTROYED_VIANODE / _HALTED / _HALTED_VIANODE, and loop 3 posts two more decay-stage events","risk":"high","why":"ours advances the generator and writes nothing else. In compare mode that is the intent -- the check is the word count -- but it means a clean verdict here says nothing about which lines actually collapsed","mitigation":"region:rng only"},{"what":"the draw-count model is verified by a DIRECT-call sweep of the downstream pair; their subtrees contain unresolved indirect call sites","risk":"medium","why":"if one of those vtable slots reaches a generator, the measured delta will exceed `predict_words` and this hook will diverge -- which is the correct outcome, and the reason the prediction is recorded as an argument","mitigation":"arg:predict_words vs region:rng is exactly that check"},{"what":"the expiry formula reproduces a signed idiv on nptf/npdtf without knowing whether nptf can be negative","risk":"low","why":"the original never sign-checks the traffic accumulator. The model truncates toward zero the same way; if the field is always non-negative the question never arises, and no save has been observed with a negative one","mitigation":""}]}},"Game::StrategyServer::ProcessNodeSpaceTravel":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"2945 bytes of node-space movement, entirely unmodelled and never swept for RNG by any lane","risk":"medium","why":"it is hooked here only because it runs TWICE a turn -- ProcessTurn phase 7 and tail phase 10 -- so a draw inside it would be double-counted by anyone modelling it once. The record says whether it draws at all","mitigation":"region:rng"}]}},"Game::EncounterDetect::AssignContacts":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the contact-to-detector assignment itself, and the two-pass outer loop","risk":"medium","why":"this hook exists because the draw here is INLINED and therefore invisible to every call-graph sweep and to the entry-point detours -- it is the one site in ProcessTurn's closure that neither instrument can see. It measures the word cost of the whole call and models nothing","mitigation":"region:rng; arg:detectors/contacts/max_trials bound the expected count"},{"what":"the per-trial threshold is 0.25f or 0.0f depending on two tech lookups, and the accept test short-circuits the inner loop","risk":"low","why":"so the measured cost is between |contacts| and |contacts| x |detectors| and the exact number depends on tech state this hook does not read","mitigation":"arg:max_trials is the upper bound only"}]}},"Game::EncounterDetect::ProcessTeamRecord":{"ftol":0,"ftol_kind":"abs","ptr":"ignore","coverage":{"state":"partial","why":"","unmodelled":[{"what":"everything the original writes except the strategic generator","risk":"high","why":"this hook family measures ONE thing -- how many words the generator advances and where. It declares no region over game state and makes no claim about it. A clean run here says the RNG accounting is right and says nothing whatever about whether the turn was computed correctly","mitigation":"region:rng is the only check; the turn's own correctness is B1/B3/B4's job"},{"what":"the ledger reports WORDS, not draws","risk":"low","why":"a NextInt that rejects three times is four words and one call. Words are the unit that decides whether a save reproduces; they are the wrong unit for counting decisions, and nothing here should be read as a draw count","mitigation":"region:rng carries left/block/words, never a call count"},{"what":"the ledger is deliberately blind to WHICH primitive spent a word","risk":"low","why":"that is the design, and it is why this instrument was preferred to hooking the primitives: the image has FOUR draw entry points (NextFloat 0x0047d830, NextInt 0x004271c0, Chance 0x008e6dd0 and NextUInt 0x004f7670, the last of which appears in no previous lane's primitive set) plus inlined draws in at least twelve functions, two of them reachable from the turn roots. A primitive-counting hook would have silently undercounted every one of those","mitigation":"region:rng reads the state, so an inlined draw is as visible as a called one"},{"what":"a generator position the ledger cannot place reads `words: null`","risk":"medium","why":"a block more than 4096 twists ahead of the frontier, or any state behind the anchor, is reported unknown rather than guessed. A null in a ledger field is a measurement failure and must not be read as zero","mitigation":"region:rng emits null explicitly; tracecmp shows it as a value, not a gap"},{"what":"the whole body of ProcessTeamRecord: the gate call, the two vector builds and the bucket construction","risk":"medium","why":"this hook measures the word cost of the call and recomputes three integers the original derives from the same record. It models none of the work and asserts nothing about the contact assignment","mitigation":"region:rng; arg:gate/pred_contacts/pred_detectors are a prediction, not a check"},{"what":"`+0xfc` and `+0xfb` are read as BYTES, following lane I's reading of the classifier functions","risk":"medium","why":"if either is really a wider field, every count here is wrong in the same direction and no cross-check inside this hook would notice. So the dword at +0xfc is read as well and any row where the two disagree is COUNTED, not silently resolved -- a non-zero disagreement count means the byte reading is unsafe on this workload","mitigation":"arg:fc_byte_vs_dword_disagreements; arg:entry_flags carries the raw values"},{"what":"an entry whose object pointer is unreadable is skipped","risk":"low","why":"it is not counted into any of the three classes, so entries != contacts + detectors + neither is the signal that this happened","mitigation":"arg:entries against the three class counts"}]}}}}} +{"ts":264787847,"hook":"Mars::RNG::Seed","mode":"trace","call_id":0,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"u32","v":0,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x0e595a90"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":524948480},"mt1":{"t":"u32","v":1575750400},"mt2":{"t":"u32","v":3574882313},"mt623_left":{"t":"i32","v":-1220703252}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":2443250962},"mt1":{"t":"u32","v":1093594115},"mt2":{"t":"u32","v":1878467924},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":264852567,"hook":"Mars::RNG::Seed","mode":"trace","call_id":1,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x0e61c178","n":"rng"},{"t":"u32","v":223688769,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x0e61c178"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":241253816},"mt1":{"t":"u32","v":1},"mt2":{"t":"u32","v":20},"mt623_left":{"t":"i32","v":0}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":318924821},"mt1":{"t":"u32","v":3331486974},"mt2":{"t":"u32","v":385036937},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":315082138,"hook":"Mars::RNG::Seed","mode":"trace","call_id":3,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x0e566208","n":"rng"},{"t":"u32","v":3845442934,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x0e566208"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":891422848},"mt1":{"t":"u32","v":877625544},"mt2":{"t":"u32","v":877631536},"mt623_left":{"t":"i32","v":0}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":2332725502},"mt1":{"t":"u32","v":3952806643},"mt2":{"t":"u32","v":3627046270},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":315111035,"hook":"Game::StrategyApp::RunAI","mode":"trace","call_id":2,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"app"},{"t":"i32","v":32,"n":"player_net_id"},{"t":"str","v":"SavedGames/ac-turn20-raider.sav","n":"ai_data"},{"t":"u32","v":0,"n":"personality"},{"t":"u32","v":3845442934,"n":"rng_seed"}],"ret":null,"side":{}} +{"ts":315111229,"hook":"Mars::RNG::Seed","mode":"trace","call_id":5,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x35357700","n":"rng"},{"t":"u32","v":982118132,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x35357700"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":524948896},"mt1":{"t":"u32","v":1},"mt2":{"t":"u32","v":18},"mt623_left":{"t":"i32","v":895337592}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":2466482649},"mt1":{"t":"u32","v":650065833},"mt2":{"t":"u32","v":630193055},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":315143451,"hook":"Game::StrategyApp::RunAI","mode":"trace","call_id":4,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"app"},{"t":"i32","v":496,"n":"player_net_id"},{"t":"str","v":"SavedGames/ac-turn20-raider.sav","n":"ai_data"},{"t":"u32","v":0,"n":"personality"},{"t":"u32","v":982118132,"n":"rng_seed"}],"ret":null,"side":{}} +{"ts":315143620,"hook":"Mars::RNG::Seed","mode":"trace","call_id":7,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x356ca518","n":"rng"},{"t":"u32","v":3757786326,"n":"seed"},{"t":"bool","v":false,"n":"is_strategic_generator"}],"ret":{"t":"ptr","v":"0x356ca518"},"side":{"rng":{"before":{"t":"struct","v":{"mt0":{"t":"u32","v":892698840},"mt1":{"t":"u32","v":1},"mt2":{"t":"u32","v":0},"mt623_left":{"t":"i32","v":1761581361}}},"after":{"t":"struct","v":{"mt0":{"t":"u32","v":96834616},"mt1":{"t":"u32","v":3757455279},"mt2":{"t":"u32","v":265550042},"mt623_left":{"t":"i32","v":624}}}}}} +{"ts":315171184,"hook":"Game::StrategyApp::RunAI","mode":"trace","call_id":6,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"app"},{"t":"i32","v":512,"n":"player_net_id"},{"t":"str","v":"SavedGames/ac-turn20-raider.sav","n":"ai_data"},{"t":"u32","v":0,"n":"personality"},{"t":"u32","v":3757786326,"n":"rng_seed"}],"ret":null,"side":{}} +{"ts":357186363,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":8,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"host"},{"t":"ptr","v":"0x0133f758","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x00000000","n":"server_cached"},{"t":"ptr","v":"0x04298bf8","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x00000000","n":"rng"},{"t":"null","v":null,"n":"rng_words_in"},{"t":"null","v":null,"n":"rng_left_in"}],"ret":{"t":"ptr","v":"0x0133f758"},"side":{}} +{"ts":357232759,"hook":"Game::SVSOSwarmQueen::RegisterHives","mode":"trace","call_id":11,"thread":6764,"depth":2,"args":[{"t":"ptr","v":"0x04342188","n":"queen"},{"t":"i32","v":3,"n":"scenario_tag"},{"t":"i32","v":10,"n":"enc_id"},{"t":"i32","v":-1,"n":"hives_in"},{"t":"i32","v":-1,"n":"queens_in"},{"t":"null","v":null,"n":"hives"},{"t":"i32","v":28,"n":"systems"},{"t":"i32","v":0,"n":"systems_tagged"},{"t":"i32","v":0,"n":"predict_new_hives"},{"t":"i32","v":0,"n":"predict_min_words"},{"t":"struct","v":{"rva":{"t":"u32","v":7209476},"ptr":{"t":"u32","v":9553888},"value":{"t":"i32","v":20}},"n":"hive_nextq_lo"},{"t":"struct","v":{"rva":{"t":"u32","v":7209480},"ptr":{"t":"u32","v":9553892},"value":{"t":"i32","v":30}},"n":"hive_nextq_hi"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":448,"n":"rng_words_in"},{"t":"i32","v":176,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357232999,"hook":"Game::SVSOSwarmQueen::TickHives","mode":"trace","call_id":12,"thread":6764,"depth":2,"args":[{"t":"ptr","v":"0x04342188","n":"queen"},{"t":"i32","v":3,"n":"scenario_tag"},{"t":"i32","v":10,"n":"enc_id"},{"t":"i32","v":-1,"n":"hives_in"},{"t":"i32","v":-1,"n":"queens_in"},{"t":"null","v":null,"n":"hives"},{"t":"struct","v":{"rva":{"t":"u32","v":7209488},"ptr":{"t":"u32","v":9553900},"value":{"t":"i32","v":10}},"n":"gate_frame_floor"},{"t":"struct","v":{"rva":{"t":"u32","v":7209512},"ptr":{"t":"u32","v":9372196},"value":{"t":"i32","v":5}},"n":"gate_queen_age"},{"t":"struct","v":{"rva":{"t":"u32","v":7209504},"ptr":{"t":"u32","v":9372188},"value":{"t":"i32","v":3}},"n":"spawn_list_cap"},{"t":"bool","v":false,"n":"predict_gate1_fails"},{"t":"i32","v":0,"n":"predict_words"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":448,"n":"rng_words_in"},{"t":"i32","v":176,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357233076,"hook":"Game::SVSOSwarmQueen::OnTurnBegin","mode":"trace","call_id":10,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x04342188","n":"queen"},{"t":"i32","v":3,"n":"scenario_tag"},{"t":"i32","v":10,"n":"enc_id"},{"t":"i32","v":-1,"n":"hives_in"},{"t":"i32","v":-1,"n":"queens_in"},{"t":"null","v":null,"n":"hives"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":448,"n":"rng_words_in"},{"t":"i32","v":176,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357233164,"hook":"Game::StrategyServer::BeginProcessTurn","mode":"trace","call_id":9,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"i32","v":21,"n":"turn"},{"t":"i32","v":1008,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":-1,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":448,"n":"rng_words_in"},{"t":"i32","v":176,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}}},"frame":{"before":{"t":"struct","v":{"value":{"t":"i32","v":21}}},"after":{"t":"struct","v":{"value":{"t":"i32","v":22}}}}}} +{"ts":357235294,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":14,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"i32","v":22,"n":"turn"},{"t":"i32","v":1081,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":-1,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":448,"n":"rng_words_in"},{"t":"i32","v":176,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357240325,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":13,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":22,"n":"turn"},{"t":"i32","v":1080,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":-1,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":448,"n":"rng_words_in"},{"t":"i32","v":176,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":176},"index":{"t":"i32","v":448},"block":{"t":"i32","v":0},"words":{"t":"i64","v":448},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357279690,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":16,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"ptr","v":"0x351401f8","n":"encounter"},{"t":"ptr","v":"0x351b0d68","n":"result"},{"t":"u8","v":1,"n":"res_no_battle"},{"t":"u8","v":0,"n":"res_peaceful"},{"t":"u8","v":0,"n":"res_surrendered"},{"t":"i32","v":22,"n":"turn"},{"t":"i32","v":1082,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":1,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":468,"n":"rng_words_in"},{"t":"i32","v":156,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357279853,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":17,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"i32","v":22,"n":"turn"},{"t":"i32","v":1082,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":468,"n":"rng_words_in"},{"t":"i32","v":156,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357279985,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":18,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"i32","v":22,"n":"turn"},{"t":"i32","v":1082,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"i32","v":51,"n":"node_paths"},{"t":"i32","v":51,"n":"np_permanent"},{"t":"i32","v":0,"n":"np_immortal"},{"t":"i32","v":0,"n":"np_mortal"},{"t":"i32","v":-1,"n":"np_min_life"},{"t":"i32","v":0,"n":"np_within5"},{"t":"i32","v":0,"n":"predict_words"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":468,"n":"rng_words_in"},{"t":"i32","v":156,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357280378,"hook":"Game::SVSOSlaversRefuel::UpdateDifficultyTier","mode":"trace","call_id":19,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x043422a8","n":"slavers"},{"t":"i32","v":22,"n":"frame"},{"t":"i32","v":0,"n":"cdiff_in"},{"t":"list","v":[{"t":"i32","v":1},{"t":"i32","v":50},{"t":"i32","v":100}],"n":"thresholds"},{"t":"str","v":"no_store_unchanged","n":"predict_path"},{"t":"null","v":null,"n":"predict_cdiff_out"},{"t":"i32","v":0,"n":"predict_words"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":468,"n":"rng_words_in"},{"t":"i32","v":156,"n":"rng_left_in"}],"ret":null,"side":{"cdiff":{"before":{"t":"struct","v":{"value":{"t":"i32","v":0}}},"after":{"t":"struct","v":{"value":{"t":"i32","v":0}}}},"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357282975,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":15,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"ptr","v":"0x3591b614","n":"results"},{"t":"i32","v":1,"n":"result_count"},{"t":"i32","v":22,"n":"turn"},{"t":"i32","v":1081,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":1,"n":"encounters"},{"t":"i32","v":51,"n":"node_paths"},{"t":"i32","v":51,"n":"np_permanent"},{"t":"i32","v":0,"n":"np_immortal"},{"t":"i32","v":0,"n":"np_mortal"},{"t":"i32","v":-1,"n":"np_min_life"},{"t":"i32","v":0,"n":"np_within5"},{"t":"i32","v":0,"n":"predict_nodeline_words"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":468,"n":"rng_words_in"},{"t":"i32","v":156,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":156},"index":{"t":"i32","v":468},"block":{"t":"i32","v":0},"words":{"t":"i64","v":468},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":357334451,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":20,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"host"},{"t":"ptr","v":"0x0133f548","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0e568a18","n":"server_cached"},{"t":"ptr","v":"0x04298bf8","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":469,"n":"rng_words_in"},{"t":"i32","v":155,"n":"rng_left_in"},{"t":"list","v":[{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":3489164},"calls":{"t":"u32","v":15},"words":{"t":"u32","v":0},"no_draw_calls":{"t":"u32","v":15},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":1603725},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":4775764},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":5139977},"calls":{"t":"u32","v":16},"words":{"t":"u32","v":16},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":4797483},"calls":{"t":"u32","v":8},"words":{"t":"u32","v":8},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":4797720},"calls":{"t":"u32","v":8},"words":{"t":"u32","v":8},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":1061538},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":3746217},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":4328989},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":1546517},"calls":{"t":"u32","v":3},"words":{"t":"u32","v":5},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":5139977},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":1543445},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":2743342},"calls":{"t":"u32","v":3},"words":{"t":"u32","v":3},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}}],"n":"draw_sites"},{"t":"u32","v":37,"n":"draw_site_words"},{"t":"u32","v":52,"n":"draw_site_calls"},{"t":"u32","v":10,"n":"draw_site_words_other_rng"},{"t":"u32","v":8,"n":"draw_site_calls_other_rng"},{"t":"u32","v":0,"n":"draw_site_overflow"},{"t":"list","v":[{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerSpyManager::vslot13"},"rva":{"t":"u32","v":4749232},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerSpyManager::vslot14"},"rva":{"t":"u32","v":4774784},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManagerImpl::vslot13"},"rva":{"t":"u32","v":4779904},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManagerImpl::vslot15"},"rva":{"t":"u32","v":4377760},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::SpyManager::Slot13RngCallee"},"rva":{"t":"u32","v":4458720},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::TradeManager::Slot13RngCalleeA"},"rva":{"t":"u32","v":4328608},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::TradeManager::Slot13RngCalleeB"},"rva":{"t":"u32","v":4764736},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManager::CreateRaidEncounter"},"rva":{"t":"u32","v":4798624},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManager::GenerateTradeRaidEncounters"},"rva":{"t":"u32","v":4797072},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerSpyManager::vslot15 [control]"},"rva":{"t":"u32","v":4751152},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManagerImpl::vslot14 [control]"},"rva":{"t":"u32","v":4559056},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::EncounterDetect::Run [control]"},"rva":{"t":"u32","v":3977344},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":false}}}],"n":"probe_entries"}],"ret":{"t":"ptr","v":"0x0133f548"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443197426,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":21,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"host"},{"t":"ptr","v":"0x0133f758","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x0e568a18","n":"server_cached"},{"t":"ptr","v":"0x04298bf8","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":469,"n":"rng_words_in"},{"t":"i32","v":155,"n":"rng_left_in"}],"ret":{"t":"ptr","v":"0x0133f758"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443242102,"hook":"Game::SVSOSwarmQueen::RegisterHives","mode":"trace","call_id":24,"thread":6764,"depth":2,"args":[{"t":"ptr","v":"0x04342188","n":"queen"},{"t":"i32","v":3,"n":"scenario_tag"},{"t":"i32","v":10,"n":"enc_id"},{"t":"i32","v":-1,"n":"hives_in"},{"t":"i32","v":-1,"n":"queens_in"},{"t":"null","v":null,"n":"hives"},{"t":"i32","v":28,"n":"systems"},{"t":"i32","v":0,"n":"systems_tagged"},{"t":"i32","v":0,"n":"predict_new_hives"},{"t":"i32","v":0,"n":"predict_min_words"},{"t":"struct","v":{"rva":{"t":"u32","v":7209476},"ptr":{"t":"u32","v":9553888},"value":{"t":"i32","v":20}},"n":"hive_nextq_lo"},{"t":"struct","v":{"rva":{"t":"u32","v":7209480},"ptr":{"t":"u32","v":9553892},"value":{"t":"i32","v":30}},"n":"hive_nextq_hi"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":469,"n":"rng_words_in"},{"t":"i32","v":155,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443242259,"hook":"Game::SVSOSwarmQueen::TickHives","mode":"trace","call_id":25,"thread":6764,"depth":2,"args":[{"t":"ptr","v":"0x04342188","n":"queen"},{"t":"i32","v":3,"n":"scenario_tag"},{"t":"i32","v":10,"n":"enc_id"},{"t":"i32","v":-1,"n":"hives_in"},{"t":"i32","v":-1,"n":"queens_in"},{"t":"null","v":null,"n":"hives"},{"t":"struct","v":{"rva":{"t":"u32","v":7209488},"ptr":{"t":"u32","v":9553900},"value":{"t":"i32","v":10}},"n":"gate_frame_floor"},{"t":"struct","v":{"rva":{"t":"u32","v":7209512},"ptr":{"t":"u32","v":9372196},"value":{"t":"i32","v":5}},"n":"gate_queen_age"},{"t":"struct","v":{"rva":{"t":"u32","v":7209504},"ptr":{"t":"u32","v":9372188},"value":{"t":"i32","v":3}},"n":"spawn_list_cap"},{"t":"bool","v":false,"n":"predict_gate1_fails"},{"t":"i32","v":0,"n":"predict_words"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":469,"n":"rng_words_in"},{"t":"i32","v":155,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443242308,"hook":"Game::SVSOSwarmQueen::OnTurnBegin","mode":"trace","call_id":23,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x04342188","n":"queen"},{"t":"i32","v":3,"n":"scenario_tag"},{"t":"i32","v":10,"n":"enc_id"},{"t":"i32","v":-1,"n":"hives_in"},{"t":"i32","v":-1,"n":"queens_in"},{"t":"null","v":null,"n":"hives"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":469,"n":"rng_words_in"},{"t":"i32","v":155,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443242353,"hook":"Game::StrategyServer::BeginProcessTurn","mode":"trace","call_id":22,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"i32","v":22,"n":"turn"},{"t":"i32","v":1082,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":469,"n":"rng_words_in"},{"t":"i32","v":155,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}}},"frame":{"before":{"t":"struct","v":{"value":{"t":"i32","v":22}}},"after":{"t":"struct","v":{"value":{"t":"i32","v":23}}}}}} +{"ts":443243430,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":27,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"i32","v":23,"n":"turn"},{"t":"i32","v":1128,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":469,"n":"rng_words_in"},{"t":"i32","v":155,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443246240,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":26,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":23,"n":"turn"},{"t":"i32","v":1127,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":469,"n":"rng_words_in"},{"t":"i32","v":155,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":155},"index":{"t":"i32","v":469},"block":{"t":"i32","v":0},"words":{"t":"i64","v":469},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443286143,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":29,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"ptr","v":"0x351401f8","n":"encounter"},{"t":"ptr","v":"0x351b02b0","n":"result"},{"t":"u8","v":1,"n":"res_no_battle"},{"t":"u8","v":0,"n":"res_peaceful"},{"t":"u8","v":0,"n":"res_surrendered"},{"t":"i32","v":23,"n":"turn"},{"t":"i32","v":1129,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":1,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":487,"n":"rng_words_in"},{"t":"i32","v":137,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443286284,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":30,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"i32","v":23,"n":"turn"},{"t":"i32","v":1129,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":487,"n":"rng_words_in"},{"t":"i32","v":137,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443286380,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":31,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"i32","v":23,"n":"turn"},{"t":"i32","v":1129,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"i32","v":51,"n":"node_paths"},{"t":"i32","v":51,"n":"np_permanent"},{"t":"i32","v":0,"n":"np_immortal"},{"t":"i32","v":0,"n":"np_mortal"},{"t":"i32","v":-1,"n":"np_min_life"},{"t":"i32","v":0,"n":"np_within5"},{"t":"i32","v":0,"n":"predict_words"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":487,"n":"rng_words_in"},{"t":"i32","v":137,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443286600,"hook":"Game::SVSOSlaversRefuel::UpdateDifficultyTier","mode":"trace","call_id":32,"thread":6764,"depth":1,"args":[{"t":"ptr","v":"0x043422a8","n":"slavers"},{"t":"i32","v":23,"n":"frame"},{"t":"i32","v":0,"n":"cdiff_in"},{"t":"list","v":[{"t":"i32","v":1},{"t":"i32","v":50},{"t":"i32","v":100}],"n":"thresholds"},{"t":"str","v":"no_store_unchanged","n":"predict_path"},{"t":"null","v":null,"n":"predict_cdiff_out"},{"t":"i32","v":0,"n":"predict_words"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":487,"n":"rng_words_in"},{"t":"i32","v":137,"n":"rng_left_in"}],"ret":null,"side":{"cdiff":{"before":{"t":"struct","v":{"value":{"t":"i32","v":0}}},"after":{"t":"struct","v":{"value":{"t":"i32","v":0}}}},"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443289238,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":28,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x0e568a18","n":"server"},{"t":"ptr","v":"0x35671534","n":"results"},{"t":"i32","v":1,"n":"result_count"},{"t":"i32","v":23,"n":"turn"},{"t":"i32","v":1128,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":1,"n":"encounters"},{"t":"i32","v":51,"n":"node_paths"},{"t":"i32","v":51,"n":"np_permanent"},{"t":"i32","v":0,"n":"np_immortal"},{"t":"i32","v":0,"n":"np_mortal"},{"t":"i32","v":-1,"n":"np_min_life"},{"t":"i32","v":0,"n":"np_within5"},{"t":"i32","v":0,"n":"predict_nodeline_words"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":487,"n":"rng_words_in"},{"t":"i32","v":137,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":137},"index":{"t":"i32","v":487},"block":{"t":"i32","v":0},"words":{"t":"i64","v":487},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":136},"index":{"t":"i32","v":488},"block":{"t":"i32","v":0},"words":{"t":"i64","v":488},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}} +{"ts":443337838,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":33,"thread":6764,"depth":0,"args":[{"t":"ptr","v":"0x00939f98","n":"host"},{"t":"ptr","v":"0x0133f548","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0e568a18","n":"server_cached"},{"t":"ptr","v":"0x04298bf8","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0e595a90","n":"rng"},{"t":"i64","v":488,"n":"rng_words_in"},{"t":"i32","v":136,"n":"rng_left_in"},{"t":"list","v":[{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":3489164},"calls":{"t":"u32","v":15},"words":{"t":"u32","v":0},"no_draw_calls":{"t":"u32","v":15},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":5139977},"calls":{"t":"u32","v":16},"words":{"t":"u32","v":16},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":4797483},"calls":{"t":"u32","v":8},"words":{"t":"u32","v":8},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":4797720},"calls":{"t":"u32","v":8},"words":{"t":"u32","v":8},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":1061538},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":3746217},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":4328989},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":1546517},"calls":{"t":"u32","v":3},"words":{"t":"u32","v":4},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":5139977},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"Chance"},"ret_rva":{"t":"u32","v":1543445},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":1},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextInt"},"ret_rva":{"t":"u32","v":2743342},"calls":{"t":"u32","v":3},"words":{"t":"u32","v":3},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}}],"n":"draw_sites"},{"t":"u32","v":35,"n":"draw_site_words"},{"t":"u32","v":50,"n":"draw_site_calls"},{"t":"u32","v":9,"n":"draw_site_words_other_rng"},{"t":"u32","v":8,"n":"draw_site_calls_other_rng"},{"t":"u32","v":0,"n":"draw_site_overflow"},{"t":"list","v":[{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerSpyManager::vslot13"},"rva":{"t":"u32","v":4749232},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":2},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerSpyManager::vslot14"},"rva":{"t":"u32","v":4774784},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":2},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManagerImpl::vslot13"},"rva":{"t":"u32","v":4779904},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":2},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManagerImpl::vslot15"},"rva":{"t":"u32","v":4377760},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":2},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::SpyManager::Slot13RngCallee"},"rva":{"t":"u32","v":4458720},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::TradeManager::Slot13RngCalleeA"},"rva":{"t":"u32","v":4328608},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":2},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::TradeManager::Slot13RngCalleeB"},"rva":{"t":"u32","v":4764736},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManager::CreateRaidEncounter"},"rva":{"t":"u32","v":4798624},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":1},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManager::GenerateTradeRaidEncounters"},"rva":{"t":"u32","v":4797072},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":2},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerSpyManager::vslot15 [control]"},"rva":{"t":"u32","v":4751152},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":2},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::ServerTradeManagerImpl::vslot14 [control]"},"rva":{"t":"u32","v":4559056},"calls":{"t":"u32","v":1},"calls_since_launch":{"t":"u32","v":2},"installed":{"t":"bool","v":true}}},{"t":"struct","v":{"name":{"t":"str","v":"Game::EncounterDetect::Run [control]"},"rva":{"t":"u32","v":3977344},"calls":{"t":"u32","v":0},"calls_since_launch":{"t":"u32","v":0},"installed":{"t":"bool","v":false}}}],"n":"probe_entries"}],"ret":{"t":"ptr","v":"0x0133f548"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":136},"index":{"t":"i32","v":488},"block":{"t":"i32","v":0},"words":{"t":"i64","v":488},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":136},"index":{"t":"i32","v":488},"block":{"t":"i32","v":0},"words":{"t":"i64","v":488},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}