// File: gkosae[P]ArduinoNeuralNet/neuralnet.cpp
// Function: NeuralNet::writeBody(std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char>>&)
void NeuralNet::writeBody(stringstream& ss) {
    ss << "NeuralNet network{};\n\n";

    ss << "// Function to populate neural network\n";
    ss << "void populateNetwork() {\n";
    ss << "\tvector<Neuron> temp{};\n\n";

    std::string input_neuron_prefix = "in_";
    std::string output_neuron_prefix = "out_";
    std::string hidden_layer_prefix = "hi_";

    ss << "\t// Input layer\n";
    unsigned short number_of_inputs = layers.front().size();
    for(auto i = 0; i < number_of_inputs; i++) {
      ss << "\tNeuron " << input_neuron_prefix << i+1 << "{};";
      ss << "\ttemp.push_back(" << input_neuron_prefix << i+1 << ");\n";
    }

    ss << "\tLayer input_layer{temp};\n";
    ss << "\tnetwork.addLayer(input_layer);\n";
    ss << "\ttemp.clear();\n\n";

    // Create hidden layers
    unsigned short number_of_hidden_layers = layers.size() - 2;
    for(auto i = 0; i < number_of_hidden_layers; i++) {

        ss << "\t// Hidden layer " << i+1 << '\n';
        unsigned int current_layer_size = layers.at(i+1).size();
        for(auto j = 0; j < current_layer_size; j++) {
            ss << "\tNeuron " << hidden_layer_prefix << i+1 << "_" << j+1 << "{vector<double>{";
            unsigned short number_of_weights = layers.at(i+1).neurons.at(j).weights.size();

            for(auto k = 0; k <  number_of_weights; k++) {
              ss << layers.at(i+1).neurons.at(j).weights.at(k);
              if(k != number_of_weights - 1) ss << ", ";
            }

            ss << "}, " << layers.at(i+1).neurons.at(j).threshold << "};";
            ss << "\ttemp.push_back(" << hidden_layer_prefix << i+1 << "_" << j+1 << ");\n";
        }

        ss << "\tLayer " << hidden_layer_prefix << i+1 << "{temp};\n";
        ss << "\tnetwork.addLayer(" << hidden_layer_prefix << i+1 << ");\n";
        ss << "\ttemp.clear();\n\n";
    }


    ss << "\t// Output layer\n";
    unsigned short number_of_outputs = layers.back().size();
    for(auto i = 0; i < number_of_outputs; i++) {
      ss << "\tNeuron " << output_neuron_prefix << i+1 << "{vector<double>{";

      unsigned short number_of_weights = layers.back().neurons.at(i).weights.size();

      for(auto j = 0; j < number_of_weights; j++) {
        ss << layers.back().neurons.at(i).weights.at(j);
        if(j != number_of_weights - 1)ss << ", ";
      }

      ss << "}, " << layers.back().neurons.at(i).threshold << "};";
      ss << "\ttemp.push_back(" << output_neuron_prefix << i+1 << ");\n";
    }

    ss << "\tLayer output_layer{temp};\n";
    ss << "\tnetwork.addLayer(output_layer);\n";
    ss << "\ttemp.clear();\n\n";

    ss << "}\n\n";

    ss << "// Arduino boilerplate\n";
    ss << "void setup() {\n";
    ss << "\t populateNetwork();\n";
    ss << "}\n\n";
    ss << "void loop() {\n \n}\n\n";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x280, %rsp            # imm = 0x280
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x711c(%rip), %rsi      # 0xe299
callq 0x2190
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x711f(%rip), %rsi      # 0xe2b0
callq 0x2190
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x7133(%rip), %rsi      # 0xe2d8
callq 0x2190
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x7139(%rip), %rsi      # 0xe2f2
callq 0x2190
leaq -0x31(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x2320
movq -0xc8(%rbp), %rdx
leaq 0x7130(%rip), %rsi      # 0xe30c
leaq -0x30(%rbp), %rdi
callq 0x2dd0
jmp 0x71e7
leaq -0x31(%rbp), %rdi
callq 0x21e0
leaq -0x69(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x2320
movq -0xd8(%rbp), %rdx
leaq 0x7102(%rip), %rsi      # 0xe310
leaq -0x68(%rbp), %rdi
callq 0x2dd0
jmp 0x7219
leaq -0x69(%rbp), %rdi
callq 0x21e0
leaq -0x91(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x2320
movq -0xe0(%rbp), %rdx
leaq 0x70d2(%rip), %rsi      # 0xe315
leaq -0x90(%rbp), %rdi
callq 0x2dd0
jmp 0x7251
leaq -0x91(%rbp), %rdi
callq 0x21e0
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x70ad(%rip), %rsi      # 0xe319
callq 0x2190
jmp 0x7273
movq -0xd0(%rbp), %rdi
addq $0x18, %rdi
callq 0x81f0
movq %rax, %rdi
callq 0x8220
movw %ax, -0xe2(%rbp)
jmp 0x7294
movw -0xe2(%rbp), %ax
movw %ax, -0x94(%rbp)
movl $0x0, -0x98(%rbp)
movl -0x98(%rbp), %eax
movzwl -0x94(%rbp), %ecx
cmpl %ecx, %eax
jge 0x7415
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x705a(%rip), %rsi      # 0xe32a
callq 0x2190
movq %rax, -0xf0(%rbp)
jmp 0x72de
movq -0xf0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2160
movq %rax, -0xf8(%rbp)
jmp 0x72f7
movq -0xf8(%rbp), %rdi
movl -0x98(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x100(%rbp)
jmp 0x7314
movq -0x100(%rbp), %rdi
leaq 0x7011(%rip), %rsi      # 0xe333
callq 0x2190
jmp 0x7329
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6fff(%rip), %rsi      # 0xe337
callq 0x2190
movq %rax, -0x108(%rbp)
jmp 0x7346
movq -0x108(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2160
movq %rax, -0x110(%rbp)
jmp 0x735f
movq -0x110(%rbp), %rdi
movl -0x98(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x118(%rbp)
jmp 0x737c
movq -0x118(%rbp), %rdi
leaq 0x70d7(%rip), %rsi      # 0xe461
callq 0x2190
jmp 0x7391
jmp 0x7393
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0x72ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x21e0
jmp 0x7d62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x69(%rbp), %rdi
callq 0x21e0
jmp 0x7d59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x91(%rbp), %rdi
callq 0x21e0
jmp 0x7d50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x20c0
jmp 0x7d50
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6f24(%rip), %rsi      # 0xe348
callq 0x2190
jmp 0x742b
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6f29(%rip), %rsi      # 0xe363
callq 0x2190
jmp 0x7441
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6f34(%rip), %rsi      # 0xe384
callq 0x2190
jmp 0x7457
movq -0xd0(%rbp), %rdi
addq $0x18, %rdi
callq 0x82e0
subq $0x2, %rax
movw %ax, -0x9a(%rbp)
movl $0x0, -0xa0(%rbp)
movl -0xa0(%rbp), %eax
movzwl -0x9a(%rbp), %ecx
cmpl %ecx, %eax
jge 0x7982
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6ef5(%rip), %rsi      # 0xe395
callq 0x2190
movq %rax, -0x120(%rbp)
jmp 0x74ae
movq -0x120(%rbp), %rdi
movl -0xa0(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x128(%rbp)
jmp 0x74cb
movq -0x128(%rbp), %rdi
movl $0xa, %esi
callq 0x2210
jmp 0x74de
movq -0xd0(%rbp), %rdi
addq $0x18, %rdi
movl -0xa0(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x8280
movq %rax, -0x130(%rbp)
jmp 0x7502
movq -0x130(%rbp), %rdi
callq 0x8220
movw %ax, -0x132(%rbp)
jmp 0x7517
movw -0x132(%rbp), %ax
movzwl %ax, %eax
movl %eax, -0xa4(%rbp)
movl $0x0, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
cmpl -0xa4(%rbp), %eax
jae 0x7880
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6dd8(%rip), %rsi      # 0xe32a
callq 0x2190
movq %rax, -0x140(%rbp)
jmp 0x7560
movq -0x140(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x2160
movq %rax, -0x148(%rbp)
jmp 0x757c
movq -0x148(%rbp), %rdi
movl -0xa0(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x150(%rbp)
jmp 0x7599
movq -0x150(%rbp), %rdi
leaq 0x6d70(%rip), %rsi      # 0xe317
callq 0x2190
movq %rax, -0x158(%rbp)
jmp 0x75b5
movq -0x158(%rbp), %rdi
movl -0xa8(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x160(%rbp)
jmp 0x75d2
movq -0x160(%rbp), %rdi
leaq 0x6dc7(%rip), %rsi      # 0xe3a7
callq 0x2190
jmp 0x75e7
movq -0xd0(%rbp), %rdi
addq $0x18, %rdi
movl -0xa0(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x8280
movq %rax, -0x168(%rbp)
jmp 0x760b
movq -0x168(%rbp), %rdi
addq $0x18, %rdi
movslq -0xa8(%rbp), %rsi
callq 0x8240
movq %rax, -0x170(%rbp)
jmp 0x762b
movq -0x170(%rbp), %rdi
addq $0x20, %rdi
callq 0x2af0
movw %ax, -0xaa(%rbp)
movl $0x0, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
movzwl -0xaa(%rbp), %ecx
cmpl %ecx, %eax
jge 0x772f
movq -0xd0(%rbp), %rdi
movq -0x10(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x180(%rbp)
addq $0x18, %rdi
movl -0xa0(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x8280
movq %rax, -0x178(%rbp)
jmp 0x7694
movq -0x178(%rbp), %rdi
addq $0x18, %rdi
movslq -0xa8(%rbp), %rsi
callq 0x8240
movq %rax, -0x188(%rbp)
jmp 0x76b4
movq -0x188(%rbp), %rdi
addq $0x20, %rdi
movslq -0xb0(%rbp), %rsi
callq 0x2b10
movq %rax, -0x190(%rbp)
jmp 0x76d4
movq -0x180(%rbp), %rdi
movq -0x190(%rbp), %rax
movsd (%rax), %xmm0
callq 0x2350
jmp 0x76ed
movl -0xb0(%rbp), %eax
movzwl -0xaa(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x7719
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6ca9(%rip), %rsi      # 0xe3b9
callq 0x2190
jmp 0x7717
jmp 0x7719
jmp 0x771b
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x764c
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6c7a(%rip), %rsi      # 0xe3b8
callq 0x2190
movq %rax, -0x198(%rbp)
jmp 0x774c
movq -0xd0(%rbp), %rdi
addq $0x18, %rdi
movl -0xa0(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x8280
movq %rax, -0x1a0(%rbp)
jmp 0x7770
movq -0x1a0(%rbp), %rdi
addq $0x18, %rdi
movslq -0xa8(%rbp), %rsi
callq 0x8240
movq %rax, -0x1a8(%rbp)
jmp 0x7790
movq -0x198(%rbp), %rdi
movq -0x1a8(%rbp), %rax
movsd 0x18(%rax), %xmm0
callq 0x2350
movq %rax, -0x1b0(%rbp)
jmp 0x77b1
movq -0x1b0(%rbp), %rdi
leaq 0x6b75(%rip), %rsi      # 0xe334
callq 0x2190
jmp 0x77c6
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6b62(%rip), %rsi      # 0xe337
callq 0x2190
movq %rax, -0x1b8(%rbp)
jmp 0x77e3
movq -0x1b8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x2160
movq %rax, -0x1c0(%rbp)
jmp 0x77ff
movq -0x1c0(%rbp), %rdi
movl -0xa0(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x1c8(%rbp)
jmp 0x781c
movq -0x1c8(%rbp), %rdi
leaq 0x6aed(%rip), %rsi      # 0xe317
callq 0x2190
movq %rax, -0x1d0(%rbp)
jmp 0x7838
movq -0x1d0(%rbp), %rdi
movl -0xa8(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x1d8(%rbp)
jmp 0x7855
movq -0x1d8(%rbp), %rdi
leaq 0x6bfe(%rip), %rsi      # 0xe461
callq 0x2190
jmp 0x786a
jmp 0x786c
movl -0xa8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa8(%rbp)
jmp 0x7531
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6b2d(%rip), %rsi      # 0xe3bc
callq 0x2190
movq %rax, -0x1e0(%rbp)
jmp 0x789d
movq -0x1e0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x2160
movq %rax, -0x1e8(%rbp)
jmp 0x78b9
movq -0x1e8(%rbp), %rdi
movl -0xa0(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x1f0(%rbp)
jmp 0x78d6
movq -0x1f0(%rbp), %rdi
leaq 0x6a76(%rip), %rsi      # 0xe35a
callq 0x2190
jmp 0x78eb
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6aca(%rip), %rsi      # 0xe3c4
callq 0x2190
movq %rax, -0x1f8(%rbp)
jmp 0x7908
movq -0x1f8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x2160
movq %rax, -0x200(%rbp)
jmp 0x7924
movq -0x200(%rbp), %rdi
movl -0xa0(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x208(%rbp)
jmp 0x7941
movq -0x208(%rbp), %rdi
leaq 0x6b12(%rip), %rsi      # 0xe461
callq 0x2190
jmp 0x7956
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6a1f(%rip), %rsi      # 0xe384
callq 0x2190
jmp 0x796c
jmp 0x796e
movl -0xa0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0x747c
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6a46(%rip), %rsi      # 0xe3d7
callq 0x2190
jmp 0x7998
movq -0xd0(%rbp), %rdi
addq $0x18, %rdi
callq 0x8310
movq %rax, %rdi
callq 0x8220
movw %ax, -0x20a(%rbp)
jmp 0x79b9
movw -0x20a(%rbp), %ax
movw %ax, -0xb2(%rbp)
movl $0x0, -0xb8(%rbp)
movl -0xb8(%rbp), %eax
movzwl -0xb2(%rbp), %ecx
cmpl %ecx, %eax
jge 0x7c63
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6935(%rip), %rsi      # 0xe32a
callq 0x2190
movq %rax, -0x218(%rbp)
jmp 0x7a03
movq -0x218(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2160
movq %rax, -0x220(%rbp)
jmp 0x7a1c
movq -0x220(%rbp), %rdi
movl -0xb8(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x228(%rbp)
jmp 0x7a39
movq -0x228(%rbp), %rdi
leaq 0x6960(%rip), %rsi      # 0xe3a7
callq 0x2190
jmp 0x7a4e
movq -0xd0(%rbp), %rdi
addq $0x18, %rdi
callq 0x8310
movq %rax, %rdi
addq $0x18, %rdi
movslq -0xb8(%rbp), %rsi
callq 0x8240
movq %rax, -0x230(%rbp)
jmp 0x7a7a
movq -0x230(%rbp), %rdi
addq $0x20, %rdi
callq 0x2af0
movw %ax, -0xba(%rbp)
movl $0x0, -0xc0(%rbp)
movl -0xc0(%rbp), %eax
movzwl -0xba(%rbp), %ecx
cmpl %ecx, %eax
jge 0x7b66
movq -0xd0(%rbp), %rdi
movq -0x10(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x240(%rbp)
addq $0x18, %rdi
callq 0x8310
movq %rax, %rdi
addq $0x18, %rdi
movslq -0xb8(%rbp), %rsi
callq 0x8240
movq %rax, -0x238(%rbp)
jmp 0x7aeb
movq -0x238(%rbp), %rdi
addq $0x20, %rdi
movslq -0xc0(%rbp), %rsi
callq 0x2b10
movq %rax, -0x248(%rbp)
jmp 0x7b0b
movq -0x240(%rbp), %rdi
movq -0x248(%rbp), %rax
movsd (%rax), %xmm0
callq 0x2350
jmp 0x7b24
movl -0xc0(%rbp), %eax
movzwl -0xba(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x7b50
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6872(%rip), %rsi      # 0xe3b9
callq 0x2190
jmp 0x7b4e
jmp 0x7b50
jmp 0x7b52
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x7a9b
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6843(%rip), %rsi      # 0xe3b8
callq 0x2190
movq %rax, -0x250(%rbp)
jmp 0x7b83
movq -0xd0(%rbp), %rdi
addq $0x18, %rdi
callq 0x8310
movq %rax, %rdi
addq $0x18, %rdi
movslq -0xb8(%rbp), %rsi
callq 0x8240
movq %rax, -0x258(%rbp)
jmp 0x7baf
movq -0x250(%rbp), %rdi
movq -0x258(%rbp), %rax
movsd 0x18(%rax), %xmm0
callq 0x2350
movq %rax, -0x260(%rbp)
jmp 0x7bd0
movq -0x260(%rbp), %rdi
leaq 0x6756(%rip), %rsi      # 0xe334
callq 0x2190
jmp 0x7be5
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6743(%rip), %rsi      # 0xe337
callq 0x2190
movq %rax, -0x268(%rbp)
jmp 0x7c02
movq -0x268(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2160
movq %rax, -0x270(%rbp)
jmp 0x7c1b
movq -0x270(%rbp), %rdi
movl -0xb8(%rbp), %esi
incl %esi
callq 0x22f0
movq %rax, -0x278(%rbp)
jmp 0x7c38
movq -0x278(%rbp), %rdi
leaq 0x681b(%rip), %rsi      # 0xe461
callq 0x2190
jmp 0x7c4d
jmp 0x7c4f
movl -0xb8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb8(%rbp)
jmp 0x79d1
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6777(%rip), %rsi      # 0xe3e9
callq 0x2190
jmp 0x7c79
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x677d(%rip), %rsi      # 0xe405
callq 0x2190
jmp 0x7c8f
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x66e6(%rip), %rsi      # 0xe384
callq 0x2190
jmp 0x7ca5
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x67c1(%rip), %rsi      # 0xe475
callq 0x2190
jmp 0x7cbb
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x675d(%rip), %rsi      # 0xe427
callq 0x2190
jmp 0x7cd1
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x675f(%rip), %rsi      # 0xe43f
callq 0x2190
jmp 0x7ce7
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6759(%rip), %rsi      # 0xe44f
callq 0x2190
jmp 0x7cfd
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6769(%rip), %rsi      # 0xe475
callq 0x2190
jmp 0x7d13
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x6743(%rip), %rsi      # 0xe465
callq 0x2190
jmp 0x7d29
leaq -0x90(%rbp), %rdi
callq 0x20c0
leaq -0x68(%rbp), %rdi
callq 0x20c0
leaq -0x30(%rbp), %rdi
callq 0x20c0
addq $0x280, %rsp            # imm = 0x280
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0x20c0
leaq -0x30(%rbp), %rdi
callq 0x20c0
movq -0x40(%rbp), %rdi
callq 0x2310
nopl (%rax,%rax)