sots-re/verify/traces/l3-probe-turn8-turn15.jsonl
alex 7d51767e87 lane L3: both containers filled, and filling them does not make the tail draw
Three lanes could not build this workload. VM144 built both halves from a cold main
menu on a stock, unmodified install -- no data file touched, no save edited -- and the
answer to the question they were built to ask is no.

TRADE. The premise everyone carried, that trade needs station construction plus its
tech, is wrong about the station: StrategyVars.txt makes a trade station a +2-routes,
+25%-income bonus, and NumTradeRoutesSupported has a floor of 1 per owned system, so
the population thresholds scale the count and do not gate it. The gate is one tech,
CCC_FTLEcon, and Zuul cannot research it at all. 20 routes and 6 trade sectors by
turn 4; 21 by turn 13.

SPY. Lane W3: "no lane has identified which UI produces a spy-program entry." It is
the fleet panel's Special menu, and the reason nobody found it is that the ship a spy
docks with is the Cruiser REPAIR AND SALVAGE mission section -- nothing in the UI
calls it a tender or mentions spies. Prediction S1 holds: the container grows at Build
Spy while the craft is still docked (tdep=-1, atto=<tender>), so no enemy colony and no
asteroid belt are on the critical path, which is what every earlier cost model assumed.

THE MEASUREMENT. With 21 routes, 6 sectors and 1 spy craft live, lane H's eleven entry
probes report the four outer tail callees entered exactly once per turn, as always, and
SpyManager::Slot13RngCallee, TradeManager::Slot13RngCalleeA and CalleeB entered ZERO
times -- this turn and across all seven instrumented turns, every probe installed=true.
The RNG ledger and the standalone's generator model do NOT need extending on account of
either container being non-empty. The next condition is active contents, not present
contents: tsnumflt=0 on every sector and spyon=0 on the spy.

WHAT ELSE FELL OUT. The trade-route vector is torn down and rebuilt every turn inside
ServerTradeManagerImpl::vslot9 (lane V2's phase-23 call 5 of 8, previously "draw-free"
and unexplained) -- an agreement, dropped rather than re-minted, as is the AI2 growth
helper. Two addresses are minted, both trapped live and both `mapped` not `verified`
because ReVa was unreachable: ShipAction_BuildSpy 0x00789620, a sibling of lane B6's
stack-built-fptr-table entry 0x120 bytes away, which is why no call-graph sweep ever
found this writer; and ServerSpyManager_CreateSpyCraft 0x008383c0.

And a correction with teeth: `spies2` is 0 in all 28 systems of a save that DOES have a
spy. The natural reading of lane W's count-0-in-11-saves was "no save has ever had one".
That reading is dead; spies2 is not the spy list, or it only fills for a deployed spy.

The research click path is written down for the first time (§4): clicking a tech node is
a PREVIEW, the bottom-left button confirms, Esc leaves without confirming, and the tree
pans only on a right-drag of about 600 px. That, not the tech cost, is what stopped
three lanes.

Saves: human-turn{5,8}-traderoutes, human-turn11-spytechs, human-turn15-spyprogram --
all --strict clean, 0 errors, 0 warnings.
2026-09-08 19:46:16 -04:00

68 lines
152 KiB
JSON

{"meta":{"format":1,"build":"l3cont2-0117495-20260908T2124Z","exe_sha256":"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841","started":"2026-09-08T22:49:52Z","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 from StrategyServer::GetDifficultyMods","risk":"medium","why":"not reachable from a ServerPlayer, so the two relevant entries are fitted constants measured from the B1 trace rather than snapshotted inputs","mitigation":""},{"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":306016206,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":0,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffd2c","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x00000000","n":"server_cached"},{"t":"ptr","v":"0x043f9630","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":"0x00fffd2c"},"side":{}}
{"ts":306065139,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":2,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":9,"n":"turn"},{"t":"i32","v":284,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":-1,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":221,"n":"rng_words_in"},{"t":"i32","v":403,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":403},"index":{"t":"i32","v":221},"block":{"t":"i32","v":0},"words":{"t":"i64","v":221},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":403},"index":{"t":"i32","v":221},"block":{"t":"i32","v":0},"words":{"t":"i64","v":221},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":306068107,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":1,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":9,"n":"turn"},{"t":"i32","v":283,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":-1,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":221,"n":"rng_words_in"},{"t":"i32","v":403,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":403},"index":{"t":"i32","v":221},"block":{"t":"i32","v":0},"words":{"t":"i64","v":221},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":306112309,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":4,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x334a15d0","n":"encounter"},{"t":"ptr","v":"0x334e69b0","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":9,"n":"turn"},{"t":"i32","v":285,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":1,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":239,"n":"rng_words_in"},{"t":"i32","v":385,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":306112474,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":5,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":9,"n":"turn"},{"t":"i32","v":285,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":239,"n":"rng_words_in"},{"t":"i32","v":385,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":306112625,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":6,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":9,"n":"turn"},{"t":"i32","v":285,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":239,"n":"rng_words_in"},{"t":"i32","v":385,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":306114422,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":3,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x334de47c","n":"results"},{"t":"i32","v":1,"n":"result_count"},{"t":"i32","v":9,"n":"turn"},{"t":"i32","v":284,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":239,"n":"rng_words_in"},{"t":"i32","v":385,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":306160153,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":7,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffb1c","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":239,"n":"rng_words_in"},{"t":"i32","v":385,"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":20},"words":{"t":"u32","v":0},"no_draw_calls":{"t":"u32","v":20},"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":"NextInt"},"ret_rva":{"t":"u32","v":1546517},"calls":{"t":"u32","v":3},"words":{"t":"u32","v":6},"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":34,"n":"draw_site_words"},{"t":"u32","v":54,"n":"draw_site_calls"},{"t":"u32","v":11,"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":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":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":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":"0x00fffb1c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784266900,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":8,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffd2c","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":239,"n":"rng_words_in"},{"t":"i32","v":385,"n":"rng_left_in"}],"ret":{"t":"ptr","v":"0x00fffd2c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784344460,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":10,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":10,"n":"turn"},{"t":"i32","v":331,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":239,"n":"rng_words_in"},{"t":"i32","v":385,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784349537,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":11,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x00fff2c0","n":"ctx"},{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x334a15d0","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":"0x0d75c348","n":"rng"},{"t":"i64","v":257,"n":"rng_words_in"},{"t":"i32","v":367,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":367},"index":{"t":"i32","v":257},"block":{"t":"i32","v":0},"words":{"t":"i64","v":257},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":367},"index":{"t":"i32","v":257},"block":{"t":"i32","v":0},"words":{"t":"i64","v":257},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784349825,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":9,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":10,"n":"turn"},{"t":"i32","v":330,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":239,"n":"rng_words_in"},{"t":"i32","v":385,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":385},"index":{"t":"i32","v":239},"block":{"t":"i32","v":0},"words":{"t":"i64","v":239},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784402174,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":13,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","n":"encounter"},{"t":"ptr","v":"0x0d772480","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":10,"n":"turn"},{"t":"i32","v":332,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":259,"n":"rng_words_in"},{"t":"i32","v":365,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784402315,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":14,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc4ac","n":"encounter"},{"t":"ptr","v":"0x0d7725f8","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":10,"n":"turn"},{"t":"i32","v":332,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":259,"n":"rng_words_in"},{"t":"i32","v":365,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784402447,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":15,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":10,"n":"turn"},{"t":"i32","v":332,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":259,"n":"rng_words_in"},{"t":"i32","v":365,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784402575,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":16,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":10,"n":"turn"},{"t":"i32","v":332,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":259,"n":"rng_words_in"},{"t":"i32","v":365,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784404143,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":12,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x0d7d846c","n":"results"},{"t":"i32","v":2,"n":"result_count"},{"t":"i32","v":10,"n":"turn"},{"t":"i32","v":331,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":259,"n":"rng_words_in"},{"t":"i32","v":365,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":784463018,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":17,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffb1c","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":259,"n":"rng_words_in"},{"t":"i32","v":365,"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":20},"words":{"t":"u32","v":0},"no_draw_calls":{"t":"u32","v":20},"strategic":{"t":"bool","v":true}}},{"t":"struct","v":{"entry":{"t":"str","v":"NextFloat"},"ret_rva":{"t":"u32","v":4775764},"calls":{"t":"u32","v":2},"words":{"t":"u32","v":2},"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":"NextInt"},"ret_rva":{"t":"u32","v":4596394},"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":3093783},"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":"NextFloat"},"ret_rva":{"t":"u32","v":5139977},"calls":{"t":"u32","v":81},"words":{"t":"u32","v":81},"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":80},"words":{"t":"u32","v":80},"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":4},"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":36,"n":"draw_site_words"},{"t":"u32","v":56,"n":"draw_site_calls"},{"t":"u32","v":173,"n":"draw_site_words_other_rng"},{"t":"u32","v":172,"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":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":2},"calls_since_launch":{"t":"u32","v":3},"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":"0x00fffb1c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1121326160,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":18,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffd2c","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":259,"n":"rng_words_in"},{"t":"i32","v":365,"n":"rng_left_in"}],"ret":{"t":"ptr","v":"0x00fffd2c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1121379542,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":20,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":11,"n":"turn"},{"t":"i32","v":395,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":259,"n":"rng_words_in"},{"t":"i32","v":365,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1121382893,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":21,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x00fff2c0","n":"ctx"},{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","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":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1121383015,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":22,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x00fff2c0","n":"ctx"},{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc4ac","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":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1121383098,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":19,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":11,"n":"turn"},{"t":"i32","v":394,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":259,"n":"rng_words_in"},{"t":"i32","v":365,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":365},"index":{"t":"i32","v":259},"block":{"t":"i32","v":0},"words":{"t":"i64","v":259},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1269241112,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":24,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","n":"encounter"},{"t":"ptr","v":"0x0d778460","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":11,"n":"turn"},{"t":"i32","v":396,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1269241812,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":25,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc4ac","n":"encounter"},{"t":"ptr","v":"0x0d7785d8","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":11,"n":"turn"},{"t":"i32","v":396,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1269242047,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":26,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":11,"n":"turn"},{"t":"i32","v":397,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1269242190,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":27,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":11,"n":"turn"},{"t":"i32","v":397,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1269244623,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":23,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x33a5d614","n":"results"},{"t":"i32","v":2,"n":"result_count"},{"t":"i32","v":11,"n":"turn"},{"t":"i32","v":395,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1269296845,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":28,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffb1c","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"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":20},"words":{"t":"u32","v":0},"no_draw_calls":{"t":"u32","v":20},"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":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":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":"NextInt"},"ret_rva":{"t":"u32","v":4596394},"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":3093783},"calls":{"t":"u32","v":24},"words":{"t":"u32","v":30},"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":500},"words":{"t":"u32","v":500},"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":979},"words":{"t":"u32","v":979},"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":976},"words":{"t":"u32","v":976},"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":3081184},"calls":{"t":"u32","v":4},"words":{"t":"u32","v":5},"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":34,"n":"draw_site_words"},{"t":"u32","v":54,"n":"draw_site_calls"},{"t":"u32","v":2500,"n":"draw_site_words_other_rng"},{"t":"u32","v":2493,"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":3},"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":3},"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":3},"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":3},"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":1},"calls_since_launch":{"t":"u32","v":4},"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":3},"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":3},"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":3},"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":"0x00fffb1c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1825969003,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":29,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffd2c","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":{"t":"ptr","v":"0x00fffd2c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1826042090,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":31,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":12,"n":"turn"},{"t":"i32","v":454,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1826047032,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":32,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x00fff2c0","n":"ctx"},{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","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":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1826047194,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":33,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x00fff2c0","n":"ctx"},{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc4ac","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":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1826047277,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":30,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":12,"n":"turn"},{"t":"i32","v":453,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":277,"n":"rng_words_in"},{"t":"i32","v":347,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":347},"index":{"t":"i32","v":277},"block":{"t":"i32","v":0},"words":{"t":"i64","v":277},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1980550887,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":35,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","n":"encounter"},{"t":"ptr","v":"0x0d778460","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":12,"n":"turn"},{"t":"i32","v":455,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1980551595,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":36,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc4ac","n":"encounter"},{"t":"ptr","v":"0x0d7785d8","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":12,"n":"turn"},{"t":"i32","v":455,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1980551809,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":37,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":12,"n":"turn"},{"t":"i32","v":456,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1980552002,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":38,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":12,"n":"turn"},{"t":"i32","v":456,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1980554783,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":34,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x33a483f4","n":"results"},{"t":"i32","v":2,"n":"result_count"},{"t":"i32","v":12,"n":"turn"},{"t":"i32","v":454,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":1980610878,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":39,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffb1c","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"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":19},"words":{"t":"u32","v":0},"no_draw_calls":{"t":"u32","v":19},"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":"NextInt"},"ret_rva":{"t":"u32","v":4596394},"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":3093783},"calls":{"t":"u32","v":31},"words":{"t":"u32","v":37},"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":205},"words":{"t":"u32","v":205},"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":997},"words":{"t":"u32","v":997},"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":994},"words":{"t":"u32","v":994},"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":3081184},"calls":{"t":"u32","v":6},"words":{"t":"u32","v":7},"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":5},"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":34,"n":"draw_site_words"},{"t":"u32","v":53,"n":"draw_site_calls"},{"t":"u32","v":2252,"n":"draw_site_words_other_rng"},{"t":"u32","v":2243,"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":4},"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":4},"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":4},"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":4},"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":4},"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":4},"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":4},"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":4},"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":"0x00fffb1c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2053412718,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":40,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffd2c","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":{"t":"ptr","v":"0x00fffd2c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2053469060,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":42,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":13,"n":"turn"},{"t":"i32","v":531,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2053473274,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":41,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":13,"n":"turn"},{"t":"i32","v":530,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":295,"n":"rng_words_in"},{"t":"i32","v":329,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":329},"index":{"t":"i32","v":295},"block":{"t":"i32","v":0},"words":{"t":"i64","v":295},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2053517397,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":44,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","n":"encounter"},{"t":"ptr","v":"0x334e58d8","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":13,"n":"turn"},{"t":"i32","v":532,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":1,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":314,"n":"rng_words_in"},{"t":"i32","v":310,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2053517624,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":45,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":13,"n":"turn"},{"t":"i32","v":532,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":314,"n":"rng_words_in"},{"t":"i32","v":310,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2053517805,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":46,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":13,"n":"turn"},{"t":"i32","v":532,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":314,"n":"rng_words_in"},{"t":"i32","v":310,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2053520015,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":43,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x336d4194","n":"results"},{"t":"i32","v":1,"n":"result_count"},{"t":"i32","v":13,"n":"turn"},{"t":"i32","v":531,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":314,"n":"rng_words_in"},{"t":"i32","v":310,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2053571203,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":47,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffb1c","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":314,"n":"rng_words_in"},{"t":"i32","v":310,"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":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":"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":35,"n":"draw_site_words"},{"t":"u32","v":53,"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":5},"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":5},"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":5},"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":5},"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":4},"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":5},"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":5},"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":5},"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":"0x00fffb1c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2318502519,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":48,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffd2c","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":314,"n":"rng_words_in"},{"t":"i32","v":310,"n":"rng_left_in"}],"ret":{"t":"ptr","v":"0x00fffd2c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2318560892,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":50,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":14,"n":"turn"},{"t":"i32","v":591,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":314,"n":"rng_words_in"},{"t":"i32","v":310,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2318565287,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":51,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x00fff2c0","n":"ctx"},{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","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":"0x0d75c348","n":"rng"},{"t":"i64","v":331,"n":"rng_words_in"},{"t":"i32","v":293,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2318565380,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":49,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":14,"n":"turn"},{"t":"i32","v":590,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":314,"n":"rng_words_in"},{"t":"i32","v":310,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":310},"index":{"t":"i32","v":314},"block":{"t":"i32","v":0},"words":{"t":"i64","v":314},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2493227072,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":53,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","n":"encounter"},{"t":"ptr","v":"0x334e6080","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":14,"n":"turn"},{"t":"i32","v":592,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":1,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":331,"n":"rng_words_in"},{"t":"i32","v":293,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2493227448,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":54,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":14,"n":"turn"},{"t":"i32","v":592,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":331,"n":"rng_words_in"},{"t":"i32","v":293,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2493227593,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":55,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":14,"n":"turn"},{"t":"i32","v":592,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":331,"n":"rng_words_in"},{"t":"i32","v":293,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2493231096,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":52,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x33a5cc54","n":"results"},{"t":"i32","v":1,"n":"result_count"},{"t":"i32","v":14,"n":"turn"},{"t":"i32","v":591,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":331,"n":"rng_words_in"},{"t":"i32","v":293,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2493279288,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":56,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffb1c","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":331,"n":"rng_words_in"},{"t":"i32","v":293,"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":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":"NextInt"},"ret_rva":{"t":"u32","v":4596394},"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":3093783},"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":"NextFloat"},"ret_rva":{"t":"u32","v":3053400},"calls":{"t":"u32","v":17},"words":{"t":"u32","v":17},"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":72},"words":{"t":"u32","v":72},"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":70},"words":{"t":"u32","v":70},"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":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":1546517},"calls":{"t":"u32","v":3},"words":{"t":"u32","v":10},"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":33,"n":"draw_site_words"},{"t":"u32","v":51,"n":"draw_site_calls"},{"t":"u32","v":176,"n":"draw_site_words_other_rng"},{"t":"u32","v":169,"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":6},"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":6},"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":6},"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":6},"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":1},"calls_since_launch":{"t":"u32","v":5},"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":6},"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":6},"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":6},"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":"0x00fffb1c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2631263078,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":57,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffd2c","n":"out_name"},{"t":"bool","v":true,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":331,"n":"rng_words_in"},{"t":"i32","v":293,"n":"rng_left_in"}],"ret":{"t":"ptr","v":"0x00fffd2c"},"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2631328180,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":59,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":15,"n":"turn"},{"t":"i32","v":634,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":331,"n":"rng_words_in"},{"t":"i32","v":293,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2631332117,"hook":"Game::EncounterDetect::ProcessTeamRecord","mode":"trace","call_id":60,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x00fff2c0","n":"ctx"},{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","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":"0x0d75c348","n":"rng"},{"t":"i64","v":349,"n":"rng_words_in"},{"t":"i32","v":275,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":275},"index":{"t":"i32","v":349},"block":{"t":"i32","v":0},"words":{"t":"i64","v":349},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":275},"index":{"t":"i32","v":349},"block":{"t":"i32","v":0},"words":{"t":"i64","v":349},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2631332312,"hook":"Game::StrategyServer::ProcessTurn","mode":"trace","call_id":58,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"f32","v":1,"n":"dt"},{"t":"i32","v":15,"n":"turn"},{"t":"i32","v":633,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":331,"n":"rng_words_in"},{"t":"i32","v":293,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":293},"index":{"t":"i32","v":331},"block":{"t":"i32","v":0},"words":{"t":"i64","v":331},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":273},"index":{"t":"i32","v":351},"block":{"t":"i32","v":0},"words":{"t":"i64","v":351},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2631388917,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":62,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc438","n":"encounter"},{"t":"ptr","v":"0x0d7d5af0","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":15,"n":"turn"},{"t":"i32","v":635,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":351,"n":"rng_words_in"},{"t":"i32","v":273,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":273},"index":{"t":"i32","v":351},"block":{"t":"i32","v":0},"words":{"t":"i64","v":351},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":273},"index":{"t":"i32","v":351},"block":{"t":"i32","v":0},"words":{"t":"i64","v":351},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2631389140,"hook":"Game::StrategyServer::ApplyEncounterResult","mode":"trace","call_id":63,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x333fc4ac","n":"encounter"},{"t":"ptr","v":"0x0d7d5c68","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":15,"n":"turn"},{"t":"i32","v":635,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":351,"n":"rng_words_in"},{"t":"i32","v":273,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":273},"index":{"t":"i32","v":351},"block":{"t":"i32","v":0},"words":{"t":"i64","v":351},"block_hash":{"t":"u64","v":"1498228442844855576"}}},"after":{"t":"struct","v":{"left":{"t":"i32","v":273},"index":{"t":"i32","v":351},"block":{"t":"i32","v":0},"words":{"t":"i64","v":351},"block_hash":{"t":"u64","v":"1498228442844855576"}}}}}}
{"ts":2631389375,"hook":"Game::StrategyServer::ProcessNodeSpaceTravel","mode":"trace","call_id":64,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":15,"n":"turn"},{"t":"i32","v":635,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":0,"n":"encounters"},{"t":"ptr","v":"0x0d75c348","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":2631389551,"hook":"Game::StrategyServer::NodeLineDecay","mode":"trace","call_id":65,"thread":4504,"depth":1,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"i32","v":15,"n":"turn"},{"t":"i32","v":635,"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":"0x0d75c348","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":2631391834,"hook":"Game::StrategyServer::OnAllCombatDone_Tail","mode":"trace","call_id":61,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x0d756b60","n":"server"},{"t":"ptr","v":"0x33566fcc","n":"results"},{"t":"i32","v":2,"n":"result_count"},{"t":"i32","v":15,"n":"turn"},{"t":"i32","v":634,"n":"phase_counter"},{"t":"i32","v":8,"n":"players"},{"t":"i32","v":2,"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":"0x0d75c348","n":"rng"},{"t":"i64","v":351,"n":"rng_words_in"},{"t":"i32","v":273,"n":"rng_left_in"}],"ret":null,"side":{"rng":{"before":{"t":"struct","v":{"left":{"t":"i32","v":273},"index":{"t":"i32","v":351},"block":{"t":"i32","v":0},"words":{"t":"i64","v":351},"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":2631450333,"hook":"Game::StrategyHost::Autosave","mode":"trace","call_id":66,"thread":4504,"depth":0,"args":[{"t":"ptr","v":"0x00dd9f98","n":"host"},{"t":"ptr","v":"0x00fffb1c","n":"out_name"},{"t":"bool","v":false,"n":"end_turn"},{"t":"ptr","v":"0x0d756b60","n":"server_cached"},{"t":"ptr","v":"0x043f9630","n":"host_plus_0x54"},{"t":"bool","v":false,"n":"server_agrees"},{"t":"ptr","v":"0x0d75c348","n":"rng"},{"t":"i64","v":353,"n":"rng_words_in"},{"t":"i32","v":271,"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":"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":"NextInt"},"ret_rva":{"t":"u32","v":4596394},"calls":{"t":"u32","v":7},"words":{"t":"u32","v":9},"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":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":"NextFloat"},"ret_rva":{"t":"u32","v":5139977},"calls":{"t":"u32","v":274},"words":{"t":"u32","v":274},"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":222},"words":{"t":"u32","v":222},"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":3083128},"calls":{"t":"u32","v":51},"words":{"t":"u32","v":51},"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":3080216},"calls":{"t":"u32","v":30},"words":{"t":"u32","v":42},"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":5139879},"calls":{"t":"u32","v":1},"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":5139899},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":2},"no_draw_calls":{"t":"u32","v":0},"strategic":{"t":"bool","v":false}}},{"t":"struct","v":{"entry":{"t":"str","v":"IntRangeBell"},"ret_rva":{"t":"u32","v":3074138},"calls":{"t":"u32","v":1},"words":{"t":"u32","v":4},"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":3526376},"calls":{"t":"u32","v":2},"words":{"t":"u32","v":2},"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":8},"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":38,"n":"draw_site_words"},{"t":"u32","v":56,"n":"draw_site_calls"},{"t":"u32","v":629,"n":"draw_site_words_other_rng"},{"t":"u32","v":601,"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":7},"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":7},"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":7},"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":7},"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":5},"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":7},"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":7},"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":7},"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":"0x00fffb1c"},"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"}}}}}}