// File: pgrouchy[P]NoiseWorld/./mathNet.h
// Function: Genome::Genome(int, int, bool, int)
Genome(int myID, int maxDepth, bool isGrow, int isl_id) {
        Tree *new_tree;
        int i;
        pop_id = myID;
        num_trees = 0;
        fitness = 0;
        age = 0.0;
        isNan = false;

        is_alive = true;

        generateRandomPosition();
        mainGridLocation[0] = (int)((myPosition[0] + ((double)ISLAND_SIZE / 2.0)) / NN_BLOCK_SIZE);
        mainGridLocation[1] = (int)((myPosition[1] + ((double)ISLAND_SIZE / 2.0)) / NN_BLOCK_SIZE);

        for (i = 0; i < NUM_OUTPUTS; i++) {
            new_tree = new Tree(false, 0, maxDepth, isGrow, NUM_OUTPUTS, isl_id, i);

            trees.push_back(new_tree);
            tree_id_lookup.push_back(new TreeID(new_tree->tree_id));
            num_trees++;
        }

        myData = new double[num_trees];
        initialVal = new double[num_trees];
        for (i = 0; i < NUM_OUTPUTS; i++) {
            initialVal[i] = (2.0 * randfloat()) - 1.0;
        }
    }

// Assembly:
subq $0x98, %rsp
movb %cl, %al
movq %rdi, 0x90(%rsp)
movl %esi, 0x8c(%rsp)
movl %edx, 0x88(%rsp)
andb $0x1, %al
movb %al, 0x87(%rsp)
movl %r8d, 0x80(%rsp)
movq 0x90(%rsp), %rdi
movq %rdi, 0x50(%rsp)
movq %rdi, %rax
movq %rax, 0x40(%rsp)
callq 0x6130
movq 0x50(%rsp), %rdi
addq $0x18, %rdi
movq %rdi, 0x48(%rsp)
callq 0x6140
movq 0x50(%rsp), %rdi
movl 0x8c(%rsp), %eax
movl %eax, 0x30(%rdi)
movl $0x0, 0x34(%rdi)
movl $0x0, 0x38(%rdi)
movq $0x0, 0x40(%rdi)
movb $0x0, 0x88(%rdi)
movb $0x1, 0x58(%rdi)
callq 0x10630
jmp 0x5dd4
movq 0x40(%rsp), %rax
movsd 0xd23f(%rip), %xmm0     # 0x13020
addsd 0x68(%rax), %xmm0
movsd 0xd22a(%rip), %xmm1     # 0x13018
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, 0x48(%rax)
movsd 0xd21f(%rip), %xmm0     # 0x13020
addsd 0x70(%rax), %xmm0
movsd 0xd20a(%rip), %xmm1     # 0x13018
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, 0x4c(%rax)
movl $0x0, 0x74(%rsp)
cmpl $0x2, 0x74(%rsp)
jge 0x5f59
movl $0x38, %edi
callq 0x32a0
movq %rax, 0x38(%rsp)
jmp 0x5e3d
movq 0x38(%rsp), %rdi
movl 0x88(%rsp), %ecx
movl 0x80(%rsp), %edx
movl 0x74(%rsp), %esi
movzbl 0x87(%rsp), %r8d
movq %rsp, %rax
movl %esi, 0x8(%rax)
movl %edx, (%rax)
andl $0x1, %r8d
xorl %edx, %edx
movl $0x2, %r9d
movl %edx, %esi
callq 0x6150
jmp 0x5e7a
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rax
movq %rax, 0x78(%rsp)
leaq 0x78(%rsp), %rsi
callq 0x6760
jmp 0x5e95
movq 0x40(%rsp), %rax
addq $0x18, %rax
movq %rax, 0x28(%rsp)
movl $0x8, %edi
callq 0x32a0
movq %rax, 0x30(%rsp)
jmp 0x5eb4
movq 0x30(%rsp), %rdi
movq 0x78(%rsp), %rax
movq 0x10(%rax), %rsi
callq 0x67e0
jmp 0x5ec9
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x58(%rsp), %rsi
callq 0x67a0
jmp 0x5ee4
movq 0x40(%rsp), %rax
movl 0x34(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x34(%rax)
movl 0x74(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x74(%rsp)
jmp 0x5e21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x68(%rsp)
movl %eax, 0x64(%rsp)
jmp 0x6026
movq 0x38(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x68(%rsp)
movl %eax, 0x64(%rsp)
movl $0x38, %esi
callq 0x32b0
jmp 0x6026
movq 0x30(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x68(%rsp)
movl %eax, 0x64(%rsp)
movl $0x8, %esi
callq 0x32b0
jmp 0x6026
movq 0x40(%rsp), %rax
movslq 0x34(%rax), %rax
movl $0x8, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x3030
movq %rax, 0x20(%rsp)
jmp 0x5f84
movq 0x40(%rsp), %rax
movq 0x20(%rsp), %rcx
movq %rcx, 0x78(%rax)
movslq 0x34(%rax), %rax
movl $0x8, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x3030
movq %rax, 0x18(%rsp)
jmp 0x5fb8
movq 0x40(%rsp), %rax
movq 0x18(%rsp), %rcx
movq %rcx, 0x80(%rax)
movl $0x0, 0x74(%rsp)
cmpl $0x2, 0x74(%rsp)
jge 0x601e
callq 0x6810
movsd %xmm0, 0x10(%rsp)
jmp 0x5fe5
movq 0x40(%rsp), %rax
movsd 0x10(%rsp), %xmm0
addsd %xmm0, %xmm0
movsd 0xd02c(%rip), %xmm1     # 0x13028
addsd %xmm1, %xmm0
movq 0x80(%rax), %rax
movslq 0x74(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl 0x74(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x74(%rsp)
jmp 0x5fd1
addq $0x98, %rsp
retq
movq 0x48(%rsp), %rdi
callq 0x6830
movq 0x50(%rsp), %rdi
callq 0x6840
movq 0x68(%rsp), %rdi
callq 0x3450
nopw %cs:(%rax,%rax)
nop