// File: /workspace/github_c_makefile_star2_O0/Leeheng86[P]word2vec/word2vec.c
// Function: TrainModelThread(void*)
void *TrainModelThread(void *id) {
  long long a, b, d, cw, word, last_word, sentence_length = 0, sentence_position = 0;
  long long word_count = 0, last_word_count = 0, sen[MAX_SENTENCE_LENGTH + 1];
  long long l1, l2, c, target, label, local_iter = iter;
  unsigned long long next_random = (long long)id;
  real f, g;
  clock_t now;
  real *neu1 = (real *)calloc(layer1_size, sizeof(real));
  real *neu1e = (real *)calloc(layer1_size, sizeof(real));
  FILE *fi = fopen(train_file, "rb");
  fseek(fi, file_size / (long long)num_threads * (long long)id, SEEK_SET);
  while (1) {
    if (word_count - last_word_count > 10000) {
      word_count_actual += word_count - last_word_count;
      last_word_count = word_count;
      if ((debug_mode > 1)) {
        now=clock();
        printf("%cAlpha: %f  Progress: %.2f%%  Words/thread/sec: %.2fk  ", 13, alpha,
         word_count_actual / (real)(iter * train_words + 1) * 100,
         word_count_actual / ((real)(now - start + 1) / (real)CLOCKS_PER_SEC * 1000));
        fflush(stdout);
      }
      alpha = starting_alpha * (1 - word_count_actual / (real)(iter * train_words + 1));
      if (alpha < starting_alpha * 0.0001) alpha = starting_alpha * 0.0001;
    }
    if (sentence_length == 0) {
      while (1) {
        word = ReadWordIndex(fi);
        if (feof(fi)) break;
        if (word == -1) continue;
        word_count++;
        if (word == 0) break;
        // The subsampling randomly discards frequent words while keeping the ranking same
        if (sample > 0) {
          real ran = (sqrt(vocab[word].cn / (sample * train_words)) + 1) * (sample * train_words) / vocab[word].cn;
          next_random = next_random * (unsigned long long)25214903917 + 11;
          if (ran < (next_random & 0xFFFF) / (real)65536) continue;
        }
        sen[sentence_length] = word;
        sentence_length++;
        if (sentence_length >= MAX_SENTENCE_LENGTH) break;
      }
      sentence_position = 0;
    }
    if (feof(fi) || (word_count > train_words / num_threads)) {
      word_count_actual += word_count - last_word_count;
      local_iter--;
      if (local_iter == 0) break;
      word_count = 0;
      last_word_count = 0;
      sentence_length = 0;
      fseek(fi, file_size / (long long)num_threads * (long long)id, SEEK_SET);
      continue;
    }
    word = sen[sentence_position];
    if (word == -1) continue;
    for (c = 0; c < layer1_size; c++) neu1[c] = 0;
    for (c = 0; c < layer1_size; c++) neu1e[c] = 0;
    next_random = next_random * (unsigned long long)25214903917 + 11;
    b = next_random % window;
    if (cbow) {  //train the cbow architecture
      // in -> hidden
      cw = 0;
      for (a = b; a < window * 2 + 1 - b; a++) if (a != window) {
        c = sentence_position - window + a;
        if (c < 0) continue;
        if (c >= sentence_length) continue;
        last_word = sen[c];
        if (last_word == -1) continue;
        for (c = 0; c < layer1_size; c++) neu1[c] += syn0[c + last_word * layer1_size];
        cw++;
      }
      if (cw) {
        for (c = 0; c < layer1_size; c++) neu1[c] /= cw;
        if (hs) for (d = 0; d < vocab[word].codelen; d++) {
          f = 0;
          l2 = vocab[word].point[d] * layer1_size;
          // Propagate hidden -> output
          for (c = 0; c < layer1_size; c++) f += neu1[c] * syn1[c + l2];
          if (f <= -MAX_EXP) continue;
          else if (f >= MAX_EXP) continue;
          else f = expTable[(int)((f + MAX_EXP) * (EXP_TABLE_SIZE / MAX_EXP / 2))];
          // 'g' is the gradient multiplied by the learning rate
          g = (1 - vocab[word].code[d] - f) * alpha;
          // Propagate errors output -> hidden
          for (c = 0; c < layer1_size; c++) neu1e[c] += g * syn1[c + l2];
          // Learn weights hidden -> output
          for (c = 0; c < layer1_size; c++) syn1[c + l2] += g * neu1[c];
        }
        // NEGATIVE SAMPLING
        if (negative > 0) for (d = 0; d < negative + 1; d++) {
          if (d == 0) {
            target = word;
            label = 1;
          } else {
            next_random = next_random * (unsigned long long)25214903917 + 11;
            target = table[(next_random >> 16) % table_size];
            if (target == 0) target = next_random % (vocab_size - 1) + 1;
            if (target == word) continue;
            label = 0;
          }
          l2 = target * layer1_size;
          f = 0;
          for (c = 0; c < layer1_size; c++) f += neu1[c] * syn1neg[c + l2];
          if (f > MAX_EXP) g = (label - 1) * alpha;
          else if (f < -MAX_EXP) g = (label - 0) * alpha;
          else g = (label - expTable[(int)((f + MAX_EXP) * (EXP_TABLE_SIZE / MAX_EXP / 2))]) * alpha;
          for (c = 0; c < layer1_size; c++) neu1e[c] += g * syn1neg[c + l2];
          for (c = 0; c < layer1_size; c++) syn1neg[c + l2] += g * neu1[c];
        }
        // hidden -> in
        for (a = b; a < window * 2 + 1 - b; a++) if (a != window) {
          c = sentence_position - window + a;
          if (c < 0) continue;
          if (c >= sentence_length) continue;
          last_word = sen[c];
          if (last_word == -1) continue;
          for (c = 0; c < layer1_size; c++) syn0[c + last_word * layer1_size] += neu1e[c];
        }
      }
    } else {  //train skip-gram
      for (a = b; a < window * 2 + 1 - b; a++) if (a != window) {
        c = sentence_position - window + a;
        if (c < 0) continue;
        if (c >= sentence_length) continue;
        last_word = sen[c];
        if (last_word == -1) continue;
        l1 = last_word * layer1_size;
        for (c = 0; c < layer1_size; c++) neu1e[c] = 0;
        // HIERARCHICAL SOFTMAX
        if (hs) for (d = 0; d < vocab[word].codelen; d++) {
          f = 0;
          l2 = vocab[word].point[d] * layer1_size;
          // Propagate hidden -> output
          for (c = 0; c < layer1_size; c++) f += syn0[c + l1] * syn1[c + l2];
          if (f <= -MAX_EXP) continue;
          else if (f >= MAX_EXP) continue;
          else f = expTable[(int)((f + MAX_EXP) * (EXP_TABLE_SIZE / MAX_EXP / 2))];
          // 'g' is the gradient multiplied by the learning rate
          g = (1 - vocab[word].code[d] - f) * alpha;
          // Propagate errors output -> hidden
          for (c = 0; c < layer1_size; c++) neu1e[c] += g * syn1[c + l2];
          // Learn weights hidden -> output
          for (c = 0; c < layer1_size; c++) syn1[c + l2] += g * syn0[c + l1];
        }
        // NEGATIVE SAMPLING
        if (negative > 0) for (d = 0; d < negative + 1; d++) {
          if (d == 0) {
            target = word;
            label = 1;
          } else {
            next_random = next_random * (unsigned long long)25214903917 + 11;
            target = table[(next_random >> 16) % table_size];
            if (target == 0) target = next_random % (vocab_size - 1) + 1;
            if (target == word) continue;
            label = 0;
          }
          l2 = target * layer1_size;
          f = 0;
          for (c = 0; c < layer1_size; c++) f += syn0[c + l1] * syn1neg[c + l2];
          if (f > MAX_EXP) g = (label - 1) * alpha;
          else if (f < -MAX_EXP) g = (label - 0) * alpha;
          else g = (label - expTable[(int)((f + MAX_EXP) * (EXP_TABLE_SIZE / MAX_EXP / 2))]) * alpha;
          for (c = 0; c < layer1_size; c++) neu1e[c] += g * syn1neg[c + l2];
          for (c = 0; c < layer1_size; c++) syn1neg[c + l2] += g * syn0[c + l1];
        }
        // Learn weights input -> hidden
        for (c = 0; c < layer1_size; c++) syn0[c + l1] += neu1e[c];
      }
    }
    sentence_position++;
    if (sentence_position >= sentence_length) {
      sentence_length = 0;
      continue;
    }
  }
  fclose(fi);
  free(neu1);
  free(neu1e);
  pthread_exit(NULL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2020, %rsp           # imm = 0x2020
movq %rdi, -0x8(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movq 0xf802(%rip), %rax      # 0x14308
movq %rax, -0x1fd0(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1fd8(%rbp)
movq 0xf7e1(%rip), %rdi      # 0x14300
movl $0x4, %esi
callq 0x31b0
movq %rax, -0x1ff0(%rbp)
movq 0xf7c9(%rip), %rdi      # 0x14300
movl $0x4, %esi
callq 0x31b0
movq %rax, -0x1ff8(%rbp)
leaq 0xf7f1(%rip), %rdi      # 0x14340
leaq 0x950b(%rip), %rsi      # 0xe061
callq 0x3330
movq %rax, -0x2000(%rbp)
movq -0x2000(%rbp), %rdi
movq 0xf9b8(%rip), %rax      # 0x14528
movslq 0xf779(%rip), %rcx      # 0x142f0
cqto
idivq %rcx
movq %rax, %rsi
movq -0x8(%rbp), %rax
imulq %rax, %rsi
xorl %edx, %edx
callq 0x3300
movq -0x50(%rbp), %rax
subq -0x58(%rbp), %rax
cmpq $0x2710, %rax           # imm = 0x2710
jle 0x4d11
movq -0x50(%rbp), %rax
subq -0x58(%rbp), %rax
addq 0xf96f(%rip), %rax      # 0x14520
movq %rax, 0xf968(%rip)      # 0x14520
movq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpl $0x1, 0xf71d(%rip)      # 0x142e4
jle 0x4c7c
callq 0x31c0
movq %rax, -0x1fe8(%rbp)
movss 0xf72f(%rip), %xmm0     # 0x14310
cvtss2sd %xmm0, %xmm0
cvtsi2ssq 0xf932(%rip), %xmm1 # 0x14520
movq 0xf713(%rip), %rax      # 0x14308
imulq 0xf91b(%rip), %rax      # 0x14518
addq $0x1, %rax
cvtsi2ss %rax, %xmm2
divss %xmm2, %xmm1
movss 0x942a(%rip), %xmm2     # 0xe03c
mulss %xmm2, %xmm1
cvtss2sd %xmm1, %xmm1
cvtsi2ssq 0xf8fd(%rip), %xmm2 # 0x14520
movq -0x1fe8(%rbp), %rax
subq 0xf92f(%rip), %rax      # 0x14560
addq $0x1, %rax
cvtsi2ss %rax, %xmm3
movss 0x93f6(%rip), %xmm4     # 0xe038
divss %xmm4, %xmm3
movss 0x93e6(%rip), %xmm4     # 0xe034
mulss %xmm4, %xmm3
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
leaq 0x94a6(%rip), %rdi      # 0xe107
movl $0xd, %esi
movb $0x3, %al
callq 0x3060
movq 0xf35c(%rip), %rax      # 0x13fd0
movq (%rax), %rdi
callq 0x3320
movss 0xf8b4(%rip), %xmm0     # 0x14538
cvtsi2ssq 0xf893(%rip), %xmm2 # 0x14520
movq 0xf674(%rip), %rax      # 0x14308
imulq 0xf87c(%rip), %rax      # 0x14518
addq $0x1, %rax
cvtsi2ss %rax, %xmm1
divss %xmm1, %xmm2
movss 0x938f(%rip), %xmm1     # 0xe040
subss %xmm2, %xmm1
mulss %xmm1, %xmm0
movss %xmm0, 0xf64f(%rip)     # 0x14310
movss 0xf647(%rip), %xmm0     # 0x14310
cvtss2sd %xmm0, %xmm1
movss 0xf863(%rip), %xmm0     # 0x14538
cvtss2sd %xmm0, %xmm0
movsd 0x9347(%rip), %xmm2     # 0xe028
mulsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x4d0f
movss 0xf845(%rip), %xmm0     # 0x14538
cvtss2sd %xmm0, %xmm0
movsd 0x9329(%rip), %xmm1     # 0xe028
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xf601(%rip)     # 0x14310
jmp 0x4d11
cmpq $0x0, -0x40(%rbp)
jne 0x4e74
jmp 0x4d1e
movq -0x2000(%rbp), %rdi
callq 0x3a80
cltq
movq %rax, -0x30(%rbp)
movq -0x2000(%rbp), %rdi
callq 0x3430
cmpl $0x0, %eax
je 0x4d46
jmp 0x4e6c
cmpq $-0x1, -0x30(%rbp)
jne 0x4d4f
jmp 0x4d1e
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x4d67
jmp 0x4e6c
movss 0xf5a5(%rip), %xmm0     # 0x14314
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x4e3f
movq 0xf776(%rip), %rax      # 0x144f8
movq -0x30(%rbp), %rcx
leaq (%rcx,%rcx,4), %rcx
cvtsi2ssq (%rax,%rcx,8), %xmm0
movss 0xf57c(%rip), %xmm1     # 0x14314
cvtsi2ssq 0xf777(%rip), %xmm2 # 0x14518
mulss %xmm2, %xmm1
divss %xmm1, %xmm0
callq 0x8110
movss 0x928a(%rip), %xmm1     # 0xe040
addss %xmm1, %xmm0
movss 0xf552(%rip), %xmm1     # 0x14314
cvtsi2ssq 0xf74d(%rip), %xmm2 # 0x14518
mulss %xmm2, %xmm1
mulss %xmm1, %xmm0
movq 0xf71e(%rip), %rax      # 0x144f8
movq -0x30(%rbp), %rcx
leaq (%rcx,%rcx,4), %rcx
cvtsi2ssq (%rax,%rcx,8), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x2004(%rbp)
movq -0x1fd8(%rbp), %rax
movabsq $0x5deece66d, %rcx      # imm = 0x5DEECE66D
imulq %rcx, %rax
addq $0xb, %rax
movq %rax, -0x1fd8(%rbp)
movss -0x2004(%rbp), %xmm1
movzwl -0x1fd8(%rbp), %eax
cvtsi2ss %eax, %xmm0
movss 0x9201(%rip), %xmm2     # 0xe030
divss %xmm2, %xmm0
ucomiss %xmm1, %xmm0
jbe 0x4e3d
jmp 0x4d1e
jmp 0x4e3f
movq -0x30(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, -0x1fa0(%rbp,%rax,8)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
cmpq $0x3e8, -0x40(%rbp)     # imm = 0x3E8
jl 0x4e67
jmp 0x4e6c
jmp 0x4d1e
movq $0x0, -0x48(%rbp)
movq -0x2000(%rbp), %rdi
callq 0x3430
cmpl $0x0, %eax
jne 0x4eb6
movq -0x50(%rbp), %rax
movq %rax, -0x2010(%rbp)
movq 0xf681(%rip), %rax      # 0x14518
movslq 0xf452(%rip), %rcx      # 0x142f0
cqto
idivq %rcx
movq %rax, %rcx
movq -0x2010(%rbp), %rax
cmpq %rcx, %rax
jle 0x4f36
movq -0x50(%rbp), %rax
subq -0x58(%rbp), %rax
addq 0xf65b(%rip), %rax      # 0x14520
movq %rax, 0xf654(%rip)      # 0x14520
movq -0x1fd0(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x1fd0(%rbp)
cmpq $0x0, -0x1fd0(%rbp)
jne 0x4eed
jmp 0x5fa8
movq $0x0, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x2000(%rbp), %rdi
movq 0xf615(%rip), %rax      # 0x14528
movslq 0xf3d6(%rip), %rcx      # 0x142f0
cqto
idivq %rcx
movq %rax, %rsi
movq -0x8(%rbp), %rax
imulq %rax, %rsi
xorl %edx, %edx
callq 0x3300
jmp 0x4b8e
movq -0x48(%rbp), %rax
movq -0x1fa0(%rbp,%rax,8), %rax
movq %rax, -0x30(%rbp)
cmpq $-0x1, -0x30(%rbp)
jne 0x4f52
jmp 0x4b8e
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xf395(%rip), %rax      # 0x14300
jge 0x4f97
movq -0x1ff0(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
xorps %xmm0, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x4f5d
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xf350(%rip), %rax      # 0x14300
jge 0x4fdc
movq -0x1ff8(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
xorps %xmm0, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x4fa2
movabsq $0x5deece66d, %rax      # imm = 0x5DEECE66D
imulq -0x1fd8(%rbp), %rax
addq $0xb, %rax
movq %rax, -0x1fd8(%rbp)
movq -0x1fd8(%rbp), %rax
movslq 0xf2e1(%rip), %rcx      # 0x142e8
xorl %edx, %edx
divq %rcx
movq %rdx, -0x18(%rbp)
cmpl $0x0, 0xf2c9(%rip)      # 0x142e0
je 0x5858
movq $0x0, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0xf2b1(%rip), %ecx      # 0x142e8
shll %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
subq -0x18(%rbp), %rcx
cmpq %rcx, %rax
jge 0x513e
movq -0x10(%rbp), %rax
movslq 0xf291(%rip), %rcx      # 0x142e8
cmpq %rcx, %rax
je 0x512b
movq -0x48(%rbp), %rax
movslq 0xf27d(%rip), %rcx      # 0x142e8
subq %rcx, %rax
addq -0x10(%rbp), %rax
movq %rax, -0x1fb8(%rbp)
cmpq $0x0, -0x1fb8(%rbp)
jge 0x5088
jmp 0x512d
movq -0x1fb8(%rbp), %rax
cmpq -0x40(%rbp), %rax
jl 0x509a
jmp 0x512d
movq -0x1fb8(%rbp), %rax
movq -0x1fa0(%rbp,%rax,8), %rax
movq %rax, -0x38(%rbp)
cmpq $-0x1, -0x38(%rbp)
jne 0x50b6
jmp 0x512d
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xf231(%rip), %rax      # 0x14300
jge 0x511f
movq 0xf468(%rip), %rax      # 0x14540
movq -0x1fb8(%rbp), %rcx
movq -0x38(%rbp), %rdx
imulq 0xf215(%rip), %rdx      # 0x14300
addq %rdx, %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x1ff0(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
addss (%rax,%rcx,4), %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x50c1
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x512d
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x502d
cmpq $0x0, -0x28(%rbp)
je 0x5853
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xf19e(%rip), %rax      # 0x14300
jge 0x519a
cvtsi2ssq -0x28(%rbp), %xmm1
movq -0x1ff0(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
divss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x5154
cmpl $0x0, 0xf3c7(%rip)      # 0x14568
je 0x5417
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0xf33e(%rip), %rcx      # 0x144f8
imulq $0x28, -0x30(%rbp), %rdx
addq %rdx, %rcx
movsbq 0x20(%rcx), %rcx
cmpq %rcx, %rax
jge 0x5415
xorps %xmm0, %xmm0
movss %xmm0, -0x1fdc(%rbp)
movq 0xf316(%rip), %rax      # 0x144f8
imulq $0x28, -0x30(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0x20(%rbp), %rcx
movslq (%rax,%rcx,4), %rax
imulq 0xf102(%rip), %rax      # 0x14300
movq %rax, -0x1fb0(%rbp)
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xf0e2(%rip), %rax      # 0x14300
jge 0x5279
movq -0x1ff0(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq 0xf30e(%rip), %rax      # 0x14548
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movss -0x1fdc(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x1fdc(%rbp)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x5210
movss 0x8dc7(%rip), %xmm0     # 0xe048
ucomiss -0x1fdc(%rbp), %xmm0
jb 0x528f
jmp 0x5404
movss -0x1fdc(%rbp), %xmm0
movss 0x8da5(%rip), %xmm1     # 0xe044
ucomiss %xmm1, %xmm0
jb 0x52a9
jmp 0x5404
movq 0xf2a8(%rip), %rax      # 0x14558
movss 0x8d8c(%rip), %xmm0     # 0xe044
addss -0x1fdc(%rbp), %xmm0
movss 0x8d84(%rip), %xmm1     # 0xe04c
mulss %xmm1, %xmm0
cvttss2si %xmm0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x1fdc(%rbp)
jmp 0x52e2
movq 0xf20f(%rip), %rax      # 0x144f8
imulq $0x28, -0x30(%rbp), %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
movl $0x1, %eax
subl %ecx, %eax
cvtsi2ss %eax, %xmm0
subss -0x1fdc(%rbp), %xmm0
mulss 0xeff8(%rip), %xmm0     # 0x14310
movss %xmm0, -0x1fe0(%rbp)
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xefc7(%rip), %rax      # 0x14300
jge 0x5391
movss -0x1fe0(%rbp), %xmm0
movq 0xf1fe(%rip), %rax      # 0x14548
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movq -0x1ff8(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x532b
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xef56(%rip), %rax      # 0x14300
jge 0x5402
movss -0x1fe0(%rbp), %xmm0
movq -0x1ff0(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movq 0xf17a(%rip), %rax      # 0x14548
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x539c
jmp 0x5404
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x51af
jmp 0x5417
cmpl $0x0, 0xeefa(%rip)      # 0x14318
jle 0x5742
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl 0xeee2(%rip), %ecx      # 0x14318
addl $0x1, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jge 0x5740
cmpq $0x0, -0x20(%rbp)
jne 0x5467
movq -0x30(%rbp), %rax
movq %rax, -0x1fc0(%rbp)
movq $0x1, -0x1fc8(%rbp)
jmp 0x5502
movabsq $0x5deece66d, %rax      # imm = 0x5DEECE66D
imulq -0x1fd8(%rbp), %rax
addq $0xb, %rax
movq %rax, -0x1fd8(%rbp)
movq 0xf0e5(%rip), %rax      # 0x14570
movq %rax, -0x2018(%rbp)
movq -0x1fd8(%rbp), %rax
shrq $0x10, %rax
movl $0x5f5e100, %ecx        # imm = 0x5F5E100
xorl %edx, %edx
divq %rcx
movq -0x2018(%rbp), %rax
movslq (%rax,%rdx,4), %rax
movq %rax, -0x1fc0(%rbp)
cmpq $0x0, -0x1fc0(%rbp)
jne 0x54e5
movq -0x1fd8(%rbp), %rax
movq 0xf03f(%rip), %rcx      # 0x14510
subq $0x1, %rcx
xorl %edx, %edx
divq %rcx
addq $0x1, %rdx
movq %rdx, -0x1fc0(%rbp)
movq -0x1fc0(%rbp), %rax
cmpq -0x30(%rbp), %rax
jne 0x54f7
jmp 0x572f
movq $0x0, -0x1fc8(%rbp)
movq -0x1fc0(%rbp), %rax
imulq 0xedef(%rip), %rax      # 0x14300
movq %rax, -0x1fb0(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x1fdc(%rbp)
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xedc4(%rip), %rax      # 0x14300
jge 0x5597
movq -0x1ff0(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq 0xeff8(%rip), %rax      # 0x14550
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movss -0x1fdc(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x1fdc(%rbp)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x552e
movss -0x1fdc(%rbp), %xmm0
movss 0x8a9d(%rip), %xmm1     # 0xe044
ucomiss %xmm1, %xmm0
jbe 0x55ce
movq -0x1fc8(%rbp), %rax
subq $0x1, %rax
cvtsi2ss %rax, %xmm0
mulss 0xed4c(%rip), %xmm0     # 0x14310
movss %xmm0, -0x1fe0(%rbp)
jmp 0x564b
movss 0x8a72(%rip), %xmm0     # 0xe048
ucomiss -0x1fdc(%rbp), %xmm0
jbe 0x5601
movq -0x1fc8(%rbp), %rax
subq $0x0, %rax
cvtsi2ss %rax, %xmm0
mulss 0xed19(%rip), %xmm0     # 0x14310
movss %xmm0, -0x1fe0(%rbp)
jmp 0x5649
cvtsi2ssq -0x1fc8(%rbp), %xmm0
movq 0xef47(%rip), %rax      # 0x14558
movss 0x8a2b(%rip), %xmm1     # 0xe044
addss -0x1fdc(%rbp), %xmm1
movss 0x8a23(%rip), %xmm2     # 0xe04c
mulss %xmm2, %xmm1
cvttss2si %xmm1, %ecx
movslq %ecx, %rcx
subss (%rax,%rcx,4), %xmm0
mulss 0xeccf(%rip), %xmm0     # 0x14310
movss %xmm0, -0x1fe0(%rbp)
jmp 0x564b
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xec9c(%rip), %rax      # 0x14300
jge 0x56bc
movss -0x1fe0(%rbp), %xmm0
movq 0xeedb(%rip), %rax      # 0x14550
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movq -0x1ff8(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x5656
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xec2b(%rip), %rax      # 0x14300
jge 0x572d
movss -0x1fe0(%rbp), %xmm0
movq -0x1ff0(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movq 0xee57(%rip), %rax      # 0x14550
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x56c7
jmp 0x572f
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x542c
jmp 0x5742
movq -0x18(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0xeb94(%rip), %ecx      # 0x142e8
shll %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
subq -0x18(%rbp), %rcx
cmpq %rcx, %rax
jge 0x5851
movq -0x10(%rbp), %rax
movslq 0xeb74(%rip), %rcx      # 0x142e8
cmpq %rcx, %rax
je 0x583e
movq -0x48(%rbp), %rax
movslq 0xeb60(%rip), %rcx      # 0x142e8
subq %rcx, %rax
addq -0x10(%rbp), %rax
movq %rax, -0x1fb8(%rbp)
cmpq $0x0, -0x1fb8(%rbp)
jge 0x57a5
jmp 0x5840
movq -0x1fb8(%rbp), %rax
cmpq -0x40(%rbp), %rax
jl 0x57b7
jmp 0x5840
movq -0x1fb8(%rbp), %rax
movq -0x1fa0(%rbp,%rax,8), %rax
movq %rax, -0x38(%rbp)
cmpq $-0x1, -0x38(%rbp)
jne 0x57d3
jmp 0x5840
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xeb14(%rip), %rax      # 0x14300
jge 0x583c
movq -0x1ff8(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq 0xed38(%rip), %rax      # 0x14540
movq -0x1fb8(%rbp), %rcx
movq -0x38(%rbp), %rdx
imulq 0xeae5(%rip), %rdx      # 0x14300
addq %rdx, %rcx
addss (%rax,%rcx,4), %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x57de
jmp 0x583e
jmp 0x5840
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x574a
jmp 0x5853
jmp 0x5f80
movq -0x18(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0xea7e(%rip), %ecx      # 0x142e8
shll %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
subq -0x18(%rbp), %rcx
cmpq %rcx, %rax
jge 0x5f7e
movq -0x10(%rbp), %rax
movslq 0xea5e(%rip), %rcx      # 0x142e8
cmpq %rcx, %rax
je 0x5f6b
movq -0x48(%rbp), %rax
movslq 0xea4a(%rip), %rcx      # 0x142e8
subq %rcx, %rax
addq -0x10(%rbp), %rax
movq %rax, -0x1fb8(%rbp)
cmpq $0x0, -0x1fb8(%rbp)
jge 0x58bb
jmp 0x5f6d
movq -0x1fb8(%rbp), %rax
cmpq -0x40(%rbp), %rax
jl 0x58cd
jmp 0x5f6d
movq -0x1fb8(%rbp), %rax
movq -0x1fa0(%rbp,%rax,8), %rax
movq %rax, -0x38(%rbp)
cmpq $-0x1, -0x38(%rbp)
jne 0x58ec
jmp 0x5f6d
movq -0x38(%rbp), %rax
imulq 0xea08(%rip), %rax      # 0x14300
movq %rax, -0x1fa8(%rbp)
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xe9e8(%rip), %rax      # 0x14300
jge 0x5944
movq -0x1ff8(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
xorps %xmm0, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x590a
cmpl $0x0, 0xec1d(%rip)      # 0x14568
je 0x5bcf
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0xeb94(%rip), %rcx      # 0x144f8
imulq $0x28, -0x30(%rbp), %rdx
addq %rdx, %rcx
movsbq 0x20(%rcx), %rcx
cmpq %rcx, %rax
jge 0x5bcd
xorps %xmm0, %xmm0
movss %xmm0, -0x1fdc(%rbp)
movq 0xeb6c(%rip), %rax      # 0x144f8
imulq $0x28, -0x30(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0x20(%rbp), %rcx
movslq (%rax,%rcx,4), %rax
imulq 0xe958(%rip), %rax      # 0x14300
movq %rax, -0x1fb0(%rbp)
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xe938(%rip), %rax      # 0x14300
jge 0x5a2a
movq 0xeb6f(%rip), %rax      # 0x14540
movq -0x1fb8(%rbp), %rcx
addq -0x1fa8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq 0xeb5d(%rip), %rax      # 0x14548
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movss -0x1fdc(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x1fdc(%rbp)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x59ba
movss 0x8616(%rip), %xmm0     # 0xe048
ucomiss -0x1fdc(%rbp), %xmm0
jb 0x5a40
jmp 0x5bbc
movss -0x1fdc(%rbp), %xmm0
movss 0x85f4(%rip), %xmm1     # 0xe044
ucomiss %xmm1, %xmm0
jb 0x5a5a
jmp 0x5bbc
movq 0xeaf7(%rip), %rax      # 0x14558
movss 0x85db(%rip), %xmm0     # 0xe044
addss -0x1fdc(%rbp), %xmm0
movss 0x85d3(%rip), %xmm1     # 0xe04c
mulss %xmm1, %xmm0
cvttss2si %xmm0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x1fdc(%rbp)
jmp 0x5a93
movq 0xea5e(%rip), %rax      # 0x144f8
imulq $0x28, -0x30(%rbp), %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
movl $0x1, %eax
subl %ecx, %eax
cvtsi2ss %eax, %xmm0
subss -0x1fdc(%rbp), %xmm0
mulss 0xe847(%rip), %xmm0     # 0x14310
movss %xmm0, -0x1fe0(%rbp)
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xe816(%rip), %rax      # 0x14300
jge 0x5b42
movss -0x1fe0(%rbp), %xmm0
movq 0xea4d(%rip), %rax      # 0x14548
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movq -0x1ff8(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x5adc
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xe7a5(%rip), %rax      # 0x14300
jge 0x5bba
movss -0x1fe0(%rbp), %xmm0
movq 0xe9d4(%rip), %rax      # 0x14540
movq -0x1fb8(%rbp), %rcx
addq -0x1fa8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movq 0xe9c2(%rip), %rax      # 0x14548
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x5b4d
jmp 0x5bbc
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x5959
jmp 0x5bcf
cmpl $0x0, 0xe742(%rip)      # 0x14318
jle 0x5f08
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl 0xe72a(%rip), %ecx      # 0x14318
addl $0x1, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jge 0x5f06
cmpq $0x0, -0x20(%rbp)
jne 0x5c1f
movq -0x30(%rbp), %rax
movq %rax, -0x1fc0(%rbp)
movq $0x1, -0x1fc8(%rbp)
jmp 0x5cba
movabsq $0x5deece66d, %rax      # imm = 0x5DEECE66D
imulq -0x1fd8(%rbp), %rax
addq $0xb, %rax
movq %rax, -0x1fd8(%rbp)
movq 0xe92d(%rip), %rax      # 0x14570
movq %rax, -0x2020(%rbp)
movq -0x1fd8(%rbp), %rax
shrq $0x10, %rax
movl $0x5f5e100, %ecx        # imm = 0x5F5E100
xorl %edx, %edx
divq %rcx
movq -0x2020(%rbp), %rax
movslq (%rax,%rdx,4), %rax
movq %rax, -0x1fc0(%rbp)
cmpq $0x0, -0x1fc0(%rbp)
jne 0x5c9d
movq -0x1fd8(%rbp), %rax
movq 0xe887(%rip), %rcx      # 0x14510
subq $0x1, %rcx
xorl %edx, %edx
divq %rcx
addq $0x1, %rdx
movq %rdx, -0x1fc0(%rbp)
movq -0x1fc0(%rbp), %rax
cmpq -0x30(%rbp), %rax
jne 0x5caf
jmp 0x5ef5
movq $0x0, -0x1fc8(%rbp)
movq -0x1fc0(%rbp), %rax
imulq 0xe637(%rip), %rax      # 0x14300
movq %rax, -0x1fb0(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x1fdc(%rbp)
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xe60c(%rip), %rax      # 0x14300
jge 0x5d56
movq 0xe843(%rip), %rax      # 0x14540
movq -0x1fb8(%rbp), %rcx
addq -0x1fa8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq 0xe839(%rip), %rax      # 0x14550
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movss -0x1fdc(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x1fdc(%rbp)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x5ce6
movss -0x1fdc(%rbp), %xmm0
movss 0x82de(%rip), %xmm1     # 0xe044
ucomiss %xmm1, %xmm0
jbe 0x5d8d
movq -0x1fc8(%rbp), %rax
subq $0x1, %rax
cvtsi2ss %rax, %xmm0
mulss 0xe58d(%rip), %xmm0     # 0x14310
movss %xmm0, -0x1fe0(%rbp)
jmp 0x5e0a
movss 0x82b3(%rip), %xmm0     # 0xe048
ucomiss -0x1fdc(%rbp), %xmm0
jbe 0x5dc0
movq -0x1fc8(%rbp), %rax
subq $0x0, %rax
cvtsi2ss %rax, %xmm0
mulss 0xe55a(%rip), %xmm0     # 0x14310
movss %xmm0, -0x1fe0(%rbp)
jmp 0x5e08
cvtsi2ssq -0x1fc8(%rbp), %xmm0
movq 0xe788(%rip), %rax      # 0x14558
movss 0x826c(%rip), %xmm1     # 0xe044
addss -0x1fdc(%rbp), %xmm1
movss 0x8264(%rip), %xmm2     # 0xe04c
mulss %xmm2, %xmm1
cvttss2si %xmm1, %ecx
movslq %ecx, %rcx
subss (%rax,%rcx,4), %xmm0
mulss 0xe510(%rip), %xmm0     # 0x14310
movss %xmm0, -0x1fe0(%rbp)
jmp 0x5e0a
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xe4dd(%rip), %rax      # 0x14300
jge 0x5e7b
movss -0x1fe0(%rbp), %xmm0
movq 0xe71c(%rip), %rax      # 0x14550
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movq -0x1ff8(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x5e15
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xe46c(%rip), %rax      # 0x14300
jge 0x5ef3
movss -0x1fe0(%rbp), %xmm0
movq 0xe69b(%rip), %rax      # 0x14540
movq -0x1fb8(%rbp), %rcx
addq -0x1fa8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm2
movq 0xe691(%rip), %rax      # 0x14550
movq -0x1fb8(%rbp), %rcx
addq -0x1fb0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x5e86
jmp 0x5ef5
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x5be4
jmp 0x5f08
movq $0x0, -0x1fb8(%rbp)
movq -0x1fb8(%rbp), %rax
cmpq 0xe3df(%rip), %rax      # 0x14300
jge 0x5f69
movq -0x1ff8(%rbp), %rax
movq -0x1fb8(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq 0xe603(%rip), %rax      # 0x14540
movq -0x1fb8(%rbp), %rcx
addq -0x1fa8(%rbp), %rcx
addss (%rax,%rcx,4), %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x1fb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1fb8(%rbp)
jmp 0x5f13
jmp 0x5f6b
jmp 0x5f6d
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x5860
jmp 0x5f80
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x40(%rbp), %rax
jl 0x5fa3
movq $0x0, -0x40(%rbp)
jmp 0x4b8e
jmp 0x4b8e
movq -0x2000(%rbp), %rdi
callq 0x3280
movq -0x1ff0(%rbp), %rdi
callq 0x3340
movq -0x1ff8(%rbp), %rdi
callq 0x3340
xorl %eax, %eax
movl %eax, %edi
callq 0x34d0
nopw %cs:(%rax,%rax)