#include <iostream>
#include <cstring>
#include <fstream>

#define INPUT_FILE "/home/username/files/S34ML02G1@TSOP48.BIN"
#define OUTPUT_FILE "/home/username/files/S34ML02G1@TSOP48.BIN_strip"

int readFile(char* path, unsigned char buffer[], int len) {
    std::ifstream infile(path);
    size_t chars_read;
    //read file
    if (!(infile.read((char*)buffer, len))) {
        if (!infile.eof()) {
            exit(0);
        }
    }
    chars_read = infile.gcount();
    printf("read: %d bytes\n", chars_read);
    return chars_read;
}


void appendBytes(int size, uint8_t b[]) {
	std::fstream f(OUTPUT_FILE, std::ios::binary | std::ios::app);
	f.write((char*)b, size);
	f.close();
}

int main() {
	uint8_t *file  = new uint8_t[276824064];
	uint8_t dataBuf[2048];
	int size = readFile(INPUT_FILE, file, 276824064);
	
	for (int i = 0; i < (size / 0x840); i++) {
        memcpy(dataBuf, file+(i*0x840), 512);
        memcpy(dataBuf+512, file+(i*0x840)+0x20e, 512);
        memcpy(dataBuf+1024, file+(i*0x840)+0x41c, 512);
        memcpy(dataBuf+1536, file+(i*0x840)+0x62a, 470);
        memcpy(dataBuf+2006, file+(i*0x840)+0x802, 42);
		appendBytes(2048, dataBuf);
	}
	return 0;
}
