// File: /workspace/github_c_makefile_star2_O0/stonezwr[P]SpiKL-IP/network.C
// Function: Network::AddNeuronGroup(char*, int, bool, double)
void Network::AddNeuronGroup(char * name, int num, bool excitatory, double v_mem){
    assert(num >= 1);
    for(list<Neuron*>::iterator iter = _individualNeurons.begin(); iter != _individualNeurons.end(); iter++)
        assert(strcmp((*iter)->Name(),name) != 0);

    assert(_groupNeurons.find(string(name)) == _groupNeurons.end());

    NeuronGroup * neuronGroup = new NeuronGroup(name, num, this, excitatory, v_mem);
    _groupNeurons[string(name)] = neuronGroup;

    string name_str(name);
    if(name_str.substr(0, 6) == "hidden")   _hidden_layer_names.push_back(name_str);
   
    for(Neuron * neuron = neuronGroup->First(); neuron != NULL; neuron = neuronGroup->Next()){
        _allNeurons.push_back(neuron);
        if(strcmp(name,"input") == 0)
            _inputNeurons.push_back(neuron);
        if(strcmp(name,"output") == 0)
            _outputNeurons.push_back(neuron);
    }
    if(excitatory == true) for(Neuron * neuron = neuronGroup->First(); neuron != NULL; neuron = neuronGroup->Next()){
        _allExcitatoryNeurons.push_back(neuron);
        neuron->SetExcitatory();
    }
    else for(Neuron * neuron = neuronGroup->First(); neuron != NULL; neuron = neuronGroup->Next()) _allInhibitoryNeurons.push_back(neuron);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1b0, %rsp            # imm = 0x1B0
movb %cl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
andb $0x1, %al
movb %al, -0x15(%rbp)
movsd %xmm0, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x118(%rbp)
cmpl $0x1, -0x14(%rbp)
jl 0x1d615
jmp 0x1d634
leaq 0x17d6e(%rip), %rdi     # 0x3538a
leaq 0x17cf7(%rip), %rsi     # 0x3531a
movl $0x55, %edx
leaq 0x17d64(%rip), %rcx     # 0x35393
callq 0x4210
movq -0x118(%rbp), %rdi
callq 0x239e0
movq %rax, -0x28(%rbp)
movq -0x118(%rbp), %rdi
callq 0x23a40
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x23a10
testb $0x1, %al
jne 0x1d667
jmp 0x1d6bd
leaq -0x28(%rbp), %rdi
callq 0x23a70
movq (%rax), %rdi
callq 0xbea0
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0x4520
cmpl $0x0, %eax
je 0x1d68b
jmp 0x1d6aa
leaq 0x17c66(%rip), %rdi     # 0x352f8
leaq 0x17c81(%rip), %rsi     # 0x3531a
movl $0x57, %edx
leaq 0x17cee(%rip), %rcx     # 0x35393
callq 0x4210
jmp 0x1d6ac
leaq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x23a90
movq %rax, -0x38(%rbp)
jmp 0x1d644
movq -0x118(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x130(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x128(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x46f0
movq -0x128(%rbp), %rsi
movq -0x120(%rbp), %rdx
leaq -0x60(%rbp), %rdi
callq 0x12880
jmp 0x1d703
movq -0x130(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x23f10
movq %rax, -0x138(%rbp)
jmp 0x1d71c
movq -0x118(%rbp), %rdi
movq -0x138(%rbp), %rax
movq %rax, -0x40(%rbp)
addq $0x18, %rdi
callq 0x23af0
movq %rax, -0x80(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x23f40
testb $0x1, %al
jne 0x1d74e
jmp 0x1d750
jmp 0x1d79a
leaq 0x17bfb(%rip), %rdi     # 0x35352
leaq 0x17bbc(%rip), %rsi     # 0x3531a
movl $0x59, %edx
leaq 0x17c29(%rip), %rcx     # 0x35393
callq 0x4210
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x1d94e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x4200
jmp 0x1d94e
leaq -0x60(%rbp), %rdi
callq 0x4200
leaq -0x61(%rbp), %rdi
callq 0x43d0
movl $0xa0, %edi
callq 0x4380
movq -0x118(%rbp), %rcx
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x140(%rbp)
movq -0x10(%rbp), %rsi
movl -0x14(%rbp), %edx
movsd -0x20(%rbp), %xmm0
movzbl -0x15(%rbp), %r8d
andl $0x1, %r8d
callq 0xdea0
jmp 0x1d7e6
movq -0x118(%rbp), %rax
movq -0x140(%rbp), %rcx
movq %rcx, -0x88(%rbp)
movq -0x88(%rbp), %rcx
movq %rcx, -0x160(%rbp)
addq $0x18, %rax
movq %rax, -0x158(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x150(%rbp)
leaq -0xa9(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x46f0
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
callq 0x12880
jmp 0x1d84e
movq -0x158(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x23fd0
movq %rax, -0x168(%rbp)
jmp 0x1d86a
movq -0x168(%rbp), %rax
movq -0x160(%rbp), %rcx
movq %rcx, (%rax)
leaq -0xa8(%rbp), %rdi
callq 0x4200
leaq -0xa9(%rbp), %rdi
callq 0x43d0
movq -0x10(%rbp), %rax
movq %rax, -0x178(%rbp)
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x170(%rbp)
callq 0x46f0
movq -0x178(%rbp), %rsi
movq -0x170(%rbp), %rdx
leaq -0xd0(%rbp), %rdi
callq 0x12880
jmp 0x1d8cd
leaq -0xd1(%rbp), %rdi
callq 0x43d0
xorl %eax, %eax
movl %eax, %edx
leaq -0xf8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
movl $0x6, %ecx
callq 0x43a0
jmp 0x1d8f7
leaq 0x17acd(%rip), %rsi     # 0x353cb
leaq -0xf8(%rbp), %rdi
callq 0x89b0
movb %al, -0x179(%rbp)
jmp 0x1d912
leaq -0xf8(%rbp), %rdi
callq 0x4200
movb -0x179(%rbp), %al
testb $0x1, %al
jne 0x1d92d
jmp 0x1da00
movq -0x118(%rbp), %rdi
addq $0x278, %rdi            # imm = 0x278
leaq -0xd0(%rbp), %rsi
callq 0x24000
jmp 0x1d949
jmp 0x1da00
leaq -0x61(%rbp), %rdi
callq 0x43d0
jmp 0x1dc01
movq -0x140(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
movl $0xa0, %esi
callq 0x4390
jmp 0x1dc01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x1d9a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x4200
leaq -0xa9(%rbp), %rdi
callq 0x43d0
jmp 0x1dc01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xd1(%rbp), %rdi
callq 0x43d0
jmp 0x1dc01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x1dbf5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x4200
jmp 0x1dbf5
movq -0x88(%rbp), %rdi
callq 0xf110
movq %rax, -0x188(%rbp)
jmp 0x1da15
movq -0x188(%rbp), %rax
movq %rax, -0x100(%rbp)
cmpq $0x0, -0x100(%rbp)
je 0x1dadd
movq -0x118(%rbp), %rdi
addq $0x88, %rdi
leaq -0x100(%rbp), %rsi
callq 0x23f70
jmp 0x1da4d
movq -0x10(%rbp), %rdi
leaq 0x1686a(%rip), %rsi     # 0x342c2
callq 0x4520
cmpl $0x0, %eax
jne 0x1da80
movq -0x118(%rbp), %rdi
addq $0xd0, %rdi
leaq -0x100(%rbp), %rsi
callq 0x23f70
jmp 0x1da7e
jmp 0x1da80
movq -0x10(%rbp), %rdi
leaq 0x17947(%rip), %rsi     # 0x353d2
callq 0x4520
cmpl $0x0, %eax
jne 0x1dab3
movq -0x118(%rbp), %rdi
addq $0xe8, %rdi
leaq -0x100(%rbp), %rsi
callq 0x23f70
jmp 0x1dab1
jmp 0x1dab3
jmp 0x1dab5
movq -0x88(%rbp), %rdi
callq 0xf1d0
movq %rax, -0x190(%rbp)
jmp 0x1daca
movq -0x190(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x1da23
movb -0x15(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1db6e
movq -0x88(%rbp), %rdi
callq 0xf110
movq %rax, -0x198(%rbp)
jmp 0x1db03
movq -0x198(%rbp), %rax
movq %rax, -0x108(%rbp)
cmpq $0x0, -0x108(%rbp)
je 0x1db6c
movq -0x118(%rbp), %rdi
addq $0xa0, %rdi
leaq -0x108(%rbp), %rsi
callq 0x23f70
jmp 0x1db37
movq -0x108(%rbp), %rdi
callq 0x23fb0
jmp 0x1db45
jmp 0x1db47
movq -0x88(%rbp), %rdi
callq 0xf1d0
movq %rax, -0x1a0(%rbp)
jmp 0x1db5c
movq -0x1a0(%rbp), %rax
movq %rax, -0x108(%rbp)
jmp 0x1db11
jmp 0x1dbe0
movq -0x88(%rbp), %rdi
callq 0xf110
movq %rax, -0x1a8(%rbp)
jmp 0x1db83
movq -0x1a8(%rbp), %rax
movq %rax, -0x110(%rbp)
cmpq $0x0, -0x110(%rbp)
je 0x1dbde
movq -0x118(%rbp), %rdi
addq $0xb8, %rdi
leaq -0x110(%rbp), %rsi
callq 0x23f70
jmp 0x1dbb7
jmp 0x1dbb9
movq -0x88(%rbp), %rdi
callq 0xf1d0
movq %rax, -0x1b0(%rbp)
jmp 0x1dbce
movq -0x1b0(%rbp), %rax
movq %rax, -0x110(%rbp)
jmp 0x1db91
jmp 0x1dbe0
leaq -0xd0(%rbp), %rdi
callq 0x4200
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbp
retq
leaq -0xd0(%rbp), %rdi
callq 0x4200
movq -0x70(%rbp), %rdi
callq 0x46d0
nopw (%rax,%rax)