# Agent brief — FUT loading-screen QUIET STALL (what is FIFA waiting for?) (clean-room)

## Clean-room rule (HARD)
Derive ONLY from decrypted FIFA17.exe dumps + live /proc/PID/mem (`pgrep -x FIFA17.exe`, live 66672)
+ /tmp/blaze_responder.log + /tmp/blaze_rx/ + blaze_responder_v3b.py. NEVER leaked EA source/headers.

## Where we are — the WIN, and this stall
This session cracked the ENTIRE FIFA17 login+connection+FUT-service-init chain (8 gates, each a
one-attribute/value/type/RPC responder fix). FIFA now: logs in, holds a live Blaze session, and after
selecting FUT reached the **Ultimate Team LOADING screen** (stadium + "17", NO error). The last fix
(CensusData subscribe) stopped a 71k-retry storm and let FIFA run its FUT-init RPC burst. **NOW FIFA
IS QUIET-STALLED on the loading screen: idle-pinging Blaze every 20s, NOT storming, NOT reaching any
new endpoint (no SYN-SENT to UTAS/fut.ea.com), both LSX:4216 + Blaze:42130 conns STABLE.** It ran its
init burst, took our (mostly EMPTY) replies, and is WAITING for something to complete the load.

**KEY ADVANTAGE: FIFA is LIVE-FROZEN at the wait point right now (pid 66672).** The FUT/OSDK
loading-state object is inspectable in memory as-is — find the flag/counter it is polling.

## The FUT-init RPC burst FIFA sent (decoded from /tmp/blaze_rx/), and how we replied
| # | RPC | request (decoded) | our reply |
|---|---|---|---|
| listEntitlements | Auth 1/0x20 | **GNLS=['FIFA17PCBoxContent','FIFA16PC']**, FLAG=3 | entitlements_response NLST=[1 entitlement, **GNAM="FIFA17PC"**, TAG=ONLINE_ACCESS] — GROUP MISMATCH? |
| getInvitations | Clubs 0x000b/0x0640 | CLID=0 INVT=0 NSOT=0 | EMPTY |
| fetchMessages | Messaging 0x000f/0x0002 | FLAG=4, TYPE=... | EMPTY |
| userSettingsLoad | Util 0x0009/0x000a | KEY='FirstTimeFlag' UID=0 | EMPTY (?) |
| userSettingsLoadAll | Util 0x0009/0x000c | (empty) | EMPTY |
| fetchSettings/Groups | OSDKSettings 0x08c9/0x01,0x02 | (empty) | EMPTY |
| getStatGroupList/getKeyScopesMap/getPeriodIds | Stats 0x0007/0x03,0x0f,0x14 | (empty) | EMPTY |
| getEventsURL | SponsoredEvents 0x081c/0x0003 | (empty) | EMPTY |
| getClubsComponentSettings | Clubs 0x000b/0x0a28 | (empty) | EMPTY |
| getInvitations, listEntitlements were the LAST real RPCs (RX #32/#33) before it went quiet. |

Our entitlement reply (blaze_responder_v3b.py entitlement_fields ~:907): GNAM="FIFA17PC",
TAG="ONLINE_ACCESS", PJID/PRID="1027460", STAT=1, TYPE=1. **The request asked for group
"FIFA17PCBoxContent" — investigate whether FUT requires an entitlement in THAT group.**

## Questions to answer
1. **What is the FUT loading screen waiting for to complete?** FIFA is live-frozen at the wait — find
   the loading/OSDK state object and the flag/counter/condition it polls or blocks on. What SETS it:
   a specific RPC reply's data, a server-pushed NOTIFICATION, or a count of completed async loads?
   (FUT init typically fans out N async "downloaders"/loaders and waits for all to complete.)
2. **Is it the entitlements?** Reverse the listEntitlements (1/0x20) client handler: does FUT gate on an
   entitlement in group 'FIFA17PCBoxContent' (the box-content / FUT-access grant)? What must our NLST
   contain (GNAM value, TAG, TYPE, count) so FUT considers the user entitled? Our GNAM="FIFA17PC" may
   be wrong.
3. **Is FIFA waiting on a server NOTIFICATION** (UserSessions / a FUT-ready / a Messaging / a
   downloader-complete push) that a real server would send but we don't? Find which notification the
   loading state consumes.
4. **Which specific empty-replied RPC (if any) is the block** — Stats getStatGroupList, OSDKSettings
   fetchSettings, Messaging fetchMessages, userSettingsLoad 'FirstTimeFlag', Clubs getInvitations — does
   any of them feed a required loading input? Reverse the client response handler for the load-bearing one.
5. **The fix**: the minimal blaze_responder_v3b.py change (a non-empty reply TDF for the load-bearing
   RPC, a corrected entitlement group, and/or a pushed notification) that advances the loading screen.
   Give exact TDF (tags/types/values) + the observable success signal (FIFA leaves the loading screen /
   issues the next new RPC / connects to a FUT service).

## Method / dumps
Our responder: blaze_responder_v3b.py (dispatch, entitlement_fields, notification()). Heat2: heat2.py.
Saved requests: /tmp/blaze_rx/rx_*.bin (16B hdr + payload; decode with heat2.decode_tdf). Log:
/tmp/blaze_responder.log. FIFA live pid 66672 (frozen at the wait — inspect the loading state NOW).
FifaOnline::* reflection ~0x143900000 (SeasonalPlayDownloader, ClubsDivCountDownloader, TournamentHandler,
etc. seen there — the FUT loaders live here). Blaze SDK ~0x146d00000-0x147000000. Every claim needs a
VA/bytes/disasm/log line. CLEAN-ROOM only.
