// File: /workspace/github_c_makefile_star2_O0/kernfel[P]fNEAT/network-static.c
// Function: activate
void activate( eNetwork *net, double *inputs, double *outputs ) {
	unsigned int i, j=0;
	eNode *n = net->nodes;
	eLink *l = net->links;

	// Load input values
	for ( i=0; i<net->num_inputs; i++ ) {
		if ( net->inputs[i] ) {
			net->inputs[i]->a = inputs[i];
			n++;
			j++;
			l += net->inputs[i]->num_inputs;
		}
	}

	// Propagate
	for ( i=j; i<net->num_nodes; i++ ) {
		double sum=0;
		for ( j=0; j<n->num_inputs; j++ ) {
			sum += l->w * l->from->a;
			l++;
		}
		n->a = tanh(sum);
		n++;
	}

	// Load output values
	for ( i=0; i<net->num_outputs; i++ ) {
		if ( net->outputs[i] ) {
			outputs[i] = net->outputs[i]->a;
		} else {
			outputs[i] = 0;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl $0x0, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x30(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x9870
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x1c(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
je 0x9860
movq -0x10(%rbp), %rax
movl -0x1c(%rbp), %ecx
movsd (%rax,%rcx,8), %xmm0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax)
movq -0x28(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x28(%rbp)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl 0x8(%rax), %ecx
movq -0x30(%rbp), %rax
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
jmp 0x9862
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x97ea
movl -0x20(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jae 0x9909
xorps %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x98dd
movq -0x30(%rbp), %rax
movsd (%rax), %xmm0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movsd (%rax), %xmm2
movsd -0x38(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movq -0x30(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x30(%rbp)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x9894
movsd -0x38(%rbp), %xmm0
callq 0x1160
movq -0x28(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x28(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x28(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x9876
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jae 0x996b
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl -0x1c(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
je 0x994f
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x995e
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x9960
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x9910
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)