A few things:
It looks like the game chooses from an array of 24 values as follows:
00 00 00 00 0E 01 00 00 0E 02 0E 0E 06 05 04 03 0A 09 08 07 0D 0E 0C 0B
You're reversing each dword. It should be: 00 00 00 00 00 00 01 0E 0E 0E 02 0E 03 04 05 06 07 08 09 0A 0B 0C 0E 0D
And anything marked 0E is skipped at this point: it uses a further array that covers only those values later. All the Break Materia routines are under 00, anyways.
Now if you look carefully, this leaves out eight slots:
Poison
Toad
Mini
Seal Items
Lucky 7
Weapon broken
Armor broken
RestoreHP
Needless to say I'm quite confused. Can someone tell me where these slots are handled?
Lucky 7 simply never does anything. Weapon and Armor Broken are set up in the second list of routines, and simply halve your Att or Def (they don't touch your equipment). The rest simply set bits in 00DC3BA0 which is handled sometime later: I'm not entirely sure when.
Look at 0B! I don't remember seeing that in the arena before.
That's because it can never be called. FF7 instead has a table of 128 different reel variations, one of which is chosen at "random" (or rather, it just takes the current time and mods it by 128, and that's the reel set it uses) when this run of the battle arena begins. Each reel variation has all 21 possible disadvantages over the 7 reels that will be used for the upcoming series of battles, as well as their associated BP bonuses. 0B is not used for any one of them.
The full table's in the 2nd file in co.bin, in case you're interested.
dword (SomeLimitFunction(dword time)
{
dword some_var;
if (time >= 360000 ) //this is 100 hours in seconds.
time = 359999; // 99:59:59 which happens to be the game's max
some_var = ((time / 41100); //11:25:00; No remainders. Max result of 8
some_var = some_var * 10; // some_var is now, at most, 80.
time = (time mod 41100); //it was passed by value so this doesn't really change anything. No remainders. Max of 9
some_var = (time / 4110) + some_var; //some_var is max of 89.
return some_var;
}
Once again, you're reversing your words. It's 0x8CA0, not 0xA08C.