// File: /workspace/github_c_makefile_star2_O0/Leeheng86[P]word2vec/word-analogy.c
// Function: main
int main(int argc, char **argv) {
  FILE *f;
  char st1[max_size];
  char bestw[N][max_size];
  char file_name[max_size], st[100][max_size];
  float dist, len, bestd[N], vec[max_size];
  long long words, size, a, b, c, d, cn, bi[100];
  char ch;
  float *M;
  char *vocab;
  if (argc < 2) {
    printf("Usage: ./word-analogy <FILE>\nwhere FILE contains word projections in the BINARY FORMAT\n");
    return 0;
  }
  strcpy(file_name, argv[1]);
  f = fopen(file_name, "rb");
  if (f == NULL) {
    printf("Input file not found\n");
    return -1;
  }
  fscanf(f, "%lld", &words);
  fscanf(f, "%lld", &size);
  vocab = (char *)malloc((long long)words * max_w * sizeof(char));
  M = (float *)malloc((long long)words * (long long)size * sizeof(float));
  if (M == NULL) {
    printf("Cannot allocate memory: %lld MB    %lld  %lld\n", (long long)words * size * sizeof(float) / 1048576, words, size);
    return -1;
  }
  for (b = 0; b < words; b++) {
    a = 0;
    while (1) {
      vocab[b * max_w + a] = fgetc(f);
      if (feof(f) || (vocab[b * max_w + a] == ' ')) break;
      if ((a < max_w) && (vocab[b * max_w + a] != '\n')) a++;
    }
    vocab[b * max_w + a] = 0;
    for (a = 0; a < size; a++) fread(&M[a + b * size], sizeof(float), 1, f);
    len = 0;
    for (a = 0; a < size; a++) len += M[a + b * size] * M[a + b * size];
    len = sqrt(len);
    for (a = 0; a < size; a++) M[a + b * size] /= len;
  }
  fclose(f);
  while (1) {
    for (a = 0; a < N; a++) bestd[a] = 0;
    for (a = 0; a < N; a++) bestw[a][0] = 0;
    printf("Enter three words (EXIT to break): ");
    a = 0;
    while (1) {
      st1[a] = fgetc(stdin);
      if ((st1[a] == '\n') || (a >= max_size - 1)) {
        st1[a] = 0;
        break;
      }
      a++;
    }
    if (!strcmp(st1, "EXIT")) break;
    cn = 0;
    b = 0;
    c = 0;
    while (1) {
      st[cn][b] = st1[c];
      b++;
      c++;
      st[cn][b] = 0;
      if (st1[c] == 0) break;
      if (st1[c] == ' ') {
        cn++;
        b = 0;
        c++;
      }
    }
    cn++;
    if (cn < 3) {
      printf("Only %lld words were entered.. three words are needed at the input to perform the calculation\n", cn);
      continue;
    }
    for (a = 0; a < cn; a++) {
      for (b = 0; b < words; b++) if (!strcmp(&vocab[b * max_w], st[a])) break;
      if (b == words) b = 0;
      bi[a] = b;
      printf("\nWord: %s  Position in vocabulary: %lld\n", st[a], bi[a]);
      if (b == 0) {
        printf("Out of dictionary word!\n");
        break;
      }
    }
    if (b == 0) continue;
    printf("\n                                              Word              Distance\n------------------------------------------------------------------------\n");
    for (a = 0; a < size; a++) vec[a] = M[a + bi[1] * size] - M[a + bi[0] * size] + M[a + bi[2] * size];
    len = 0;
    for (a = 0; a < size; a++) len += vec[a] * vec[a];
    len = sqrt(len);
    for (a = 0; a < size; a++) vec[a] /= len;
    for (a = 0; a < N; a++) bestd[a] = 0;
    for (a = 0; a < N; a++) bestw[a][0] = 0;
    for (c = 0; c < words; c++) {
      if (c == bi[0]) continue;
      if (c == bi[1]) continue;
      if (c == bi[2]) continue;
      a = 0;
      for (b = 0; b < cn; b++) if (bi[b] == c) a = 1;
      if (a == 1) continue;
      dist = 0;
      for (a = 0; a < size; a++) dist += vec[a] * M[a + c * size];
      for (a = 0; a < N; a++) {
        if (dist > bestd[a]) {
          for (d = N - 1; d > a; d--) {
            bestd[d] = bestd[d - 1];
            strcpy(bestw[d], bestw[d - 1]);
          }
          bestd[a] = dist;
          strcpy(bestw[a], &vocab[c * max_w]);
          break;
        }
      }
    }
    for (a = 0; a < N; a++) printf("%50s\t\t%f\n", bestw[a], bestd[a]);
  }
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x478f0, %rsp          # imm = 0x478F0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x2, -0x8(%rbp)
jge 0x1219
leaq 0xdfe(%rip), %rdi       # 0x2004
movb $0x0, %al
callq 0x1030
movl $0x0, -0x4(%rbp)
jmp 0x1e09
leaq -0x14840(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x1040
leaq -0x14840(%rbp), %rdi
leaq 0xe21(%rip), %rsi       # 0x205c
callq 0x1060
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x1265
leaq 0xe0d(%rip), %rdi       # 0x205f
movb $0x0, %al
callq 0x1030
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x1e09
movq -0x18(%rbp), %rdi
leaq 0xe05(%rip), %rsi       # 0x2075
leaq -0x47578(%rbp), %rdx
movb $0x0, %al
callq 0x10d0
movq -0x18(%rbp), %rdi
leaq 0xdec(%rip), %rsi       # 0x2075
leaq -0x47580(%rbp), %rdx
movb $0x0, %al
callq 0x10d0
imulq $0x32, -0x47578(%rbp), %rdi
shlq $0x0, %rdi
callq 0x1070
movq %rax, -0x478e8(%rbp)
movq -0x47578(%rbp), %rdi
imulq -0x47580(%rbp), %rdi
shlq $0x2, %rdi
callq 0x1070
movq %rax, -0x478e0(%rbp)
cmpq $0x0, -0x478e0(%rbp)
jne 0x1317
movq -0x47578(%rbp), %rsi
imulq -0x47580(%rbp), %rsi
shlq $0x2, %rsi
shrq $0x14, %rsi
movq -0x47578(%rbp), %rdx
movq -0x47580(%rbp), %rcx
leaq 0xd76(%rip), %rdi       # 0x207a
movb $0x0, %al
callq 0x1030
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x1e09
movq $0x0, -0x47590(%rbp)
movq -0x47590(%rbp), %rax
cmpq -0x47578(%rbp), %rax
jge 0x1589
movq $0x0, -0x47588(%rbp)
movq -0x18(%rbp), %rdi
callq 0x10b0
movb %al, %dl
movq -0x478e8(%rbp), %rax
imulq $0x32, -0x47590(%rbp), %rcx
addq -0x47588(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x18(%rbp), %rdi
callq 0x10a0
cmpl $0x0, %eax
jne 0x1392
movq -0x478e8(%rbp), %rax
imulq $0x32, -0x47590(%rbp), %rcx
addq -0x47588(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x20, %eax
jne 0x1394
jmp 0x13d4
cmpq $0x32, -0x47588(%rbp)
jge 0x13cf
movq -0x478e8(%rbp), %rax
imulq $0x32, -0x47590(%rbp), %rcx
addq -0x47588(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
je 0x13cf
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1341
movq -0x478e8(%rbp), %rax
imulq $0x32, -0x47590(%rbp), %rcx
addq -0x47588(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq $0x0, -0x47588(%rbp)
movq -0x47588(%rbp), %rax
cmpq -0x47580(%rbp), %rax
jge 0x1457
movq -0x478e0(%rbp), %rdi
movq -0x47588(%rbp), %rax
movq -0x47590(%rbp), %rcx
imulq -0x47580(%rbp), %rcx
addq %rcx, %rax
shlq $0x2, %rax
addq %rax, %rdi
movq -0x18(%rbp), %rcx
movl $0x4, %esi
movl $0x1, %edx
callq 0x1090
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x13f9
xorps %xmm0, %xmm0
movss %xmm0, -0x45588(%rbp)
movq $0x0, -0x47588(%rbp)
movq -0x47588(%rbp), %rax
cmpq -0x47580(%rbp), %rax
jge 0x14f6
movq -0x478e0(%rbp), %rax
movq -0x47588(%rbp), %rcx
movq -0x47590(%rbp), %rdx
imulq -0x47580(%rbp), %rdx
addq %rdx, %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x478e0(%rbp), %rax
movq -0x47588(%rbp), %rcx
movq -0x47590(%rbp), %rdx
imulq -0x47580(%rbp), %rdx
addq %rdx, %rcx
movss (%rax,%rcx,4), %xmm2
movss -0x45588(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x45588(%rbp)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x146d
movss -0x45588(%rbp), %xmm0
callq 0x1e20
movss %xmm0, -0x45588(%rbp)
movq $0x0, -0x47588(%rbp)
movq -0x47588(%rbp), %rax
cmpq -0x47580(%rbp), %rax
jge 0x1570
movss -0x45588(%rbp), %xmm1
movq -0x478e0(%rbp), %rax
movq -0x47588(%rbp), %rcx
movq -0x47590(%rbp), %rdx
imulq -0x47580(%rbp), %rdx
addq %rdx, %rcx
movss (%rax,%rcx,4), %xmm0
divss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1516
jmp 0x1572
movq -0x47590(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47590(%rbp)
jmp 0x1322
movq -0x18(%rbp), %rdi
callq 0x1050
movq $0x0, -0x47588(%rbp)
cmpq $0x28, -0x47588(%rbp)
jge 0x15ce
movq -0x47588(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, -0x45630(%rbp,%rax,4)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x159d
movq $0x0, -0x47588(%rbp)
cmpq $0x28, -0x47588(%rbp)
jge 0x160f
leaq -0x14070(%rbp), %rax
imulq $0x7d0, -0x47588(%rbp), %rcx # imm = 0x7D0
addq %rcx, %rax
movb $0x0, (%rax)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x15d9
leaq 0xa93(%rip), %rdi       # 0x20a9
movb $0x0, %al
callq 0x1030
movq $0x0, -0x47588(%rbp)
movq 0x29b1(%rip), %rax      # 0x3fe0
movq (%rax), %rdi
callq 0x10b0
movb %al, %cl
movq -0x47588(%rbp), %rax
movb %cl, -0x7f0(%rbp,%rax)
movq -0x47588(%rbp), %rax
movsbl -0x7f0(%rbp,%rax), %eax
cmpl $0xa, %eax
je 0x1668
cmpq $0x7cf, -0x47588(%rbp) # imm = 0x7CF
jl 0x1679
movq -0x47588(%rbp), %rax
movb $0x0, -0x7f0(%rbp,%rax)
jmp 0x168d
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1628
leaq -0x7f0(%rbp), %rdi
leaq 0xa32(%rip), %rsi       # 0x20cd
callq 0x1080
cmpl $0x0, %eax
jne 0x16aa
jmp 0x1e02
movq $0x0, -0x475a8(%rbp)
movq $0x0, -0x47590(%rbp)
movq $0x0, -0x47598(%rbp)
movq -0x47598(%rbp), %rax
movb -0x7f0(%rbp,%rax), %dl
leaq -0x45580(%rbp), %rax
imulq $0x7d0, -0x475a8(%rbp), %rcx # imm = 0x7D0
addq %rcx, %rax
movq -0x47590(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x47590(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47590(%rbp)
movq -0x47598(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47598(%rbp)
leaq -0x45580(%rbp), %rax
imulq $0x7d0, -0x475a8(%rbp), %rcx # imm = 0x7D0
addq %rcx, %rax
movq -0x47590(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x47598(%rbp), %rax
movsbl -0x7f0(%rbp,%rax), %eax
cmpl $0x0, %eax
jne 0x1752
jmp 0x179a
movq -0x47598(%rbp), %rax
movsbl -0x7f0(%rbp,%rax), %eax
cmpl $0x20, %eax
jne 0x1795
movq -0x475a8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x475a8(%rbp)
movq $0x0, -0x47590(%rbp)
movq -0x47598(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47598(%rbp)
jmp 0x16cb
movq -0x475a8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x475a8(%rbp)
cmpq $0x3, -0x475a8(%rbp)
jge 0x17d0
movq -0x475a8(%rbp), %rsi
leaq 0x90e(%rip), %rdi       # 0x20d2
movb $0x0, %al
callq 0x1030
jmp 0x1592
movq $0x0, -0x47588(%rbp)
movq -0x47588(%rbp), %rax
cmpq -0x475a8(%rbp), %rax
jge 0x18e9
movq $0x0, -0x47590(%rbp)
movq -0x47590(%rbp), %rax
cmpq -0x47578(%rbp), %rax
jge 0x1853
movq -0x478e8(%rbp), %rdi
imulq $0x32, -0x47590(%rbp), %rax
addq %rax, %rdi
leaq -0x45580(%rbp), %rsi
imulq $0x7d0, -0x47588(%rbp), %rax # imm = 0x7D0
addq %rax, %rsi
callq 0x1080
cmpl $0x0, %eax
jne 0x183d
jmp 0x1853
jmp 0x183f
movq -0x47590(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47590(%rbp)
jmp 0x17fa
movq -0x47590(%rbp), %rax
cmpq -0x47578(%rbp), %rax
jne 0x186e
movq $0x0, -0x47590(%rbp)
movq -0x47590(%rbp), %rcx
movq -0x47588(%rbp), %rax
movq %rcx, -0x478d0(%rbp,%rax,8)
leaq -0x45580(%rbp), %rsi
imulq $0x7d0, -0x47588(%rbp), %rax # imm = 0x7D0
addq %rax, %rsi
movq -0x47588(%rbp), %rax
movq -0x478d0(%rbp,%rax,8), %rdx
leaq 0x882(%rip), %rdi       # 0x2131
movb $0x0, %al
callq 0x1030
cmpq $0x0, -0x47590(%rbp)
jne 0x18d0
leaq 0x893(%rip), %rdi       # 0x215a
movb $0x0, %al
callq 0x1030
jmp 0x18e9
jmp 0x18d2
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x17db
cmpq $0x0, -0x47590(%rbp)
jne 0x18f8
jmp 0x1592
leaq 0x874(%rip), %rdi       # 0x2173
movb $0x0, %al
callq 0x1030
movq $0x0, -0x47588(%rbp)
movq -0x47588(%rbp), %rax
cmpq -0x47580(%rbp), %rax
jge 0x19bb
movq -0x478e0(%rbp), %rax
movq -0x47588(%rbp), %rcx
movq -0x478c8(%rbp), %rdx
imulq -0x47580(%rbp), %rdx
addq %rdx, %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x478e0(%rbp), %rax
movq -0x47588(%rbp), %rcx
movq -0x478d0(%rbp), %rdx
imulq -0x47580(%rbp), %rdx
addq %rdx, %rcx
subss (%rax,%rcx,4), %xmm0
movq -0x478e0(%rbp), %rax
movq -0x47588(%rbp), %rcx
movq -0x478c0(%rbp), %rdx
imulq -0x47580(%rbp), %rdx
addq %rdx, %rcx
addss (%rax,%rcx,4), %xmm0
movq -0x47588(%rbp), %rax
movss %xmm0, -0x47570(%rbp,%rax,4)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1911
xorps %xmm0, %xmm0
movss %xmm0, -0x45588(%rbp)
movq $0x0, -0x47588(%rbp)
movq -0x47588(%rbp), %rax
cmpq -0x47580(%rbp), %rax
jge 0x1a2d
movq -0x47588(%rbp), %rax
movss -0x47570(%rbp,%rax,4), %xmm0
movq -0x47588(%rbp), %rax
movss -0x47570(%rbp,%rax,4), %xmm2
movss -0x45588(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x45588(%rbp)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x19d1
movss -0x45588(%rbp), %xmm0
callq 0x1e20
movss %xmm0, -0x45588(%rbp)
movq $0x0, -0x47588(%rbp)
movq -0x47588(%rbp), %rax
cmpq -0x47580(%rbp), %rax
jge 0x1a96
movss -0x45588(%rbp), %xmm1
movq -0x47588(%rbp), %rax
movss -0x47570(%rbp,%rax,4), %xmm0
divss %xmm1, %xmm0
movss %xmm0, -0x47570(%rbp,%rax,4)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1a4d
movq $0x0, -0x47588(%rbp)
cmpq $0x28, -0x47588(%rbp)
jge 0x1ad2
movq -0x47588(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, -0x45630(%rbp,%rax,4)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1aa1
movq $0x0, -0x47588(%rbp)
cmpq $0x28, -0x47588(%rbp)
jge 0x1b13
leaq -0x14070(%rbp), %rax
imulq $0x7d0, -0x47588(%rbp), %rcx # imm = 0x7D0
addq %rcx, %rax
movb $0x0, (%rax)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1add
movq $0x0, -0x47598(%rbp)
movq -0x47598(%rbp), %rax
cmpq -0x47578(%rbp), %rax
jge 0x1d9d
movq -0x47598(%rbp), %rax
cmpq -0x478d0(%rbp), %rax
jne 0x1b47
jmp 0x1d86
movq -0x47598(%rbp), %rax
cmpq -0x478c8(%rbp), %rax
jne 0x1b5c
jmp 0x1d86
movq -0x47598(%rbp), %rax
cmpq -0x478c0(%rbp), %rax
jne 0x1b71
jmp 0x1d86
movq $0x0, -0x47588(%rbp)
movq $0x0, -0x47590(%rbp)
movq -0x47590(%rbp), %rax
cmpq -0x475a8(%rbp), %rax
jge 0x1bd0
movq -0x47590(%rbp), %rax
movq -0x478d0(%rbp,%rax,8), %rax
cmpq -0x47598(%rbp), %rax
jne 0x1bba
movq $0x1, -0x47588(%rbp)
jmp 0x1bbc
movq -0x47590(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47590(%rbp)
jmp 0x1b87
cmpq $0x1, -0x47588(%rbp)
jne 0x1bdf
jmp 0x1d86
xorps %xmm0, %xmm0
movss %xmm0, -0x45584(%rbp)
movq $0x0, -0x47588(%rbp)
movq -0x47588(%rbp), %rax
cmpq -0x47580(%rbp), %rax
jge 0x1c66
movq -0x47588(%rbp), %rax
movss -0x47570(%rbp,%rax,4), %xmm0
movq -0x478e0(%rbp), %rax
movq -0x47588(%rbp), %rcx
movq -0x47598(%rbp), %rdx
imulq -0x47580(%rbp), %rdx
addq %rdx, %rcx
movss (%rax,%rcx,4), %xmm2
movss -0x45584(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x45584(%rbp)
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1bf5
movq $0x0, -0x47588(%rbp)
cmpq $0x28, -0x47588(%rbp)
jge 0x1d84
movss -0x45584(%rbp), %xmm0
movq -0x47588(%rbp), %rax
ucomiss -0x45630(%rbp,%rax,4), %xmm0
jbe 0x1d6b
movq $0x27, -0x475a0(%rbp)
movq -0x475a0(%rbp), %rax
cmpq -0x47588(%rbp), %rax
jle 0x1d25
movq -0x475a0(%rbp), %rax
subq $0x1, %rax
movss -0x45630(%rbp,%rax,4), %xmm0
movq -0x475a0(%rbp), %rax
movss %xmm0, -0x45630(%rbp,%rax,4)
leaq -0x14070(%rbp), %rdi
imulq $0x7d0, -0x475a0(%rbp), %rax # imm = 0x7D0
addq %rax, %rdi
movq -0x475a0(%rbp), %rax
subq $0x1, %rax
leaq -0x14070(%rbp), %rsi
imulq $0x7d0, %rax, %rax      # imm = 0x7D0
addq %rax, %rsi
callq 0x1040
movq -0x475a0(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x475a0(%rbp)
jmp 0x1ca7
movss -0x45584(%rbp), %xmm0
movq -0x47588(%rbp), %rax
movss %xmm0, -0x45630(%rbp,%rax,4)
leaq -0x14070(%rbp), %rdi
imulq $0x7d0, -0x47588(%rbp), %rax # imm = 0x7D0
addq %rax, %rdi
movq -0x478e8(%rbp), %rsi
imulq $0x32, -0x47598(%rbp), %rax
addq %rax, %rsi
callq 0x1040
jmp 0x1d84
jmp 0x1d6d
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1c71
jmp 0x1d86
movq -0x47598(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47598(%rbp)
jmp 0x1b1e
movq $0x0, -0x47588(%rbp)
cmpq $0x28, -0x47588(%rbp)
jge 0x1dfd
leaq -0x14070(%rbp), %rsi
imulq $0x7d0, -0x47588(%rbp), %rax # imm = 0x7D0
addq %rax, %rsi
movq -0x47588(%rbp), %rax
movss -0x45630(%rbp,%rax,4), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x425(%rip), %rdi       # 0x2207
movb $0x1, %al
callq 0x1030
movq -0x47588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x47588(%rbp)
jmp 0x1da8
jmp 0x1592
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x478f0, %rsp          # imm = 0x478F0
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop