# Broland
## binary output file
- output長度跟ingvar有關,是5865
- 第一輪處理從後面開始處理bengt長的資料
- 每episode從後面開始處理joergen長的資料
## source code
```
from broland import sub2pewdiepie12, joergen
from bitstring import BitArray
mushroomcow = 2**32 - 1
def water_temple(sheep, freedom):
council = ''
for deeep, dinnerbone in enumerate(sheep):
council += '0' if ord(dinnerbone) ^ ord(freedom[deeep]) == 0 else '1'
return council
def fricking_chamber(librarian):
s = int(librarian, 2)
for rounds in range(24, 0, -1):
x = s >> 64
y = (s >> 32) & mushroomcow
z = s & mushroomcow
a = ((x << 24) | (x >> 8)) & mushroomcow
b = ((y << 9) | (y >> 23)) & mushroomcow
c = z
d = (a ^ (c << 1) ^ ((b & c) << 2)) & mushroomcow
e = (b ^ a ^ ((a | c) << 1)) & mushroomcow
f = (c ^ b ^ ((a & b) << 3)) & mushroomcow
s = (f << 64) | (e << 32) | d
if rounds & 3 == 0:
s ^= (0x9e377900 | rounds) << 64
return bin(s)[2:]
bengt = len(sub2pewdiepie12)
sven = sub2pewdiepie12
svenBF = BitArray(bytes=bytes(open("./flag.png", 'rb').read())).bin
ingvar = len(svenBF)
episode = 0
alabama = water_temple(sven, svenBF[-bengt:])
sven = fricking_chamber(sven)
feigi = (ingvar - bengt) // joergen
ikeabird = (ingvar - bengt) % joergen
while episode < feigi:
alabama += water_temple(svenBF[-bengt - joergen * (episode + 1) : -bengt - joergen * episode], sven)
sven = fricking_chamber(sven)
episode += 1
alabama += water_temple(svenBF[:ikeabird], sven)
res = open('flag.enc', 'wb')
res.write(bytes(int(alabama[i : i + 8], 2) for i in range(0, ingvar, 8)))
res.close()
```