// File: /workspace/github_cpp_makefile_star2_O3/xocoder[P]m_kcptun/src/conf_kcp.cpp
// Function: conf_create(int, char const**)
conf_kcp_t*
conf_create(int argc, const char *argv[]) {

   if (argc > 1) {
      conf_kcp_t *conf = new conf_kcp_t;
      memset(conf, 0, sizeof(*conf));

      conf->rs_data = 11;       // RS(11, 2)
      conf->rs_parity = 2;
      conf->mtu = 1400;
      conf->rcv_wndsize = 256;
      conf->snd_wndsize = 256;


      for (int i=1; i<argc; i+=2) {

         chann_addr_t addr;
         string opt = argv[i];
         string value = (argc - i) > 1 ? argv[i+1] : "";

         if (conf->src_count<4 && opt=="-l") {
            int i = conf->src_count;
            mnet_parse_ipport((char*)value.c_str(), &addr);
            strncpy(conf->src_ip[i], addr.ip, sizeof(addr.ip));
            conf->src_port[i] = addr.port;
            conf->src_count = i + 1;
         }

         if (conf->dest_count<4 && opt=="-r") {
            int i = conf->dest_count;
            mnet_parse_ipport((char*)value.c_str(), &addr);
            strncpy(conf->dest_ip[i], addr.ip, sizeof(addr.ip));
            conf->dest_port[i] = addr.port;
            conf->dest_count = i + 1;
         }

         if (opt == "-nodelay") {
            conf->nodelay = atoi(value.c_str());
         }

         if (opt == "-interval") {
            conf->interval = atoi(value.c_str());
         }

         if (opt == "-resend") {
            conf->resend = atoi(value.c_str());
         }

         if (opt == "-nc") {
            conf->nc = atoi(value.c_str());
         }

         if (opt == "-rcv_wndsize") {
            conf->rcv_wndsize = atoi(value.c_str());
         }

         if (opt == "-snd_wndsize") {
            conf->snd_wndsize = atoi(value.c_str());
         }

         if (opt == "-mtu") {
            conf->mtu = atoi(value.c_str());
         }

         if (opt == "-fast") {
            conf->fast = atoi(value.c_str());
         }

         if (opt == "-rs_data") {
            conf->rs_data = atoi(value.c_str());
         }

         if (opt == "-rs_parity") {
            conf->rs_parity = atoi(value.c_str());
         }

         if (opt == "-h" || opt == "-help") {
            goto usage;
         }

         if (opt == "-key") {
            conf->crypto = 1;
            snprintf(conf->key, 32, "%s", value.c_str());
         }

         if (opt == "-tcp_cache") {
            conf->tcp_cache = atoi(value.c_str());
         }

         if (opt == "-v" || opt == "-version") {
            cerr << "mkcptun: v20180609" << endl;
            return NULL;
         }
      }

      if (conf->tcp_cache <= 0) {
         conf->tcp_cache = 2*1024*1024;
      }

      if (conf->rs_data>0 && conf->rs_parity>0) {
         conf->mtu = 1400 / (conf->rs_data + conf->rs_parity) * conf->rs_data;
      } else {
         conf->rs_data = conf->rs_parity = 0;
      }

      switch (conf->fast) {

         case 3: {
            conf->nodelay = 1;
            conf->interval = 10;
            conf->resend = 2;
            conf->nc = 1;
            conf->rcv_wndsize = 1024;
            conf->snd_wndsize = 1024;
            break;
         }

         case 2: {
            conf->nodelay = 1;
            conf->interval = 20;
            conf->resend = 4;
            conf->nc = 1;
            conf->rcv_wndsize = 512;
            conf->snd_wndsize = 512;
            break;
         }

         case 1: {
            conf->nodelay = 1;
            conf->interval = 40;
            conf->resend = 0;
            conf->nc = 1;
            conf->rcv_wndsize = 256;
            conf->snd_wndsize = 256;
            break;
         }

         default: {
            conf->nodelay = 0;
            conf->interval = 100;
            conf->resend = 0;
            conf->nc = 0;
            break;
         }
      }

      if (!_str_empty(conf->src_ip[0]) &&
          !_str_empty(conf->dest_ip[0]) &&
          conf->src_port[0] > 0 &&
          conf->dest_port[0] > 0)
      {
         // print conf
         cout << "---------- begin config ----------" << endl;
         for (int i=0; i<conf->src_count; i++) {
            cout << "listen: " << conf->src_ip[i] << ":" << conf->src_port[i] << endl;
         }
         for (int i=0; i<conf->dest_count; i++) {
            cout << "remote: " << conf->dest_ip[i] << ":" << conf->dest_port[i] << endl;
         }

         cout << "nodelay: " << conf->nodelay << endl;
         cout << "interval: " << conf->interval << endl;

         cout << "resend: " << conf->resend << endl;
         cout << "nc: " << conf->nc << endl;

         if (conf->rs_data) {
            cout << "mtu (with rs): " << conf->mtu << endl;
         } else {
            cout << "mtu: " << conf->mtu << endl;
         }
         cout << "crypto: " << conf->crypto << endl;

         cout << "rcv_wndsize: " << conf->rcv_wndsize << endl;
         cout << "snd_wndsize: " << conf->snd_wndsize << endl;
         
         cout << "fast: " << conf->fast << endl;         
         cout << "rs_data: " << conf->rs_data << endl;
         cout << "rs_parity: " << conf->rs_parity << endl;

#ifdef KCP_REMOTE
         cout << "tcp_cache: " << conf->tcp_cache << endl;
#endif
         cout << "---------- end config ----------" << endl;
         return conf;
      } else {
         cout << "invalid " << conf->src_ip << conf->src_port << endl;
      }

      delete conf;
   }

  usage:
   cerr << "Usage:" << endl;

#ifdef KCP_LOCAL
   cerr << argv[0] << ": -l LISTEN_IP:PORT -r REMOTE_IP_1:PORT -r REMOTE_IP_2:PORT -fast 3 -key 'SECRET_256bits'" << endl;
#else
   cerr << argv[0] << ": -l LISTEN_IP_1:PORT -l LISTEN_IP_2:PORT -t REMOTE_IP:PORT -fast 3 -key 'SECRET_256bits'" << endl;   
#endif

   cerr << "Optinal: \t support IP count " << IP_COUNT << endl;
   cerr << "-key     \t set communication secret" << endl;
   cerr << "-nodelay \t whether nodelay mode is enabled, 0 is not enabled; 1 enabled" <<endl;
   cerr << "-interval \t protocol internal work interval, in milliseconds" << endl;
   cerr << "-resend \t fast retransmission mode, 0 represents off by default, 2 can be set" << endl;
   cerr << "        \t (2 ACK spans will result in direct retransmission)" << endl;
   cerr << "-nc     \t whether to turn off flow control, 1 represents no flow control" << endl;
   cerr << "-snd_wndsize \t send window size" << endl;
   cerr << "-rcv_wndsize \t recv window size" << endl;
   cerr << "-fast   \t fast mode with pre defined option:" << endl;
   cerr << "        \t 3 most fast, with ikcp_nodelay  \t [1 10 2 1]" << endl;
   cerr << "        \t 2 mid fast, with ikcp_nodelay   \t [1 20 4 1]" << endl;
   cerr << "        \t 1 least fast, with ikcp_nodelay \t [1 40 0 1]" << endl;
   cerr << "        \t 0 default, with ikcp_nodelay    \t [0 100 0 0]" << endl;
   cerr << "-rs_data \t Reed-Solomon erasure codes data bytes, default 11" << endl;
   cerr << "-rs_parity \t Reed-Solomon erasure codes parity bytes, default 2" << endl;
#ifdef KCP_REMOTE
   cerr << "-tcp_cache \t TCP cache size, default 2*1024*1024" << endl;
#endif
   cerr << "-help   \t print this help" << endl;
   cerr << "-version \t print version" << endl;
   return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rsi, -0x68(%rbp)
cmpl $0x2, %edi
jl 0x7a0a
movl %edi, %r15d
movl $0x178, %edi            # imm = 0x178
callq 0x22a0
movq %rax, %rbx
movl $0x178, %edx            # imm = 0x178
movq %rax, %rdi
xorl %esi, %esi
callq 0x2180
movabsq $0x20000000b, %rax      # imm = 0x20000000B
movq %rax, 0x14c(%rbx)
movl $0x578, 0x140(%rbx)     # imm = 0x578
movabsq $0x10000000100, %rax    # imm = 0x10000000100
movq %rax, 0x128(%rbx)
leaq 0x4(%rbx), %rax
movq %rax, -0x58(%rbp)
leaq 0x84(%rbx), %rax
movq %rax, -0x78(%rbp)
leaq 0x98(%rbx), %rax
movq %rax, -0x60(%rbp)
leaq 0x158(%rbx), %rax
movq %rax, -0x80(%rbp)
movl %r15d, %eax
decq %rax
movq %rax, -0x88(%rbp)
movl $0x1, %r12d
leaq -0xa8(%rbp), %r14
leaq -0x50(%rbp), %r13
movl %r15d, -0x6c(%rbp)
movq -0x68(%rbp), %rax
movq (%rax,%r12,8), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x81ba
leaq 0x405f(%rip), %rsi      # 0xb274
cmpq -0x88(%rbp), %r12
jge 0x7227
movq -0x68(%rbp), %rax
movq 0x8(%rax,%r12,8), %rsi
movq %r13, %rdi
leaq -0x29(%rbp), %rdx
callq 0x81ba
cmpl $0x3, (%rbx)
jg 0x728d
movq %r14, %rdi
leaq 0x47ce(%rip), %rsi      # 0xba10
callq 0x20c0
testl %eax, %eax
jne 0x728d
movslq (%rbx), %r15
movq -0x50(%rbp), %rdi
leaq -0xbc(%rbp), %r13
movq %r13, %rsi
callq 0x44cd
movq %r15, %rdi
shlq $0x4, %rdi
addq -0x58(%rbp), %rdi
movl $0x10, %edx
movq %r13, %rsi
callq 0x2170
movl -0xac(%rbp), %eax
movl %eax, 0x84(%rbx,%r15,4)
leal 0x1(%r15), %eax
movl %eax, (%rbx)
cmpl $0x3, 0x94(%rbx)
jg 0x72f3
movq %r14, %rdi
leaq 0x4773(%rip), %rsi      # 0xba13
callq 0x20c0
testl %eax, %eax
jne 0x72f3
movslq 0x94(%rbx), %r15
movq -0x50(%rbp), %rdi
leaq -0xbc(%rbp), %r13
movq %r13, %rsi
callq 0x44cd
movq %r15, %rdi
shlq $0x4, %rdi
addq -0x60(%rbp), %rdi
movl $0x10, %edx
movq %r13, %rsi
callq 0x2170
movl -0xac(%rbp), %eax
movl %eax, 0x118(%rbx,%r15,4)
leal 0x1(%r15), %eax
movl %eax, 0x94(%rbx)
movq %r14, %rdi
leaq 0x4719(%rip), %rsi      # 0xba16
callq 0x20c0
testl %eax, %eax
jne 0x7315
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x130(%rbx)
movq %r14, %rdi
leaq 0x4700(%rip), %rsi      # 0xba1f
callq 0x20c0
testl %eax, %eax
jne 0x7337
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x134(%rbx)
movq %r14, %rdi
leaq 0x46e8(%rip), %rsi      # 0xba29
callq 0x20c0
testl %eax, %eax
jne 0x7359
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x138(%rbx)
movq %r14, %rdi
leaq 0x46ce(%rip), %rsi      # 0xba31
callq 0x20c0
testl %eax, %eax
jne 0x737b
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x13c(%rbx)
movq %r14, %rdi
leaq 0x46b0(%rip), %rsi      # 0xba35
callq 0x20c0
testl %eax, %eax
jne 0x739d
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x128(%rbx)
movq %r14, %rdi
leaq 0x469b(%rip), %rsi      # 0xba42
callq 0x20c0
testl %eax, %eax
jne 0x73bf
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x12c(%rbx)
movq %r14, %rdi
leaq 0x4686(%rip), %rsi      # 0xba4f
callq 0x20c0
testl %eax, %eax
jne 0x73e1
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x140(%rbx)
movq %r14, %rdi
leaq 0x4669(%rip), %rsi      # 0xba54
callq 0x20c0
testl %eax, %eax
jne 0x7403
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x144(%rbx)
movq %r14, %rdi
leaq 0x464d(%rip), %rsi      # 0xba5a
callq 0x20c0
testl %eax, %eax
jne 0x7425
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x14c(%rbx)
movq %r14, %rdi
leaq 0x4634(%rip), %rsi      # 0xba63
callq 0x20c0
testl %eax, %eax
jne 0x7447
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x150(%rbx)
movq %r14, %rdi
leaq 0x461d(%rip), %rsi      # 0xba6e
callq 0x20c0
testl %eax, %eax
je 0x74fa
movq %r14, %rdi
leaq 0x4609(%rip), %rsi      # 0xba71
callq 0x20c0
testl %eax, %eax
je 0x74fa
movq %r14, %rdi
leaq 0x45f8(%rip), %rsi      # 0xba77
callq 0x20c0
testl %eax, %eax
jne 0x74ad
movl $0x1, 0x148(%rbx)
movq -0x50(%rbp), %rcx
movl $0x20, %esi
movq -0x80(%rbp), %rdi
leaq 0x3f61(%rip), %rdx      # 0xb407
xorl %eax, %eax
callq 0x23d0
movq %r14, %rdi
leaq 0x45c5(%rip), %rsi      # 0xba7c
callq 0x20c0
testl %eax, %eax
jne 0x74cf
movq -0x50(%rbp), %rdi
callq 0x23c0
movl %eax, 0x154(%rbx)
movq %r14, %rdi
leaq 0x45ae(%rip), %rsi      # 0xba87
callq 0x20c0
testl %eax, %eax
je 0x7502
movq %r14, %rdi
leaq 0x459e(%rip), %rsi      # 0xba8a
callq 0x20c0
testl %eax, %eax
je 0x7502
movb $0x1, %r13b
jmp 0x74fd
xorl %r13d, %r13d
xorl %r15d, %r15d
jmp 0x7552
movl $0x12, %edx
movq 0x8ae2(%rip), %rdi      # 0xfff0
leaq 0x457e(%rip), %rsi      # 0xba93
callq 0x22f0
movq 0x8acf(%rip), %rcx      # 0xfff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq 0x8ab1(%rip), %rdi      # 0xfff0
callq 0x2040
movq %rax, %rdi
callq 0x21e0
movb $0x1, %r15b
xorl %r13d, %r13d
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x756b
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x22c0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x758d
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x22c0
testb %r13b, %r13b
je 0x75e9
addq $0x2, %r12
cmpl -0x6c(%rbp), %r12d
leaq -0x50(%rbp), %r13
jl 0x71fb
cmpl $0x0, 0x154(%rbx)
jg 0x75b7
movl $0x200000, 0x154(%rbx)  # imm = 0x200000
movl 0x14c(%rbx), %ecx
testl %ecx, %ecx
movq -0x60(%rbp), %rdi
movq -0x78(%rbp), %r15
jle 0x75f9
movl 0x150(%rbx), %esi
testl %esi, %esi
jle 0x75f9
addl %ecx, %esi
movl $0x578, %eax            # imm = 0x578
xorl %edx, %edx
divl %esi
imull %ecx, %eax
movl %eax, 0x140(%rbx)
jmp 0x7604
testb %r15b, %r15b
je 0x7a0a
xorl %ebx, %ebx
jmp 0x7f05
movq $0x0, 0x14c(%rbx)
movl 0x144(%rbx), %eax
cmpl $0x1, %eax
je 0x764d
cmpl $0x2, %eax
je 0x7633
cmpl $0x3, %eax
jne 0x766e
movaps 0x43d0(%rip), %xmm0     # 0xb9f0
movups %xmm0, 0x130(%rbx)
movabsq $0x40000000400, %rax    # imm = 0x40000000400
jmp 0x7665
movaps 0x43a6(%rip), %xmm0     # 0xb9e0
movups %xmm0, 0x130(%rbx)
movabsq $0x20000000200, %rax    # imm = 0x20000000200
jmp 0x7665
movaps 0x437c(%rip), %xmm0     # 0xb9d0
movups %xmm0, 0x130(%rbx)
movabsq $0x10000000100, %rax    # imm = 0x10000000100
movq %rax, 0x128(%rbx)
jmp 0x767d
movsd 0x438a(%rip), %xmm0     # 0xba00
movups %xmm0, 0x130(%rbx)
movq -0x58(%rbp), %rax
cmpb $0x0, (%rax)
je 0x79a1
cmpb $0x0, (%rdi)
je 0x79a1
cmpl $0x0, (%r15)
jle 0x79a1
cmpl $0x0, 0x118(%rbx)
jle 0x79a1
movq 0x891f(%rip), %r14      # 0xffd0
leaq 0x43ee(%rip), %rsi      # 0xbaa6
movl $0x22, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
cmpl $0x0, (%rbx)
jle 0x7794
movl $0x4, %r15d
xorl %r12d, %r12d
movq 0x88cb(%rip), %r14      # 0xffd0
movl $0x8, %edx
movq %r14, %rdi
leaq 0x43b5(%rip), %rsi      # 0xbac9
callq 0x22f0
leaq (%rbx,%r15), %r13
movq %r13, %rdi
callq 0x2110
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x22f0
movl $0x1, %edx
movq %r14, %rdi
leaq 0x4443(%rip), %rsi      # 0xbb85
callq 0x22f0
movl 0x84(%rbx,%r12,4), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
incq %r12
movslq (%rbx), %rax
addq $0x10, %r15
cmpq %rax, %r12
jl 0x7705
cmpl $0x0, 0x94(%rbx)
jle 0x7845
xorl %r15d, %r15d
xorl %r12d, %r12d
movl $0x8, %edx
movq 0x881d(%rip), %r14      # 0xffd0
movq %r14, %rdi
leaq 0x4315(%rip), %rsi      # 0xbad2
callq 0x22f0
movq -0x60(%rbp), %rax
leaq (%rax,%r15), %r13
movq %r13, %rdi
callq 0x2110
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x22f0
movl $0x1, %edx
movq %r14, %rdi
leaq 0x4396(%rip), %rsi      # 0xbb85
callq 0x22f0
movl 0x118(%rbx,%r12,4), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
incq %r12
movslq 0x94(%rbx), %rax
addq $0x10, %r15
cmpq %rax, %r12
jl 0x77a7
movq 0x8784(%rip), %r14      # 0xffd0
leaq 0x4288(%rip), %rsi      # 0xbadb
movl $0x9, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x130(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x4246(%rip), %rsi      # 0xbae5
movl $0xa, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x134(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x4205(%rip), %rsi      # 0xbaf0
movl $0x8, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x138(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x41c2(%rip), %rsi      # 0xbaf9
movl $0x4, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x13c(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
cmpl $0x0, 0x14c(%rbx)
je 0x7f1a
movq 0x8640(%rip), %rdi      # 0xffd0
leaq 0x4167(%rip), %rsi      # 0xbafe
movl $0xf, %edx
jmp 0x7f2d
movq 0x8628(%rip), %r14      # 0xffd0
leaq 0x41c8(%rip), %rsi      # 0xbb77
movl $0x8, %edx
movq %r14, %rdi
callq 0x22f0
movq %r14, %rdi
movq -0x58(%rbp), %rsi
callq 0x2220
movq %rax, %rdi
movq %r15, %rsi
callq 0x2220
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
movl $0x178, %esi            # imm = 0x178
movq %rbx, %rdi
callq 0x22c0
movq 0x85df(%rip), %r14      # 0xfff0
leaq 0x4168(%rip), %rsi      # 0xbb80
movl $0x6, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
movq -0x68(%rbp), %rax
movq (%rax), %rbx
testq %rbx, %rbx
je 0x7a74
movq %rbx, %rdi
callq 0x2110
movq 0x8589(%rip), %rdi      # 0xfff0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x22f0
jmp 0x7a92
movq 0x8575(%rip), %rax      # 0xfff0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x20(%rax,%rcx), %esi
orl $0x1, %esi
callq 0x2400
leaq 0x40ee(%rip), %rsi      # 0xbb87
movl $0x59, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x410d(%rip), %rsi      # 0xbbe1
movl $0x1c, %edx
movq %r14, %rdi
callq 0x22f0
movq %r14, %rdi
movl $0x8, %esi
callq 0x2410
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40df(%rip), %rsi      # 0xbbfe
movl $0x23, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40c8(%rip), %rsi      # 0xbc22
movl $0x47, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40d5(%rip), %rsi      # 0xbc6a
movl $0x3c, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40d7(%rip), %rsi      # 0xbca7
movl $0x4d, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40ea(%rip), %rsi      # 0xbcf5
movl $0x3c, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40ec(%rip), %rsi      # 0xbd32
movl $0x48, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40fa(%rip), %rsi      # 0xbd7b
movl $0x1f, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40df(%rip), %rsi      # 0xbd9b
movl $0x1f, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40c4(%rip), %rsi      # 0xbdbb
movl $0x2c, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40b6(%rip), %rsi      # 0xbde8
movl $0x36, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40b2(%rip), %rsi      # 0xbe1f
movl $0x36, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40ae(%rip), %rsi      # 0xbe56
movl $0x36, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40aa(%rip), %rsi      # 0xbe8d
movl $0x37, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40a7(%rip), %rsi      # 0xbec5
movl $0x3c, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40a9(%rip), %rsi      # 0xbf02
movl $0x3f, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x40ae(%rip), %rsi      # 0xbf42
movl $0x19, %edx
movq %r14, %rdi
callq 0x22f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x408d(%rip), %rsi      # 0xbf5c
movl $0x18, %edx
movq %r14, %rdi
callq 0x22f0
xorl %ebx, %ebx
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
movq %rbx, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x80af(%rip), %rdi      # 0xffd0
leaq 0x3be6(%rip), %rsi      # 0xbb0e
movl $0x5, %edx
callq 0x22f0
movl 0x140(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %rdi
callq 0x2150
leaq 0x3bc5(%rip), %rsi      # 0xbb14
movl $0x8, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x148(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x3b82(%rip), %rsi      # 0xbb1d
movl $0xd, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x128(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x3b44(%rip), %rsi      # 0xbb2b
movl $0xd, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x12c(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x3b06(%rip), %rsi      # 0xbb39
movl $0x6, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x144(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x3ac1(%rip), %rsi      # 0xbb40
movl $0x9, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x14c(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x3a7f(%rip), %rsi      # 0xbb4a
movl $0xb, %edx
movq %r14, %rdi
callq 0x22f0
movl 0x150(%rbx), %esi
movq %r14, %rdi
callq 0x2410
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2280
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21e0
leaq 0x3a3f(%rip), %rsi      # 0xbb56
movl $0x20, %edx
movq %r14, %rdi
callq 0x22f0
jmp 0x7ede
jmp 0x812d
jmp 0x812d
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x814e
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x22c0
jmp 0x814e
movq %rax, %rbx
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x8170
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x22c0
movq %rbx, %rdi
callq 0x2420