// File: wrighteagle2d[P]wrighteaglebase/Debug/../src/DynamicDebug.cpp
// Function: DynamicDebug::Run(char*)
MessageType DynamicDebug::Run(char *msg) {
  std::cerr << std::endl << mpObserver->CurrentTime(); // 输出当前周期

  if (mRunning == true) {
    if (mRuntoCycle >= Time(0, 0)) {
      if (mRuntoCycle <= mpObserver->CurrentTime()) {
        mRunning = false;
        mRuntoCycle = 0;
      }
    }

    if (mRunning) {
      return GetMessage(msg);
    }
  }

  std::string read_msg;
  while (std::cin) {
    if (std::cin.eof()) {
      std::cin.rdbuf(mpStreamBuffer);
    }

    std::cerr << std::endl << ">>> ";
    std::cin >> read_msg;

    if (*read_msg.c_str() == '\0') {
      std::cin.rdbuf(mpStreamBuffer); // 到达文件末尾会读入'\0'，这里重定向
      continue;
    }

    if (read_msg == "load") {
      std::string file_name;
      std::cin >> file_name;
      mpFile = fopen(file_name.c_str(), "rb");
      if (mpFile == 0) {
        std::cerr << "Can't open dynamicdebug file, exit..." << std::endl;
        continue;
      }

      char ch1(0), ch2(0);

      if (fread(&ch1, sizeof(char), 1, mpFile) < 1) {
        Assert(0);
      }

      if (fread(&ch2, sizeof(char), 1, mpFile) < 1) {
        Assert(0);
      }

      if (ch1 != 'D' || ch2 != 'D') {
        std::cerr << "Not a dynamicdebug logfile!" << std::endl;
        return MT_Null;
      }

      if (fread(&mFileHead, sizeof(mFileHead), 1, mpFile) < 1) {
        Assert(0);
      }

      long long size;

      size = mFileHead.mIndexTableSize;
      mpIndex = new MessageIndexTableUnit[size];
      fseek(mpFile, mFileHead.mIndexTableOffset, SEEK_SET);
      if (size > 0 &&
          fread(mpIndex, size * sizeof(MessageIndexTableUnit), 1, mpFile) < 1) {
        Assert(0);
      }

      size = mFileHead.mParserTableSize;
      mpParserTime = new timeval[size];
      fseek(mpFile, mFileHead.mParserTableOffset, SEEK_SET);
      if (size > 0 &&
          fread(mpParserTime, size * sizeof(timeval), 1, mpFile) < 1) {
        Assert(0);
      }

      size = mFileHead.mDecisionTableSize;
      mpDecisionTime = new timeval[size];
      fseek(mpFile, mFileHead.mDecisionTableOffset, SEEK_SET);
      if (size > 0 &&
          fread(mpDecisionTime, size * sizeof(timeval), 1, mpFile) < 1) {
        Assert(0);
      }

      size = mFileHead.mCommandSendTableSize;
      mpCommandSendTime = new timeval[size];
      fseek(mpFile, mFileHead.mCommandSendTableOffset, SEEK_SET);
      if (size > 0 &&
          fread(mpCommandSendTime, size * sizeof(timeval), 1, mpFile) < 1) {
        Assert(0);
      }

      fseek(mpFile, sizeof(mFileHead) + 2 * sizeof(char), SEEK_SET);
      mpCurrentIndex = mpIndex; // load后，第一个为初始化信息，先进行初始化

      std::cerr << "Load finished." << std::endl;
      fseek(mpFile, mpCurrentIndex->mDataOffset, SEEK_SET);
      if (fread(msg, 1, 1, mpFile) < 1) {
        Assert(0);
      }
      if (mpCurrentIndex->mDataSize > 0 &&
          fread(msg, mpCurrentIndex->mDataSize, 1, mpFile) < 1) {
        Assert(0);
      }
      msg[mpCurrentIndex->mDataSize] = '\0';
      return MT_Parse;
    } else if (read_msg == "step" || read_msg == "s") {
      if (mpCurrentIndex == 0) {
        std::cerr << "no file loaded!";
        continue;
      }
      return GetMessage(msg);
    } else if (read_msg == "goto" || read_msg == "g") {
      if (mpCurrentIndex == 0) {
        std::cerr << "no file loaded!";
        continue;
      }

      int cycle;
      std::cin >> cycle;
      if (FindCycle(cycle) == true) {
        std::cerr << "goto finished ..." << std::endl;
      } else {
        std::cerr << "no such cycle ..." << std::endl;
      }
      continue;
    } else if (read_msg == "runto" || read_msg == "rt") {
      if (mpCurrentIndex == 0) {
        std::cerr << "no file loaded!";
        continue;
      }

      std::string str;
      std::cin >> str;

      char a;
      int t; // time
      int s; // stop time
      if (sscanf(str.c_str(), "%d%c%d", &t, &a, &s) != 3) {
        s = 0;
      }

      mRuntoCycle = Time(t, s);

      if (mRuntoCycle == mpObserver->CurrentTime()) {
        std::cerr << "already here ...";
        continue;
      } else if (mRuntoCycle < mpObserver->CurrentTime()) {
        std::cerr << "can not run to previous cycle";
        continue;
      } else {
        mRunning = true;
        return GetMessage(msg);
      }
    } else if (read_msg == "run" || read_msg == "r") {
      mRuntoCycle = -1;
      mRunning = true;
      return GetMessage(msg);
    } else if (read_msg == "msg" || read_msg == "m") {
      mShowMessage = !mShowMessage;
      std::cerr << "Set ShowMessage: " << mShowMessage << std::endl;
      continue;
    } else if (read_msg == "quit" || read_msg == "q") {
      std::cerr << "Bye ..." << std::endl;
      return MT_Null;
    } else {
      std::cerr << "Error command, only the following commands are aviliable: "
                << std::endl;
      std::cerr << "\tload" << std::endl;
      std::cerr << "\tstep(s)" << std::endl;
      std::cerr << "\trunto(rt)" << std::endl;
      std::cerr << "\tgoto(g)" << std::endl;
      std::cerr << "\trun(r)" << std::endl;
      std::cerr << "\tmsg(m)" << std::endl;
      std::cerr << "\ttype(t)" << std::endl;
      std::cerr << "\tquit(q)" << std::endl;
      continue;
    }
  }

  return MT_Null;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x290, %rsp            # imm = 0x290
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq 0xc99eb(%rip), %rdi     # 0xfdff0
movq 0xc99a4(%rip), %rsi     # 0xfdfb0
callq 0xa630
movq %rax, %rcx
movq -0xc8(%rbp), %rax
movq %rcx, -0xd0(%rbp)
movq (%rax), %rdi
callq 0x11a70
movq -0xd0(%rbp), %rdi
movq %rax, %rsi
callq 0x11d40
movq -0xc8(%rbp), %rax
movb 0x138(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x34708
movq -0xc8(%rbp), %rax
addq $0x13c, %rax            # imm = 0x13C
movq %rax, -0xd8(%rbp)
leaq -0x20(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x13c70
movq -0xd8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x35fd0
testb $0x1, %al
jne 0x3468b
jmp 0x346de
movq -0xc8(%rbp), %rax
movq %rax, %rcx
addq $0x13c, %rcx            # imm = 0x13C
movq %rcx, -0xe0(%rbp)
movq (%rax), %rdi
callq 0x11a70
movq -0xe0(%rbp), %rdi
movq %rax, %rsi
callq 0x36060
testb $0x1, %al
jne 0x346c0
jmp 0x346dc
movq -0xc8(%rbp), %rdi
movb $0x0, 0x138(%rdi)
addq $0x13c, %rdi            # imm = 0x13C
xorl %esi, %esi
callq 0x360f0
jmp 0x346de
movq -0xc8(%rbp), %rax
testb $0x1, 0x138(%rax)
je 0x34706
movq -0xc8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x35680
movl %eax, -0x4(%rbp)
jmp 0x35662
jmp 0x34708
leaq -0x40(%rbp), %rdi
callq 0xa820
movq 0xc98c0(%rip), %rdi     # 0xfdfd8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xa780
movb %al, -0xe1(%rbp)
jmp 0x3472f
movb -0xe1(%rbp), %al
testb $0x1, %al
jne 0x3473e
jmp 0x3563e
movq 0xc9893(%rip), %rdi     # 0xfdfd8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xab20
movb %al, -0xe2(%rbp)
jmp 0x3475c
movb -0xe2(%rbp), %al
testb $0x1, %al
jne 0x34768
jmp 0x347a1
movq -0xc8(%rbp), %rax
movq 0xc9862(%rip), %rdi     # 0xfdfd8
movq (%rdi), %rcx
movq -0x18(%rcx), %rcx
addq %rcx, %rdi
movq 0x130(%rax), %rsi
callq 0xab50
jmp 0x3478e
jmp 0x347a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x35657
movq 0xc9848(%rip), %rdi     # 0xfdff0
movq 0xc9801(%rip), %rsi     # 0xfdfb0
callq 0xa630
movq %rax, -0xf0(%rbp)
jmp 0x347bd
movq -0xf0(%rbp), %rdi
leaq 0x8db6c(%rip), %rsi     # 0xc2337
callq 0xa5a0
jmp 0x347d2
movq 0xc97ff(%rip), %rdi     # 0xfdfd8
leaq -0x40(%rbp), %rsi
callq 0xa7a0
jmp 0x347e4
leaq -0x40(%rbp), %rdi
callq 0xa240
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x34820
movq -0xc8(%rbp), %rax
movq 0xc97d5(%rip), %rdi     # 0xfdfd8
movq (%rdi), %rcx
movq -0x18(%rcx), %rcx
addq %rcx, %rdi
movq 0x130(%rax), %rsi
callq 0xab50
jmp 0x3481b
jmp 0x34711
leaq 0x8dc3b(%rip), %rsi     # 0xc2462
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0xf1(%rbp)
jmp 0x34838
movb -0xf1(%rbp), %al
testb $0x1, %al
jne 0x34847
jmp 0x34e91
leaq -0x70(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0xa820
movq -0x100(%rbp), %rsi
movq 0xc9773(%rip), %rdi     # 0xfdfd8
callq 0xa7a0
jmp 0x3486c
leaq -0x70(%rbp), %rdi
callq 0xa240
movq %rax, %rdi
leaq 0x8dabd(%rip), %rsi     # 0xc233c
callq 0xa710
movq %rax, -0x108(%rbp)
jmp 0x3488d
movq -0xc8(%rbp), %rax
movq -0x108(%rbp), %rcx
movq %rcx, 0x120(%rax)
cmpq $0x0, 0x120(%rax)
jne 0x348fa
movq 0xc973d(%rip), %rdi     # 0xfdff0
leaq 0x8da85(%rip), %rsi     # 0xc233f
callq 0xa5a0
movq %rax, -0x110(%rbp)
jmp 0x348c8
movq -0x110(%rbp), %rdi
movq 0xc96da(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x348dd
movl $0x2, -0x74(%rbp)
jmp 0x34e69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x34e83
movq -0xc8(%rbp), %rax
movb $0x0, -0x75(%rbp)
movb $0x0, -0x76(%rbp)
movq 0x120(%rax), %rcx
leaq -0x75(%rbp), %rdi
movl $0x1, %edx
movq %rdx, %rsi
callq 0xa8e0
movq %rax, -0x118(%rbp)
jmp 0x3492a
movq -0x118(%rbp), %rax
cmpq $0x1, %rax
jae 0x34939
jmp 0x34939
movq -0xc8(%rbp), %rax
movq 0x120(%rax), %rcx
leaq -0x76(%rbp), %rdi
movl $0x1, %edx
movq %rdx, %rsi
callq 0xa8e0
movq %rax, -0x120(%rbp)
jmp 0x34961
movq -0x120(%rbp), %rax
cmpq $0x1, %rax
jae 0x34970
jmp 0x34970
movsbl -0x75(%rbp), %eax
cmpl $0x44, %eax
jne 0x34982
movsbl -0x76(%rbp), %eax
cmpl $0x44, %eax
je 0x349c6
movq 0xc9667(%rip), %rdi     # 0xfdff0
leaq 0x8d9d5(%rip), %rsi     # 0xc2365
callq 0xa5a0
movq %rax, -0x128(%rbp)
jmp 0x3499e
movq -0x128(%rbp), %rdi
movq 0xc9604(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x349b3
movl $0x0, -0x4(%rbp)
movl $0x1, -0x74(%rbp)
jmp 0x34e69
movq -0xc8(%rbp), %rax
movq %rax, %rdi
addq $0x10, %rdi
movq 0x120(%rax), %rcx
movl $0x48, %esi
movl $0x1, %edx
callq 0xa8e0
movq %rax, -0x130(%rbp)
jmp 0x349f3
movq -0x130(%rbp), %rax
cmpq $0x1, %rax
jae 0x34a02
jmp 0x34a02
movq -0xc8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x148(%rbp)
movl $0x20, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
movq %rdi, -0x140(%rbp)
callq 0xa050
movq %rax, -0x138(%rbp)
jmp 0x34a47
movq -0x148(%rbp), %rax
cmpq $0x0, %rax
je 0x34aad
movq -0x138(%rbp), %rax
movq -0x148(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x158(%rbp)
movq %rax, -0x150(%rbp)
movq -0x150(%rbp), %rdi
movq %rdi, -0x160(%rbp)
callq 0x35da0
jmp 0x34a8f
movq -0x158(%rbp), %rcx
movq -0x160(%rbp), %rax
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x150(%rbp)
jne 0x34a7a
movq -0xc8(%rbp), %rax
movq -0x138(%rbp), %rcx
movq %rcx, 0xd0(%rax)
movq 0x20(%rax), %rsi
movq 0x120(%rax), %rdi
xorl %edx, %edx
callq 0xa690
jmp 0x34ad6
cmpq $0x0, -0x80(%rbp)
jle 0x34b40
movq -0xc8(%rbp), %rax
movq -0x80(%rbp), %rsi
shlq $0x5, %rsi
movq 0xd0(%rax), %rdi
movq 0x120(%rax), %rcx
movl $0x1, %edx
callq 0xa8e0
movq %rax, -0x168(%rbp)
jmp 0x34b0d
movq -0x168(%rbp), %rax
cmpq $0x1, %rax
jae 0x34b40
jmp 0x34b40
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0xabb0
jmp 0x34e83
movq -0xc8(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movl $0x10, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0xa050
movq %rax, -0x170(%rbp)
jmp 0x34b77
movq -0xc8(%rbp), %rax
movq -0x170(%rbp), %rcx
movq %rcx, 0xd8(%rax)
movq 0x30(%rax), %rsi
movq 0x120(%rax), %rdi
xorl %edx, %edx
callq 0xa690
jmp 0x34ba0
cmpq $0x0, -0x80(%rbp)
jle 0x34be6
movq -0xc8(%rbp), %rax
movq -0x80(%rbp), %rsi
shlq $0x4, %rsi
movq 0xd8(%rax), %rdi
movq 0x120(%rax), %rcx
movl $0x1, %edx
callq 0xa8e0
movq %rax, -0x178(%rbp)
jmp 0x34bd7
movq -0x178(%rbp), %rax
cmpq $0x1, %rax
jae 0x34be6
jmp 0x34be6
movq -0xc8(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movl $0x10, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0xa050
movq %rax, -0x180(%rbp)
jmp 0x34c1d
movq -0xc8(%rbp), %rax
movq -0x180(%rbp), %rcx
movq %rcx, 0xe0(%rax)
movq 0x40(%rax), %rsi
movq 0x120(%rax), %rdi
xorl %edx, %edx
callq 0xa690
jmp 0x34c46
cmpq $0x0, -0x80(%rbp)
jle 0x34c8c
movq -0xc8(%rbp), %rax
movq -0x80(%rbp), %rsi
shlq $0x4, %rsi
movq 0xe0(%rax), %rdi
movq 0x120(%rax), %rcx
movl $0x1, %edx
callq 0xa8e0
movq %rax, -0x188(%rbp)
jmp 0x34c7d
movq -0x188(%rbp), %rax
cmpq $0x1, %rax
jae 0x34c8c
jmp 0x34c8c
movq -0xc8(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movl $0x10, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0xa050
movq %rax, -0x190(%rbp)
jmp 0x34cc3
movq -0xc8(%rbp), %rax
movq -0x190(%rbp), %rcx
movq %rcx, 0xe8(%rax)
movq 0x50(%rax), %rsi
movq 0x120(%rax), %rdi
xorl %edx, %edx
callq 0xa690
jmp 0x34cec
cmpq $0x0, -0x80(%rbp)
jle 0x34d32
movq -0xc8(%rbp), %rax
movq -0x80(%rbp), %rsi
shlq $0x4, %rsi
movq 0xe8(%rax), %rdi
movq 0x120(%rax), %rcx
movl $0x1, %edx
callq 0xa8e0
movq %rax, -0x198(%rbp)
jmp 0x34d23
movq -0x198(%rbp), %rax
cmpq $0x1, %rax
jae 0x34d32
jmp 0x34d32
movq -0xc8(%rbp), %rax
movq 0x120(%rax), %rdi
movl $0x4a, %esi
xorl %edx, %edx
callq 0xa690
jmp 0x34d4e
movq -0xc8(%rbp), %rax
movq 0xd0(%rax), %rcx
movq %rcx, 0xf0(%rax)
movq 0xc9286(%rip), %rdi     # 0xfdff0
leaq 0x8d610(%rip), %rsi     # 0xc2381
callq 0xa5a0
movq %rax, -0x1a0(%rbp)
jmp 0x34d7f
movq -0x1a0(%rbp), %rdi
movq 0xc9223(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x34d94
movq -0xc8(%rbp), %rcx
movq 0xf0(%rcx), %rax
movq 0x120(%rcx), %rdi
movq 0x10(%rax), %rsi
xorl %edx, %edx
callq 0xa690
jmp 0x34db6
movq -0xc8(%rbp), %rax
movq -0x18(%rbp), %rdi
movq 0x120(%rax), %rcx
movl $0x1, %edx
movq %rdx, %rsi
callq 0xa8e0
movq %rax, -0x1a8(%rbp)
jmp 0x34dde
movq -0x1a8(%rbp), %rax
cmpq $0x1, %rax
jae 0x34ded
jmp 0x34ded
movq -0xc8(%rbp), %rax
movq 0xf0(%rax), %rax
cmpq $0x0, 0x8(%rax)
jle 0x34e41
movq -0xc8(%rbp), %rcx
movq -0x18(%rbp), %rdi
movq 0xf0(%rcx), %rax
movq 0x120(%rcx), %rcx
movq 0x8(%rax), %rsi
movl $0x1, %edx
callq 0xa8e0
movq %rax, -0x1b0(%rbp)
jmp 0x34e32
movq -0x1b0(%rbp), %rax
cmpq $0x1, %rax
jae 0x34e41
jmp 0x34e41
movq -0xc8(%rbp), %rcx
movq -0x18(%rbp), %rax
movq 0xf0(%rcx), %rcx
movq 0x8(%rcx), %rcx
movb $0x0, (%rax,%rcx)
movl $0x1, -0x4(%rbp)
movl $0x1, -0x74(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xa370
movl -0x74(%rbp), %eax
subl $0x2, %eax
je 0x34711
jmp 0x3564c
leaq -0x70(%rbp), %rdi
callq 0xa370
jmp 0x35657
leaq 0x8f88e(%rip), %rsi     # 0xc4726
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x1b1(%rbp)
jmp 0x34ea9
movb -0x1b1(%rbp), %al
testb $0x1, %al
jne 0x34ed9
jmp 0x34eb5
leaq 0x90210(%rip), %rsi     # 0xc50cc
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x1b2(%rbp)
jmp 0x34ecd
movb -0x1b2(%rbp), %al
testb $0x1, %al
jne 0x34ed9
jmp 0x34f31
movq -0xc8(%rbp), %rax
cmpq $0x0, 0xf0(%rax)
jne 0x34f04
movq 0xc90ff(%rip), %rdi     # 0xfdff0
leaq 0x8d498(%rip), %rsi     # 0xc2390
callq 0xa5a0
jmp 0x34eff
jmp 0x34711
movq -0xc8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x35680
movl %eax, -0x1b8(%rbp)
jmp 0x34f1c
movl -0x1b8(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x74(%rbp)
jmp 0x3564c
leaq 0x8d468(%rip), %rsi     # 0xc23a0
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x1b9(%rbp)
jmp 0x34f49
movb -0x1b9(%rbp), %al
testb $0x1, %al
jne 0x34f7c
jmp 0x34f55
leaq 0x8d88f(%rip), %rsi     # 0xc27eb
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x1ba(%rbp)
jmp 0x34f6d
movb -0x1ba(%rbp), %al
testb $0x1, %al
jne 0x34f7c
jmp 0x35051
movq -0xc8(%rbp), %rax
cmpq $0x0, 0xf0(%rax)
jne 0x34fa7
movq 0xc905c(%rip), %rdi     # 0xfdff0
leaq 0x8d3f5(%rip), %rsi     # 0xc2390
callq 0xa5a0
jmp 0x34fa2
jmp 0x34711
movq 0xc902a(%rip), %rdi     # 0xfdfd8
leaq -0x84(%rbp), %rsi
callq 0xa360
jmp 0x34fbc
movq -0xc8(%rbp), %rdi
movl -0x84(%rbp), %esi
callq 0x357f0
movb %al, -0x1bb(%rbp)
jmp 0x34fd6
movb -0x1bb(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x35019
movq 0xc9003(%rip), %rdi     # 0xfdff0
leaq 0x8d3b1(%rip), %rsi     # 0xc23a5
callq 0xa5a0
movq %rax, -0x1c8(%rbp)
jmp 0x35002
movq -0x1c8(%rbp), %rdi
movq 0xc8fa0(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x35017
jmp 0x3504c
movq 0xc8fd0(%rip), %rdi     # 0xfdff0
leaq 0x8d390(%rip), %rsi     # 0xc23b7
callq 0xa5a0
movq %rax, -0x1d0(%rbp)
jmp 0x35035
movq -0x1d0(%rbp), %rdi
movq 0xc8f6d(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x3504a
jmp 0x3504c
jmp 0x34711
leaq 0x8d371(%rip), %rsi     # 0xc23c9
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x1d1(%rbp)
jmp 0x35069
movb -0x1d1(%rbp), %al
testb $0x1, %al
jne 0x3509c
jmp 0x35075
leaq 0x8cfec(%rip), %rsi     # 0xc2068
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x1d2(%rbp)
jmp 0x3508d
movb -0x1d2(%rbp), %al
testb $0x1, %al
jne 0x3509c
jmp 0x352a2
movq -0xc8(%rbp), %rax
cmpq $0x0, 0xf0(%rax)
jne 0x350c7
movq 0xc8f3c(%rip), %rdi     # 0xfdff0
leaq 0x8d2d5(%rip), %rsi     # 0xc2390
callq 0xa5a0
jmp 0x350c2
jmp 0x34711
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0xa820
movq -0x1e0(%rbp), %rsi
movq 0xc8ef0(%rip), %rdi     # 0xfdfd8
callq 0xa7a0
jmp 0x350ef
leaq -0xa8(%rbp), %rdi
callq 0xa240
movq %rax, %rdi
leaq 0x8d2ca(%rip), %rsi     # 0xc23cf
leaq -0xb0(%rbp), %rdx
leaq -0xa9(%rbp), %rcx
leaq -0xb4(%rbp), %r8
movb $0x0, %al
callq 0xa580
cmpl $0x3, %eax
je 0x3514f
movl $0x0, -0xb4(%rbp)
jmp 0x3514f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0xa370
jmp 0x35657
movl -0xb0(%rbp), %esi
movl -0xb4(%rbp), %edx
leaq -0xbc(%rbp), %rdi
callq 0x13c70
jmp 0x35169
movq -0xc8(%rbp), %rax
movq %rax, %rcx
addq $0x13c, %rcx            # imm = 0x13C
movq %rcx, -0x1f0(%rbp)
movq -0xbc(%rbp), %rcx
movq %rcx, 0x13c(%rax)
movq (%rax), %rdi
callq 0x11a70
movq %rax, -0x1e8(%rbp)
jmp 0x351a0
movq -0x1e8(%rbp), %rsi
movq -0x1f0(%rbp), %rdi
callq 0x120a0
movb %al, -0x1f1(%rbp)
jmp 0x351bb
movb -0x1f1(%rbp), %al
testb $0x1, %al
jne 0x351c7
jmp 0x351e8
movq 0xc8e22(%rip), %rdi     # 0xfdff0
leaq 0x8d201(%rip), %rsi     # 0xc23d6
callq 0xa5a0
jmp 0x351dc
movl $0x2, -0x74(%rbp)
jmp 0x35285
movq -0xc8(%rbp), %rax
movq %rax, %rcx
addq $0x13c, %rcx            # imm = 0x13C
movq %rcx, -0x208(%rbp)
movq (%rax), %rdi
callq 0x11a70
movq %rax, -0x200(%rbp)
jmp 0x35211
movq -0x200(%rbp), %rsi
movq -0x208(%rbp), %rdi
callq 0x36140
movb %al, -0x209(%rbp)
jmp 0x3522c
movb -0x209(%rbp), %al
testb $0x1, %al
jne 0x35238
jmp 0x35256
movq 0xc8db1(%rip), %rdi     # 0xfdff0
leaq 0x8d1a1(%rip), %rsi     # 0xc23e7
callq 0xa5a0
jmp 0x3524d
movl $0x2, -0x74(%rbp)
jmp 0x35285
movq -0xc8(%rbp), %rdi
movb $0x1, 0x138(%rdi)
movq -0x18(%rbp), %rsi
callq 0x35680
movl %eax, -0x210(%rbp)
jmp 0x35275
movl -0x210(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x74(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0xa370
movl -0x74(%rbp), %eax
subl $0x2, %eax
je 0x34711
jmp 0x3564c
leaq 0x8d15c(%rip), %rsi     # 0xc2405
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x211(%rbp)
jmp 0x352ba
movb -0x211(%rbp), %al
testb $0x1, %al
jne 0x352ea
jmp 0x352c6
leaq 0x90353(%rip), %rsi     # 0xc5620
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x212(%rbp)
jmp 0x352de
movb -0x212(%rbp), %al
testb $0x1, %al
jne 0x352ea
jmp 0x35338
movq -0xc8(%rbp), %rdi
addq $0x13c, %rdi            # imm = 0x13C
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x360f0
jmp 0x35304
movq -0xc8(%rbp), %rdi
movb $0x1, 0x138(%rdi)
movq -0x18(%rbp), %rsi
callq 0x35680
movl %eax, -0x218(%rbp)
jmp 0x35323
movl -0x218(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x74(%rbp)
jmp 0x3564c
leaq 0x8d0ca(%rip), %rsi     # 0xc2409
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x219(%rbp)
jmp 0x35350
movb -0x219(%rbp), %al
testb $0x1, %al
jne 0x35380
jmp 0x3535c
leaq 0x8f357(%rip), %rsi     # 0xc46ba
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x21a(%rbp)
jmp 0x35374
movb -0x21a(%rbp), %al
testb $0x1, %al
jne 0x35380
jmp 0x353f4
movq -0xc8(%rbp), %rax
movb 0x139(%rax), %cl
notb %cl
andb $0x1, %cl
movb %cl, 0x139(%rax)
movq 0xc8c51(%rip), %rdi     # 0xfdff0
leaq 0x8d067(%rip), %rsi     # 0xc240d
callq 0xa5a0
movq %rax, -0x228(%rbp)
jmp 0x353b4
movq -0x228(%rbp), %rdi
movq -0xc8(%rbp), %rax
movzbl 0x139(%rax), %esi
andl $0x1, %esi
callq 0xaa90
movq %rax, -0x230(%rbp)
jmp 0x353da
movq -0x230(%rbp), %rdi
movq 0xc8bc8(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x353ef
jmp 0x34711
leaq 0x8d024(%rip), %rsi     # 0xc241f
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x231(%rbp)
jmp 0x3540c
movb -0x231(%rbp), %al
testb $0x1, %al
jne 0x3543c
jmp 0x35418
leaq 0x8d005(%rip), %rsi     # 0xc2424
leaq -0x40(%rbp), %rdi
callq 0x36110
movb %al, -0x232(%rbp)
jmp 0x35430
movb -0x232(%rbp), %al
testb $0x1, %al
jne 0x3543c
jmp 0x35480
movq 0xc8bad(%rip), %rdi     # 0xfdff0
leaq 0x8cb54(%rip), %rsi     # 0xc1f9e
callq 0xa5a0
movq %rax, -0x240(%rbp)
jmp 0x35458
movq -0x240(%rbp), %rdi
movq 0xc8b4a(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x3546d
movl $0x0, -0x4(%rbp)
movl $0x1, -0x74(%rbp)
jmp 0x3564c
movq 0xc8b69(%rip), %rdi     # 0xfdff0
leaq 0x8cf98(%rip), %rsi     # 0xc2426
callq 0xa5a0
movq %rax, -0x248(%rbp)
jmp 0x3549c
movq -0x248(%rbp), %rdi
movq 0xc8b06(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x354b1
movq 0xc8b38(%rip), %rdi     # 0xfdff0
leaq 0x8cfa2(%rip), %rsi     # 0xc2461
callq 0xa5a0
movq %rax, -0x250(%rbp)
jmp 0x354cd
movq -0x250(%rbp), %rdi
movq 0xc8ad5(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x354e2
movq 0xc8b07(%rip), %rdi     # 0xfdff0
leaq 0x8cf77(%rip), %rsi     # 0xc2467
callq 0xa5a0
movq %rax, -0x258(%rbp)
jmp 0x354fe
movq -0x258(%rbp), %rdi
movq 0xc8aa4(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x35513
movq 0xc8ad6(%rip), %rdi     # 0xfdff0
leaq 0x8cf4f(%rip), %rsi     # 0xc2470
callq 0xa5a0
movq %rax, -0x260(%rbp)
jmp 0x3552f
movq -0x260(%rbp), %rdi
movq 0xc8a73(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x35544
movq 0xc8aa5(%rip), %rdi     # 0xfdff0
leaq 0x8cf29(%rip), %rsi     # 0xc247b
callq 0xa5a0
movq %rax, -0x268(%rbp)
jmp 0x35560
movq -0x268(%rbp), %rdi
movq 0xc8a42(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x35575
movq 0xc8a74(%rip), %rdi     # 0xfdff0
leaq 0x8cf01(%rip), %rsi     # 0xc2484
callq 0xa5a0
movq %rax, -0x270(%rbp)
jmp 0x35591
movq -0x270(%rbp), %rdi
movq 0xc8a11(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x355a6
movq 0xc8a43(%rip), %rdi     # 0xfdff0
leaq 0x8ced8(%rip), %rsi     # 0xc248c
callq 0xa5a0
movq %rax, -0x278(%rbp)
jmp 0x355c2
movq -0x278(%rbp), %rdi
movq 0xc89e0(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x355d7
movq 0xc8a12(%rip), %rdi     # 0xfdff0
leaq 0x8ceaf(%rip), %rsi     # 0xc2494
callq 0xa5a0
movq %rax, -0x280(%rbp)
jmp 0x355f3
movq -0x280(%rbp), %rdi
movq 0xc89af(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x35608
movq 0xc89e1(%rip), %rdi     # 0xfdff0
leaq 0x8ce87(%rip), %rsi     # 0xc249d
callq 0xa5a0
movq %rax, -0x288(%rbp)
jmp 0x35624
movq -0x288(%rbp), %rdi
movq 0xc897e(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0x35639
jmp 0x34711
movl $0x0, -0x4(%rbp)
movl $0x1, -0x74(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xa370
jmp 0x35662
leaq -0x40(%rbp), %rdi
callq 0xa370
jmp 0x3566e
movl -0x4(%rbp), %eax
addq $0x290, %rsp            # imm = 0x290
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0xaa60
nopw (%rax,%rax)