#include "game_types.h"

/* Sub_0800F134 @ 0x0800F134 (real 168B) -- mode dispatch twin with 7/-1 tail. Mirrors src/matched/Sub_0800F134.c. */
/* Twin of Sub_0800D0D0 with init consts (flag 3; quad 63/2048/4096/0):
   zero word-4 inits, otherwise the mode dispatch gates publishing p[2] = 7
   and p[3] = -1. */
void Sub_0800F134(int *p)
{
    int *base = *(int **)0x02000134;
    int r;
    if (p[4] == 0) {
        int *q;
        *(int *)((char *)base + 0xA34) = 3;
        q = (int *)((char *)base + 0xA38);
        q[3] = 63;
        q[2] = 2048;
        q[0] = 4096;
        q[1] = 0;
        return;
    }
    {
        int mode = *(int *)((char *)base + 0xA34);
        int *q = (int *)((char *)base + 0xA38);
        int *q2 = (int *)((char *)base + 0xA48);
        if (mode >= 1 && mode <= 3)
            r = q[0] == q[1] && (mode != 1 || q2[0] == q2[1]);
        else
            r = 1;
    }
    if (((r << 24) & 0xFF000000) != 0) {
        p[2] = 7;
        p[3] = -1;
    }
}
