Range=0x81000000-0x82000000
まずseg1の範囲はそんなに広くない
検索サイズを8Bitにしているのでそんなに広い範囲では候補が多くなる

戻り値(R0)にイベント実行(1)、イベント未実行(0)の何れかを設定し呼び出し元に戻る
を参考にデータロードで資金を30憶未満にして上から順番に候補アドレスの数値を1にして
週送り6月1週でイベントが起きるか確認→この工程を300回位い繰り返したのですが
データとプログラムは別物なので分けて考えないといけない
上はイベント実行の可否チェックを行う関数を呼び出すプログラムがイベントを実行するのかしないのかを受け取る値
アドレスに格納されている値ではなくR0などのレジスタでやりとりさせる一時的な値
そしてイベント実行すると呼び出したプログラムがイベント実行済みのフラグを立てる
この立てられたフラグは一時的なものでは困るのでメモリに退避される
実行したイベントIDから計算されるアドレスにビット単位での管理を行っている

試しにやったみた
初回 6月1週に initialサーチ
1回目 多数 6月1週から2週にかけて海外牧場示唆イベント発生させて<>検索
2回目 50件位 ロードして<>検索
3回目 20件位 6月1週から2週にかけて海外牧場示唆イベント発生させず==検索
4回目 1件 6月2週から3週にかけて海外牧場示唆イベント発生させて<>検索

結果:所持金アドレスから見て+0x1000範囲内に存在した
ちなみにフラグは牧場長の話が終わった直後に立つ
値は特定したアドレス8bit中の下位第1bit目(8bitは第0bitから第7bit)
要するに2を論理和する(0なら2、1なら3、4なら6、6なら6、Windowsプログラマー電卓でQWORDをBYTEに変えHEXでし特定したアドレスの値を貼り付けビット反転キーパッドにすると示唆イベント未実行だと右から2つ目が0になっているはずなのでそれをクリックして1にした値)

海外牧場示唆イベントを発生させずに、上記で特定したフラグを立てて、確率50%を無効にして7月1週に海外牧場建設イベントの発生を確認した

それほど価値のあるコードというかコード化はbit単位なので無理だが…書き換えるする頻度は1馬主につき1回だけだから大した問題でもないけど
諦めたのならそれでいいと思う