// File: ChanTsune[P]py_string/example.cpp
// Function: main
int main(int argc, char const *argv[])
{
  using namespace std;
  // string multiplication
  py::string multiplication = "hello world!";

  std::cout << multiplication * 2 << std::endl;
  // hello world!hello world!

  // Subscript operator
  py::string Subscript_operator = "0123456789";

  cout << Subscript_operator[0] << endl;

  cout << Subscript_operator[-1] << endl; // last element

  cout << Subscript_operator[-3] << endl; // third element from the back (7)

  // string slice
  py::string slice = "0123456789";

  cout << slice.slice(0, 20, 2) << endl;
  cout << slice.slice(0, 20, -2) << endl;
  cout << slice[{ 4, py::nullopt }] << endl;

  // string format
  py::string format = "{} is {} than {}";

  cout << format.format(3, "bigger", 1) << endl;

  cout << format.format(2, "smaller", 4) << endl;

  py::string format2 = "{0} is {1} as {0}";

  cout << format2.format(2, "same") << endl;

  // string replace

  py::string replace = "1+2-3";

  cout << replace.pyreplace("-", "=");
  // 1+2=3

  // string split
  py::string split = "12,3,4-2,2,3";
  std::deque<py::string> slist; // std::vector is also acceptable

  split.split(slist, ",");

  for (auto &&s : slist) {
    cout << s << endl;
  }
  // Check ASCII character string
  py::string ascii = "Hello World!";
  cout << std::boolalpha << ascii.isascii() << endl;

  py::string not_ascii = "ハローワールド！";
  cout << std::boolalpha << not_ascii.isascii() << endl;

  // translate
  py::string tstr = "text abc so cool.";
  auto table = py::string::maketrans("abcd", "ABCD", ".");
  std::unordered_map<char, py::string> _t;
  _t['.'] = "!!";
  _t['s'] = "";
  _t['o'] = "O";

  auto table2 = py::string::maketrans(_t);

  cout << tstr.translate(table) << endl;

  cout << tstr.translate(table2) << endl;

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x710, %rsp            # imm = 0x710
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x67f0
movq -0x5c0(%rbp), %rdx
leaq 0x36763(%rip), %rsi     # 0x3d1ca
leaq -0x30(%rbp), %rdi
callq 0x7c70
jmp 0x6a72
leaq -0x31(%rbp), %rdi
callq 0x6510
leaq -0x68(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x2, %edx
callq 0x7ca0
jmp 0x6a8f
movq 0x5252a(%rip), %rdi     # 0x58fc0
leaq -0x68(%rbp), %rsi
callq 0x6440
movq %rax, -0x5c8(%rbp)
jmp 0x6aa8
movq -0x5c8(%rbp), %rdi
movq 0x524e2(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6abd
leaq -0x68(%rbp), %rdi
callq 0x7db0
leaq -0x89(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0x67f0
movq -0x5d0(%rbp), %rdx
leaq 0x366f0(%rip), %rsi     # 0x3d1d7
leaq -0x88(%rbp), %rdi
callq 0x7c70
jmp 0x6af5
leaq -0x89(%rbp), %rdi
callq 0x6510
leaq -0x88(%rbp), %rdi
xorl %esi, %esi
callq 0x7dd0
movq %rax, -0x5d8(%rbp)
jmp 0x6b18
movq -0x5d8(%rbp), %rax
movsbl (%rax), %esi
movq 0x52497(%rip), %rdi     # 0x58fc0
callq 0x6570
movq %rax, -0x5e0(%rbp)
jmp 0x6b37
movq -0x5e0(%rbp), %rdi
movq 0x52453(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6b4c
leaq -0x88(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x7dd0
movq %rax, -0x5e8(%rbp)
jmp 0x6b66
movq -0x5e8(%rbp), %rax
movsbl (%rax), %esi
movq 0x52449(%rip), %rdi     # 0x58fc0
callq 0x6570
movq %rax, -0x5f0(%rbp)
jmp 0x6b85
movq -0x5f0(%rbp), %rdi
movq 0x52405(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6b9a
leaq -0x88(%rbp), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x7dd0
movq %rax, -0x5f8(%rbp)
jmp 0x6bb4
movq -0x5f8(%rbp), %rax
movsbl (%rax), %esi
movq 0x523fb(%rip), %rdi     # 0x58fc0
callq 0x6570
movq %rax, -0x600(%rbp)
jmp 0x6bd3
movq -0x600(%rbp), %rdi
movq 0x523b7(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6be8
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x608(%rbp)
callq 0x67f0
movq -0x608(%rbp), %rdx
leaq 0x365ce(%rip), %rsi     # 0x3d1d7
leaq -0xb0(%rbp), %rdi
callq 0x7c70
jmp 0x6c17
leaq -0xb1(%rbp), %rdi
callq 0x6510
leaq -0xe0(%rbp), %rdi
xorl %esi, %esi
callq 0x80c0
jmp 0x6c33
leaq -0xe8(%rbp), %rdi
movl $0x14, %esi
callq 0x80c0
jmp 0x6c46
leaq -0xf0(%rbp), %rdi
movl $0x2, %esi
callq 0x80c0
jmp 0x6c59
movq -0xe0(%rbp), %rdx
movq -0xe8(%rbp), %rcx
movq -0xf0(%rbp), %r8
leaq -0xd8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x7e30
jmp 0x6c83
movq 0x52336(%rip), %rdi     # 0x58fc0
leaq -0xd8(%rbp), %rsi
callq 0x6440
movq %rax, -0x610(%rbp)
jmp 0x6c9f
movq -0x610(%rbp), %rdi
movq 0x522eb(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6cb4
leaq -0xd8(%rbp), %rdi
callq 0x7db0
leaq -0x118(%rbp), %rdi
xorl %esi, %esi
callq 0x80c0
jmp 0x6cd0
leaq -0x120(%rbp), %rdi
movl $0x14, %esi
callq 0x80c0
jmp 0x6ce3
leaq -0x128(%rbp), %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x80c0
jmp 0x6cf6
movq -0x118(%rbp), %rdx
movq -0x120(%rbp), %rcx
movq -0x128(%rbp), %r8
leaq -0x110(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x7e30
jmp 0x6d20
movq 0x52299(%rip), %rdi     # 0x58fc0
leaq -0x110(%rbp), %rsi
callq 0x6440
movq %rax, -0x618(%rbp)
jmp 0x6d3c
movq -0x618(%rbp), %rdi
movq 0x5224e(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6d51
leaq -0x110(%rbp), %rdi
callq 0x7db0
leaq -0x168(%rbp), %rdi
movl $0x4, %esi
callq 0x80c0
jmp 0x6d70
leaq -0x160(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x82d0
jmp 0x6d82
leaq -0x168(%rbp), %rax
movq %rax, -0x158(%rbp)
movq $0x2, -0x150(%rbp)
movq -0x158(%rbp), %rdx
movq -0x150(%rbp), %rcx
leaq -0x148(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x80e0
jmp 0x6dbe
movq 0x521fb(%rip), %rdi     # 0x58fc0
leaq -0x148(%rbp), %rsi
callq 0x6440
movq %rax, -0x620(%rbp)
jmp 0x6dda
movq -0x620(%rbp), %rdi
movq 0x521b0(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6def
leaq -0x148(%rbp), %rdi
callq 0x7db0
leaq -0x189(%rbp), %rdi
movq %rdi, -0x628(%rbp)
callq 0x67f0
movq -0x628(%rbp), %rdx
leaq 0x363c6(%rip), %rsi     # 0x3d1e2
leaq -0x188(%rbp), %rdi
callq 0x7c70
jmp 0x6e2a
leaq -0x189(%rbp), %rdi
callq 0x6510
leaq 0x363b6(%rip), %rcx     # 0x3d1f3
leaq -0x1b0(%rbp), %rdi
leaq -0x188(%rbp), %rsi
movl $0x3, %edx
movl $0x1, %r8d
callq 0x82f0
jmp 0x6e5d
movq 0x5215c(%rip), %rdi     # 0x58fc0
leaq -0x1b0(%rbp), %rsi
callq 0x6440
movq %rax, -0x630(%rbp)
jmp 0x6e79
movq -0x630(%rbp), %rdi
movq 0x52111(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6e8e
leaq -0x1b0(%rbp), %rdi
callq 0x7db0
leaq 0x36359(%rip), %rcx     # 0x3d1fa
leaq -0x1d0(%rbp), %rdi
leaq -0x188(%rbp), %rsi
movl $0x2, %edx
movl $0x4, %r8d
callq 0x82f0
jmp 0x6ec1
movq 0x520f8(%rip), %rdi     # 0x58fc0
leaq -0x1d0(%rbp), %rsi
callq 0x6440
movq %rax, -0x638(%rbp)
jmp 0x6edd
movq -0x638(%rbp), %rdi
movq 0x520ad(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6ef2
leaq -0x1d0(%rbp), %rdi
callq 0x7db0
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x640(%rbp)
callq 0x67f0
movq -0x640(%rbp), %rdx
leaq 0x362e3(%rip), %rsi     # 0x3d202
leaq -0x1f0(%rbp), %rdi
callq 0x7c70
jmp 0x6f2d
leaq -0x1f1(%rbp), %rdi
callq 0x6510
leaq 0x362d4(%rip), %rcx     # 0x3d214
leaq -0x218(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
movl $0x2, %edx
callq 0x8440
jmp 0x6f5a
movq 0x5205f(%rip), %rdi     # 0x58fc0
leaq -0x218(%rbp), %rsi
callq 0x6440
movq %rax, -0x648(%rbp)
jmp 0x6f76
movq -0x648(%rbp), %rdi
movq 0x52014(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x6f8b
leaq -0x218(%rbp), %rdi
callq 0x7db0
leaq -0x239(%rbp), %rdi
movq %rdi, -0x650(%rbp)
callq 0x67f0
movq -0x650(%rbp), %rdx
leaq 0x36261(%rip), %rsi     # 0x3d219
leaq -0x238(%rbp), %rdi
callq 0x7c70
jmp 0x6fc6
leaq -0x239(%rbp), %rdi
callq 0x6510
leaq -0x281(%rbp), %rdi
movq %rdi, -0x658(%rbp)
callq 0x67f0
movq -0x658(%rbp), %rdx
leaq 0x3622c(%rip), %rsi     # 0x3d21f
leaq -0x280(%rbp), %rdi
callq 0x7c70
jmp 0x7001
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x660(%rbp)
callq 0x67f0
movq -0x660(%rbp), %rdx
leaq 0x361ff(%rip), %rsi     # 0x3d221
leaq -0x2a8(%rbp), %rdi
callq 0x7c70
jmp 0x7030
callq 0x86e0
movq %rax, %r8
leaq -0x260(%rbp), %rdi
leaq -0x238(%rbp), %rsi
leaq -0x280(%rbp), %rdx
leaq -0x2a8(%rbp), %rcx
callq 0x8580
jmp 0x705b
movq 0x51f5e(%rip), %rdi     # 0x58fc0
leaq -0x260(%rbp), %rsi
callq 0x6440
jmp 0x7070
leaq -0x260(%rbp), %rdi
callq 0x7db0
leaq -0x2a8(%rbp), %rdi
callq 0x7db0
leaq -0x2a9(%rbp), %rdi
callq 0x6510
leaq -0x280(%rbp), %rdi
callq 0x7db0
leaq -0x281(%rbp), %rdi
callq 0x6510
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x668(%rbp)
callq 0x67f0
movq -0x668(%rbp), %rdx
leaq 0x36156(%rip), %rsi     # 0x3d223
leaq -0x2d0(%rbp), %rdi
callq 0x7c70
jmp 0x70db
leaq -0x2d1(%rbp), %rdi
callq 0x6510
leaq -0x328(%rbp), %rdi
callq 0x86f0
jmp 0x70f5
leaq -0x349(%rbp), %rdi
movq %rdi, -0x670(%rbp)
callq 0x67f0
movq -0x670(%rbp), %rdx
leaq 0x3611a(%rip), %rsi     # 0x3d230
leaq -0x348(%rbp), %rdi
callq 0x7c70
jmp 0x7124
callq 0x86e0
movq %rax, %rcx
leaq -0x2d0(%rbp), %rdi
leaq -0x328(%rbp), %rsi
leaq -0x348(%rbp), %rdx
callq 0x8710
jmp 0x7148
leaq -0x348(%rbp), %rdi
callq 0x7db0
leaq -0x349(%rbp), %rdi
callq 0x6510
leaq -0x328(%rbp), %rax
movq %rax, -0x358(%rbp)
movq -0x358(%rbp), %rsi
leaq -0x378(%rbp), %rdi
callq 0x88d0
movq -0x358(%rbp), %rsi
leaq -0x398(%rbp), %rdi
callq 0x8900
leaq -0x378(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x8930
testb $0x1, %al
jne 0x71b0
jmp 0x74b9
leaq -0x378(%rbp), %rdi
callq 0x8960
movq %rax, -0x3a0(%rbp)
movq -0x3a0(%rbp), %rsi
movq 0x51def(%rip), %rdi     # 0x58fc0
callq 0x6440
movq %rax, -0x678(%rbp)
jmp 0x71df
movq -0x678(%rbp), %rdi
movq 0x51dab(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x71f4
jmp 0x71f6
leaq -0x378(%rbp), %rdi
callq 0x8980
jmp 0x7194
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x6510
jmp 0x7b92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7b89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x7db0
jmp 0x7b89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x89(%rbp), %rdi
callq 0x6510
jmp 0x7b89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7b7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb1(%rbp), %rdi
callq 0x6510
jmp 0x7b7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7b71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x7db0
jmp 0x7b71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x7db0
jmp 0x7b71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x7db0
jmp 0x7b71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x189(%rbp), %rdi
callq 0x6510
jmp 0x7b71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7b65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x7db0
jmp 0x7b65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x7db0
jmp 0x7b65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1f1(%rbp), %rdi
callq 0x6510
jmp 0x7b65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7b59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x7db0
jmp 0x7b59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x239(%rbp), %rdi
callq 0x6510
jmp 0x7b59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7432
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x741a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x740e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x7db0
leaq -0x2a8(%rbp), %rdi
callq 0x7db0
leaq -0x2a9(%rbp), %rdi
callq 0x6510
leaq -0x280(%rbp), %rdi
callq 0x7db0
leaq -0x281(%rbp), %rdi
callq 0x6510
jmp 0x7b4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x2d1(%rbp), %rdi
callq 0x6510
jmp 0x7b4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7b41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7497
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x7db0
leaq -0x349(%rbp), %rdi
callq 0x6510
jmp 0x7b35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7b35
leaq -0x3c1(%rbp), %rdi
movq %rdi, -0x680(%rbp)
callq 0x67f0
movq -0x680(%rbp), %rdx
leaq 0x35d58(%rip), %rsi     # 0x3d232
leaq -0x3c0(%rbp), %rdi
callq 0x7c70
jmp 0x74e8
leaq -0x3c1(%rbp), %rdi
callq 0x6510
movq 0x51ac5(%rip), %rdi     # 0x58fc0
leaq 0x14ce(%rip), %rsi      # 0x89d0
callq 0x6130
movq %rax, -0x688(%rbp)
jmp 0x7510
leaq -0x3c0(%rbp), %rdi
callq 0x8a00
movb %al, -0x689(%rbp)
jmp 0x7524
movq -0x688(%rbp), %rdi
movb -0x689(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x6800
movq %rax, -0x698(%rbp)
jmp 0x7545
movq -0x698(%rbp), %rdi
movq 0x51a45(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x755a
leaq -0x3e9(%rbp), %rdi
movq %rdi, -0x6a0(%rbp)
callq 0x67f0
movq -0x6a0(%rbp), %rdx
leaq 0x35cc4(%rip), %rsi     # 0x3d23f
leaq -0x3e8(%rbp), %rdi
callq 0x7c70
jmp 0x7589
leaq -0x3e9(%rbp), %rdi
callq 0x6510
movq 0x51a24(%rip), %rdi     # 0x58fc0
leaq 0x142d(%rip), %rsi      # 0x89d0
callq 0x6130
movq %rax, -0x6a8(%rbp)
jmp 0x75b1
leaq -0x3e8(%rbp), %rdi
callq 0x8a00
movb %al, -0x6a9(%rbp)
jmp 0x75c5
movq -0x6a8(%rbp), %rdi
movb -0x6a9(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x6800
movq %rax, -0x6b8(%rbp)
jmp 0x75e6
movq -0x6b8(%rbp), %rdi
movq 0x519a4(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x75fb
leaq -0x411(%rbp), %rdi
movq %rdi, -0x6c0(%rbp)
callq 0x67f0
movq -0x6c0(%rbp), %rdx
leaq 0x35c3c(%rip), %rsi     # 0x3d258
leaq -0x410(%rbp), %rdi
callq 0x7c70
jmp 0x762a
leaq -0x411(%rbp), %rdi
callq 0x6510
leaq -0x471(%rbp), %rdi
movq %rdi, -0x6c8(%rbp)
callq 0x67f0
movq -0x6c8(%rbp), %rdx
leaq 0x35c13(%rip), %rsi     # 0x3d26a
leaq -0x470(%rbp), %rdi
callq 0x7c70
jmp 0x7665
leaq -0x499(%rbp), %rdi
movq %rdi, -0x6d0(%rbp)
callq 0x67f0
movq -0x6d0(%rbp), %rdx
leaq 0x35be9(%rip), %rsi     # 0x3d26f
leaq -0x498(%rbp), %rdi
callq 0x7c70
jmp 0x7694
leaq -0x4c1(%rbp), %rdi
movq %rdi, -0x6d8(%rbp)
callq 0x67f0
movq -0x6d8(%rbp), %rdx
leaq 0x35ee3(%rip), %rsi     # 0x3d598
leaq -0x4c0(%rbp), %rdi
callq 0x7c70
jmp 0x76c3
leaq -0x450(%rbp), %rdi
leaq -0x470(%rbp), %rsi
leaq -0x498(%rbp), %rdx
leaq -0x4c0(%rbp), %rcx
callq 0x8aa0
jmp 0x76e6
leaq -0x4c0(%rbp), %rdi
callq 0x7db0
leaq -0x4c1(%rbp), %rdi
callq 0x6510
leaq -0x498(%rbp), %rdi
callq 0x7db0
leaq -0x499(%rbp), %rdi
callq 0x6510
leaq -0x470(%rbp), %rdi
callq 0x7db0
leaq -0x471(%rbp), %rdi
callq 0x6510
leaq -0x500(%rbp), %rdi
movq %rdi, -0x6e8(%rbp)
callq 0x8c60
movq -0x6e8(%rbp), %rdi
movb $0x2e, -0x501(%rbp)
leaq -0x501(%rbp), %rsi
callq 0x8c80
movq %rax, -0x6e0(%rbp)
jmp 0x7764
movq -0x6e0(%rbp), %rdi
leaq 0x35b02(%rip), %rsi     # 0x3d274
callq 0x6660
jmp 0x7779
movb $0x73, -0x502(%rbp)
leaq -0x500(%rbp), %rdi
leaq -0x502(%rbp), %rsi
callq 0x8c80
movq %rax, -0x6f0(%rbp)
jmp 0x779c
movq -0x6f0(%rbp), %rdi
leaq 0x35b13(%rip), %rsi     # 0x3d2bd
callq 0x6660
jmp 0x77b1
movb $0x6f, -0x503(%rbp)
leaq -0x500(%rbp), %rdi
leaq -0x503(%rbp), %rsi
callq 0x8c80
movq %rax, -0x6f8(%rbp)
jmp 0x77d4
movq -0x6f8(%rbp), %rdi
leaq 0x3603f(%rip), %rsi     # 0x3d821
callq 0x6660
jmp 0x77e9
leaq -0x578(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x8ce0
jmp 0x77fe
leaq -0x540(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0x8cb0
jmp 0x7813
leaq -0x578(%rbp), %rdi
callq 0x8d10
leaq -0x598(%rbp), %rdi
leaq -0x410(%rbp), %rsi
leaq -0x450(%rbp), %rdx
callq 0x8d30
jmp 0x783b
movq 0x5177e(%rip), %rdi     # 0x58fc0
leaq -0x598(%rbp), %rsi
callq 0x6440
movq %rax, -0x700(%rbp)
jmp 0x7857
movq -0x700(%rbp), %rdi
movq 0x51733(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x786c
leaq -0x598(%rbp), %rdi
callq 0x7db0
leaq -0x5b8(%rbp), %rdi
leaq -0x410(%rbp), %rsi
leaq -0x540(%rbp), %rdx
callq 0x8d30
jmp 0x7894
movq 0x51725(%rip), %rdi     # 0x58fc0
leaq -0x5b8(%rbp), %rsi
callq 0x6440
movq %rax, -0x708(%rbp)
jmp 0x78b0
movq -0x708(%rbp), %rdi
movq 0x516da(%rip), %rsi     # 0x58f98
callq 0x64f0
jmp 0x78c5
leaq -0x5b8(%rbp), %rdi
callq 0x7db0
movl $0x0, -0x4(%rbp)
leaq -0x540(%rbp), %rdi
callq 0x8d10
leaq -0x500(%rbp), %rdi
callq 0x8d10
leaq -0x450(%rbp), %rdi
callq 0x8d10
leaq -0x410(%rbp), %rdi
callq 0x7db0
leaq -0x3e8(%rbp), %rdi
callq 0x7db0
leaq -0x3c0(%rbp), %rdi
callq 0x7db0
leaq -0x328(%rbp), %rdi
callq 0x8e50
leaq -0x2d0(%rbp), %rdi
callq 0x7db0
leaq -0x238(%rbp), %rdi
callq 0x7db0
leaq -0x1f0(%rbp), %rdi
callq 0x7db0
leaq -0x188(%rbp), %rdi
callq 0x7db0
leaq -0xb0(%rbp), %rdi
callq 0x7db0
leaq -0x88(%rbp), %rdi
callq 0x7db0
leaq -0x30(%rbp), %rdi
callq 0x7db0
movl -0x4(%rbp), %eax
addq $0x710, %rsp            # imm = 0x710
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x3c1(%rbp), %rdi
callq 0x6510
jmp 0x7b35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7b29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x3e9(%rbp), %rdi
callq 0x6510
jmp 0x7b29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7b1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x411(%rbp), %rdi
callq 0x6510
jmp 0x7b1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7a74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7a5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7a44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x4c0(%rbp), %rdi
callq 0x7db0
leaq -0x4c1(%rbp), %rdi
callq 0x6510
leaq -0x498(%rbp), %rdi
callq 0x7db0
leaq -0x499(%rbp), %rdi
callq 0x6510
leaq -0x470(%rbp), %rdi
callq 0x7db0
leaq -0x471(%rbp), %rdi
callq 0x6510
jmp 0x7b11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7af9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x578(%rbp), %rdi
callq 0x8d10
jmp 0x7af9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7aed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x598(%rbp), %rdi
callq 0x7db0
jmp 0x7aed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x7db0
leaq -0x540(%rbp), %rdi
callq 0x8d10
leaq -0x500(%rbp), %rdi
callq 0x8d10
leaq -0x450(%rbp), %rdi
callq 0x8d10
leaq -0x410(%rbp), %rdi
callq 0x7db0
leaq -0x3e8(%rbp), %rdi
callq 0x7db0
leaq -0x3c0(%rbp), %rdi
callq 0x7db0
leaq -0x328(%rbp), %rdi
callq 0x8e50
leaq -0x2d0(%rbp), %rdi
callq 0x7db0
leaq -0x238(%rbp), %rdi
callq 0x7db0
leaq -0x1f0(%rbp), %rdi
callq 0x7db0
leaq -0x188(%rbp), %rdi
callq 0x7db0
leaq -0xb0(%rbp), %rdi
callq 0x7db0
leaq -0x88(%rbp), %rdi
callq 0x7db0
leaq -0x30(%rbp), %rdi
callq 0x7db0
movq -0x40(%rbp), %rdi
callq 0x67e0
nopl (%rax,%rax)