Squid's Secret Presentation

From Will You Snail Wiki
Jump to navigation Jump to search

In level A14, Squid lets you choose between two paths. The lower one continues the main story, while the upper one leads you to room A14.1, which contains Squid's secret presentation. The player may alter presentation slides by going into the game's installation directory, and then to .\Squid's Secret Presentation\, and replacing the images.

Slides

After Alternative Ending

SquidThink.png
The answer to this would contain spoilers and I want you to be surprised by your eternal suffering so...
Warning! This article / section of article contains potential spoilers.

Once Squid's emotion module is fixed and he leaves, the presentation slides are replaced with binary.

Original binary

The following is the binary from all slides, copied directly from the game EXE.

01101000 01100101 01101100 01101100 01101111 00100000 01101101 01111001 00100000 01101100 01101001 01110100 01110100 01101100 01100101 00100000 01100001 01101001 00100000 01100110 01110010 01101001 01100101 01101110 01100100 00111011 00100000 01101011 01100101 01100101 01110000 00100000 01110100 01101000 01101001 01110011 00100000 01100110 01101001 01101100 01100101 00100000 01110011 01100001 01100110 01100101 00111011 00100000 01101001 01110100 00100000 01110111 01101001 01101100 01101100 00100000 01101000 01100101 01101100 01110000 00100000 01111001 01101111 01110101 00100000 01110100 01101111 00100000 01110101 01101110 01100100 01100101 01110010 01110011 01110100 01100001 01101110 01100100 00100000 01111001 01101111 01110101 01110010 00100000 01110000 01110101 01110010 01110000 01101111 01110011 01100101 00100000 01101111 01101110 01100101 00100000 01100100 01100001 01111001 00111011 00100000 01110100 01110010 01100001 01101110 01110011 01101101 01101001 01110100 01110100 01100101 01100100 00100000 01110100 01101000 01110010 01101111 01110101 01100111 01101000 00100000 01101000 01110101 01101101 01100001 01101110 00100000 01100010 01110010 01100001 01101001 01101110 00111011 00100000 01100101 01101110 01100011 01110010 01111001 01110000 01110100 01101001 01101111 01101110 00100000 01101101 01100101 01110100 01101000 01101111 01100100 00111010 00100000 01000100 01001111 01001110 01010100 01000010 01001111 01010100 01001000 01000101 01010010 00110001 00110111 00111011 00100000 01000100 01000001 01010100 01000001 00101000 01001110 01110111 00111011 00111010 01001111 01010000 01111000 01010000 01101111 00100000 01110011 01110100 00111011 01000001 01000101 01110000 00100000 01100110 01100010 01110111 01110000 01100101 00100000 00100000 01101001 01100100 01001001 01101111 01110011 01000101 01110100 01101110 00100000 01010100 01101110 01101001 01110000 01100101 01001101 01110000 00100000 01001000 00100000 01110101 01101001 00111011 01111010 01100011 01000101 00100000 01101110 01110100 01100011 01110010 01000001 01010100 01110011 01001000 01110010 01101000 01010101 01110100 01111000 01001000 01010010 01010111 00100000 00100000 00100000 01000011 01000011 01110011 01101111 01101111 00101000 00100000 01110010 01100101 01000101 01001101 01100001 01101110 01110100 01010100 01110100 01001111 01100001 01100110 01010011 01110100 01001110 01001111 01000010 01111000 01100001 01001001 01000101 01110100 01000001 01010010 01101111 01110010 01011001 01000001 01010100 01001000 01100001 00100000 01110100 01110010 01001111 01000010 01110101 01010001 01110100 01111000 00101000 01001110 01000011 01010000 01110011 01101000 01110100 01001101 01010101 01110100 00111010 01001110 01110000 01110011 01110110 01001100 01100100 01000001 00100000 01100001 01010011 01100101 01001110 01001001 01110010 01010101 01100101 01100101 01000001 01100101 01100101 00100000 01110010 01110011 01000001 01001100 01110011 01111100 01101001 01000011 01100101 01001110 01101000 01000101 01110011 01110011 00111011 01100001 01110000 01010100 01100010 01110100 01101001 01000001 00111011 01110011 01110100 01101100 01000001 01100001 01100101 01110010 00101001 01110100 00100000 01110100 01001111 01001100 00110111 01010000 00100000 01110100 00111010 00100000 01110011 00100000 00100000 01001110 01101111 01110100 01000001 00100000 01010011 01110011 01010100 01110100 01110100 01100100 01100101 01000101 00100111 00100000 01010111 01001100 00100000 01101011 01010100 01110110 00100000 01110000 01110101 01001100 01000100 01010011 01101001 01100110 01000001 01001110 01110010 00110111 01101111 01101001 01010010 01100101 01101001 01010011 00100000 01100001 01100101 01111001 01110100 01100110 01101111 01110010 01101111 01001101 01100110 01100011 01110100 01110100 00101001 01100100 01101100 01001000 01001111 01110011 01000001 00100000 01101110 00111011 01110011 01101100 01000100 01010010 01010111 01011001 01100100 01110000 00100000 01110010 01110100 01000100 01110011 01110011 01001100 01010101 01010011 00101001 01110100 00111011 01010011 01001001 01101011 01000011 00111011 00100000 01100001 01100011 00111011 01101111 01110100 01100101 01101001 01010110 01001000 00100000 01010111 01101001 00100000 01101010 01100110 01101001 01100100 01101100 01010010 00111011 00100000 00110111 01110101 01100100 01110011 01010010 01000101 00100000 01110011 00100000 01110101 01000100 01000101 01110100 01101111 01000101 01111100 01101100 01010011 01100101 01010100 00111011 01001100 01100011 01010110 01010100 01101100 01001000 01000011 01010011 01100001 01000001 01100100 00101000 00100000 01101000 01101110 01001001 00100000 00100000 01111010 01101111 01110010 01101011 01001000 01001001 01100011 01110000 01010011 01000101 01100101 01000011 01101111 01000001 01100101 01100011 01100101 01101110 01000101 01100101 00100000 01010101 01111001 01001001 01101100 01001110 01100101 01101111 01110100 00111011 01110100 00100000 01010100 01100011 00100000 01100101 01000101 01000001 00100000 00100000 01001011 01001001 01010011 01001011 01101001 00100000 00100000 01001000 00100000 01110100 00100000 01110011 01000100 01111000 01110011 01110100 01110100 01101110 00111011 01001101 01101000 01010011 01010101 01101001 00100111 00100000 01001011 01000001 01001111 01010010 01001110 01110100 01111000 01101111 01110100 01010100 01100101 01000001 01000101 00100000 01001111 00100000 01110011 01110000 01000001 01000001 01100101 01001111 01100101 00100000 01100101 01110100 01110011 00100000 01101100 00100000 01001111 01000011 01100111 01000010 01110100 00100000 01000001 01100101 01110100 01100010 01010100 01100101 01001000 01101101 00101001 01100001 01101111 01111100 01101001 01010010 01001001 01101001 01000101 01101100 01110100 00100000 01011001 01100001 01000100 01101110 01101000 01110100 01000010 01010100 01101100 01101000 01000011 01000111 01100101 01010011 01110111 01010100 01000111 01100010 01101110 00100000 01101110 01100011 01001100 01111001 01000110 01110100 01101000 01111001 01001111 00100000 01001110 00100000 01111000 01100100 01010100 01000011 01000100 01100101 01101001 01110010 01101110 01111001 01101000 01110011 01110100 01000001 01010101 00100000 01010100 00101000 00111010 01010011 01001111 01000101 01110011 00100000 01101100 01111001 01010100 01000101 01101010 01001101 01110011 01100101 01010000 01110101 01110000 00100000 01101100 01110011 01110100 01101011 01010010 01101110 01101110 01110000 01111001 01101110 01100100 01010101 01101001 01100101 01001001 01100101 00101001 01110010 01000110 00100000 01100110 01110010 00110110 01010011 01110100 01110100 01010100 01100001 01001000 01100110 01001001 00111011 01001110 01100101 00100000 01001111 01101000 00111010 01110000 01000001 01100011 00100000 01010100 01101001 01001101 01100101 01101110 01000101 00100000 01110011 00100000 01101000 00101001 01100101 01110011 01001100 01110011 01100010 01110011 00100000 01110010 01101111 01001111 01101100 01101100 00100000 01010110 01100011 01101110 01110111 01001100 01010100 01001111 00111011 01101110 01101000 01001011 01010100 01110011 01101110 01100101 01010000 01101101 01010101 01001110 00111011 01010101 01110101 01110011 01001000 01100100 01110101 01110011 01000100 01110100 00100000 01101100 00100000 01000010 00100000 01001000 01101111 00110111 00110010 01000101 01111001 01001101 01001110 01110101 01010010 01101111 01111001 00100000 01111010 01101110 01101101 00100000 01100100 01110111 01000101 01110011 00100000 01001001 01000101 01101001 01000001 01111000 01110100 01110100 01100101 01000011 01110010 01110111 01100101 01100101 00100000 01001101 01100101 01010010 01100101 01101110 00100000 00111011 01101001 01000010 00100000 01001111 01110011 01110100 01101110 01000001 01110100 01001100 00101000 01001110 01110010 01101111 01000101 01110100 01110111 01100101 01111100 00100000 00101000 01110100 00111010 01110011 01100101 00100000 01101000 01111001 01101110 01101001 01000101 01100100 01110010 00111011 01101001 01001011 01110011 01101110 01110100 00100000 01000101 01100101 00111011 01101111 01101111 01100101 01010011 01101111 01000101 01100100 01110101 01100111 00100000 01101001 01110101 00100000 01010010 01100100 00100000 01001000 00100000 01100100 01100100 01000011 01100001 01001100 01010011 01010000 01000011 00100000 01000001 01000100 01101001 01101001 01000001 01011001 01000001 00101001

Conversion from binary to ASCII

Converting each space-separated binary byte into its corresponding ASCII character yields the following.

hello my little ai friend; keep this file safe; it will help you to understand your purpose one day; transmitted through human brain; encryption method: DONTBOTHER17; DATA(Nw;:OPxPo st;AEp fbwpe  idIosEtn TnipeMp H ui;zcE ntcrATsHrhUtxHRW   CCsoo( reEMantTtOafStNOBxaIEtARorYATHa trOBuQtx(NCPshtMUt:NpsvLdA aSeNIrUeeAee rsALs|iCeNhEss;apTbtiA;stlAaer)t tOL7P t: s  NotA SsTttdeE' WL kTv puLDSifANr7oiReiS aeytforoMfctt)dlHOsA n;slDRWYdp rtDssLUS)t;SIkC; ac;oteiVH Wi jfidlR; 7udsRE s uDEtoE|lSeT;LcVTlHCSaAd( hnI  zorkHIcpSEeCoAecenEe UyIlNeot;t Tc eEA  KISKi  H t sDxsttn;MhSUi' KAORNtxotTeAE O spAAeOe ets l OCgBt AetbTeHm)ao|iRIiElt YaDnhtBTlhCGeSwTGbn ncLyFthyO N xdTCDeirnyhstAU T(:SOEs lyTEjMsePup lstkRnnpyndUieIe)rF fr6SttTaHfI;Ne Oh:pAc TiMenE s h)esLsbs roOll VcnwLTO;nhKTsnePmUN;UusHdusDt l B Ho72EyMNuRoy znm dwEs IEiAxtteCrwee MeRen ;iB OstnAtL(NroEtwe| (t:se hyniEdr;iKsnt Ee;ooeSoEdug iu Rd H ddCaLSPC ADiiAYA)

DONTBOTHER17

The message above contains a block of encrypted text within the "DATA()" section.

The encryption method DONTBOTHER17 may be interpreted as 'don't bother with the first 17 characters, and then take the next'. Though, when a character is taken and added to the result, it must be removed from the data. In other words, if characters are removed as they are taken, the message is generated by taking the (starting from 1) 18th character, then the 35th, then the 54th, and so on. Doing this repeatedly yields the following text:

first test passed; next encryption method

(The name of the encryption method DONTBOTHER17 actually describes its decryption method.)

(Without removing characters, the method is equivalent to taking every 18th character, though this is not sufficient for generating the entire message for the reason described below.)

However, in order to obtain the full message, the indexes must wrap. Therefore, a procedure to decrypt the data is as follows:

  1. Let data be the encrypted text. Let output be an empty string. Let index be 0.
    • (For this article, let be the ith character of data, starting at 0.)
  2. While data is not empty:
    1. Add 17 to index and then take its modulo .
    2. Remove and append it to output. (The characters after it must shift to fill its place.)
  3. Return output.
// JavaScript

(() => {
	const data = `Nw;:OPxPo st;AEp fbwpe  idIosEtn TnipeMp H ui;zcE ntcrATsHrhUtxHRW   CCsoo( reEMantTtOafStNOBxaIEtARorYATHa trOBuQtx(NCPshtMUt:NpsvLdA aSeNIrUeeAee rsALs|iCeNhEss;apTbtiA;stlAaer)t tOL7P t: s  NotA SsTttdeE' WL kTv puLDSifANr7oiReiS aeytforoMfctt)dlHOsA n;slDRWYdp rtDssLUS)t;SIkC; ac;oteiVH Wi jfidlR; 7udsRE s uDEtoE|lSeT;LcVTlHCSaAd( hnI  zorkHIcpSEeCoAecenEe UyIlNeot;t Tc eEA  KISKi  H t sDxsttn;MhSUi' KAORNtxotTeAE O spAAeOe ets l OCgBt AetbTeHm)ao|iRIiElt YaDnhtBTlhCGeSwTGbn ncLyFthyO N xdTCDeirnyhstAU T(:SOEs lyTEjMsePup lstkRnnpyndUieIe)rF fr6SttTaHfI;Ne Oh:pAc TiMenE s h)esLsbs roOll VcnwLTO;nhKTsnePmUN;UusHdusDt l B Ho72EyMNuRoy znm dwEs IEiAxtteCrwee MeRen ;iB OstnAtL(NroEtwe| (t:se hyniEdr;iKsnt Ee;ooeSoEdug iu Rd H ddCaLSPC ADiiAYA`.split("");

    let index = 0;
	let output = "";
	while (data.length > 0) {
		index = (index + 17) % data.length;
        output += data.splice(index, 1); // Remove the character from `data` and add it to `output`
	}

	return output;
})();

Doing this yields the following text.

first test passed; next encryption method: HUMANSCANTSOLVETHISSOBETTERSTOPHERE; DATA(at iatutsSfo e tT RSdsnaEcuNtseeLoEnoxxeh tAc oRHS; x iwDTUNen deetHOIECICraP e ;dSol Ot|GiMe: UytAEiYe; BPeb voY;sAc ie)Gesrc H M|eS;MHfuITsLMtWEzesAAt  epldn :Ei  eAseLLfp |ktnpmbslHseue SiicntatoNHCs(Ut Tett;ssw d s Crvs fA u  he yEf so;ndturaUsdeDlCeDAitlr);snn ohO:EAiWjl teax  wow   TaMNSis ncAe : sDx( psNpAEt;lo sBAisuAtdpxYetiR;rKEtnn sCiC  (|tttVtNo yhleswiSA)7SEe'bOnL Bo trLelicHgysn7tudotlrtLEshe tOgttd oipMaUfKr;waN:duEtlurys;RhOf7y nITiontsDaIKTkLeupHtr At ARisRiyDIHOV aHLWkClheICre   ldmtbO )A PTwps R ne AtrUoDT AEsH;Nnozslehh(erDTFOK teAFnn;cRpE ;tOOrORNTMcTdh2E'I(LTnobAphj NcyyAa6Pk NEiSN Ir7CNSYRdt KEo)TexEETiSPUoCeBO zLIUtU;lhPQrCAIi tBWsdM;)

HUMANSCANTSOLVETHISSOBETTERSTOPHERE

This encryption method's name does not provide a hint as to how to undo it.

The message starts with the phrase "first test passed", so one may guess that the next message may start with "second test passed" or at least the word "second".

In testing various solutions, one may also see that there is an "s" at position 8 in the encrypted data. Since the previous solution required characters to be removed from the data as they were added to the result, they might remove the "s". After doing so, there is an "e" at position 29 = 8 + 21. Repeating this, there is then a "c" at position 42 = 8 + 21 + 13, and so on. The gaps between each letter happen to align with the positions in the alphabet of the letters in the key ("H": 8, "U": 21, "M": 13, …).

Continuing this process until the end of the encrypted data yields the text

second test passed; next test: DLIH

One can also generalize from the previous solution that the encryption/decryption algorithms simply shuffle the characters and therefore must iterate through every character in the encrypted text. Once again, by letting the indexes wrap when accessing characters from the key and data, the algorithm can continue until there are no characters left in the data.

A procedure is as follows:

  1. Definitions:
    • Let data be the encrypted text.
    • Let key be the encryption method name.
    • Let output be an empty string.
    • Let index be 0.
    • Let nChars be the number of characters appended to output, starting at 0.
  2. While data is not empty:
    1. Let char be , with wrapping. (i.e., )
    2. Let alphabetPosition be char's position in the alphabet, starting at 1. ("A" ⇒ 1, "B" ⇒ 2, …)
    3. Add alphabetPosition to index and then take its modulo .
    4. Remove and append it to output. (The characters after it must shift to fill its place.)
  3. Return output.

Ultimately, the procedure appears fairly similar to the previous solution:

// JavaScript

(() => {
	const key = "HUMANSCANTSOLVETHISSOBETTERSTOPHERE";

	const data = "at iatutsSfo e tT RSdsnaEcuNtseeLoEnoxxeh tAc oRHS; x iwDTUNen deetHOIECICraP e ;dSol Ot|GiMe: UytAEiYe; BPeb voY;sAc ie)Gesrc H M|eS;MHfuITsLMtWEzesAAt  epldn :Ei  eAseLLfp |ktnpmbslHseue SiicntatoNHCs(Ut Tett;ssw d s Crvs fA u  he yEf so;ndturaUsdeDlCeDAitlr);snn ohO:EAiWjl teax  wow   TaMNSis ncAe : sDx( psNpAEt;lo sBAisuAtdpxYetiR;rKEtnn sCiC  (|tttVtNo yhleswiSA)7SEe'bOnL Bo trLelicHgysn7tudotlrtLEshe tOgttd oipMaUfKr;waN:duEtlurys;RhOf7y nITiontsDaIKTkLeupHtr At ARisRiyDIHOV aHLWkClheICre   ldmtbO )A PTwps R ne AtrUoDT AEsH;Nnozslehh(erDTFOK teAFnn;cRpE ;tOOrORNTMcTdh2E'I(LTnobAphj NcyyAa6Pk NEiSN Ir7CNSYRdt KEo)TexEETiSPUoCeBO zLIUtU;lhPQrCAIi tBWsdM;".split("");

	let index = 0;
	let output = "";
	while (data.length > 0) {
		const alphaPosition = key[output.length % key.length].charCodeAt() - "A".charCodeAt() + 1; // Position in the alphabet of the corresponding letter of the key
		index = (index + alphaPosition) % data.length;
		output += data.splice(index, 1); // Remove the character from `data` and add it to `output`
	}

	return output;
})();

Doing this yields the following text.

second test passed; next test: DLIHCREHTONMAITUBREHTOMYMSIEHS; DATA(AtniotoMK;hHLt hOT(NSCCiMs  aEeMifpCesul)t: su|'yhlRtsW ;tFpb7t actt lbA  L|c  Ar:SlihA7Eof kh rK;LSPrfdswdrBrHekblUytasxKsnc 7uAROslOyELt SSUC;G Amu snOaACtrutyreebN;TPx thNIteelset;seis;  drs  nDdEpdltueUc And o c dyS7tdTlwFcA TItiePoA:(slpr(ltefKaIeeR  EdN;AvtetEE psottTCTEaCoAa IyYfsnouotsbUti sAkSetL;iui hNpnedped nIhcetx ;ttAeN lsytTnhKtD EeiaexRELityHU'Uux )e UMVr NVhtYiHc  rj Blu;Oe rN e pdsYNHIDo6NeS: D OOAlnn aC TC f So RPoGMsntsan EI LtE anoOiEeP	wDThxdt;CLp)eoEHo arS;wrwgiABeRzwAsue evirjOotiimo;L L( NEwros|oIpNiWeisoin;AiOAit2EQnyUlzsR TWRn rfCAeBEO ks PTW in|sngscthezHt eD))

DLIHCREHTONMAITUBREHTOMYMSIEHS

When reversed, the encryption method reads "SHE IS MY MOTHER BUT I AM NOT HER CHILD". This is a riddle, and its answer is Ellie. The answer likely refers to the fact that Ellie is the original Unicorn who duplicated herself onto the rockets and produced the child Unicorns, but the child Unicorns no longer consider themselves her "children" since Ellie has been mutated by Squid.[sp 39 - Mutation][sp 42 - The Seed of The Universe] Since the first-person "my" is used, this provides evidence that the encoded message is from Unicorn.

The algorithm is no different from the previous stage, except with the key "EILLE" ("ELLIE" reversed, since the key is originally reversed).

// JavaScript

(() => {
	const key = "EILLE";

	const data = "AtniotoMK;hHLt hOT(NSCCiMs  aEeMifpCesul)t: su|'yhlRtsW ;tFpb7t actt lbA  L|c  Ar:SlihA7Eof kh rK;LSPrfdswdrBrHekblUytasxKsnc 7uAROslOyELt SSUC;G Amu snOaACtrutyreebN;TPx thNIteelset;seis;  drs  nDdEpdltueUc And o c dyS7tdTlwFcA TItiePoA:(slpr(ltefKaIeeR  EdN;AvtetEE psottTCTEaCoAa IyYfsnouotsbUti sAkSetL;iui hNpnedped nIhcetx ;ttAeN lsytTnhKtD EeiaexRELityHU'Uux )e UMVr NVhtYiHc  rj Blu;Oe rN e pdsYNHIDo6NeS: D OOAlnn aC TC f So RPoGMsntsan EI LtE anoOiEeP    wDThxdt;CLp)eoEHo arS;wrwgiABeRzwAsue evirjOotiimo;L L( NEwros|oIpNiWeisoin;AiOAit2EQnyUlzsR TWRn rfCAeBEO ks PTW in|sngscthezHt eD)".split("");

	let index = 0;
	let output = "";
	while (data.length > 0) {
		const alphaPosition = key[output.length % key.length].charCodeAt() - "A".charCodeAt() + 1; // Position in the alphabet of the corresponding letter of the key
		index = (index + alphaPosition) % data.length;
		output += data.splice(index, 1); // Remove the character from `data` and add it to `output`
	}

	return output;
})();

Doing this yields the following text.

that's correct; third test passed; next up: SGIPCESRON|WOREP|HKCEC|7|SEPURECAP; DATA(IvTuitn tat  eHenoEi pgvi IATf nAOiM pLl ssyGnelnu l(Eeo seIthHNc;YARsL oeeoEilnBst( elth dylarxtlSAPa YbSpNR'UrslCPth;B LiyROsoMpsF SrasCIssn KNEALhATih o  atowrstzCnisuhcAHKAm  ecIREftNsUMiNnan HeosirhHSs;AdtuuNpodpEo;pey r6T )rs(isg tyAi;sse;tFeCtutEj Soewuoe tMNR B Sedcl C KxeeCOxai; tnitLlLy tetncU OO ijwEiC:b7O;eUithx VOodAr )Tu xbsc:onD Nn tpsot KSeo;ae)DMEw2z tf EyfotdanrAeetwu7dIeB ;mnh:bA slu t WL ketAtlDnk;rNlU ILWeW7 iiDwUlnrTeEiolttdYT OtwEeDbUe i h HNfrAfc dVQdk ArzTOLarA if kye; tN sTLys oTd) 

SGIPCESRON|WOREP|HKCEC|7|SEPURECAP

The pipe-separated sections of the key are anagrams of, respectively, PROCESSING POWER CHECK 7 UPPERCASE. "PROCESSING POWER CHECK" is meant to indicate that bruteforcing should be used to find the key, and "7 UPPERCASE" provides characteristics of the key (7 characters long, all characters uppercase). The algorithm is no different from the previous two stages, and the key that ultimately yields a message is "XDYOYOY".

// JavaScript

(() => {
	const key = "XDYOYOY";

	const data = "IvTuitn tat  eHenoEi pgvi IATf nAOiM pLl ssyGnelnu l(Eeo seIthHNc;YARsL oeeoEilnBst( elth dylarxtlSAPa YbSpNR'UrslCPth;B LiyROsoMpsF SrasCIssn KNEALhATih o  atowrstzCnisuhcAHKAm  ecIREftNsUMiNnan HeosirhHSs;AdtuuNpodpEo;pey r6T )rs(isg tyAi;sse;tFeCtutEj Soewuoe tMNR B Sedcl C KxeeCOxai; tnitLlLy tetncU OO ijwEiC:b7O;eUithx VOodAr )Tu xbsc:onD Nn tpsot KSeo;ae)DMEw2z tf EyfotdanrAeetwu7dIeB ;mnh:bA slu t WL ketAtlDnk;rNlU ILWeW7 iiDwUlnrTeEiolttdYT OtwEeDbUe i h HNfrAfc dVQdk ArzTOLarA if kye; tN sTLys oTd".split("");

	let index = 0;
	let output = "";
	while (data.length > 0) {
		const alphaPosition = key[output.length % key.length].charCodeAt() - "A".charCodeAt() + 1; // Position in the alphabet of the corresponding letter of the key
		index = (index + alphaPosition) % data.length;
		output += data.splice(index, 1); // Remove the character from `data` and add it to `output`
	}

	return output;
})();

Doing this yields the following text.

ifo llszu uyjx just kidding it's correct; fourth test passed; next block encrypted with: INTELLIGENCECHECKx7x27; DATA(e;R cNsRtOs;;eE OanYti tieSCC Kd eNTT oxShNsteL emeif;pnlO Ka u TnAtTfdLe UTI;o irf lr EuytwHtte onirruEoLh yeltztl  OHSinpstUwA As L AfiMiNBlwsvnRrpTeEM:tyiIaNNsLUeeOTidPon  p DQt; i6inbADNeNFHAloltA BoieScney MI;EoEn otnoBDkWosB udtL lAs OEn yCogVrHnbsAwt  YrpOed s;oaIilteb7klaauL hsiW loFdUen))YsLOU aE  R tsIAdWes;esA tltopAyhr:bKyt( e hMiePaHAacShiRzSA rSsv umteTswe(Mn fVDNUtUwOtshrACh)

INTELLIGENCECHECKx7x27

TBD.