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 |
|---|---|---|---|---|---|---|---|
| 0x6db500 | 471 | MATCH_MAN::init |
thiscall(MATCH_MAN* this, CM3_MATCH_ENGINE* match, Staff* manager, Staff** squad, MATCH_PLAYER* players, char side, Club* club, Club* opponent, Fixture* fixture, char* out_count) ret 0x24, returns char selected count | Sets up one side of a match, copies the manager's tactic into the match, picks or places the team and stores the substitutes allowed. | high | opus | 2026-10-14-assistant-and-days-inventory.md, 2026-10-15-assistant-pick-inventory.md, picker.c |
| 0x6dbb10 | 37 | MATCH_MAN::save_team_selection |
thiscall(MATCH_MAN* this) ret 0 | Writes the side's selection record back to the tactics store, except for a human club's reserve team that its manager does not control. | medium | opus | |
| 0x6dbb80 | 78 | MATCH_MAN::place_selected_players |
thiscall(MATCH_MAN* this) ret 0, returns char placed count | Places the players of the stored team selection into the match, skipping injured, banned and away-on-international-duty players, and counts them. | high | opus | 2026-10-14-assistant-and-days-inventory.md, 2026-10-15-assistant-pick-inventory.md |
| 0x6dbc50 | 2265 (+6 unwind) | MATCH_MAN::pick_team |
thiscall(MATCH_MAN* this, Club* opponent, char mode (2 full pick, 1 reserves)) ret 8, returns char selected count | Picks the computer side's starters and substitutes, stores them and the captain, then chooses the tactic, instructions and team mentality settings. | high | opus | 2026-10-14-assistant-and-days-inventory.md, 2026-10-15-assistant-pick-inventory.md, 2026-10-16-foreign-and-tactics-positions.md, picker.c |
| 0x6ddab0 | 2060 | MATCH_MAN::set_computer_instructions |
thiscall(MATCH_MAN* this) ret 0 | Sets the computer side's team and player instructions from the manager's attributes, the players' skills and the club strengths. | medium | opus | 2026-10-14-assistant-and-days-inventory.md, 2026-10-14-columns-and-colours-inventory.md, 2026-10-15-assistant-pick-inventory.md |
| 0x6df460 | 1091 | MATCH_MAN::choose_mentality |
thiscall(MATCH_MAN* this) ret 0, returns char mentality code 1 to 5 | Rates how the side stands against the opponent from strengths, score, time and league position, and returns a mentality code from 1 to 5. | medium | opus | 2026-10-15-assistant-pick-inventory.md |
| 0x6e0230 | 774 | MATCH_MAN::choose_computer_tactic |
thiscall(MATCH_MAN* this, Staff** players, char count, uint flags, char mode) ret 0x10, returns nonzero when a tactic is set | Scores the squad for each position and side, rates every stored preset tactic against those scores and copies the best one into the side. | medium | opus | 2026-10-14-assistant-and-days-inventory.md, 2026-10-15-assistant-pick-inventory.md, 2026-10-16-tactics-inventory.md |
| 0x6e0d00 | 68 | MATCH_MAN::place_player_in_team |
thiscall(MATCH_MAN* this, char squad_no, Staff* player, int slot) ret 0xc, returns 1 placed or 0 empty | Checks the squad number and sets up the player's match record, or ends the game when the number is out of range. | high | opus | 2026-10-14-assistant-and-days-inventory.md, 2026-10-15-assistant-pick-inventory.md |
| 0x6e0df0 | 167 | match_man_compare_players_by_weighted_condition |
cdecl(MATCH_PLAYER** a, MATCH_PLAYER** b) ret 0, returns int | Orders two match players for qsort by condition plus their match score, scaled by position, with empty slots last and keepers first. | medium | opus | |
| 0x6e0fe0 | 63 | match_man_compare_players_by_condition |
cdecl(MATCH_PLAYER** a, MATCH_PLAYER** b) ret 0, returns int | Orders two match players for qsort by condition plus their match score, with empty slots last and keepers first. | medium | opus | |
| 0x6e1090 | 687 | MATCH_MAN::make_substitutions |
thiscall(MATCH_MAN* this, char fill_keeper_slot) ret 4 | Re-picks the side during a match from players on the pitch and the bench, brings on substitutes, posts the events and chooses the captain again. | high | opus | 2026-10-14-assistant-and-days-inventory.md |
| 0x6e1940 | 86 | MATCH_MAN::choose_captain |
thiscall(MATCH_MAN* this, Staff** players, char count) ret 8, returns Staff* | Returns the player of the list with the best captain score, with the manager's judgement adding noise to each score. | high | opus | 2026-10-15-assistant-pick-inventory.md, picker.c |
| 0x6e1a40 | 37 | MATCH_MAN::find_captain_slot |
thiscall(MATCH_MAN* this) ret 0, returns char slot or -1 | Returns the slot of the active match player with the best captain score, for a new captain after a player leaves the pitch. | high | opus | |
| 0x6e1aa0 | 185 | MATCH_MAN::reassign_positions |
thiscall(MATCH_MAN* this) ret 0 | Lets the computer choose a tactic again when eleven players remain, then moves the outfield players to the best positions. | medium | opus | 2026-10-14-assistant-and-days-inventory.md |
| 0x6e1cd0 | 11 | MATCH_MAN::find_match_player |
thiscall(MATCH_MAN* this, Staff* player) ret 4, returns MATCH_PLAYER* or 0 | Returns the side's match player record that holds the given staff member, or null. | high | opus | |
| 0x6e1cf0 | 209 | match_man_get_captain_score |
cdecl(Staff* player, MATCH_PLAYER* match_player (used instead of player when set), Club* club) ret 0, returns short | Scores a player as a captain from contract status, time at the club and personality, returning -10000 for no player. | high | opus | 2026-10-15-assistant-pick-inventory.md, picker.c |
| 0x6e2000 | 1126 | match_man_assign_players_to_positions |
cdecl(Staff** players, char n_players, short* pos_masks, char n_slots, char n_subs, Staff** out, uint flags, Club* club, MATCH_MAN* side or null, Staff* manager or null, int p11, uint8 (slot8)[8], uint8 slot1, uint tactic_flags, short* pos_masks2) ret 0, returns 1 done or 0 | Assigns candidate players to lineup slots by role score, removes double picks and misplaced keepers, recurses for substitutes and swaps pairs that score better. | high | opus | 2026-10-14-assistant-and-days-inventory.md, 2026-10-15-assistant-pick-inventory.md, picker.c |
| 0x6e2f20 | 3784 | match_man_score_player_for_role |
cdecl(Staff* player, Player* data, MATCH_PLAYER* rec or 0, ushort pos_mask, uint flags, Club* club, MATCH_MAN* side, Staff* manager, int threshold, uint64 slot8, uint slot1, uint tactic_flags, ushort pos_mask2, int holiday_record) ret 0, returns int | Scores a player for one lineup role from position ratings, condition, form and status, returning -10000 when the player is rejected. | high | opus | 2026-10-15-assistant-pick-inventory.md, picker.c |
| 0x6e4920 | 1856 | match_man_score_player_for_role_fragment_6e4920 |
none: address inside the instruction at 0x6e491f of 0x6e2f20 | Holds no function. The address is the second byte of an FIDIV instruction in the body of match_man_score_player_for_role. | high | opus | |
| 0x6e4b20 | 1694 | match_man_score_player_for_role_fragment_6e4b20 |
none: address inside the instruction at 0x6e4b1f of 0x6e2f20 | Holds no function. The address is the second byte of an FILD instruction in the body of match_man_score_player_for_role. | high | opus | |
| 0x6e6340 | 2689 | match_man_score_player_for_selection |
cdecl(Staff* player, ushort pos_mask, uint flags, Club* club, float threshold, Staff* viewer or null) ret 0, returns int | Scores a player for a position outside a match from position ratings, condition, form, contract and reputation, returning -10000 for no player data. | medium | opus | |
| 0x6e6550 | 2496 | match_man_score_player_for_selection_fragment_6e6550 |
none: address inside the instruction at 0x6e654f of 0x6e6340 | Holds no function. The address is the second byte of a CMP instruction in the body of match_man_score_player_for_selection. | high | opus | |
| 0x6e6920 | 2254 | match_man_score_player_for_selection_fragment_6e6920 |
none: false entry inside 0x6e6340 | Holds no function. The address is a conditional jump in the middle of match_man_score_player_for_selection, which runs to its ret at 0x6e78a9. | high | opus | |
| 0x6e6f20 | 1797 | match_man_score_player_for_selection_fragment_6e6f20 |
none: false entry inside 0x6e6340 | Holds no function. The address is an FSUB instruction in the middle of match_man_score_player_for_selection. | high | opus | |
| 0x6e86d0 | 206 | match_man_judge_player_ability |
cdecl(Staff* judge or null, Staff* player, Club* club, char kind (2 current ability, else potential), short reputation (-1 looks it up)) ret 0, returns short | Estimates a player's current or potential ability as one staff member sees it, mixing reputation with noise that shrinks with the judge's skill. | high | opus | |
| 0x6e8910 | 827 | match_man_apply_squad_restriction |
cdecl(Club* club, Staff* manager, char* rule, uint flags, char n_slots, char n_subs, char n_spare, Staff** lineup, Staff** bench, Staff** spare, Staff** out, short* pos_masks, short* pos_masks2, uint64* slot8, uint8* slot1, MATCH_MAN* side) ret 0 | Swaps lineup players for eligible alternatives with the smallest score loss until the side meets a squad rule on foreign, non-EU or older players. | medium | opus | 2026-10-15-assistant-pick-inventory.md |