// File: /workspace/github_cpp_makefile_star2_O3/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 0x2d0c
leaq -0xb0(%rbp), %rdi
movl $0x5, -0x8(%rdi)
leaq -0xa0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x29f1(%rip), %rsi      # 0x5049
leaq 0x29ee(%rip), %rdx      # 0x504d
callq 0x4014
leaq -0x88(%rbp), %rdi
movl $0x2, -0x8(%rdi)
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x29cd(%rip), %rsi      # 0x504e
leaq 0x29cb(%rip), %rdx      # 0x5053
callq 0x4014
leaq -0x60(%rbp), %rdi
movl $0x5, -0x8(%rdi)
leaq -0x50(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x29a2(%rip), %rsi      # 0x5049
leaq 0x299f(%rip), %rdx      # 0x504d
callq 0x4014
xorps %xmm0, %xmm0
leaq -0x40(%rbp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
leaq -0xb8(%rbp), %rsi
callq 0x2db6
leaq -0x40(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x2db6
xorps %xmm0, %xmm0
leaq -0xd0(%rbp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
leaq -0x68(%rbp), %rsi
callq 0x2db6
leaq -0x180(%rbp), %rdi
movl $0x1, -0x10(%rdi)
movq $0x0, -0x8(%rdi)
leaq -0x170(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x291c(%rip), %rsi      # 0x5043
leaq 0x291a(%rip), %rdx      # 0x5048
callq 0x4014
leaq -0x160(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x2e06
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 0x29a2(%rip), %rdx      # 0x5113
movq %rdx, %rsi
callq 0x4014
leaq -0x118(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x2e06
leaq -0x2a8(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x298(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x2969(%rip), %rdx      # 0x5113
movq %rdx, %rsi
callq 0x4014
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 0x2855(%rip), %rsi      # 0x5054
leaq 0x2852(%rip), %rdx      # 0x5058
callq 0x4014
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 0x2825(%rip), %rsi      # 0x5059
leaq 0x2832(%rip), %rdx      # 0x506d
callq 0x4014
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 0x34aa
leaq -0x1c0(%rbp), %rdi
callq 0x2efc
movq -0x1b0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x2890
callq 0x20f0
movq -0xf0(%rbp), %rdi
cmpq %r12, %rdi
je 0x28a1
callq 0x20f0
leaq -0x288(%rbp), %rbx
leaq -0x270(%rbp), %r12
movq -0x238(%rbp), %rdi
cmpq %r14, %rdi
je 0x28c0
callq 0x20f0
movq %r12, %rdi
callq 0x2ea2
movq %rbx, %rdi
callq 0x2ea2
movq -0x2a8(%rbp), %rdi
cmpq %r15, %rdi
je 0x28e1
callq 0x20f0
leaq -0x118(%rbp), %rdi
callq 0x2ea2
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 0x291b
callq 0x20f0
leaq -0x160(%rbp), %rdi
callq 0x2ea2
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x293f
callq 0x20f0
leaq -0xd0(%rbp), %rdi
callq 0x2ea2
leaq -0x40(%rbp), %rdi
callq 0x2ea2
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
je 0x2962
callq 0x20f0
movq -0x88(%rbp), %rdi
cmpq %rbx, %rdi
je 0x2973
callq 0x20f0
leaq -0x1d8(%rbp), %rbx
movq -0xb0(%rbp), %rdi
cmpq %r14, %rdi
je 0x298b
callq 0x20f0
movq %rbx, %rdi
callq 0x2c76
movq -0x1f8(%rbp), %rdi
cmpq %r13, %rdi
je 0x29a4
callq 0x20f0
movq -0x218(%rbp), %rdi
cmpq %r12, %rdi
je 0x29b5
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 0x29e2
callq 0x20f0
jmp 0x29e2
movq %rax, %r15
movq -0xf0(%rbp), %rdi
cmpq %r12, %rdi
je 0x29f8
callq 0x20f0
jmp 0x29f8
movq %rax, %r15
movq -0x238(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a0e
callq 0x20f0
jmp 0x2a0e
movq %rax, %r15
leaq -0x2b0(%rbp), %rdi
callq 0x33fa
jmp 0x2a1f
movq %rax, %r15
leaq -0x148(%rbp), %rdi
callq 0x3430
leaq -0x190(%rbp), %rdi
callq 0x3430
jmp 0x2a6f
movq %rax, %r15
movq -0x138(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a2b
callq 0x20f0
jmp 0x2a2b
movq %rax, %r15
jmp 0x2a2b
movq %rax, %r15
movq -0x180(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a6f
callq 0x20f0
jmp 0x2a6f
jmp 0x2a6c
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
callq 0x2ea2
leaq -0x40(%rbp), %rdi
callq 0x2ea2
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0x2a96
callq 0x20f0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x2aab
callq 0x20f0
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x2ad4
callq 0x20f0
jmp 0x2ad4
movq %rax, %r15
jmp 0x2a96
movq %rax, %r15
jmp 0x2aab
jmp 0x2ad1
movq %rax, %r15
leaq -0x218(%rbp), %rdi
callq 0x345e
movq %r15, %rdi
callq 0x21e0
movq %rax, %r15
jmp 0x2a7b
nop