Generated by JEB v3.0-beta.6 on 2018/11/02

contract
geneScience
{
function
start
()
view
{ *
0x40
=
0x60
;
var1
=
msg.data
.length;
if
(
var1
>=
0x4
) {
uint256
var0
= (
uint256
)
$msg.sig
;
if
(
var0
==
0xd9f5aed
) {
mixGenes
(); }
if
(
var0
==
0x1597ee44
) {
sub_9F
(); }
if
(
var0
==
0x54c15b82
) {
isGeneScience
(); }
if
(
var0
==
0x61a76900
) {
sub_115
(); }
if
(
var0
==
0x77a74a20
) {
sub_17E
(); } }
revert
(
0x0
,
0x0
); }
function
mixGenes
()
public
view
/*NON-PAYABLE*/
{
uint256
var11
;
uint256
var10
;
var1
=
calldataload
(
0x4
);
var2
=
calldataload
(
0x24
);
var3
=
calldataload
(
0x44
);
sub_709
();
sub_709
();
sub_709
();
var16
=
number
();
if
(
var3
>=
var16
) {
revert
(
0x0
,
0x0
); }
var16
=
blockhash
(
var3
);
uint256
var5
=
var16
;
if
(
var16
==
0x0
) {
var18
=
number
();
var3
= (
var3
&
0xff
) + (
var18
&
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
);
var16
=
number
();
if
(
var3
>=
var16
) {
var3
-=
0x100
; }
var16
=
blockhash
(
var3
);
var5
=
var16
; }
uint256
var21
= *
0x40
; *
var21
=
var5
;
var21
+=
0x20
; *
var21
=
var1
;
var21
+=
0x20
; *
var21
=
var2
;
var21
+=
0x20
; *
var21
=
var3
;
var16
= *
0x40
;
var16
=
keccak256
(
var16
,
var21
+
0x20
-
var16
);
var5
=
var16
;
uint256
var6
=
0x0
;
var16
=
sub_5A6
(
var1
);
uint256
var7
=
var16
;
var16
=
sub_5A6
(
var2
);
uint256
var8
=
var16
;
uint256
var17
= *
0x40
;
var19
=
msize
();
if
(
var17
<=
var19
) {
var17
=
msize
(); } *
var17
=
0x30
; *
0x40
=
var17
+
0x620
;
uint256
var9
=
var17
;
uint256
var12
;
for
(
var12
=
0x0
;
var12
<
0xc
; ++
var12
) {
uint256
var13
;
for
(
var13
=
0x3
;
var13
>=
0x1
; --
var13
) {
var10
= ((
int256
)
var12
) *
0x4
+
var13
;
var16
=
sub_668
(
var6
,
0x2
,
var5
);
var6
+=
0x2
;
if
(
var16
==
0x0
) {
var16
=
var7
;
var17
=
var10
;
if
(*
var7
<=
var10
) {
invalid
(); }
else
{
var11
= *(
var10
*
0x20
+
var7
+
0x20
);
var17
=
var10
-
0x1
;
if
(*
var7
<=
var17
) {
invalid
(); }
else
{
var16
= *(
var17
*
0x20
+
var16
+
0x20
);
var17
=
var7
;
var18
=
var10
;
if
(*
var7
<=
var10
) {
invalid
(); }
else
{ *(
var10
*
0x20
+
var7
+
0x20
) =
var16
&
0xff
;
var16
=
var11
;
var18
=
var10
+
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
;
if
(*
var7
<=
var18
) {
invalid
(); }
else
{ *(
var18
*
0x20
+
var7
+
0x20
) =
var11
&
0xff
; } } } } }
var16
=
sub_668
(
var6
,
0x2
,
var5
);
var6
+=
0x2
;
if
(
var16
==
0x0
) {
var16
=
var8
;
var17
=
var10
;
if
(*
var8
<=
var10
) {
invalid
(); }
else
{
var11
= *(
var10
*
0x20
+
var8
+
0x20
);
var17
=
var10
-
0x1
;
if
(*
var8
<=
var17
) {
invalid
(); }
else
{
var16
= *(
var17
*
0x20
+
var16
+
0x20
);
var17
=
var8
;
var18
=
var10
;
if
(*
var8
<=
var10
) {
invalid
(); }
else
{ *(
var10
*
0x20
+
var8
+
0x20
) =
var16
&
0xff
;
var16
=
var11
;
var18
=
var10
+
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
;
if
(*
var8
<=
var18
) {
invalid
(); }
else
{ *(
var18
*
0x20
+
var8
+
0x20
) =
var11
&
0xff
; } } } } } } }
for
(
var10
=
0x0
;
var10
<
0x30
; ++
var10
) {
uint256
var15
=
0x0
;
var16
= (
uint256
)(
var10
%
0x4
==
0x0
);
if
(
var16
!=
0x0
) {
var16
=
var8
;
var17
=
var10
;
if
(*
var8
<=
var10
) {
invalid
(); }
else
{
var16
= *(
var10
*
0x20
+
var16
+
0x20
) &
0x1
;
var17
=
var7
;
var18
=
var10
;
if
(*
var7
<=
var10
) {
invalid
(); }
else
{
var16
= (
uint256
)((*(
var10
*
0x20
+
var7
+
0x20
) &
0x1
) !=
var16
); } } }
if
(
var16
!=
0x0
) {
var16
=
sub_668
(
var6
,
0x3
,
var5
);
uint256
var14
=
var16
;
var6
+=
0x3
;
var17
=
var7
;
var18
=
var10
;
if
(*
var7
<=
var10
) {
invalid
(); }
else
{
var17
= *(
var10
*
0x20
+
var17
+
0x20
);
var18
=
var8
;
var19
=
var10
;
if
(*
var8
<=
var10
) {
invalid
(); }
else
{
var16
=
sub_67E
(
var14
, *(
var10
*
0x20
+
var8
+
0x20
),
var17
);
var15
=
var16
; } } }
if
((
var15
&
0xff
) >
0x0
) {
var16
=
var15
;
var17
=
var9
;
var18
=
var10
;
if
(*
var9
<=
var10
) {
invalid
(); }
else
{
goto
loc_4BB
; } }
else
{
var16
=
sub_668
(
var6
,
0x1
,
var5
); ++
var6
;
if
(
var16
==
0x0
) {
var16
=
var7
;
var17
=
var10
;
if
(*
var7
<=
var10
) {
invalid
(); }
else
{
var16
= *(
var10
*
0x20
+
var16
+
0x20
);
var17
=
var9
;
var18
=
var10
;
if
(*
var9
<=
var10
) {
invalid
(); }
else
{
loc_4BB:
*(
var18
*
0x20
+
var17
+
0x20
) =
var16
&
0xff
; } } }
else
{
var16
=
var8
;
var17
=
var10
;
if
(*
var8
<=
var10
) {
invalid
(); }
else
{
var16
= *(
var10
*
0x20
+
var16
+
0x20
);
var17
=
var9
;
var18
=
var10
;
if
(*
var9
<=
var10
) {
invalid
(); }
else
{ *(
var10
*
0x20
+
var9
+
0x20
) =
var16
&
0xff
; } } } } }
var17
=
var9
;
var18
=
0x0
;
for
(
var19
=
0x0
;
var19
<
0x30
; ++
var19
) {
var18
*=
0x20
;
uint256
var20
=
var17
;
var21
=
0x2f
-
var19
;
if
(*
var17
<=
var21
) {
invalid
(); }
uint256
$tmp
=
var21
;
var21
=
var20
;
var20
=
var18
;
var18
= *(
$tmp
*
0x20
+
var21
+
0x20
) &
0xff
;
$tmp
=
var19
;
var19
=
var20
;
var20
=
var18
;
var18
=
$tmp
;
$tmp
=
var19
|
var20
;
var19
=
var18
;
var18
=
$tmp
; }
var16
=
var18
;
var17
=
var18
;
var16
= *
0x40
; *
var16
=
var18
;
return
(*
0x40
,
var16
+
0x20
- *
0x40
); }
function
sub_9F
()
public
view
/*NON-PAYABLE*/
{
var3
=
calldataload
(
0x4
);
var4
=
calldataload
(((
uint256
)(((
char*
)
var3
) +
0x4
)));
int256*
var6
= *
0x40
; *
0x40
= ((
uint256
)(((
uint256
)(((
int
)
var4
) *
0x20
)) + ((
int
)
var6
))) +
0x20
; *
var6
=
var4
;
calldatacopy
(
var6
+
1
, ((
uint256
)(((
char*
)
var3
) +
0x24
)), ((
uint256
)(((
int
)
var4
) *
0x20
)));
int256*
var1
=
var6
;
int256*
var2
=
0x0
;
for
(
var3
=
0x0
; !((
unsigned char
)(((
int
)
var3
) >=
0x30
));
var3
= (
uint256*
)(((
char*
)
var3
) +
0x1
)) {
var2
= (
int256*
)(((
int
)
var2
) *
0x20
);
var4
=
var1
;
uint256*
var5
= (
uint256*
)(
0x2f
- ((
int
)
var3
));
if
(!((
unsigned char
)(*
var1
> ((
int
)
var5
)))) {
invalid
(); }
uint256*
$tmp
=
var5
;
var5
=
var4
;
var4
=
var2
;
var2
= *(((
uint256
)(((
uint256
)(((
int
)(((
int256*
)
$tmp
))) *
0x20
)) + ((
int
)
var5
))) +
0x20
) &
0xff
;
$tmp
=
var3
;
var3
=
var4
;
var4
=
var2
;
var2
=
$tmp
;
$tmp
= (
uint256*
)(((
int
)
var3
) | ((
int
)
var4
));
var3
=
var2
;
var2
=
$tmp
; }
int256*
var0
=
var2
;
var1
=
var2
;
var0
= *
0x40
; *
var0
=
var2
;
return
(*
0x40
,
var0
+
1
- *
0x40
); }
function
isGeneScience
()
public
view
/*NON-PAYABLE*/
{ (
uint256
var0
,
uint256*
var1
) =
__impl_isGeneScience
();
uint256*
var2
=
var1
;
var1
= *
0x40
; *
var1
= (
uint256
)(((
unsigned char
)(((
int
)
var2
) !=
0x0
)));
return
(*
0x40
,
var1
+
1
- *
0x40
); }
function
sub_115
()
public
view
/*NON-PAYABLE*/
{
var1
=
calldataload
(
0x4
);
uint256
var0
=
sub_5A6
(
var1
);
var1
= *
0x40
; *
var1
=
0x20
;
uint256*
var5
=
var1
+
0x20
; *
var5
= *
var0
;
uint256
var3
=
var5
+
1
;
var5
= *
var0
*
0x20
;
uint256
var6
= *
var0
*
0x20
;
uint256
var7
=
var3
;
uint256
var8
=
var0
+
0x20
;
uint256
var9
;
for
(
var9
=
0x0
;
var9
<
var6
;
var9
+=
0x20
) { *(
var7
+
var9
) = *(
var8
+
var9
); }
return
(*
0x40
, ((
uint256
)(
var3
+ ((
int
)
var5
))) - *
0x40
); }
function
sub_17E
()
public
view
/*NON-PAYABLE*/
{
var1
=
calldataload
(
0x4
);
sub_71B
();
uint256
var3
=
sub_71B
();
for
(
uint256
var4
=
0x0
;
var4
<
0xc
; ++
var4
) {
uint256
var5
=
sub_6F1
(((
int256
)
var4
) *
0x4
,
var1
);
uint256
var6
=
var3
;
uint256
var7
=
var4
;
if
(
var4
>=
0xc
) {
invalid
(); } *(((
int256
)
var7
) *
0x20
+
var6
) =
var5
&
0xff
; } }
function
__impl_isGeneScience
()
private
view
returns
(
uint256
) {
var0
= storage[
0x0
];
return
var0
&
0xff
; }
function
sub_5A6
(
uint256
par1
)
private
pure
returns
(
uint256
) {
sub_709
();
sub_709
();
uint256
var4
= *
0x40
;
var6
=
msize
();
if
(
var4
<=
var6
) {
var4
=
msize
(); } *
var4
=
0x30
; *
0x40
=
var4
+
0x620
;
uint256
var1
=
var4
;
for
(
uint256
var2
=
0x0
;
var2
<
0x30
; ++
var2
) {
uint256
var3
=
sub_6F1
(
var2
,
par1
);
var4
=
var1
;
uint256
var5
=
var2
;
if
(*
var1
<=
var2
) {
invalid
(); } *(
var5
*
0x20
+
var4
+
0x20
) =
var3
&
0xff
; }
return
var1
; }
function
sub_668
(
uint256
par1
,
int256
par2
,
uint256
par3
)
private
pure
returns
(
uint256
) {
int256
var0
=
par2
;
par2
=
0x2
**
par3
;
return
(((
0x2
**
var0
+
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
) *
par2
) &
par1
) / ((
uint256
)
par2
); }
function
sub_67E
(
uint256
par1
,
uint256
par2
,
uint256
par3
)
private
pure
returns
(
uint256
) {
uint256
var0
=
0x0
;
uint256
var1
=
par1
;
uint256
var2
=
par2
;
if
((
par1
&
0xff
) > (
par2
&
0xff
)) {
var2
=
par1
;
var1
=
par2
; }
uint256
var4
= (
uint256
)(((
var2
-
var1
) &
0xff
) ==
0x1
);
if
(
var4
!=
0x0
) {
var4
= (
uint256
)((((
var1
&
0xff
) %
0x2
) &
0xff
) ==
0x0
); }
if
(
var4
!=
0x0
) {
uint256
var3
= (
var1
&
0xff
) <
0x17
?
0x1
:
0x0
;
if
(
par3
<=
var3
) {
var0
= (
var1
&
0xff
) /
0x2
+
0x10
; } }
return
var0
; }
function
sub_6F1
(
uint256
par1
,
int256
par2
)
private
pure
returns
(
uint256
) {
return
sub_668
(
par2
*
0x5
,
0x5
,
par1
); }
function
sub_709
()
private
pure
returns
(
uint256
) {
uint256*
var0
= *
0x40
; *
0x40
=
var0
+
1
; *
var0
=
0x0
;
return
var0
; }
function
sub_71B
()
private
pure
returns
(
uint256
) {
uint256*
var0
= *
0x40
; *
0x40
=
var0
+
&loc_C
;
uint256
var1
=
0xc
;
uint256*
var2
=
var0
;
do
{ *
var2
=
0x0
; --
var1
; ++
var2
; }
while
(
var1
);
return
var0
; } }