// File: akshithasriraman[P]Accelerometer/run.cc
// Function: main
int main(int argc, char** argv) {
    std::cout <<"\n\n**********************Conducting analytical model validation experiments (Table 6)************************\n";
    std::cout << "1. Estimating speedup for AES-NI case study:\n    Result: ";
    std::cout << ExecuteShellCommand("./accelerometer validation/aesni.txt");

    std::cout << "2. Estimating speedup for Encryption case study:\n    Result: ";
    std::cout << ExecuteShellCommand("./accelerometer validation/encryption.txt");

    std::cout << "3. Estimating speedup for Inference case study:\n    Result: ";
    std::cout << ExecuteShellCommand("./accelerometer validation/inference.txt");

    std::cout <<"\n\n**********************Conducting analytical model application experiments (Figure 17)************************\n";
    std::cout << "1. Estimating speedup for Compression On-chip:Sync application:\n    Result: ";
    std::cout << ExecuteShellCommand("./accelerometer application/compression_on-chip-sync.txt");

    std::cout << "2. Estimating speedup for Compression Off-chip:Sync application:\n    Result: ";
    std::cout << ExecuteShellCommand("./accelerometer application/compression_off-chip-sync.txt");

    std::cout << "3. Estimating speedup for Compression Off-chip:Sync-OS application:\n    Result: ";
    std::cout << ExecuteShellCommand("./accelerometer application/compression_off-chip-sync-os.txt");

    std::cout << "4. Estimating speedup for Compression Off-chip:Async application:\n    Result: ";
    std::cout << ExecuteShellCommand("./accelerometer application/compression_off-chip-async.txt");

    std::cout << "5. Estimating speedup for Memory Copy On-chip:Sync application:\n    Result: ";
    std::cout << ExecuteShellCommand("./accelerometer application/memcpy_on-chip-sync.txt");

    std::cout << "6. Estimating speedup for Memory Allocation On-chip:Sync application:\n    Result: ";
    std::cout << ExecuteShellCommand("./accelerometer application/malloc_on-chip-sync.txt");

    std::cout << "\n\n************************DONE************************\n\n";

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1d0, %rsp            # imm = 0x1D0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq 0x49a8(%rip), %rdi      # 0x6fc8
movq %rdi, -0x150(%rbp)
leaq 0x19e8(%rip), %rsi      # 0x4016
callq 0x2150
movq -0x150(%rbp), %rdi
leaq 0x1a43(%rip), %rsi      # 0x4084
callq 0x2150
leaq 0x1a71(%rip), %rsi      # 0x40be
leaq -0x30(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x23c0
movq -0x150(%rbp), %rdi
movq -0x148(%rbp), %rsi
callq 0x2130
jmp 0x2672
leaq -0x30(%rbp), %rdi
callq 0x20b0
movq 0x4946(%rip), %rdi      # 0x6fc8
movq %rdi, -0x160(%rbp)
leaq 0x1a53(%rip), %rsi      # 0x40e3
callq 0x2150
leaq 0x1a85(%rip), %rsi      # 0x4121
leaq -0x60(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0x23c0
movq -0x160(%rbp), %rdi
movq -0x158(%rbp), %rsi
callq 0x2130
jmp 0x26c1
leaq -0x60(%rbp), %rdi
callq 0x20b0
movq 0x48f7(%rip), %rdi      # 0x6fc8
movq %rdi, -0x170(%rbp)
leaq 0x1a6c(%rip), %rsi      # 0x414b
callq 0x2150
leaq 0x1a9d(%rip), %rsi      # 0x4188
leaq -0x80(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x23c0
movq -0x170(%rbp), %rdi
movq -0x168(%rbp), %rsi
callq 0x2130
jmp 0x2710
leaq -0x80(%rbp), %rdi
callq 0x20b0
movq 0x48a8(%rip), %rdi      # 0x6fc8
movq %rdi, -0x180(%rbp)
leaq 0x1a83(%rip), %rsi      # 0x41b1
callq 0x2150
movq -0x180(%rbp), %rdi
leaq 0x1ae1(%rip), %rsi      # 0x4222
callq 0x2150
leaq 0x1b22(%rip), %rsi      # 0x426f
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x178(%rbp)
callq 0x23c0
movq -0x180(%rbp), %rdi
movq -0x178(%rbp), %rsi
callq 0x2130
jmp 0x2775
leaq -0xa0(%rbp), %rdi
callq 0x20b0
movq 0x4840(%rip), %rdi      # 0x6fc8
movq %rdi, -0x190(%rbp)
leaq 0x1b12(%rip), %rsi      # 0x42a8
callq 0x2150
leaq 0x1b54(%rip), %rsi      # 0x42f6
leaq -0xc0(%rbp), %rdi
movq %rdi, -0x188(%rbp)
callq 0x23c0
movq -0x190(%rbp), %rdi
movq -0x188(%rbp), %rsi
callq 0x2130
jmp 0x27ca
leaq -0xc0(%rbp), %rdi
callq 0x20b0
movq 0x47eb(%rip), %rdi      # 0x6fc8
movq %rdi, -0x1a0(%rbp)
leaq 0x1b45(%rip), %rsi      # 0x4330
callq 0x2150
leaq 0x1b8a(%rip), %rsi      # 0x4381
leaq -0xe0(%rbp), %rdi
movq %rdi, -0x198(%rbp)
callq 0x23c0
movq -0x1a0(%rbp), %rdi
movq -0x198(%rbp), %rsi
callq 0x2130
jmp 0x281f
leaq -0xe0(%rbp), %rdi
callq 0x20b0
movq 0x4796(%rip), %rdi      # 0x6fc8
movq %rdi, -0x1b0(%rbp)
leaq 0x1b7e(%rip), %rsi      # 0x43be
callq 0x2150
leaq 0x1bc1(%rip), %rsi      # 0x440d
leaq -0x100(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x23c0
movq -0x1b0(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x2130
jmp 0x2874
leaq -0x100(%rbp), %rdi
callq 0x20b0
movq 0x4741(%rip), %rdi      # 0x6fc8
movq %rdi, -0x1c0(%rbp)
leaq 0x1bb3(%rip), %rsi      # 0x4448
callq 0x2150
leaq 0x1bf4(%rip), %rsi      # 0x4495
leaq -0x120(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x23c0
movq -0x1c0(%rbp), %rdi
movq -0x1b8(%rbp), %rsi
callq 0x2130
jmp 0x28c9
leaq -0x120(%rbp), %rdi
callq 0x20b0
movq 0x46ec(%rip), %rdi      # 0x6fc8
movq %rdi, -0x1d0(%rbp)
leaq 0x1bdf(%rip), %rsi      # 0x44c9
callq 0x2150
leaq 0x1c26(%rip), %rsi      # 0x451c
leaq -0x140(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x23c0
movq -0x1d0(%rbp), %rdi
movq -0x1c8(%rbp), %rsi
callq 0x2130
jmp 0x291e
leaq -0x140(%rbp), %rdi
callq 0x20b0
movq 0x4697(%rip), %rdi      # 0x6fc8
leaq 0x1c18(%rip), %rsi      # 0x4550
callq 0x2150
xorl %eax, %eax
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x20b0
jmp 0x2a33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x20b0
jmp 0x2a33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x20b0
jmp 0x2a33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x20b0
jmp 0x2a33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x20b0
jmp 0x2a33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x20b0
jmp 0x2a33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x20b0
jmp 0x2a33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x20b0
jmp 0x2a33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x20b0
movq -0x38(%rbp), %rdi
callq 0x2240
nopl (%rax)