Decompiling the main function in the givin file using ghidra and then cleaning it up gives
```cint main(void)
{  size_t inputLength;  long in_FS_OFFSET;  int counter;  char input [104];  long canary;   canary = *(long *)(in_FS_OFFSET + 0x28);  setvbuf(stdin,(char *)0x0,2,0);  setvbuf(stdout,(char *)0x0,2,0);  puts("Welcome to SuperTexEdit!\n");  puts("To begin using SuperTexEdit, please enter your registration code.");  printf("Code: ");  __isoc99_scanf(&string_format_99s,input);  inputLength = strlen(input);  if (inputLength == 32) {    input[0] = input[0] + -0x69;    input[1] = input[1] + -0x71;    input[2] = input[2] + -0x67;    input[3] = input[3] + -0x70;    input[4] = input[4] + -0x5f;    input[5] = input[5] + -0x6f;    input[6] = input[6] + -0x60;    input[7] = input[7] + -0x74;    input[8] = input[8] + -0x65;    input[9] = input[9] + -0x60;    input[10] = input[10] + -0x59;    input[11] = input[11] + -0x67;    input[12] = input[12] + -99;    input[13] = input[13] + -0x66;    input[14] = input[14] + -0x61;    input[15] = input[15] + -0x57;    input[16] = input[16] + -100;    input[17] = input[17] + -0x4e;    input[18] = input[18] + -0x65;    input[19] = input[19] + -0x5c;    input[20] = input[20] + -0x5e;    input[21] = input[21] + -0x4f;    input[22] = input[22] + -0x49;    input[23] = input[23] + -0x4a;    input[24] = input[24] + -0x5c;    input[25] = input[25] + -0x46;    input[26] = input[26] + -0x4e;    input[27] = input[27] + -0x54;    input[28] = input[28] + -0x51;    input[29] = input[29] + -0x48;    input[30] = input[30] + -0x1c;    input[31] = input[31] + -0x5e;    counter = 0;    while( true ) {      if (31 < counter) {        puts("Key Valid!");        puts("SuperTexEdit booting up...");                    /* WARNING: Subroutine does not return */        abort();      }      if (counter != input[counter]) break;      counter = counter + 1;    }    puts("Invalid code!");  }  else {    puts("Invalid code!");  }  if (canary != *(long *)(in_FS_OFFSET + 0x28)) {                    /* WARNING: Subroutine does not return */    __stack_chk_fail();  }  return 1;}```
and from that we can see that the flag is 32 characters and can be constructed letter by letter.
for the exact flag, check the original write up