contract Contract {
function main() {
memory[0x40:0x60] = 0x60;
if (msg.data.length < 0x04) { revert(memory[0x00:0x00]); }
var var0 = msg.data[0x00:0x20] / 0x0100000000000000000000000000000000000000000000000000000000 & 0xffffffff;
if (var0 == 0x0d9f5aed) {
// Dispatch table entry for
mixGenes(uint256,uint256,uint256)
if (msg.value) { revert(memory[0x00:0x00]); }
var var1 = 0x008d;
var var2 = msg.data[0x04:0x24];
var var3 = msg.data[0x24:0x44];
var var4 = msg.data[0x44:0x64];
var1 =
mixGenes(var2, var3, var4);
label_008D:
var temp0 = memory[0x40:0x60];
memory[temp0:temp0 + 0x20] = var1;
var temp1 = memory[0x40:0x60];
return memory[temp1:temp1 + (temp0 + 0x20) - temp1];
} else if (var0 == 0x1597ee44) {
// Dispatch table entry for
encode(uint8[])
if (msg.value) { revert(memory[0x00:0x00]); }
var1 = 0x008d;
var temp2 = msg.data[0x04:0x24];
var temp3 = msg.data[temp2 + 0x04:temp2 + 0x04 + 0x20];
var temp4 = memory[0x40:0x60];
memory[0x40:0x60] = temp4 + temp3 * 0x20 + 0x20;
memory[temp4:temp4 + 0x20] = temp3;
var temp5 = temp3 * 0x20;
memory[temp4 + 0x20:temp4 + 0x20 + temp5] = msg.data[temp2 + 0x24:temp2 + 0x24 + temp5];
var2 = temp4;
var1 =
encode(var2);
goto label_008D;
} else if (var0 == 0x54c15b82) {
// Dispatch table entry for
isGeneScience()
if (msg.value) { revert(memory[0x00:0x00]); }
var1 = 0x0101;
var2 =
isGeneScience();
var temp6 = memory[0x40:0x60];
memory[temp6:temp6 + 0x20] = !!var2;
var temp7 = memory[0x40:0x60];
return memory[temp7:temp7 + (temp6 + 0x20) - temp7];
} else if (var0 == 0x61a76900) {
// Dispatch table entry for
decode(uint256)
if (msg.value) { revert(memory[0x00:0x00]); }
var1 = 0x012b;
var2 = msg.data[0x04:0x24];
var1 =
decode(var2);
var temp8 = memory[0x40:0x60];
var2 = temp8;
memory[var2:var2 + 0x20] = 0x20;
var3 = var2;
var temp9 = var3 + 0x20;
var temp10 = var1;
memory[temp9:temp9 + 0x20] = memory[temp10:temp10 + 0x20];
var4 = temp9 + 0x20;
var var5 = temp10 + 0x20;
var var6 = memory[temp10:temp10 + 0x20] * 0x20;
var var7 = var6;
var var8 = var4;
var var9 = var5;
var var10 = 0x00;
if (var10 >= var7) {
label_016A:
var temp11 = memory[0x40:0x60];
return memory[temp11:temp11 + (var6 + var4) - temp11];
} else {
label_015B:
var temp12 = var10;
memory[temp12 + var8:temp12 + var8 + 0x20] = memory[var9 + temp12:var9 + temp12 + 0x20];
var10 = temp12 + 0x20;
if (var10 >= var7) { goto label_016A; }
else { goto label_015B; }
}
} else if (var0 == 0x77a74a20) {
// Dispatch table entry for
expressingTraits(uint256)
if (msg.value) { revert(memory[0x00:0x00]); }
var1 = 0x0194;
var2 = msg.data[0x04:0x24];
var1 =
expressingTraits(var2);
var2 = memory[0x40:0x60];
var3 = var2;
var4 = var1;
var5 = 0x0180;
var6 = var5;
var7 = var3;
var8 = var4;
var9 = 0x00;
if (var9 >= var6) {
label_01BA:
var temp13 = memory[0x40:0x60];
return memory[temp13:temp13 + (var5 + var3) - temp13];
} else {
label_01AB:
var temp14 = var9;
memory[temp14 + var7:temp14 + var7 + 0x20] = memory[var8 + temp14:var8 + temp14 + 0x20];
var9 = temp14 + 0x20;
if (var9 >= var6) { goto label_01BA; }
else { goto label_01AB; }
}
} else { revert(memory[0x00:0x00]); }
}
function mixGenes(var arg0, var arg1, var arg2) returns (var r0) {
var var0 = 0x00;
var var1 = var0;
var var2 = 0x00;
var var3 = 0x01da;
var3 =
func_0709();
var var4 = 0x01e2;
var4 =
func_0709();
var var5 = 0x01ea;
var5 =
func_0709();
var var6 = 0x00;
var var7 = var6;
var var8 = var7;
var var9 = var8;
var var10 = var9;
var var11 = var10;
if (block.number <= arg2) { revert(memory[0x00:0x00]); }
var1 = block.blockHash(arg2);
if (var1) {
label_022B:
var temp0 = memory[0x40:0x60];
memory[temp0:temp0 + 0x20] = var1;
var temp1 = temp0 + 0x20;
memory[temp1:temp1 + 0x20] = arg0;
var temp2 = temp1 + 0x20;
memory[temp2:temp2 + 0x20] = arg1;
var temp3 = temp2 + 0x20;
memory[temp3:temp3 + 0x20] = arg2;
var temp4 = memory[0x40:0x60];
var1 = keccak256(memory[temp4:temp4 + (temp3 + 0x20) - temp4]);
var2 = 0x00;
var var12 = 0x0269;
var var13 = arg0;
var12 =
decode(var13);
var3 = var12;
var12 = 0x0274;
var13 = arg1;
var12 =
decode(var13);
var4 = var12;
var12 = 0x30;
var13 = memory[0x40:0x60];
if (MSIZE() < var13) {
var temp5 = var13;
var temp6 = var12;
memory[temp5:temp5 + 0x20] = temp6;
memory[0x40:0x60] = temp5 + temp6 * 0x20 + 0x20;
var5 = temp5;
var8 = 0x00;
if (var8 >= 0x0c) {
label_03EE:
var6 = 0x00;
if (var6 >= 0x30) {
label_053E:
var12 = 0x0547;
var13 = var5;
return
encode(var13);
} else {
label_03FD:
var11 = 0x00;
var12 = !(var6 % 0x04);
if (!var12) {
label_0440:
if (!var12) {
label_0491:
if (var11 & 0xff <= 0x00) {
var12 = 0x04cc;
var13 = var1;
var var14 = 0x01;
var var15 = var2;
var12 =
func_0668(var13, var14, var15);
var10 = var12;
var2 = var2 + 0x01;
if (var10 != 0x00) {
var12 = var4;
var13 = var6;
if (var13 >= memory[var12:var12 + 0x20]) { assert(); }
var12 = memory[var13 * 0x20 + var12 + 0x20:var13 * 0x20 + var12 + 0x20 + 0x20];
var13 = var5;
var14 = var6;
if (var14 >= memory[var13:var13 + 0x20]) { assert(); }
memory[var13 + var14 * 0x20 + 0x20:var13 + var14 * 0x20 + 0x20 + 0x20] = var12 & 0xff;
label_0533:
var11 = var11;
var6 = var6 + 0x01;
if (var6 >= 0x30) { goto label_053E; }
else { goto label_03FD; }
} else {
var12 = var3;
var13 = var6;
if (var13 >= memory[var12:var12 + 0x20]) { assert(); }
var12 = memory[var13 * 0x20 + var12 + 0x20:var13 * 0x20 + var12 + 0x20 + 0x20];
var13 = var5;
var14 = var6;
if (var14 >= memory[var13:var13 + 0x20]) { assert(); }
label_04AA:
memory[var13 + var14 * 0x20 + 0x20:var13 + var14 * 0x20 + 0x20 + 0x20] = var12 & 0xff;
goto label_0533;
}
} else {
var12 = var11;
var13 = var5;
var14 = var6;
if (var14 < memory[var13:var13 + 0x20]) { goto label_04AA; }
else { assert(); }
}
} else {
var12 = 0x0451;
var13 = var1;
var14 = 0x03;
var15 = var2;
var12 =
func_0668(var13, var14, var15);
var10 = var12;
var2 = var2 + 0x03;
var12 = 0x048e;
var13 = var3;
var14 = var6;
if (var14 >= memory[var13:var13 + 0x20]) { assert(); }
var12 =
func_0468(var4, var6, var10, var13, var14);
var11 = var12;
goto label_0491;
}
} else {
var12 = var4;
var13 = var6;
if (var13 >= memory[var12:var12 + 0x20]) { assert(); }
var12 = memory[var13 * 0x20 + var12 + 0x20:var13 * 0x20 + var12 + 0x20 + 0x20] & 0x01;
var13 = var3;
var14 = var6;
if (var14 >= memory[var13:var13 + 0x20]) { assert(); }
var12 = memory[var14 * 0x20 + var13 + 0x20:var14 * 0x20 + var13 + 0x20 + 0x20] & 0x01 != var12;
goto label_0440;
}
}
} else {
label_02A7:
var9 = 0x03;
if (var9 < 0x01) {
label_03E3:
var11 = var11;
var8 = var8 + 0x01;
if (var8 >= 0x0c) { goto label_03EE; }
else { goto label_02A7; }
} else {
label_02B4:
var6 = var8 * 0x04 + var9;
var12 = 0x02c7;
var13 = var1;
var14 = 0x02;
var15 = var2;
var12 =
func_0668(var13, var14, var15);
var10 = var12;
var2 = var2 + 0x02;
if (var10 != 0x00) {
label_0349:
var12 = 0x0355;
var13 = var1;
var14 = 0x02;
var15 = var2;
var12 =
func_0668(var13, var14, var15);
var10 = var12;
var2 = var2 + 0x02;
if (var10 != 0x00) {
label_03D7:
var11 = var11;
var9 = var9 + ~0x00;
if (var9 < 0x01) { goto label_03E3; }
else { goto label_02B4; }
} else {
var12 = var4;
var13 = var6;
if (var13 >= memory[var12:var12 + 0x20]) { assert(); }
var7 = memory[var13 * 0x20 + var12 + 0x20:var13 * 0x20 + var12 + 0x20 + 0x20];
var12 = var4;
var13 = var6 - 0x01;
if (var13 >= memory[var12:var12 + 0x20]) { assert(); }
var12 = memory[var13 * 0x20 + var12 + 0x20:var13 * 0x20 + var12 + 0x20 + 0x20];
var13 = var4;
var14 = var6;
if (var14 >= memory[var13:var13 + 0x20]) { assert(); }
memory[var13 + var14 * 0x20 + 0x20:var13 + var14 * 0x20 + 0x20 + 0x20] = var12 & 0xff;
var12 = var7;
var13 = var4;
var14 = var6 + ~0x00;
if (var14 >= memory[var13:var13 + 0x20]) { assert(); }
memory[var13 + var14 * 0x20 + 0x20:var13 + var14 * 0x20 + 0x20 + 0x20] = var12 & 0xff;
goto label_03D7;
}
} else {
var12 = var3;
var13 = var6;
if (var13 >= memory[var12:var12 + 0x20]) { assert(); }
var7 = memory[var13 * 0x20 + var12 + 0x20:var13 * 0x20 + var12 + 0x20 + 0x20];
var12 = var3;
var13 = var6 - 0x01;
if (var13 >= memory[var12:var12 + 0x20]) { assert(); }
var12 = memory[var13 * 0x20 + var12 + 0x20:var13 * 0x20 + var12 + 0x20 + 0x20];
var13 = var3;
var14 = var6;
if (var14 >= memory[var13:var13 + 0x20]) { assert(); }
memory[var13 + var14 * 0x20 + 0x20:var13 + var14 * 0x20 + 0x20 + 0x20] = var12 & 0xff;
var12 = var7;
var13 = var3;
var14 = var6 + ~0x00;
if (var14 >= memory[var13:var13 + 0x20]) { assert(); }
memory[var13 + var14 * 0x20 + 0x20:var13 + var14 * 0x20 + 0x20 + 0x20] = var12 & 0xff;
goto label_0349;
}
}
}
} else {
var temp7 = MSIZE();
var temp8 = var12;
memory[temp7:temp7 + 0x20] = temp8;
memory[0x40:0x60] = temp7 + temp8 * 0x20 + 0x20;
var5 = temp7;
var8 = 0x00;
if (var8 >= 0x0c) { goto label_03EE; }
else { goto label_02A7; }
}
} else {
var temp9 = (block.number & ~0xff) + (arg2 & 0xff);
arg2 = temp9;
if (arg2 < block.number) {
var1 = block.blockHash(arg2);
goto label_022B;
} else {
var temp10 = arg2 - 0x0100;
arg2 = temp10;
var1 = block.blockHash(arg2);
goto label_022B;
}
}
}
function func_0468(var arg0, var arg1, var arg2, var arg3, var arg4) returns (var r0) {
arg3 = memory[arg4 * 0x20 + arg3 + 0x20:arg4 * 0x20 + arg3 + 0x20 + 0x20];
arg4 = arg0;
var var0 = arg1;
if (var0 >= memory[arg4:arg4 + 0x20]) { assert(); }
arg4 = memory[var0 * 0x20 + arg4 + 0x20:var0 * 0x20 + arg4 + 0x20 + 0x20];
var0 = arg2;
var var1 = 0x00;
var var2 = arg3;
var var3 = arg4;
var var4 = var1;
if (var2 & 0xff <= var3 & 0xff) {
var var5 = var3 - var2 & 0xff == 0x01;
if (!var5) {
label_06B6:
if (!var5) {
label_06E7:
return var1;
} else {
label_06BC:
if (var2 & 0xff >= 0x17) {
var4 = 0x00;
if (var0 > var4) { goto label_06E7; }
label_06DB:
var1 = (var2 & 0xff) / 0x02 + 0x10;
goto label_06E7;
} else {
var4 = 0x01;
if (var0 > var4) { goto label_06E7; }
else { goto label_06DB; }
}
}
} else {
label_06A8:
if ((var2 & 0xff) % 0x02 & 0xff != 0x00) { goto label_06E7; }
else { goto label_06BC; }
}
} else {
var3 = arg3;
var2 = arg4;
var5 = var3 - var2 & 0xff == 0x01;
if (!var5) { goto label_06B6; }
else { goto label_06A8; }
}
}
function encode(var arg0) returns (var r0) {
var var0 = 0x00;
var var1 = var0;
if (var1 >= 0x30) {
label_0597:
return var0;
} else {
label_0568:
var temp0 = var1;
var0 = var0 * 0x20;
var1 = temp0;
var var2 = arg0;
var var3 = 0x2f - var1;
if (var3 >= memory[var2:var2 + 0x20]) { assert(); }
var0 = (memory[var3 * 0x20 + var2 + 0x20:var3 * 0x20 + var2 + 0x20 + 0x20] & 0xff) | var0;
var1 = var1 + 0x01;
if (var1 >= 0x30) { goto label_0597; }
else { goto label_0568; }
}
}
function isGeneScience() returns (var r0) { return storage[0x00] & 0xff; }
function decode(var arg0) returns (var r0) {
var var0 = 0x05ae;
var0 =
func_0709();
var var1 = 0x05b6;
var1 =
func_0709();
var var2 = 0x00;
var var3 = 0x30;
var var4 = memory[0x40:0x60];
if (MSIZE() < var4) {
var temp0 = var4;
var temp1 = var3;
memory[temp0:temp0 + 0x20] = temp1;
memory[0x40:0x60] = temp0 + temp1 * 0x20 + 0x20;
var1 = temp0;
var2 = 0x00;
if (var2 >= 0x30) {
label_0617:
return var1;
} else {
label_05E9:
var3 = 0x05f2;
var4 = arg0;
var var5 = var2;
var3 =
func_06F1(var4, var5);
var4 = var1;
var5 = var2;
if (var5 >= memory[var4:var4 + 0x20]) { assert(); }
memory[var4 + var5 * 0x20 + 0x20:var4 + var5 * 0x20 + 0x20 + 0x20] = var3 & 0xff;
var2 = var2 + 0x01;
if (var2 >= 0x30) { goto label_0617; }
else { goto label_05E9; }
}
} else {
var temp2 = MSIZE();
var temp3 = var3;
memory[temp2:temp2 + 0x20] = temp3;
memory[0x40:0x60] = temp2 + temp3 * 0x20 + 0x20;
var1 = temp2;
var2 = 0x00;
if (var2 >= 0x30) { goto label_0617; }
else { goto label_05E9; }
}
}
function expressingTraits(var arg0) returns (var r0) {
var var0 = 0x0626;
var0 =
func_071B();
var var1 = 0x062e;
var1 =
func_071B();
var var2 = 0x00;
if (var2 >= 0x0c) {
label_0617:
return var1;
} else {
label_063B:
var var3 = 0x0647;
var var4 = arg0;
var var5 = var2 * 0x04;
var3 =
func_06F1(var4, var5);
var4 = var1;
var5 = var2;
if (var5 >= 0x0c) { assert(); }
memory[var5 * 0x20 + var4:var5 * 0x20 + var4 + 0x20] = var3 & 0xff;
var2 = var2 + 0x01;
if (var2 >= 0x0c) { goto label_0617; }
else { goto label_063B; }
}
}
function func_0668(var arg0, var arg1, var arg2) returns (var r0) {
var temp0 = 0x02 ** arg2;
return (temp0 * (0x02 ** arg1 + ~0x00) & arg0) / temp0;
}
function func_06F1(var arg0, var arg1) returns (var r0) {
var var0 = 0x00;
var var1 = 0x0702;
var var2 = arg0;
var var3 = 0x05;
var var4 = arg1 * 0x05;
return
func_0668(var2, var3, var4);
}
function func_0709() returns (var r0) {
var temp0 = memory[0x40:0x60];
memory[0x40:0x60] = temp0 + 0x20;
memory[temp0:temp0 + 0x20] = 0x00;
return temp0;
}
function func_071B() returns (var r0) {
var temp0 = memory[0x40:0x60];
var var0 = temp0;
memory[0x40:0x60] = var0 + 0x0180;
memory[var0:var0 + 0x20] = 0x00;
var var1 = 0x0c + ~0x00;
var var2 = var0 + 0x20;
if (!var1) { goto label_073F; }
label_072B:
var temp1 = var2;
memory[temp1:temp1 + 0x20] = 0x00;
var1 = var1 + ~0x00;
var2 = temp1 + 0x20;
if (var1) { goto label_072B; }
label_073F:
return var0;
}
}