"""FUT::FutDataManagerImpl constructor -> the settings defaults. The settings struct sits at object+0x28 (FUN_18014e590 hands param_1+0x28 to the deser), so field N of the flag table is at byte offset 0x28 + N*4: 0x50 tradingEnabled[10] 0x54 storeEnabled[0xb] <- CONTROL, works today 0x80 friendlySeasonsEnabled[0x16] <- Seasons 0x84 enableDraftMode[0x17] <- Draft 0x88 enableOffline/SinglePlayerDraftMode[0x18] 0x98 enableObjectives[0x1c] (settings can only CLEAR this one) Print the whole constructor and the coverage numbers. Do NOT conclude "field X is not initialised" from a partial read: this repo lost seven attempts to exactly that mistake (the FutMoveCard retraction), so the char counts are printed and the full text follows. """ VA = 0x18010CDC0 f = func(VA) src = dec(VA) print("FUT::FutDataManagerImpl ctor %#x" % VA) print(" body bytes : %d" % f.getBody().getNumAddresses()) print(" decompile : %d chars (entire text printed below)" % len(src)) print("=" * 78) print(src)