// Bit8u SUPPRESS_WRITER(const void *_data, const void *_mask, Bit16u xx, Bit32u yy) { // [bp+06] -> data // [bp+0A] -> mask // [bp+0E] -> xx // [bp+10] -> yy const Bit8u *data = (const Bit8u *)_data; const Bit8u *mask = (const Bit8u *)_mask; //^2066:000F Bit32u bp0a = 0; Bit8u bp04 = _4976_5254; // queued nibble Bit8u bp05 = _4976_524e; // current bit position Bit32u bp0e = 0; //^2066:0034 while (!(bp0e >= yy)) { //^2066:0037 Bit16u si = 0; //^2066:0039 while (!(si >= xx)) { //^2066:003C Bit8u data_nibble = *data; // [bp-03] data++; Bit8u mask_nibble = *mask; // [bp-02] mask++; //^2066:0054 if (mask_nibble != 0) { //^2066:005D __int8 bp01 = 0x07; //^2066:0061 while (bp01 >= 0) { //^2066:0063 if (((1 << bp01) & mask_nibble) != 0) { //^2066:0074 bp04 <<= 1; //^2066:0077 if (((1 << bp01) & data_nibble) != 0) { bp04 |= 1; } //^2066:008C bp0a++; //^2066:0094 bp05 = bp05 + 1; //^2066:009C if (bp05 == 8) { //^2066:00A0 Bit8u bp0f = bp04; if (FILE_WRITE(_4976_394e, 1, &bp0f) == 0) return 1; //^2066:00C4 bp05 = bp04 = 0; } } //^2066:00CC bp01--; //^2066:00CF } } //^2066:00D5 si++; //^2066:00D6 } //^2066:00DE data -= xx; bp0e++; //^2066:00EC } //^2066:0104 _4976_5254 = bp04; _4976_524e = bp05; _4976_5258 += bp0a; return 0; }