Rating:

see here: [https://berryberry.hatenablog.jp](https://berryberry.hatenablog.jp/entry/2022/06/12/201817)

(1) Get a LLVM file and Make it an ELF file.
(2) Use Ghidra and decompile it.
(3) Read what they say.

```
flag = ["2c", "2f", "2c", "cf", "cd", "09", "09", "4e", "09", "64", "2f", "cd", "0f", "c4", "6c", "84", "09", "8d", "84", "6f", "8c", "84", "6e", "ae", "09", "09", "4e", "8c", "6f", "c4", "64", "ac", "4e", "84", "24", "84", "a4", "8c", "8e", "8e", "ce", "e4", "6f", "e4", "2f", "8e", "09", "24", "4d", "8e", "4f", "8c", "ae", "4e", "e4", "8e", "a4", "6e", "64", "6e", "8c", "6c", "4f", "84", "6e", "6f", "09", "64"]

a1 = ["1e", "25", "0a", "3f", "1a", "04", "09", "31", "0e", "01", "40", "13", "15", "19", "38", "2b", "1f", "05", "1b", "43", "32", "02", "3a", "23", "1c", "3e", "20", "33", "2e", "27", "37", "00", "24", "1d", "3b", "0c", "41", "07", "3d", "22", "2c", "2a", "0d", "06", "42", "0b", "03", "08", "0f", "12", "36", "35", "26", "28", "30", "2f", "39", "29", "34", "10", "17", "18", "14", "3c", "11", "2d", "21", "16"]

a2 = ["10", "0a", "35", "38", "1b", "21", "20", "07", "3f", "05", "04", "01", "3d", "18", "0e", "2e", "2c", "1d", "3c", "1a", "40", "1c", "1f", "28", "06", "14", "15", "00", "30", "33", "09", "02", "43", "32", "3a", "0c", "12", "11", "17", "39", "25", "29", "19", "0d", "2d", "2a", "08", "16", "1e", "2f", "41", "26", "24", "27", "3b", "2b", "0f", "36", "23", "13", "0b", "22", "34", "3e", "03", "37", "31", "42"]

a3 = ["27", "3b", "3e", "07", "26", "16", "1e", "2d", "3a", "28", "03", "2b", "31", "02", "0a", "41", "1c", "37", "04", "34", "2a", "1b", "17", "3c", "1f", "12", "40", "14", "11", "22", "32", "30", "0e", "2e", "36", "18", "19", "3f", "0f", "33", "2f", "0b", "24", "1d", "38", "00", "0c", "35", "09", "21", "1a", "42", "01", "15", "13", "05", "08", "25", "2c", "43", "06", "23", "20", "3d", "0d", "39", "29", "10"]

-----------------------------------------------------------------------------------------

#to restore each characters to its initial index.
ans = ["a" for p in range(68)]

for i in range(len(flag)):
now1 = "0x" + flag[i]
for j in range(len(a3)):
now2 = "0x" + a3[j]
if (i == int(now2, 16)):
for k in range(len(a2)):
now3 = "0x" + a2[k]
if (j == int(now3, 16)):
for h in range(len(a1)):
now4 = "0x" + a1[h]
if (k == int(now4, 16)):
ans[h] = flag[i]
break
break
break

-----------------------------------------------------------------------------------------

#to replace words which alredy known.
tmp = {'ce':"a", '8e':"c", '4e':"e", '8c':"s", '6e':"d", '2f':"n", 'cf':"i", '8d':"{", '09':"_"}
for i in range(len(ans)):
if (ans[i] in tmp):
ans[i] = tmp[ans[i]]

-----------------------------------------------------------------------------------------

#to find each characters.
def find_moji(x):
import string
string = string.ascii_letters + string.digits + string.punctuation
for i in string:
now = ord(i) ^ 0x17
now = ((now & 0xf) << 4) + (now >> 4)
now = (now << 1) or (now & 0x80) == 0x80
if (str(hex(now)) == x):
return i

for i in range(len(ans)):
if (len(ans[i]) != 1):
now = find_moji("0x" + ans[i])
ans[i] = now

-----------------------------------------------------------------------------------------

print(ans)

```

You need more details?
see here: [https://berryberry.hatenablog.jp](https://berryberry.hatenablog.jp/entry/2022/06/12/201817)