The main problem here is that we cannot express either ALL or it's complement by a TM. There are no enumerater for these sets. So we need to use an oracle to be able to express these sets by an oracle TM.
Consider the following set:
K = {<e,i> | e is code of a TM that halts with input i.}
Using an oracle for K we can make the following program for enumerating ALL's complement:
for each e (e is code of a TM):
Look for a number say d such that <e,d> doesn't belong to K.
If there is such an d, print e.
After here, when I say oracle, I mean an oracle for K:
Let's say that ALL is many one reducible to its complement. Then according to properties of many one reduction, ALL's complement being enumerabe by an oracle TM implies that ALL is enumerabe by an oracle TM. So ALL is decidable using an oracle TM.
Now let e be code of the oracle TM which decides ALL. We define the following machine:
For input i:
If i belongs to ALL, Run i's machine on i as input. Add one to result and return the final number.
Otherwise, halt and print 0.
Now, if e0 is code of the TM described above, what would be the result of giving this TM its own code?
Then we have that result of running i's machine on i as input is same as result of adding one to result of running i's machine with i as input!
We get into an contradiction. So ALL is not decidable using an oracle for K. So our previous hypothesis which states that ALL is many one reducible to its complement is false.