#include "game_types.h"

/* Bignum_Trim2 @ 0x0801D4A0 (real 62B) -- trim with flag set/clear by -1 result. Mirrors src/matched/Bignum_Trim2.c. */
/* Trims (p, count at +14, q, r): a -1 result clears bit 12, otherwise sets
   bit 12 (4096) and publishes to word 20. Returns the trim result. */
extern int Bignum_Trim(int *p, int count, int *q, int r);

int Bignum_Trim2(int *p, int *q, int r)
{
    int t = Bignum_Trim(p, *(short *)((char *)p + 14), q, r);
    if (t == -1) {
        *(unsigned short *)((char *)p + 12) &= 0xEFFF;
    } else {
        *(unsigned short *)((char *)p + 12) |= 4096;
        p[20] = t;
    }
    return t;
}
