// File: Neotoxic-off[P]Abstrakt/src/abstract/scan/count_functions.cpp
// Function: abstrakt::count_functions()
bool abstrakt::count_functions()
{
    size_t size = this->current_line.length();
    std::istringstream splitted(this->current_line);
    std::vector<std::string> results(
        std::istream_iterator<std::string>{splitted},
        std::istream_iterator<std::string>()
    );
    std::map<std::string, std::size_t> construction = {
        { "type", 0 },
        { "other", 0 },
        { "parenth_o", 0 },
        { "parenth_c", 0 }
    };

    if (size > 0) {
        for (auto i = results.begin(); i != results.end(); i++) {
            if (this->types.is_type(*i) == true) {
                construction["type"]++;
            } else {
                construction["other"]++;
                if (i->find("(") != std::string::npos) {
                    construction["parenth_o"]++;
                }
                if (i->find(")") != std::string::npos) {
                    construction["parenth_c"]++;
                }
            }
        }

        if (construction["other"] > 0 && construction["type"] > 0 && construction["parenth_o"] > 0 && construction["parenth_c"] > 0) {
            std::cout << "this is maybe a function:" << this->current_line << std::endl;
        }
    }

    return (false);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5b0, %rsp            # imm = 0x5B0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x4b0(%rbp)
addq $0x130, %rdi            # imm = 0x130
movq %rdi, -0x4a8(%rbp)
callq 0x3300
movq -0x4a8(%rbp), %rsi
movq %rax, -0x10(%rbp)
leaq -0x190(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
movl $0x8, %edx
callq 0x3360
movq -0x4a0(%rbp), %rsi
leaq -0x1d8(%rbp), %rdi
callq 0x63d0
jmp 0x57c5
leaq -0x218(%rbp), %rdi
callq 0x6430
jmp 0x57d3
leaq -0x219(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
callq 0x6470
movq -0x4b8(%rbp), %rcx
leaq -0x1a8(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
leaq -0x218(%rbp), %rdx
callq 0x6490
jmp 0x5809
leaq -0x219(%rbp), %rdi
callq 0x6590
leaq -0x218(%rbp), %rdi
callq 0x65b0
leaq -0x1d8(%rbp), %rdi
callq 0x65b0
leaq -0x300(%rbp), %rdi
movq %rdi, -0x308(%rbp)
movl $0x0, -0x30c(%rbp)
leaq 0xa819(%rip), %rsi      # 0x10065
leaq -0x30c(%rbp), %rdx
callq 0x65d0
jmp 0x585a
leaq -0x2d8(%rbp), %rdi
movq %rdi, -0x308(%rbp)
movl $0x0, -0x310(%rbp)
leaq 0xa7f1(%rip), %rsi      # 0x1006a
leaq -0x310(%rbp), %rdx
callq 0x6650
jmp 0x5887
leaq -0x2b0(%rbp), %rdi
movq %rdi, -0x308(%rbp)
movl $0x0, -0x314(%rbp)
leaq 0xa7ca(%rip), %rsi      # 0x10070
leaq -0x314(%rbp), %rdx
callq 0x66d0
jmp 0x58b4
leaq -0x288(%rbp), %rdi
movq %rdi, -0x308(%rbp)
movl $0x0, -0x318(%rbp)
leaq 0xa7a7(%rip), %rsi      # 0x1007a
leaq -0x318(%rbp), %rdx
callq 0x66d0
jmp 0x58e1
leaq -0x300(%rbp), %rax
movq %rax, -0x260(%rbp)
movq $0x4, -0x258(%rbp)
leaq -0x31a(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x6770
movq -0x4c0(%rbp), %r8
movq -0x260(%rbp), %rsi
movq -0x258(%rbp), %rdx
leaq -0x250(%rbp), %rdi
leaq -0x319(%rbp), %rcx
callq 0x6790
jmp 0x5937
leaq -0x31a(%rbp), %rdi
callq 0x6860
leaq -0x300(%rbp), %rax
movq %rax, -0x4d0(%rbp)
addq $0xa0, %rax
movq %rax, -0x4c8(%rbp)
movq -0x4c8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x6750
movq -0x4d0(%rbp), %rcx
movq -0x4d8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x4c8(%rbp)
jne 0x595e
cmpq $0x0, -0x10(%rbp)
jbe 0x636d
leaq -0x1a8(%rbp), %rdi
callq 0x4cd0
movq %rax, -0x328(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x4d40
movq %rax, -0x330(%rbp)
leaq -0x328(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x4d00
testb $0x1, %al
jne 0x59dc
jmp 0x5f1d
movq -0x4b0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x4e0(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x4d70
movq %rax, %rsi
leaq -0x350(%rbp), %rdi
callq 0x30e0
jmp 0x5a0d
movq -0x4e0(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x9330
movb %al, -0x4e1(%rbp)
jmp 0x5a28
movb -0x4e1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4e8(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x3150
movl -0x4e8(%rbp), %eax
cmpl $0x1, %eax
jne 0x5c81
leaq -0x371(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x3380
movq -0x4f0(%rbp), %rdx
leaq 0xa5f0(%rip), %rsi      # 0x10065
leaq -0x370(%rbp), %rdi
callq 0x5370
jmp 0x5a83
leaq -0x250(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x6880
movq %rax, -0x4f8(%rbp)
jmp 0x5a9f
movq -0x4f8(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
leaq -0x370(%rbp), %rdi
callq 0x3150
leaq -0x371(%rbp), %rdi
callq 0x3250
jmp 0x5f01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x63b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x5b22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
leaq -0x219(%rbp), %rdi
callq 0x6590
leaq -0x218(%rbp), %rdi
callq 0x65b0
leaq -0x1d8(%rbp), %rdi
callq 0x65b0
jmp 0x63b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
movq -0x308(%rbp), %rax
leaq -0x300(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x500(%rbp)
je 0x5b90
movq -0x500(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x508(%rbp)
callq 0x6750
movq -0x508(%rbp), %rax
leaq -0x300(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x500(%rbp)
jne 0x5b5f
jmp 0x63aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
leaq -0x31a(%rbp), %rdi
callq 0x6860
leaq -0x300(%rbp), %rax
movq %rax, -0x518(%rbp)
addq $0xa0, %rax
movq %rax, -0x510(%rbp)
movq -0x510(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x520(%rbp)
callq 0x6750
movq -0x518(%rbp), %rcx
movq -0x520(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x510(%rbp)
jne 0x5bce
jmp 0x63aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x639e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x3150
jmp 0x639e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x5c70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
leaq -0x370(%rbp), %rdi
callq 0x3150
leaq -0x371(%rbp), %rdi
callq 0x3250
jmp 0x639e
leaq -0x399(%rbp), %rdi
movq %rdi, -0x528(%rbp)
callq 0x3380
movq -0x528(%rbp), %rdx
leaq 0xa3c8(%rip), %rsi      # 0x1006a
leaq -0x398(%rbp), %rdi
callq 0x5370
jmp 0x5cb0
leaq -0x250(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x6880
movq %rax, -0x530(%rbp)
jmp 0x5ccc
movq -0x530(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
leaq -0x398(%rbp), %rdi
callq 0x3150
leaq -0x399(%rbp), %rdi
callq 0x3250
leaq -0x328(%rbp), %rdi
callq 0x6960
movq %rax, %rdi
leaq 0xa379(%rip), %rsi      # 0x10084
xorl %eax, %eax
movl %eax, %edx
callq 0x33c0
cmpq $-0x1, %rax
je 0x5e1d
leaq -0x3c1(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x3380
movq -0x538(%rbp), %rdx
leaq 0xa331(%rip), %rsi      # 0x10070
leaq -0x3c0(%rbp), %rdi
callq 0x5370
jmp 0x5d4d
leaq -0x250(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x6880
movq %rax, -0x540(%rbp)
jmp 0x5d69
movq -0x540(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
leaq -0x3c0(%rbp), %rdi
callq 0x3150
leaq -0x3c1(%rbp), %rdi
callq 0x3250
jmp 0x5e1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x5dc9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x3150
leaq -0x399(%rbp), %rdi
callq 0x3250
jmp 0x639e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x5e0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x3150
leaq -0x3c1(%rbp), %rdi
callq 0x3250
jmp 0x639e
leaq -0x328(%rbp), %rdi
callq 0x6960
movq %rax, %rdi
leaq 0xa551(%rip), %rsi      # 0x10384
xorl %eax, %eax
movl %eax, %edx
callq 0x33c0
cmpq $-0x1, %rax
je 0x5eff
leaq -0x3e9(%rbp), %rdi
movq %rdi, -0x548(%rbp)
callq 0x3380
movq -0x548(%rbp), %rdx
leaq 0xa213(%rip), %rsi      # 0x1007a
leaq -0x3e8(%rbp), %rdi
callq 0x5370
jmp 0x5e75
leaq -0x250(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x6880
movq %rax, -0x550(%rbp)
jmp 0x5e91
movq -0x550(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
leaq -0x3e8(%rbp), %rdi
callq 0x3150
leaq -0x3e9(%rbp), %rdi
callq 0x3250
jmp 0x5eff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x5eee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x3150
leaq -0x3e9(%rbp), %rdi
callq 0x3250
jmp 0x639e
jmp 0x5f01
jmp 0x5f03
leaq -0x328(%rbp), %rdi
xorl %esi, %esi
callq 0x4d90
movq %rax, -0x3f8(%rbp)
jmp 0x59ad
leaq -0x419(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x3380
movq -0x558(%rbp), %rdx
movb $0x0, -0x442(%rbp)
movb $0x0, -0x443(%rbp)
movb $0x0, -0x46a(%rbp)
movb $0x0, -0x46b(%rbp)
movb $0x0, -0x492(%rbp)
movb $0x0, -0x493(%rbp)
leaq 0xa102(%rip), %rsi      # 0x1006a
leaq -0x418(%rbp), %rdi
callq 0x5370
jmp 0x5f76
leaq -0x250(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x6880
movq %rax, -0x560(%rbp)
jmp 0x5f92
movq -0x560(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0x561(%rbp)
jbe 0x60f8
leaq -0x441(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x3380
movq -0x570(%rbp), %rdx
movb $0x1, -0x442(%rbp)
leaq 0xa092(%rip), %rsi      # 0x10065
leaq -0x440(%rbp), %rdi
callq 0x5370
jmp 0x5fe1
movb $0x1, -0x443(%rbp)
leaq -0x250(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x6880
movq %rax, -0x578(%rbp)
jmp 0x6004
movq -0x578(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0x561(%rbp)
jbe 0x60f8
leaq -0x469(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x3380
movq -0x580(%rbp), %rdx
movb $0x1, -0x46a(%rbp)
leaq 0xa02b(%rip), %rsi      # 0x10070
leaq -0x468(%rbp), %rdi
callq 0x5370
jmp 0x6053
movb $0x1, -0x46b(%rbp)
leaq -0x250(%rbp), %rdi
leaq -0x468(%rbp), %rsi
callq 0x6880
movq %rax, -0x588(%rbp)
jmp 0x6076
movq -0x588(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0x561(%rbp)
jbe 0x60f8
leaq -0x491(%rbp), %rdi
movq %rdi, -0x590(%rbp)
callq 0x3380
movq -0x590(%rbp), %rdx
movb $0x1, -0x492(%rbp)
leaq 0x9fc7(%rip), %rsi      # 0x1007a
leaq -0x490(%rbp), %rdi
callq 0x5370
jmp 0x60c1
movb $0x1, -0x493(%rbp)
leaq -0x250(%rbp), %rdi
leaq -0x490(%rbp), %rsi
callq 0x6880
movq %rax, -0x598(%rbp)
jmp 0x60e4
movq -0x598(%rbp), %rax
cmpq $0x0, (%rax)
seta %al
movb %al, -0x561(%rbp)
movb -0x561(%rbp), %al
movb %al, -0x599(%rbp)
testb $0x1, -0x493(%rbp)
jne 0x610f
jmp 0x611b
leaq -0x490(%rbp), %rdi
callq 0x3150
testb $0x1, -0x492(%rbp)
jne 0x6126
jmp 0x6132
leaq -0x491(%rbp), %rdi
callq 0x3250
testb $0x1, -0x46b(%rbp)
jne 0x613d
jmp 0x6149
leaq -0x468(%rbp), %rdi
callq 0x3150
testb $0x1, -0x46a(%rbp)
jne 0x6154
jmp 0x6160
leaq -0x469(%rbp), %rdi
callq 0x3250
testb $0x1, -0x443(%rbp)
jne 0x616b
jmp 0x6177
leaq -0x440(%rbp), %rdi
callq 0x3150
testb $0x1, -0x442(%rbp)
jne 0x6182
jmp 0x618e
leaq -0x441(%rbp), %rdi
callq 0x3250
leaq -0x418(%rbp), %rdi
callq 0x3150
leaq -0x419(%rbp), %rdi
callq 0x3250
movb -0x599(%rbp), %al
testb $0x1, %al
jne 0x61b5
jmp 0x636b
movq 0x11e1c(%rip), %rdi     # 0x17fd8
leaq 0x9ec3(%rip), %rsi      # 0x10086
callq 0x31f0
movq %rax, -0x5a8(%rbp)
jmp 0x61d1
movq -0x5a8(%rbp), %rdi
movq -0x4b0(%rbp), %rsi
addq $0x130, %rsi            # imm = 0x130
callq 0x31e0
movq %rax, -0x5b0(%rbp)
jmp 0x61f4
movq -0x5b0(%rbp), %rdi
movq 0x11dc6(%rip), %rsi     # 0x17fc8
callq 0x3230
jmp 0x6209
jmp 0x636b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x635d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x6351
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x6338
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x631f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x6306
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x62ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
jmp 0x62d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
testb $0x1, -0x493(%rbp)
jne 0x62c6
jmp 0x62d2
leaq -0x490(%rbp), %rdi
callq 0x3150
jmp 0x62d4
testb $0x1, -0x492(%rbp)
jne 0x62df
jmp 0x62eb
leaq -0x491(%rbp), %rdi
callq 0x3250
jmp 0x62ed
testb $0x1, -0x46b(%rbp)
jne 0x62f8
jmp 0x6304
leaq -0x468(%rbp), %rdi
callq 0x3150
jmp 0x6306
testb $0x1, -0x46a(%rbp)
jne 0x6311
jmp 0x631d
leaq -0x469(%rbp), %rdi
callq 0x3250
jmp 0x631f
testb $0x1, -0x443(%rbp)
jne 0x632a
jmp 0x6336
leaq -0x440(%rbp), %rdi
callq 0x3150
jmp 0x6338
testb $0x1, -0x442(%rbp)
jne 0x6343
jmp 0x634f
leaq -0x441(%rbp), %rdi
callq 0x3250
jmp 0x6351
leaq -0x418(%rbp), %rdi
callq 0x3150
leaq -0x419(%rbp), %rdi
callq 0x3250
jmp 0x639e
jmp 0x636d
leaq -0x250(%rbp), %rdi
callq 0x6980
leaq -0x1a8(%rbp), %rdi
callq 0x69a0
leaq -0x190(%rbp), %rdi
callq 0x3120
xorl %eax, %eax
andb $0x1, %al
addq $0x5b0, %rsp            # imm = 0x5B0
popq %rbp
retq
leaq -0x250(%rbp), %rdi
callq 0x6980
leaq -0x1a8(%rbp), %rdi
callq 0x69a0
leaq -0x190(%rbp), %rdi
callq 0x3120
movq -0x1e0(%rbp), %rdi
callq 0x3370
nop