// File: /workspace/github_cpp_makefile_star2_O2/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, -0x60(%rbp)
cmpl $0x2, %edi
jl 0x6fea
movl %edi, %r15d
movl $0x178, %edi            # imm = 0x178
callq 0x2290
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, -0x68(%rbp)
leaq 0x98(%rbx), %rax
movq %rax, -0x70(%rbp)
leaq 0x158(%rbx), %rax
movq %rax, -0x78(%rbp)
movl %r15d, %eax
movq %rax, -0x88(%rbp)
decq %rax
movq %rax, -0x80(%rbp)
pushq $0x1
popq %r12
leaq -0xc0(%rbp), %r15
cmpq -0x88(%rbp), %r12
jae 0x6e25
movq -0x60(%rbp), %rax
movq (%rax,%r12,8), %rsi
movq %r15, %rdi
leaq -0x50(%rbp), %rdx
callq 0x7488
leaq 0x376f(%rip), %rsi      # 0xa274
cmpq -0x80(%rbp), %r12
jge 0x6b14
movq -0x60(%rbp), %rax
movq 0x8(%rax,%r12,8), %rsi
leaq -0x50(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x7488
leaq -0x9c(%rbp), %r13
cmpl $0x3, (%rbx)
jg 0x6b79
movq %r15, %rdi
leaq 0x3ed9(%rip), %rsi      # 0xaa10
callq 0x74c3
testb %al, %al
je 0x6b79
movslq (%rbx), %r14
movq -0x50(%rbp), %rdi
movq %r13, %rsi
callq 0x41d9
movq %r14, %rdi
shlq $0x4, %rdi
addq -0x58(%rbp), %rdi
movq %r13, %rsi
pushq $0x10
popq %rdx
callq 0x2170
movl -0x8c(%rbp), %eax
movl %eax, 0x84(%rbx,%r14,4)
leal 0x1(%r14), %eax
movl %eax, (%rbx)
cmpl $0x3, 0x94(%rbx)
jg 0x6bd6
movq %r15, %rdi
leaq 0x3e87(%rip), %rsi      # 0xaa13
callq 0x74c3
testb %al, %al
je 0x6bd6
movslq 0x94(%rbx), %r14
movq -0x50(%rbp), %rdi
movq %r13, %rsi
callq 0x41d9
movq %r14, %rdi
shlq $0x4, %rdi
addq -0x70(%rbp), %rdi
movq %r13, %rsi
pushq $0x10
popq %rdx
callq 0x2170
movl -0x8c(%rbp), %eax
movl %eax, 0x118(%rbx,%r14,4)
leal 0x1(%r14), %eax
movl %eax, 0x94(%rbx)
movq %r15, %rdi
leaq 0x3e36(%rip), %rsi      # 0xaa16
callq 0x74c3
testb %al, %al
je 0x6bf8
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x130(%rbx)
movq %r15, %rdi
leaq 0x3e1d(%rip), %rsi      # 0xaa1f
callq 0x74c3
testb %al, %al
je 0x6c1a
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x134(%rbx)
movq %r15, %rdi
leaq 0x3e05(%rip), %rsi      # 0xaa29
callq 0x74c3
testb %al, %al
je 0x6c3c
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x138(%rbx)
movq %r15, %rdi
leaq 0x3deb(%rip), %rsi      # 0xaa31
callq 0x74c3
testb %al, %al
je 0x6c5e
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x13c(%rbx)
movq %r15, %rdi
leaq 0x3dcd(%rip), %rsi      # 0xaa35
callq 0x74c3
testb %al, %al
je 0x6c80
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x128(%rbx)
movq %r15, %rdi
leaq 0x3db8(%rip), %rsi      # 0xaa42
callq 0x74c3
testb %al, %al
je 0x6ca2
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x12c(%rbx)
movq %r15, %rdi
leaq 0x3da3(%rip), %rsi      # 0xaa4f
callq 0x74c3
testb %al, %al
je 0x6cc4
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x140(%rbx)
movq %r15, %rdi
leaq 0x3d86(%rip), %rsi      # 0xaa54
callq 0x74c3
testb %al, %al
je 0x6ce6
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x144(%rbx)
movq %r15, %rdi
leaq 0x3d6a(%rip), %rsi      # 0xaa5a
callq 0x74c3
testb %al, %al
je 0x6d08
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x14c(%rbx)
movq %r15, %rdi
leaq 0x3d51(%rip), %rsi      # 0xaa63
callq 0x74c3
testb %al, %al
je 0x6d2a
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x150(%rbx)
movq %r15, %rdi
leaq 0x3d3a(%rip), %rsi      # 0xaa6e
callq 0x74c3
testb %al, %al
jne 0x6d50
movq %r15, %rdi
leaq 0x3d2a(%rip), %rsi      # 0xaa71
callq 0x74c3
testb %al, %al
je 0x6d79
xorl %r14d, %r14d
xorl %r13d, %r13d
leaq -0x50(%rbp), %rdi
callq 0x2120
movq %r15, %rdi
callq 0x2120
addq $0x2, %r12
testb %r14b, %r14b
jne 0x6add
jmp 0x6e62
movq %r15, %rdi
leaq 0x3cf4(%rip), %rsi      # 0xaa77
callq 0x74c3
testb %al, %al
je 0x6daf
movl $0x1, 0x148(%rbx)
movq -0x50(%rbp), %rcx
movq -0x78(%rbp), %rdi
pushq $0x20
popq %rsi
leaq 0x365f(%rip), %rdx      # 0xa407
xorl %eax, %eax
callq 0x23b0
movq %r15, %rdi
leaq 0x3cc3(%rip), %rsi      # 0xaa7c
callq 0x74c3
testb %al, %al
je 0x6dd1
movq -0x50(%rbp), %rdi
callq 0x23a0
movl %eax, 0x154(%rbx)
movq %r15, %rdi
leaq 0x3cac(%rip), %rsi      # 0xaa87
callq 0x74c3
testb %al, %al
jne 0x6df7
movq %r15, %rdi
leaq 0x3c9c(%rip), %rsi      # 0xaa8a
callq 0x74c3
testb %al, %al
je 0x6e1d
movq 0x81f2(%rip), %rdi      # 0xeff0
leaq 0x3c8e(%rip), %rsi      # 0xaa93
callq 0x2270
movq %rax, %rdi
callq 0x2150
movb $0x1, %r13b
xorl %r14d, %r14d
jmp 0x6d56
movb $0x1, %r14b
jmp 0x6d53
cmpl $0x0, 0x154(%rbx)
jg 0x6e38
movl $0x200000, 0x154(%rbx)  # imm = 0x200000
movl 0x14c(%rbx), %ecx
testl %ecx, %ecx
jle 0x6e72
movl 0x150(%rbx), %esi
testl %esi, %esi
jle 0x6e72
addl %ecx, %esi
movl $0x578, %eax            # imm = 0x578
xorl %edx, %edx
divl %esi
imull %ecx, %eax
movl %eax, 0x140(%rbx)
jmp 0x6e7a
testb %r13b, %r13b
je 0x6fea
xorl %ebx, %ebx
jmp 0x71d9
andq $0x0, 0x14c(%rbx)
movq -0x68(%rbp), %r14
movl 0x144(%rbx), %eax
cmpl $0x1, %eax
je 0x6ec7
cmpl $0x2, %eax
je 0x6ead
cmpl $0x3, %eax
jne 0x6ee8
movaps 0x3b56(%rip), %xmm0     # 0xa9f0
movups %xmm0, 0x130(%rbx)
movabsq $0x40000000400, %rax    # imm = 0x40000000400
jmp 0x6edf
movaps 0x3b2c(%rip), %xmm0     # 0xa9e0
movups %xmm0, 0x130(%rbx)
movabsq $0x20000000200, %rax    # imm = 0x20000000200
jmp 0x6edf
movaps 0x3b02(%rip), %xmm0     # 0xa9d0
movups %xmm0, 0x130(%rbx)
movabsq $0x10000000100, %rax    # imm = 0x10000000100
movq %rax, 0x128(%rbx)
jmp 0x6ef7
movsd 0x3b10(%rip), %xmm0     # 0xaa00
movups %xmm0, 0x130(%rbx)
movq -0x58(%rbp), %rax
cmpb $0x0, (%rax)
je 0x6fab
movq -0x70(%rbp), %rax
cmpb $0x0, (%rax)
je 0x6fab
cmpl $0x0, (%r14)
jle 0x6fab
cmpl $0x0, 0x118(%rbx)
jle 0x6fab
movq 0x80a1(%rip), %rdi      # 0xefd0
leaq 0x3b70(%rip), %rsi      # 0xaaa6
callq 0x2270
movq %rax, %rdi
callq 0x2150
pushq $0x4
popq %r13
xorl %r14d, %r14d
leaq 0x3b78(%rip), %r15      # 0xaac9
leaq 0x3c2d(%rip), %r12      # 0xab85
movslq (%rbx), %rax
cmpq %rax, %r14
jge 0x71ee
movq 0x8065(%rip), %rdi      # 0xefd0
movq %r15, %rsi
callq 0x2270
leaq (%rbx,%r13), %rsi
movq %rax, %rdi
callq 0x2270
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movl 0x84(%rbx,%r14,4), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
incq %r14
addq $0x10, %r13
jmp 0x6f58
movq 0x801e(%rip), %rdi      # 0xefd0
leaq 0x3bbe(%rip), %rsi      # 0xab77
callq 0x2270
movq %rax, %rdi
movq -0x58(%rbp), %rsi
callq 0x2210
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movq %rax, %rdi
callq 0x2150
movl $0x178, %esi            # imm = 0x178
movq %rbx, %rdi
callq 0x22b0
movq 0x7fff(%rip), %rbx      # 0xeff0
leaq 0x3b88(%rip), %rsi      # 0xab80
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
movq -0x60(%rbp), %rax
movq (%rax), %rsi
movq %rbx, %rdi
callq 0x2270
leaq 0x3b69(%rip), %rsi      # 0xab87
movq %rax, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3bac(%rip), %rsi      # 0xabe1
movq %rbx, %rdi
callq 0x2270
pushq $0x8
popq %rsi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x3ba7(%rip), %rsi      # 0xabfe
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3bb4(%rip), %rsi      # 0xac22
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3be5(%rip), %rsi      # 0xac6a
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3c0b(%rip), %rsi      # 0xaca7
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3c42(%rip), %rsi      # 0xacf5
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3c68(%rip), %rsi      # 0xad32
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3c9a(%rip), %rsi      # 0xad7b
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3ca3(%rip), %rsi      # 0xad9b
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3cac(%rip), %rsi      # 0xadbb
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3cc2(%rip), %rsi      # 0xade8
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3ce2(%rip), %rsi      # 0xae1f
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3d02(%rip), %rsi      # 0xae56
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3d22(%rip), %rsi      # 0xae8d
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3d43(%rip), %rsi      # 0xaec5
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3d69(%rip), %rsi      # 0xaf02
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3d92(%rip), %rsi      # 0xaf42
movq %rbx, %rdi
callq 0x2270
movq %rax, %rdi
callq 0x2150
leaq 0x3d95(%rip), %rsi      # 0xaf5c
movq %rbx, %rdi
callq 0x2270
xorl %ebx, %ebx
movq %rax, %rdi
callq 0x2150
movq %rbx, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x98, %r13d
xorl %r14d, %r14d
leaq 0x38d4(%rip), %r15      # 0xaad2
leaq 0x3980(%rip), %r12      # 0xab85
movslq 0x94(%rbx), %rax
cmpq %rax, %r14
jge 0x7258
movq 0x7db8(%rip), %rdi      # 0xefd0
movq %r15, %rsi
callq 0x2270
leaq (%rbx,%r13), %rsi
movq %rax, %rdi
callq 0x2270
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movl 0x118(%rbx,%r14,4), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
incq %r14
addq $0x10, %r13
jmp 0x7205
movq 0x7d71(%rip), %r14      # 0xefd0
leaq 0x3875(%rip), %rsi      # 0xaadb
movq %r14, %rdi
callq 0x2270
movl 0x130(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x385a(%rip), %rsi      # 0xaae5
movq %r14, %rdi
callq 0x2270
movl 0x134(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x3840(%rip), %rsi      # 0xaaf0
movq %r14, %rdi
callq 0x2270
movl 0x138(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x3824(%rip), %rsi      # 0xaaf9
movq %r14, %rdi
callq 0x2270
movl 0x13c(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
cmpl $0x0, 0x14c(%rbx)
leaq 0x380d(%rip), %rax      # 0xab0e
leaq 0x37f6(%rip), %rsi      # 0xaafe
cmoveq %rax, %rsi
movq %r14, %rdi
callq 0x2270
movl 0x140(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x37e3(%rip), %rsi      # 0xab14
movq %r14, %rdi
callq 0x2270
movl 0x148(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x37c7(%rip), %rsi      # 0xab1d
movq %r14, %rdi
callq 0x2270
movl 0x128(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x37b0(%rip), %rsi      # 0xab2b
movq %r14, %rdi
callq 0x2270
movl 0x12c(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x3799(%rip), %rsi      # 0xab39
movq %r14, %rdi
callq 0x2270
movl 0x144(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x377b(%rip), %rsi      # 0xab40
movq %r14, %rdi
callq 0x2270
movl 0x14c(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x3760(%rip), %rsi      # 0xab4a
movq %r14, %rdi
callq 0x2270
movl 0x150(%rbx), %esi
movq %rax, %rdi
callq 0x23e0
movq %rax, %rdi
callq 0x2150
leaq 0x3747(%rip), %rsi      # 0xab56
movq %r14, %rdi
callq 0x2270
jmp 0x71d1
jmp 0x7420
jmp 0x7420
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x2120
jmp 0x7431
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x2120
movq %rbx, %rdi
callq 0x23f0