// File: /workspace/github_cpp_makefile_star2_O1/Diggie-Bro[P]StreamCode/test/hello_world_var.cpp
// Function: main
int main() {
    Importer importer; importer.importIOModule();
    struct Variables varname {
        Types(VARIABLE),
        "name",
    };
    struct Variables varvalue {
        Types(STRING),
        "dummy",
    };
    struct Variables print_perf_param {
        Types(VARIABLE),
        "name"
    };

    vector<struct Variables> var_name; 
    var_name.push_back(varname); var_name.push_back(varvalue);

    vector<struct Variables> print_proc_param;
    print_proc_param.push_back(print_perf_param);
    
    struct PerformFunction print_perf {
        CALLFUNC,
        NULL,
        "print",
        print_proc_param,
    };

    struct PerformFunction assignVar_name {
        ASSIGN,
        &print_perf, 
        "",
        var_name,
    };

    Process print_proc {
        NULL,
        "",
        vector<struct Variables> (0),
        vector<struct Variables> (0),
        &assignVar_name,
    };

    Stream main_strm {
        NULL,
        StreamType(UNIT),
        &print_proc,
        "main",
    };

    StreamCode code {
        &main_strm,
        &importer,
        "hello_world.strmcode",
    };

    Executor exec_ = {
        code
    };

    exec_.executeCode();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x288, %rsp            # imm = 0x288
leaq -0x208(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x1e8(%rbp), %r13
movq %r13, -0x10(%r13)
movq %rax, -0x8(%r13)
movb %al, (%r13)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%r13)
movq %rax, 0x20(%r13)
leaq -0x218(%rbp), %rbx
movq %rbx, %rdi
callq 0x2cf4
leaq -0xb0(%rbp), %rdi
movl $0x5, -0x8(%rdi)
leaq -0xa0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x29de(%rip), %rsi      # 0x5049
leaq 0x29db(%rip), %rdx      # 0x504d
callq 0x3fb6
leaq -0x88(%rbp), %rdi
movl $0x2, -0x8(%rdi)
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x29ba(%rip), %rsi      # 0x504e
leaq 0x29b8(%rip), %rdx      # 0x5053
callq 0x3fb6
leaq -0x60(%rbp), %rdi
movl $0x5, -0x8(%rdi)
leaq -0x50(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x298f(%rip), %rsi      # 0x5049
leaq 0x298c(%rip), %rdx      # 0x504d
callq 0x3fb6
xorps %xmm0, %xmm0
leaq -0x40(%rbp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
leaq -0xb8(%rbp), %rsi
callq 0x2db2
leaq -0x40(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x2db2
xorps %xmm0, %xmm0
leaq -0xd0(%rbp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
leaq -0x68(%rbp), %rsi
callq 0x2db2
leaq -0x180(%rbp), %rdi
movl $0x1, -0x10(%rdi)
movq $0x0, -0x8(%rdi)
leaq -0x170(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2909(%rip), %rsi      # 0x5043
leaq 0x2907(%rip), %rdx      # 0x5048
callq 0x3fb6
leaq -0x160(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x2e02
leaq -0x138(%rbp), %rdi
movl $0x0, -0x10(%rdi)
leaq -0x190(%rbp), %rax
movq %rax, -0x8(%rdi)
leaq -0x128(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x298f(%rip), %rdx      # 0x5113
movq %rdx, %rsi
callq 0x3fb6
leaq -0x118(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x2e02
leaq -0x2a8(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x298(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x2956(%rip), %rdx      # 0x5113
movq %rdx, %rsi
callq 0x3fb6
xorps %xmm0, %xmm0
leaq -0x2b0(%rbp), %rax
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x28(%rax)
leaq -0x148(%rbp), %rcx
movq %rcx, 0x58(%rax)
leaq -0x238(%rbp), %rdi
movq $0x0, -0x18(%rdi)
movl $0x0, -0x10(%rdi)
movq %rax, -0x8(%rdi)
leaq -0x228(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2842(%rip), %rsi      # 0x5054
leaq 0x283f(%rip), %rdx      # 0x5058
callq 0x3fb6
leaq -0x250(%rbp), %rax
leaq -0xf0(%rbp), %rdi
movq %rax, -0x10(%rdi)
movq %rbx, -0x8(%rdi)
leaq -0xe0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x2812(%rip), %rsi      # 0x5059
leaq 0x281f(%rip), %rdx      # 0x506d
callq 0x3fb6
movups -0x100(%rbp), %xmm0
leaq -0x1b0(%rbp), %rdi
movaps %xmm0, -0x10(%rdi)
leaq -0x1a0(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
addq %rsi, %rdx
callq 0x344e
leaq -0x1c0(%rbp), %rdi
callq 0x2eee
movq -0x1b0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x28a3
callq 0x20f0
movq -0xf0(%rbp), %rdi
cmpq %r12, %rdi
je 0x28b4
callq 0x20f0
leaq -0x288(%rbp), %rbx
leaq -0x270(%rbp), %r12
movq -0x238(%rbp), %rdi
cmpq %r14, %rdi
je 0x28d3
callq 0x20f0
movq %r12, %rdi
callq 0x2e9e
movq %rbx, %rdi
callq 0x2e9e
movq -0x2a8(%rbp), %rdi
cmpq %r15, %rdi
je 0x28f4
callq 0x20f0
leaq -0x118(%rbp), %rdi
callq 0x2e9e
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
leaq -0xa0(%rbp), %r14
leaq -0x78(%rbp), %rbx
leaq -0x50(%rbp), %r15
leaq -0x208(%rbp), %r12
je 0x292e
callq 0x20f0
leaq -0x160(%rbp), %rdi
callq 0x2e9e
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x2952
callq 0x20f0
leaq -0xd0(%rbp), %rdi
callq 0x2e9e
leaq -0x40(%rbp), %rdi
callq 0x2e9e
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
je 0x2975
callq 0x20f0
movq -0x88(%rbp), %rdi
cmpq %rbx, %rdi
je 0x2986
callq 0x20f0
leaq -0x1d8(%rbp), %rbx
movq -0xb0(%rbp), %rdi
cmpq %r14, %rdi
je 0x299e
callq 0x20f0
movq %rbx, %rdi
callq 0x2c68
movq -0x1f8(%rbp), %rdi
cmpq %r13, %rdi
je 0x29b7
callq 0x20f0
movq -0x218(%rbp), %rdi
cmpq %r12, %rdi
je 0x29c8
callq 0x20f0
xorl %eax, %eax
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movq -0x1b0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x29f5
callq 0x20f0
jmp 0x29f5
movq %rax, %r15
movq -0xf0(%rbp), %rdi
cmpq %r12, %rdi
je 0x2a0b
callq 0x20f0
jmp 0x2a0b
movq %rax, %r15
movq -0x238(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a21
callq 0x20f0
jmp 0x2a21
movq %rax, %r15
leaq -0x2b0(%rbp), %rdi
callq 0x339e
jmp 0x2a32
movq %rax, %r15
leaq -0x148(%rbp), %rdi
callq 0x33d4
leaq -0x190(%rbp), %rdi
callq 0x33d4
jmp 0x2a82
movq %rax, %r15
movq -0x138(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a3e
callq 0x20f0
jmp 0x2a3e
movq %rax, %r15
jmp 0x2a3e
movq %rax, %r15
movq -0x180(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a82
callq 0x20f0
jmp 0x2a82
jmp 0x2a7f
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
callq 0x2e9e
leaq -0x40(%rbp), %rdi
callq 0x2e9e
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0x2aa9
callq 0x20f0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x2abe
callq 0x20f0
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x2ae7
callq 0x20f0
jmp 0x2ae7
movq %rax, %r15
jmp 0x2aa9
movq %rax, %r15
jmp 0x2abe
jmp 0x2ae4
movq %rax, %r15
leaq -0x218(%rbp), %rdi
callq 0x3402
movq %r15, %rdi
callq 0x21e0
movq %rax, %r15
jmp 0x2a8e