#include "game_types.h"

/* Bignum_TrimDigits @ 0x0801D460 (real 58B) -- conditional trim then normalize (mask 0xFFFFEFFF). Mirrors src/matched/Bignum_TrimDigits.c. */
/* Conditionally trims (flag 0x100 in the halfword at +12 selects the
   count at +14), clears bit 12 via mask 0xFFFFEFFF, then normalizes. */
extern int Bignum_Trim(int *p, int count, int zero, int two);
extern int Bignum_Normalize_0801D4F0(int *p, int count, int *q, int extra);

int Bignum_TrimDigits(int *p, int *q, int extra)
{
    if ((*(unsigned short *)((char *)p + 12) & 0x100) != 0)
        Bignum_Trim(p, *(short *)((char *)p + 14), 0, 2);
    *(unsigned short *)((char *)p + 12) &= 0xEFFF;
    return Bignum_Normalize_0801D4F0((int *)p[21],
                                     *(short *)((char *)p + 14), q, extra);
}
