Rating: 1.0

Solution:
```
# Topic: https://en.wikipedia.org/wiki/Modular_multiplicative_inverse
# Extended Euclidean algorithm
def xgcd(x,y):
a0 = 1; b0 = 0;
a1 = 0; b1 = 1;
if x < 0:
x *= -1
a0 = -1
if y < 0:
y *= -1
b1 = -1
if x < y:
x, y, a0, b0, a1, b1 = y, x, a1, b1, a0, b0
while 1:
times = x / y
x -= times * y
a0 -= times * a1
b0 -= times * b1
if x == 0:
break
x, y, a0, b0, a1, b1 = y, x, a1, b1, a0, b0
return [y, a1, b1]

# Find multiplicative inverse
def invmod(x,p):
[gcd, a, b] = xgcd(x,p)
if gcd != 1:
raise ValueError
if a < 0:
a += p
return a

# Hardcode array from reverse.apk
array = [
0x271986b, 0xa64239c9, 0x271ded4b, 0x1186143, 0xc0fa229f, 0x690e10bf,
0x28dca257, 0x16c699d1, 0x55a56ffd, 0x7eb870a1, 0xc5c9799f, 0x2f838e65
]

# Find bytes of flag
res = ""
for elem in array:
# Find multiplicative inverse
a = invmod(elem, 0x100000000)
# Dword -> chars
s = 0
for i in range(4):
res += chr((a >> s) & 0xFF)
s += 8
# Flag
print (res)
```