Function map of cm0102.exe 3.9.68. Generated from the Bosman Edition repo. Do not edit by hand: report a wrong name as an issue.
AI agents named each function from its code, and a review checked every medium and low name. Treat a medium or low name as a hint and read the code before you rely on it. "Cited in" lists research docs of the Bosman Edition repo that name the address.
| Address | Size | Name | Convention | Purpose | Confidence | Model | Cited in |
|---|---|---|---|---|---|---|---|
| 0x4c6d40 | 6 | contract_manager_static_date_ae1048_init |
cdecl(void) ret 0 | Static initialiser that constructs the global Date at 0xae1048 and registers its empty destructor stub with atexit. | high | opus | 2026-10-16-sweep-europe.md |
| 0x4c6d60 | 1 | contract_manager_static_date_ae1048_dtor |
cdecl(void) ret 0 | Empty atexit destructor for the global Date at 0xae1048, since Date has no destructor work to do. | high | opus | |
| 0x4c6d70 | 6 | contract_manager_static_date_ae1030_init |
cdecl(void) ret 0 | Static initialiser that constructs the global Date at 0xae1030 and registers its empty destructor stub with atexit. | high | opus | |
| 0x4c6d90 | 1 | contract_manager_static_date_ae1030_dtor |
cdecl(void) ret 0 | Empty atexit destructor for the global Date at 0xae1030, since Date has no destructor work to do. | high | opus | |
| 0x4c6da0 | 6 | contract_manager_static_date_ae1058_init |
cdecl(void) ret 0 | Static initialiser that constructs the global Date at 0xae1058 and registers its empty destructor stub with atexit. | high | opus | |
| 0x4c6dc0 | 1 | contract_manager_static_date_ae1058_dtor |
cdecl(void) ret 0 | Empty atexit destructor for the global Date at 0xae1058, since Date has no destructor work to do. | high | opus | |
| 0x4c6dd0 | 6 | contract_manager_static_date_ae1010_init |
cdecl(void) ret 0 | Static initialiser that constructs the global Date at 0xae1010 and registers its empty destructor stub with atexit. | high | opus | |
| 0x4c6df0 | 1 | contract_manager_static_date_ae1010_dtor |
cdecl(void) ret 0 | Empty atexit destructor for the global Date at 0xae1010, since Date has no destructor work to do. | high | opus | |
| 0x4c6e00 | 6 | contract_manager_static_date_ae1060_init |
cdecl(void) ret 0 | Static initialiser that constructs the global Date at 0xae1060 and registers its empty destructor stub with atexit. | high | opus | |
| 0x4c6e20 | 1 | contract_manager_static_date_ae1060_dtor |
cdecl(void) ret 0 | Empty atexit destructor for the global Date at 0xae1060, since Date has no destructor work to do. | high | opus | |
| 0x4c6e30 | 6 | contract_manager_static_date_ae1040_init |
cdecl(void) ret 0 | Static initialiser that constructs the global Date at 0xae1040 and registers its empty destructor stub with atexit. | high | opus | |
| 0x4c6e50 | 1 | contract_manager_static_date_ae1040_dtor |
cdecl(void) ret 0 | Empty atexit destructor for the global Date at 0xae1040, since Date has no destructor work to do. | high | opus | |
| 0x4c6e60 | 6 | contract_manager_static_date_ae1090_init |
cdecl(void) ret 0 | Static initialiser that constructs the global Date at 0xae1090 and registers its empty destructor stub with atexit. | high | opus | |
| 0x4c6e80 | 1 | contract_manager_static_date_ae1090_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1090, since Date has a trivial destructor. | high | opus | |
| 0x4c6e90 | 6 | contract_manager_static_date_ae1068_init |
cdecl(void) ret 0 | Constructs the static Date at 0xae1068 and registers its empty destructor 0x4c6eb0 with the C runtime atexit list. | high | opus | |
| 0x4c6eb0 | 1 | contract_manager_static_date_ae1068_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1068, since Date has a trivial destructor. | high | opus | |
| 0x4c6ec0 | 6 | contract_manager_static_date_ae1008_init |
cdecl(void) ret 0 | Constructs the static Date at 0xae1008 and registers its empty destructor 0x4c6ee0 with the C runtime atexit list. | high | opus | |
| 0x4c6ee0 | 1 | contract_manager_static_date_ae1008_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1008, since Date has a trivial destructor. | high | opus | |
| 0x4c6ef0 | 6 | contract_manager_static_date_ae1020_init |
cdecl(void) ret 0 | Constructs the static Date at 0xae1020 and registers its empty destructor 0x4c6f10 with the C runtime atexit list. | high | opus | |
| 0x4c6f10 | 1 | contract_manager_static_date_ae1020_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1020, since Date has a trivial destructor. | high | opus | |
| 0x4c6f20 | 6 | contract_manager_static_date_ae1070_init |
cdecl(void) ret 0 | Constructs the static Date at 0xae1070 and registers its empty destructor 0x4c6f40 with the C runtime atexit list. | high | opus | |
| 0x4c6f40 | 1 | contract_manager_static_date_ae1070_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1070, since Date has a trivial destructor. | high | opus | |
| 0x4c6f50 | 6 | contract_manager_static_date_ae1018_init |
cdecl(void) ret 0 | Constructs the static Date at 0xae1018 and registers its empty destructor 0x4c6f70 with the C runtime atexit list. | high | opus | |
| 0x4c6f70 | 1 | contract_manager_static_date_ae1018_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1018, since Date has a trivial destructor. | high | opus | |
| 0x4c6f80 | 6 | contract_manager_static_date_ae1038_init |
cdecl(void) ret 0 | Constructs the static Date at 0xae1038 and registers its empty destructor 0x4c6fa0 with the C runtime atexit list. | high | opus | |
| 0x4c6fa0 | 1 | contract_manager_static_date_ae1038_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1038, since Date has a trivial destructor. | high | opus | |
| 0x4c6fb0 | 6 | contract_manager_static_date_ae1028_init |
cdecl(void) ret 0 | Constructs the static Date at 0xae1028 and registers its empty destructor 0x4c6fd0 with the C runtime atexit list. | high | opus | |
| 0x4c6fd0 | 1 | contract_manager_static_date_ae1028_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1028, since Date has a trivial destructor. | high | opus | |
| 0x4c6fe0 | 6 | contract_manager_static_date_ae1078_init |
cdecl(void) ret 0 | Constructs the static Date at 0xae1078 and registers its empty destructor 0x4c7000 with the C runtime atexit list. | high | opus | |
| 0x4c7000 | 1 | contract_manager_static_date_ae1078_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1078, since Date has a trivial destructor. | high | opus | |
| 0x4c7010 | 6 | contract_manager_static_date_ae1088_init |
cdecl(void) ret 0 | Constructs the static Date at 0xae1088 and registers its empty destructor 0x4c7030 with the C runtime atexit list. | high | opus | |
| 0x4c7030 | 1 | contract_manager_static_date_ae1088_dtor |
cdecl(void) ret 0 | Serves as the empty atexit destructor for the static Date at 0xae1088, since Date has a trivial destructor. | high | opus | |
| 0x4c7040 | 304 (+16 unwind) | CONTRACT_MANAGER::CONTRACT_MANAGER |
thiscall(CONTRACT_MANAGER *this, int save_handle) ret 4, returns this | Waits for the CM01/02 CD, zeroes the fifteen manager fields, sets sixteen static contract Dates from day offsets and loads saved contracts when given a handle. | high | opus | 2026-10-14-game-creation-inventory.md |
| 0x4c74f0 | 40 | CONTRACT_MANAGER::~CONTRACT_MANAGER |
thiscall(CONTRACT_MANAGER *this) ret 0 | Frees the three malloc buffers at fields 0, 3 and 10 and destroys and deletes the two linked lists at fields 13 and 14. | high | opus | 2026-10-16-sweep-europe.md |
| 0x4c7560 | 305 (+3 unwind) | CONTRACT_MANAGER::initialise_all_staff_contracts |
thiscall(CONTRACT_MANAGER *this) ret 0 | Allocates the staff contract array, values every staff member and builds a contract for each staff member whose job takes one. | high | opus | 2026-10-14-game-creation-inventory.md |
| 0x4c7950 | 28 | CONTRACT_MANAGER::add_staff_contract |
thiscall(CONTRACT_MANAGER *this, Staff *staff, int value) ret 8 | Takes a free staff contract slot, links the staff index table entry to it and builds the contract from the given value. | high | opus | |
| 0x4c79a0 | 87 | CONTRACT_MANAGER::get_free_staff_contract_space |
thiscall(CONTRACT_MANAGER *this, int append_only) ret 4, returns slot index or -1 | Returns a staff contract slot index, reusing an empty slot unless told to append, and grows the array by 200 slots when full. | high | opus | |
| 0x4c7ac0 | 2637 (+10 unwind) | CONTRACT_MANAGER::daily_update |
thiscall(CONTRACT_MANAGER *this, const Date *today, char mode, char run_staff_pass) ret 0xc | Runs the daily contract pass over every staff member for expiries, renewals, releases, moves and news, then compacts the decision-date list and processes due decisions. | high | opus | 2026-10-14-game-creation-inventory.md |
| 0x4c9f60 | 171 | CONTRACT_MANAGER::add_talks_record |
thiscall(CONTRACT_MANAGER *this, Staff **player, Staff **manager, Club **club, char flag) ret 0x10 | Adds a dated player, club and manager record to the sorted talks list at this+0x28 unless the same key is already there. | medium | opus | |
| 0x4ca1c0 | 81 | CONTRACT_MANAGER::remove_talks_records |
thiscall(CONTRACT_MANAGER *this, Staff *player, int *manager_or_null, int *club_or_null) ret 0xc | Removes every talks record for a player that also matches the optional manager and club keys, then sorts the list again. | medium | opus | |
| 0x4ca2a0 | 32 | CONTRACT_MANAGER::find_talks_record |
thiscall(CONTRACT_MANAGER *this, Staff *player, int *manager, int *club) ret 0xc, returns record or NULL | Binary-searches the talks list at this+0x28 for a player, club and manager key and returns the record. | medium | opus | |
| 0x4ca300 | 116 | CONTRACT_MANAGER::get_current_contract_offers |
thiscall(CONTRACT_MANAGER *this, Club *club, void **out_offers) ret 8, returns count | Copies every open contract offer made by a club into a new buffer and returns the offer count. | high | opus | |
| 0x4ca470 | 256 | contract_manager_get_deserved_squad_status |
stdcall(Staff *staff, STAFF_CONTRACT *contract) ret 8, returns char squad status | Returns the squad status a player believes he deserves from his age, ambition, reputation, current status and happiness. | medium | opus | |
| 0x4ca6d0 | 800 | CONTRACT_MANAGER::update_after_match |
thiscall(CONTRACT_MANAGER *this, Fixture *match, MatchSquads *squads) ret 8 | After a match, pays appearance and goal bonuses and adjusts each squad player's happiness and form morale from rating and selection. | high | opus | |
| 0x4cb0a0 | 143 | contract_manager_raise_match_morale |
stdcall(Staff *player, Club *club, STAFF_CONTRACT *contract) ret 0xc | Raises a player's contract form morale after a good game, caps it by his unrest flags and clears those flags when he is happy. | medium | opus | |
| 0x4cb250 | 546 | contract_manager_lower_match_morale |
stdcall(Staff *player, Club *club, STAFF_CONTRACT *contract) ret 0xc | Lowers a player's contract form morale after a poor game or omission, and may flag him as unsettled when the transfer window is open. | medium | opus | |
| 0x4cb960 | 17 | staff_is_not_board_member |
stdcall(Staff *staff) ret 4, returns bool | Returns false when the staff member holds a board job (codes 1 to 4) at a club, and true otherwise. | medium | opus | |
| 0x4cb990 | 115 | staff_can_take_job |
stdcall(char job, Staff *staff) ret 8, returns bool | Returns whether a staff member is suitable for a given job code from his age, current job and player or non-player data. | medium | opus | |
| 0x4cbb20 | 25 | is_contract_staff_job |
stdcall(char job) ret 4, returns bool | Returns true for the job codes whose holders take a staff contract from the contract manager. | medium | opus | |
| 0x4cbb60 | 184 | CONTRACT_MANAGER::get_squad_placement |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club) ret 8, returns char 0 to 4 | Returns the placement of a player at a club: 1 reserves, 2 first team, 3 linked B side, 4 main club with a linked side, 0 none. | high | sonnet | |
| 0x4cbd20 | 353 | CONTRACT_MANAGER::toggle_squad_placement |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club, Club **out_new_club) ret 0xc, returns bool | Moves a player between a club's first team and reserves, or between the club and its linked side, updating squad slots. | high | sonnet | |
| 0x4cc0b0 | 27 | CONTRACT_MANAGER::move_to_first_team |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club) ret 8, returns bool | Moves a player up to the first team or the main club when he is in the reserves or on the linked B side, and returns false otherwise. | medium | opus | |
| 0x4cc0f0 | 27 | CONTRACT_MANAGER::move_to_reserves |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club) ret 8, returns bool | Moves a player down to the reserves or the linked B side when he is in the first team of a club, and returns false otherwise. | medium | opus | |
| 0x4cc130 | 144 | CONTRACT_MANAGER::get_squad_flags_for_club |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club) ret 8, returns byte | Returns the squad flags a club screen shows for a player, using the loan contract reserve bit when he is on loan elsewhere. | medium | opus | |
| 0x4cc2d0 | 4 | contract_manager_get_player_morale |
stdcall(Staff *staff) ret 4, returns char | Returns the morale value of a staff member's player record. | high | opus | |
| 0x4cc2e0 | 54 | contract_manager_write_morale_text |
stdcall(Staff *staff, char *out_text, int unused) ret 0xc | Writes the morale word, from Very Low to Superb, for a player's morale value into a text buffer. | high | opus | 2026-10-14-columns-and-colours-inventory.md, columns.c |
| 0x4cc3a0 | 74 | contract_manager_write_morale_comparison_text |
stdcall(Staff *a, Staff *b, char *out_text, int unused) ret 0x10, returns char difference | Compares the morale of two players, writes Same, Marginal, Better or Superior into a buffer and returns the difference. | high | opus | 2026-10-16-comparison-screen-inventory.md |
| 0x4cc490 | 265 (+4 unwind) | CONTRACT_MANAGER::add_contract_offer |
thiscall(CONTRACT_MANAGER *this, STAFF_CONTRACT *terms, int transfer_slot, int value, char flag, int unused, int schedule_decision, int agreed) ret 0x1c | Adds a contract offer to the offer list or updates the existing offer for the same player and club, then links the transfer slot. | high | opus | |
| 0x4cc810 | 109 | STAFF_CONTRACT::operator= |
thiscall(STAFF_CONTRACT *this, const STAFF_CONTRACT *src) ret 4, returns this | Copies every field of one 0x50-byte staff contract into another, keeping the bit fields at +0x35 and +0x4f. | high | opus | |
| 0x4cc930 | 61 | CONTRACT_MANAGER::schedule_decision_for_transfer |
thiscall(CONTRACT_MANAGER *this, TransferOffer *offer) ret 4, returns bool | Marks the matching contract offer as live and schedules the player's decision once a transfer fee is agreed. | medium | opus | |
| 0x4cc9e0 | 28 | CONTRACT_MANAGER::find_contract_offer |
thiscall(CONTRACT_MANAGER *this, int staff_id, int club_id) ret 8, returns offer or NULL | Returns the contract offer for a given staff id and club id from the offer list. | high | opus | 2026-10-16-sweep-rulebooks.md |
| 0x4cca30 | 25 | CONTRACT_MANAGER::find_agreed_contract_offer |
thiscall(CONTRACT_MANAGER *this, int staff_id) ret 4, returns offer or NULL | Returns the contract offer for a staff id whose offer state is agreed. | medium | opus | |
| 0x4cca70 | 69 | CONTRACT_MANAGER::remove_contract_offer |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club) ret 8 | Removes the contract offer for a staff member and club from the offer list and lowers the staff offer count. | high | opus | |
| 0x4ccb30 | 67 | CONTRACT_MANAGER::remove_contract_offer_for_transfer |
thiscall(CONTRACT_MANAGER *this, Staff *staff, int transfer_slot) ret 8 | Removes the contract offer for a staff member that is linked to a given transfer slot and lowers the staff offer count. | high | opus | |
| 0x4ccbf0 | 56 | CONTRACT_MANAGER::remove_pending_offers_for_staff |
thiscall(CONTRACT_MANAGER *this, Staff *staff) ret 4 | Removes every pending contract offer of a staff member from the offer list and clears the matching transfer manager flag. | medium | opus | |
| 0x4ccca0 | 187 | CONTRACT_MANAGER::schedule_loan_end |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club) ret 8 | Marks a staff member's loan contract as ending and posts the recall or termination news when a human club is involved. | high | opus | |
| 0x4cced0 | 109 | CONTRACT_MANAGER::trigger_non_promotion_clauses |
thiscall(CONTRACT_MANAGER *this, Club *club, Comp *league) ret 8 | Triggers the non-promotion clause of every player in the squads of a club and its linked club and posts the clause news. | high | opus | |
| 0x4cd030 | 85 | CONTRACT_MANAGER::trigger_relegation_clauses |
thiscall(CONTRACT_MANAGER *this, Club *club, Comp *league) ret 8 | Triggers the relegation clause of every player in the squads of a relegated club and its linked club and sends the news. | high | opus | |
| 0x4cd120 | 95 | CONTRACT_MANAGER::reset_division_clauses |
thiscall(CONTRACT_MANAGER *this, Club *club, int clear_numbers) ret 8 | Clears the pending relegation and non-promotion clause flags of a club's players and optionally clears their squad numbers first. | medium | opus | |
| 0x4cd230 | 387 (+2 unwind) | CONTRACT_MANAGER::schedule_offer_decision |
thiscall(CONTRACT_MANAGER *this, int staff_id, int offer_slot) ret 8 | Finds or adds a staff member's type 3 decision date and sets the day and time slice when he answers his offers. | medium | opus | |
| 0x4cd6d0 | 225 | CONTRACT_MANAGER::add_decision_date |
thiscall(CONTRACT_MANAGER *this, Staff *staff, const Date *date, char time_slice, char type) ret 0x10 | Appends a decision date entry for a staff member, growing the list by 100 and adding earlier reminder entries for type 2. | high | opus | |
| 0x4cd9c0 | 64 | CONTRACT_MANAGER::process_due_decision_dates |
thiscall(CONTRACT_MANAGER *this, const Date *date, char time_slice) ret 8 | Consumes the decision date entries that are due by the given date and slice and resolves contract offers for type 3 entries. | high | sonnet | |
| 0x4cda70 | 732 (+1 unwind) | contract_manager_offer_contract |
stdcall(Staff *staff, Club *club, CONTRACT *out_terms, int offer_slot, double wage_factor, char mode) ret 0x1c, returns 1 when terms were made | Builds the contract a club would offer a staff member within its wage budget and either returns the terms or submits the offer. | medium | opus | |
| 0x4ce450 | 46 (+1 unwind) | contract_manager_lowest_wage_demand |
stdcall(Staff *staff, Club *club) ret 8, returns int wage | Returns the lower of the staff member's wage demands for squad status 1 and 2 at a club, capped at 10,000,000. | medium | opus | |
| 0x4ce4e0 | 1157 (+8 unwind) | CONTRACT_MANAGER::resolve_contract_offers |
thiscall(CONTRACT_MANAGER *this, Staff *staff) ret 4 | Lets a staff member choose the best of his pending contract offers, accepts it and rejects or holds back the others. | medium | opus | |
| 0x4cf4a0 | 77 | CONTRACT_MANAGER::resubmit_held_offers |
thiscall(CONTRACT_MANAGER *this, int staff_id) ret 4, returns count | Resubmits every held-back contract offer for a staff member as a live offer and removes it from the held list. | medium | opus | |
| 0x4cf560 | 25 | CONTRACT_MANAGER::remove_held_offers |
thiscall(CONTRACT_MANAGER *this, int staff_id) ret 4 | Removes every held-back contract offer of a staff member from the held offer list. | medium | opus | |
| 0x4cf5a0 | 24 | CONTRACT_MANAGER::get_contract |
thiscall(CONTRACT_MANAGER *this, Staff *staff) ret 4 | Returns the main contract record of a staff member, or null when the staff id is out of range or has no contract. | high | opus | 2026-10-15-assistant-pick-inventory.md, 2026-10-15-contract-clauses.md, 2026-10-16-comparison-screen-inventory.md |
| 0x4cf5f0 | 91 | CONTRACT_MANAGER::get_contract_for_club |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club) ret 8 | Returns the main or loan contract of a staff member that belongs to the given club or to its linked club. | medium | opus | |
| 0x4cf6d0 | 24 | CONTRACT_MANAGER::get_loan_contract |
thiscall(CONTRACT_MANAGER *this, Staff *staff) ret 4 | Returns the loan contract record of a staff member, or null when the staff member has no loan contract. | high | opus | 2026-10-15-assistant-pick-inventory.md, 2026-10-16-comparison-screen-inventory.md |
| 0x4cf720 | 897 | CONTRACT_MANAGER::sign_contract |
thiscall(CONTRACT_MANAGER *this, CONTRACT *terms, char job) ret 8, returns 1 on success | Places a staff member in the club job and stores the 0x50-byte contract as his main contract, reusing a free slot or growing the array. | high | opus | |
| 0x4d01e0 | 500 (+1 unwind) | CONTRACT_MANAGER::sign_loan_contract |
thiscall(CONTRACT_MANAGER *this, CONTRACT *terms) ret 4 | Moves a staff member into the loan club's squad and stores the contract as his loan contract. | high | opus | |
| 0x4d07e0 | 290 | CONTRACT_MANAGER::end_loan |
thiscall(CONTRACT_MANAGER *this, Staff *staff) ret 4 | Ends a staff member's loan, frees the loan contract, takes him out of the loan club and returns him to his parent club. | high | opus | |
| 0x4d0b50 | 39 | CONTRACT_MANAGER::remove_contract |
thiscall(CONTRACT_MANAGER *this, Staff *staff) ret 4 | Frees a staff member's main contract slot and recalculates the wage bill of the club that held it. | high | opus | |
| 0x4d0bd0 | 22 | CONTRACT_MANAGER::remove_loan_contract |
thiscall(CONTRACT_MANAGER *this, Staff *staff) ret 4 | Frees a staff member's loan contract slot when he has one. | high | opus | |
| 0x4d0c20 | 23 | CONTRACT_MANAGER::get_wage |
thiscall(CONTRACT_MANAGER *this, Staff *staff) ret 4, returns int | Returns the weekly wage of a staff member's main contract, or 0 when he has no contract. | high | opus | |
| 0x4d0c60 | 714 | contract_manager_calc_player_value |
stdcall(Staff *staff, Club *club, char ignore_contract, short mode, int unused) ret 0x14 | Calculates the transfer value of a player from reputation, position, age and nation, then reduces it for the contract time left. | high | opus | |
| 0x4d1600 | 3131 | contract_manager_calc_asking_price |
stdcall(Club *selling_club, Club *buying_club, Staff *player, ushort *reason_flags, char adjust, int flag) ret 0x18, returns int fee | Calculates the fee a club asks for one of its players, from his value, squad status, morale and finances, capped at any release fee. | high | opus | 2026-10-14-columns-and-colours-inventory.md |
| 0x4d2070 | 2362 | contract_manager_calc_asking_price_false_entry |
false entry inside contract_manager_calc_asking_price, ret 0x18 | Misread entry point in the middle of contract_manager_calc_asking_price, which Ghidra could not decode as a function. | high | opus | |
| 0x4d42d0 | 116 | contract_manager_get_human_asking_price |
stdcall(Club *buying_club, int arg2, Staff *player) ret 0xc, returns int fee | Returns the asking price for a player of a human club, blending the stored value with the calculated price by squad status. | medium | opus | |
| 0x4d4320 | 87 | contract_manager_get_human_asking_price_fragment_4d4320 |
false entry inside contract_manager_get_human_asking_price, ret 0xc | Misread entry point inside contract_manager_get_human_asking_price, starting in the middle of an instruction. | high | opus | |
| 0x4d4420 | 75 | contract_manager_get_human_asking_price_fragment_4d4420 |
false entry inside contract_manager_get_human_asking_price, ret 0xc | Misread entry point at the call to the asking price calculation in the tail of contract_manager_get_human_asking_price. | high | opus | |
| 0x4d44e0 | 111 | contract_manager_get_offer_job |
stdcall(Staff *staff) ret 4, returns char job code | Picks the job code a new contract offer names for a staff member, from his club and nation jobs and his ratings. | medium | opus | |
| 0x4d45f0 | 28 (+2 unwind) | contract_manager_season_end_month |
stdcall(Club *club) ret 4, returns char month | Returns the month index ten days after the end of the season of the club's nation. | medium | opus | |
| 0x4d4660 | 169 | CONTRACT_MANAGER::will_negotiate_offer |
thiscall(CONTRACT_MANAGER *this, CONTRACT *offer) ret 4, returns 1 or 0 | Decides whether a staff member will discuss a new contract with his own club, refusing when listed, unsettled, wanting to leave or unhappy. | high | opus | |
| 0x4d4830 | 121 | CONTRACT_MANAGER::prefill_offer_from_pending |
thiscall(CONTRACT_MANAGER *this, CONTRACT *offer) ret 4 | Copies the bonuses and clauses of a staff member's pending offer from the same club into a new offer and adjusts the wage to match. | medium | opus | |
| 0x4d49a0 | 475 (+2 unwind) | contract_manager_post_offer_response_news |
stdcall(CONTRACT_OFFER *offer, int renewal_flag) ret 8 | Queues news item 3000 with the staff, club, offer state and terms of an answered contract offer and picks the clubs that receive it. | medium | opus | |
| 0x4d4fb0 | 1619 (+3 unwind) | contract_manager_write_offer_response_news_text |
stdcall(NewsItem *item, int arg2, int arg3) ret 0xc | Writes the headline and story text for a staff member accepting or rejecting a contract or trial offer. | high | opus | 2026-10-14-widescreen-inventory.md |
| 0x4d64e0 | 59 (+1 unwind) | CONTRACT_MANAGER::post_offer_cancelled_no_space_news |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club) ret 8 | Posts the contract offer cancelled news item, type 0xbc4, to a club with a human manager, with staff, names and club slots. | high | opus | |
| 0x4d65c0 | 147 | CONTRACT_MANAGER::write_offer_cancelled_no_space_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a club's contract offer to a player was cancelled for lack of squad space. | high | opus | |
| 0x4d6790 | 183 (+2 unwind) | CONTRACT_MANAGER::post_contract_expiry_news |
thiscall(CONTRACT_MANAGER *this, StaffContract *contract, char period_code, int bosman_flag, int notify_interested) ret 0x10 | Posts the contract expiry warning news item, type 0xbbd, to the club and optionally to other clubs that shortlist the player. | high | opus | |
| 0x4d6a00 | 276 | CONTRACT_MANAGER::write_contract_expiry_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a player or staff contract expires in twelve months down to next week. | high | opus | |
| 0x4d6d70 | 104 (+1 unwind) | CONTRACT_MANAGER::post_bosman_departure_news |
thiscall(CONTRACT_MANAGER *this, StaffContract *contract, Club **dest_club_or_null) ret 8 | Posts the news item, type 0xbbe, that a player leaves his club under the Bosman ruling, with the destination club or minus one. | high | opus | |
| 0x4d6ee0 | 235 | CONTRACT_MANAGER::write_bosman_departure_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a player leaves his club at the end of his contract under the Bosman ruling. | high | opus | |
| 0x4d71b0 | 455 (+2 unwind) | CONTRACT_MANAGER::post_transfer_listed_news |
thiscall(CONTRACT_MANAGER *this, Staff *player, Club *club) ret 8 | Posts the transfer listed news item, type 0xbea, with asking price and up to three interested clubs, to candidate buying clubs. | high | opus | |
| 0x4d7770 | 1133 (+1 unwind) | CONTRACT_MANAGER::write_transfer_listed_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a player is put on the transfer list, with reasons, fee and interested clubs. | high | opus | |
| 0x4d8610 | 279 (+1 unwind) | CONTRACT_MANAGER::handle_transfer_request |
thiscall(CONTRACT_MANAGER *this, StaffContract *contract) ret 4 | Handles a player's transfer request, listing him at a computer club or posting the transfer request news to a human manager. | high | opus | |
| 0x4d8990 | 793 | CONTRACT_MANAGER::write_transfer_request_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a player or his agent requests a transfer, with his reasons and the answer. | high | opus | |
| 0x4d9460 | 108 (+1 unwind) | CONTRACT_MANAGER::post_transfer_request_withdrawn_news |
thiscall(CONTRACT_MANAGER *this, StaffContract *contract, int reason) ret 8 | Posts the news item, type 0xbc0, that a player withdraws his transfer request, with the reason code in slot 6. | high | opus | |
| 0x4d95e0 | 198 | CONTRACT_MANAGER::write_transfer_request_withdrawn_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a player withdraws his transfer request and is happy to stay. | high | opus | |
| 0x4d9840 | 172 (+1 unwind) | CONTRACT_MANAGER::post_seeks_assurances_news |
thiscall(CONTRACT_MANAGER *this, StaffContract *contract) ret 4 | Posts the news item, type 0xbc1, that a player seeks assurances about his future, unless a transfer or offer is open. | high | opus | |
| 0x4d9a90 | 303 | CONTRACT_MANAGER::write_seeks_assurances_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a player seeks assurances, by squad role and transfer or loan list status. | high | opus | |
| 0x4d9f80 | 156 (+1 unwind) | CONTRACT_MANAGER::post_wants_new_contract_news |
thiscall(CONTRACT_MANAGER *this, StaffContract *contract) ret 4 | Posts the news item, type 0xbc2, that a player wants a new contract, with squad status and wage slots, unless a transfer is open. | high | opus | |
| 0x4da190 | 312 (+1 unwind) | CONTRACT_MANAGER::write_wants_new_contract_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a player or his agent asks for a better contract, by squad status. | high | opus | |
| 0x4da590 | 361 (+2 unwind) | CONTRACT_MANAGER::post_contract_end_news |
thiscall(CONTRACT_MANAGER *this, Staff *staff, char end_kind, int notify_wide) ret 0xc | Posts the news item, type 0xbb9, that a staff contract, trial or loan ends, to the club, the loan club and interested clubs. | high | opus | |
| 0x4daa00 | 325 | CONTRACT_MANAGER::write_contract_end_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a staff member leaves after his contract, trial or loan ends. | high | opus | |
| 0x4dade0 | 59 (+1 unwind) | CONTRACT_MANAGER::post_trial_cancelled_news |
thiscall(CONTRACT_MANAGER *this, Staff *staff, Club *club) ret 8 | Posts the trial cancelled news item, type 0xbbc, to a club with a human manager, with staff, names and club slots. | high | opus | |
| 0x4daec0 | 159 | CONTRACT_MANAGER::write_trial_cancelled_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a player's proposed trial was cancelled because the club has no space. | high | opus | |
| 0x4db0b0 | 180 (+1 unwind) | CONTRACT_MANAGER::post_loan_recall_news |
thiscall(CONTRACT_MANAGER *this, Staff *player, Club *acting_club) ret 8 | Posts the news item, type 0xfb8, that a loan is recalled or terminated, and sends it to the club on the other side. | high | opus | |
| 0x4db2e0 | 244 | CONTRACT_MANAGER::write_loan_recall_news_text |
thiscall(CONTRACT_MANAGER *this, NewsItem *item, int full_text, Text *out) ret 0xc | Writes the headline or body of the news that a club recalls a player from loan or terminates his loan. | high | opus | |
| 0x4db5c0 | 1059 (+6 unwind) | CONTRACT_MANAGER::load_from_disk |
thiscall(CONTRACT_MANAGER *this, void *save_file) ret 4 | Reads contract.dat from the save game into the manager, rebuilding squad status offers, staff contracts, decision dates and offers. | high | opus | |
| 0x4dc3a0 | 438 | CONTRACT_MANAGER::save_to_disk |
thiscall(CONTRACT_MANAGER *this, void *save_file) ret 4 | Writes the contract manager state to contract.dat in the save game, sorting decision dates first, and reports any write error. | high | opus | |
| 0x4dc910 | 39 | compare_decision_dates |
cdecl(const DecisionDate *a, const DecisionDate *b) ret 0, returns int | Orders two 14 byte decision date entries by date and then by the time slice byte, for qsort. | high | opus | |
| 0x4dc970 | 29 | compare_talks_records |
cdecl(const int *a, const int *b) ret 0, returns int | Orders two talks records by their three integer keys, player, manager and club, with a null record first. | high | opus |