// File: /workspace/github_cpp_makefile_star2_O2/CMU-SAFARI[P]ramulator/src/Main.cpp
// Function: main
int main(int argc, const char *argv[])
{
    if (argc < 2) {
        printf("Usage: %s <configs-file> --mode=cpu,dram [--stats <filename>] <trace-filename1> <trace-filename2>\n"
            "Example: %s ramulator-configs.cfg --mode=cpu cpu.trace cpu.trace\n", argv[0], argv[0]);
        return 0;
    }

    Config configs(argv[1]);

    const std::string& standard = configs["standard"];
    assert(standard != "" || "DRAM standard should be specified.");

    const char *trace_type = strstr(argv[2], "=");
    trace_type++;
    if (strcmp(trace_type, "cpu") == 0) {
      configs.add("trace_type", "CPU");
    } else if (strcmp(trace_type, "dram") == 0) {
      configs.add("trace_type", "DRAM");
    } else {
      printf("invalid trace type: %s\n", trace_type);
      assert(false);
    }

    int trace_start = 3;
    string stats_out;
    if (strcmp(argv[trace_start], "--stats") == 0) {
      Stats::statlist.output(argv[trace_start+1]);
      stats_out = argv[trace_start+1];
      trace_start += 2;
    } else {
      Stats::statlist.output(standard+".stats");
      stats_out = standard + string(".stats");
    }

    // A separate file defines mapping for easy config.
    if (strcmp(argv[trace_start], "--mapping") == 0) {
      configs.add("mapping", argv[trace_start+1]);
      trace_start += 2;
    } else {
      configs.add("mapping", "defaultmapping");
    }

    std::vector<const char*> files(&argv[trace_start], &argv[argc]);
    configs.set_core_num(argc - trace_start);

    if (standard == "DDR3") {
      DDR3* ddr3 = new DDR3(configs["org"], configs["speed"]);
      start_run(configs, ddr3, files);
    } else if (standard == "DDR4") {
      DDR4* ddr4 = new DDR4(configs["org"], configs["speed"]);
      start_run(configs, ddr4, files);
    } else if (standard == "SALP-MASA") {
      SALP* salp8 = new SALP(configs["org"], configs["speed"], "SALP-MASA", configs.get_subarrays());
      start_run(configs, salp8, files);
    } else if (standard == "LPDDR3") {
      LPDDR3* lpddr3 = new LPDDR3(configs["org"], configs["speed"]);
      start_run(configs, lpddr3, files);
    } else if (standard == "LPDDR4") {
      // total cap: 2GB, 1/2 of others
      LPDDR4* lpddr4 = new LPDDR4(configs["org"], configs["speed"]);
      start_run(configs, lpddr4, files);
    } else if (standard == "GDDR5") {
      GDDR5* gddr5 = new GDDR5(configs["org"], configs["speed"]);
      start_run(configs, gddr5, files);
    } else if (standard == "HBM") {
      HBM* hbm = new HBM(configs["org"], configs["speed"]);
      start_run(configs, hbm, files);
    } else if (standard == "WideIO") {
      // total cap: 1GB, 1/4 of others
      WideIO* wio = new WideIO(configs["org"], configs["speed"]);
      start_run(configs, wio, files);
    } else if (standard == "WideIO2") {
      // total cap: 2GB, 1/2 of others
      WideIO2* wio2 = new WideIO2(configs["org"], configs["speed"], configs.get_channels());
      wio2->channel_width *= 2;
      start_run(configs, wio2, files);
    } else if (standard == "STTMRAM") {
      STTMRAM* sttmram = new STTMRAM(configs["org"], configs["speed"]);
      start_run(configs, sttmram, files);
    } else if (standard == "PCM") {
      PCM* pcm = new PCM(configs["org"], configs["speed"]);
      start_run(configs, pcm, files);
    }
    // Various refresh mechanisms
      else if (standard == "DSARP") {
      DSARP* dsddr3_dsarp = new DSARP(configs["org"], configs["speed"], DSARP::Type::DSARP, configs.get_subarrays());
      start_run(configs, dsddr3_dsarp, files);
    } else if (standard == "ALDRAM") {
      ALDRAM* aldram = new ALDRAM(configs["org"], configs["speed"]);
      start_run(configs, aldram, files);
    } else if (standard == "TLDRAM") {
      TLDRAM* tldram = new TLDRAM(configs["org"], configs["speed"], configs.get_subarrays());
      start_run(configs, tldram, files);
    }

    printf("Simulation done. Statistics written to %s\n", stats_out.c_str());

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rsi, %r14
cmpl $0x1, %edi
jg 0xf94b
movq (%r14), %rdx
leaq 0xc1914(%rip), %rdi     # 0xd1250
movq %rdx, %rsi
xorl %eax, %eax
callq 0xb050
jmp 0x10977
movl %edi, %ebx
movq 0x8(%r14), %rsi
leaq 0x98(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x10eea
leaq 0xd0(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x9c5b4
leaq 0x98(%rsp), %rdi
callq 0xb568
leaq 0xc1965(%rip), %rsi     # 0xd12f4
leaq 0x128(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x10eea
leaq 0x98(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x128(%rsp), %rdx
callq 0x10f26
leaq 0x128(%rsp), %rdi
callq 0xb568
leaq 0xc7b86(%rip), %rsi     # 0xd7558
leaq 0x98(%rsp), %rdi
callq 0x10f86
movq 0x10(%r14), %rdi
pushq $0x3d
popq %rsi
callq 0xb130
movq %rax, %r15
incq %r15
leaq 0xc1931(%rip), %rsi     # 0xd1329
movq %r15, %rdi
callq 0xb390
testl %eax, %eax
je 0xfa66
leaq 0xc1931(%rip), %rsi     # 0xd133c
movq %r15, %rdi
callq 0xb390
testl %eax, %eax
jne 0x10988
leaq 0xc190b(%rip), %rsi     # 0xd132d
leaq 0x128(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x10eea
leaq 0xc28b9(%rip), %rsi     # 0xd22f4
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x10eea
leaq 0xd0(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x10f90
jmp 0xfaaf
leaq 0xc18c0(%rip), %rsi     # 0xd132d
leaq 0x128(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x10eea
leaq 0xc18b2(%rip), %rsi     # 0xd1338
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x10eea
leaq 0xd0(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x10f90
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x128(%rsp), %rdi
callq 0xb568
leaq 0x138(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x18(%r14), %rdi
leaq 0xc187a(%rip), %rsi     # 0xd135f
callq 0xb390
testl %eax, %eax
je 0xfb87
leaq 0xc186e(%rip), %rdx     # 0xd1367
leaq 0x168(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x11053
leaq 0x1275cb(%rip), %rdi    # 0x1370e0
leaq 0x168(%rsp), %rsi
callq 0x11012
leaq 0x168(%rsp), %rdi
callq 0xb568
leaq 0xc1831(%rip), %rsi     # 0xd1367
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x1108b
leaq 0x128(%rsp), %rdi
leaq 0x10(%rsp), %r15
movq %r15, %rsi
callq 0xb340
movq %r15, %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
pushq $0x3
jmp 0xfbd1
movq 0x20(%r14), %rsi
leaq 0x188(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x10eea
leaq 0x12753c(%rip), %rdi    # 0x1370e0
leaq 0x188(%rsp), %rsi
callq 0x11012
leaq 0x188(%rsp), %rdi
callq 0xb568
movq 0x20(%r14), %rsi
leaq 0x128(%rsp), %rdi
callq 0xb510
pushq $0x5
popq %r15
movl %r15d, %r12d
movq (%r14,%r12,8), %rdi
leaq 0xc178d(%rip), %rsi     # 0xd136e
callq 0xb390
testl %eax, %eax
je 0xfc43
leaq 0xc177f(%rip), %rsi     # 0xd1370
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x10eea
leaq 0xc1771(%rip), %rsi     # 0xd1378
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0x10eea
leaq 0xd0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f90
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0xfc9f
leaq 0xc1726(%rip), %rsi     # 0xd1370
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x10eea
movq 0x8(%r14,%r12,8), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0x10eea
leaq 0xd0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f90
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
addl $0x2, %r15d
movq %r15, %r12
leaq (%r14,%r12,8), %rsi
movl %ebx, %eax
leaq (%r14,%rax,8), %rdx
leaq 0xb8(%rsp), %rdi
leaq 0x10(%rsp), %rcx
callq 0x110b0
subl %r15d, %ebx
movl %ebx, 0x114(%rsp)
leaq 0xc16d1(%rip), %rsi     # 0xd139d
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0xfda2
movl $0x2de0, %edi           # imm = 0x2DE0
callq 0xb2d0
movq %rax, %r14
leaq 0xc1692(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc1666(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xa02b0
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x110ef
jmp 0x1092f
leaq 0xc15fb(%rip), %rsi     # 0xd13a4
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0xfe7f
movl $0x32f8, %edi           # imm = 0x32F8
callq 0xb2d0
movq %rax, %r14
leaq 0xc15b5(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc1589(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xa3c60
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x113c0
jmp 0x1092f
leaq 0xc150b(%rip), %rsi     # 0xd1391
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0xff95
movl $0x3dc8, %edi           # imm = 0x3DC8
callq 0xb2d0
movq %rax, %r14
leaq 0xc14d8(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc14af(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0x97(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0xc1485(%rip), %rsi     # 0xd1391
leaq 0x148(%rsp), %rdi
leaq 0x96(%rsp), %rdx
callq 0x10eea
movl 0x108(%rsp), %r8d
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
leaq 0x148(%rsp), %rcx
movq %r14, %rdi
callq 0xc046a
leaq 0x148(%rsp), %rdi
callq 0xb568
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x11691
jmp 0x1092f
leaq 0xc13ff(%rip), %rsi     # 0xd139b
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x10072
movl $0x2c38, %edi           # imm = 0x2C38
callq 0xb2d0
movq %rax, %r14
leaq 0xc13c2(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc1396(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xb11ea
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x11962
jmp 0x1092f
leaq 0xc1329(%rip), %rsi     # 0xd13a2
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x1014f
movl $0x2b00, %edi           # imm = 0x2B00
callq 0xb2d0
movq %rax, %r14
leaq 0xc12e5(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc12b9(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xb456c
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x11c33
jmp 0x1092f
leaq 0xc1253(%rip), %rsi     # 0xd13a9
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x1022c
movl $0x3210, %edi           # imm = 0x3210
callq 0xb2d0
movq %rax, %r14
leaq 0xc1208(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc11dc(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xaabc8
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x11f04
jmp 0x1092f
leaq 0xc117c(%rip), %rsi     # 0xd13af
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x10309
movl $0x31d8, %edi           # imm = 0x31D8
callq 0xb2d0
movq %rax, %r14
leaq 0xc112b(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc10ff(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xade12
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x121d5
jmp 0x1092f
leaq 0xc10a3(%rip), %rsi     # 0xd13b3
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x103e6
movl $0x2770, %edi           # imm = 0x2770
callq 0xb2d0
movq %rax, %r14
leaq 0xc104e(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc1022(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xcc044
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x124a6
jmp 0x1092f
leaq 0xc0fcd(%rip), %rsi     # 0xd13ba
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x104d1
movl $0x2a30, %edi           # imm = 0x2A30
callq 0xb2d0
movq %rax, %r14
leaq 0xc0f71(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc0f45(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
movl 0x100(%rsp), %ecx
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xcf218
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
shll 0x28b8(%r14)
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x12777
jmp 0x1092f
leaq 0xc0eea(%rip), %rsi     # 0xd13c2
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x105ae
movl $0x2910, %edi           # imm = 0x2910
callq 0xb2d0
movq %rax, %r14
leaq 0xc0e86(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc0e5a(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xc45a0
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x12a48
jmp 0x1092f
leaq 0xc0e15(%rip), %rsi     # 0xd13ca
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x1068b
movl $0x2840, %edi           # imm = 0x2840
callq 0xb2d0
movq %rax, %r14
leaq 0xc0da9(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc0d7d(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xb81f8
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x12d19
jmp 0x1092f
leaq 0xc0d3c(%rip), %rsi     # 0xd13ce
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x10773
movl $0x3208, %edi           # imm = 0x3208
callq 0xb2d0
movq %rax, %r14
leaq 0xc0ccc(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc0ca0(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
movl 0x108(%rsp), %r8d
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
pushq $0x4
popq %rcx
movq %r14, %rdi
callq 0xa7874
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x12fea
jmp 0x1092f
leaq 0xc0c5a(%rip), %rsi     # 0xd13d4
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x10850
movl $0x3408, %edi           # imm = 0x3408
callq 0xb2d0
movq %rax, %r14
leaq 0xc0be4(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc0bb8(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0x98934
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x132bb
jmp 0x1092f
leaq 0xc0b84(%rip), %rsi     # 0xd13db
leaq 0x98(%rsp), %rdi
callq 0x110e2
testb %al, %al
je 0x1092f
movl $0x3f50, %edi           # imm = 0x3F50
callq 0xb2d0
movq %rax, %r14
leaq 0xc0b07(%rip), %rsi     # 0xd1387
leaq 0x30(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x10eea
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10f26
leaq 0xc0adb(%rip), %rsi     # 0xd138b
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x10eea
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x10f26
movl 0x108(%rsp), %ecx
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0xc9004
leaq 0x50(%rsp), %rdi
callq 0xb568
leaq 0x70(%rsp), %rdi
callq 0xb568
leaq 0x10(%rsp), %rdi
callq 0xb568
leaq 0x30(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r14, %rsi
callq 0x1358c
leaq 0x128(%rsp), %rbx
movq (%rbx), %rsi
leaq 0xc0aa1(%rip), %rdi     # 0xd13e2
xorl %eax, %eax
callq 0xb050
leaq 0xb8(%rsp), %rdi
callq 0x13cb8
movq %rbx, %rdi
callq 0xb568
leaq 0x98(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
callq 0x13b7c
xorl %eax, %eax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0xc09b2(%rip), %rdi     # 0xd1341
movq %r15, %rsi
xorl %eax, %eax
callq 0xb050
leaq 0xc09b9(%rip), %rdi     # 0xd1359
leaq 0xc0956(%rip), %rsi     # 0xd12fd
leaq 0xc095c(%rip), %rcx     # 0xd130a
movl $0xc7, %edx
callq 0xb210
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x109ca
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x109d9
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x109e8
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x109f7
movq %rax, %rbx
movl $0x3f50, %esi           # imm = 0x3F50
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10a13
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10a27
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10a36
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10a45
movq %rax, %rbx
movl $0x3408, %esi           # imm = 0x3408
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10a61
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10a75
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10a84
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10a93
movq %rax, %rbx
movl $0x3208, %esi           # imm = 0x3208
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10aaf
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10ac3
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10ad2
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10ae1
movq %rax, %rbx
movl $0x2840, %esi           # imm = 0x2840
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10afd
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10b11
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10b20
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10b2f
movq %rax, %rbx
movl $0x2910, %esi           # imm = 0x2910
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10b4b
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10b5f
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10b6e
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10b7d
movq %rax, %rbx
movl $0x2a30, %esi           # imm = 0x2A30
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10b99
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10bad
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10bbc
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10bcb
movq %rax, %rbx
movl $0x2770, %esi           # imm = 0x2770
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10be7
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10bfb
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10c0a
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10c19
movq %rax, %rbx
movl $0x31d8, %esi           # imm = 0x31D8
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10c35
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10c49
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10c58
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10c67
movq %rax, %rbx
movl $0x3210, %esi           # imm = 0x3210
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10c83
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10c97
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10ca6
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10cb5
movq %rax, %rbx
movl $0x2b00, %esi           # imm = 0x2B00
jmp 0x10e2e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10cd1
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10ce5
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10cf4
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10d03
movq %rax, %rbx
movl $0x2c38, %esi           # imm = 0x2C38
jmp 0x10e2e
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
callq 0xb568
jmp 0x10d22
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10d31
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10d45
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10d54
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
movl $0x3dc8, %esi           # imm = 0x3DC8
jmp 0x10e2e
movq %rax, %rbx
jmp 0x10d5e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10d7f
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10d93
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10da2
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10db1
movq %rax, %rbx
movl $0x32f8, %esi           # imm = 0x32F8
jmp 0x10e2e
jmp 0x10e38
jmp 0x10e64
jmp 0x10e8e
movq %rax, %rbx
leaq 0x188(%rsp), %rdi
jmp 0x10e6c
jmp 0x10e8e
jmp 0x10e64
jmp 0x10e8e
jmp 0x10e75
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb568
jmp 0x10dfa
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xb568
jmp 0x10e0b
jmp 0x10e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10e1a
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10e29
movq %rax, %rbx
movl $0x2de0, %esi           # imm = 0x2DE0
movq %r14, %rdi
callq 0xb2e0
jmp 0x10e7d
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb568
jmp 0x10e67
jmp 0x10e64
jmp 0x10e8e
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x10e6c
jmp 0x10e8e
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
jmp 0x10e6c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xb568
jmp 0x10e91
jmp 0x10e8e
movq %rax, %rbx
jmp 0x10e9e
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x13cb8
jmp 0x10e91
jmp 0x10e8e
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0xb568
leaq 0x98(%rsp), %rdi
callq 0xb568
leaq 0xd0(%rsp), %rdi
callq 0x13b7c
movq %rbx, %rdi
callq 0xb4d0
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
jmp 0x10ea6
movq %rax, %rbx
jmp 0x10eab
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0xb568
jmp 0x10eb8
movq %rax, %rbx
jmp 0x10eb8
nop