// File: /workspace/github_c_makefile_star2_O0/Leeheng86[P]word2vec/word2vec.c
// Function: main
int main(int argc, char **argv) {
  int i;
  if (argc == 1) {
    printf("WORD VECTOR estimation toolkit v 0.1c\n\n");
    printf("Options:\n");
    printf("Parameters for training:\n");
    printf("\t-train <file>\n");
    printf("\t\tUse text data from <file> to train the model\n");
    printf("\t-output <file>\n");
    printf("\t\tUse <file> to save the resulting word vectors / word clusters\n");
    printf("\t-size <int>\n");
    printf("\t\tSet size of word vectors; default is 100\n");
    printf("\t-window <int>\n");
    printf("\t\tSet max skip length between words; default is 5\n");
    printf("\t-sample <float>\n");
    printf("\t\tSet threshold for occurrence of words. Those that appear with higher frequency in the training data\n");
    printf("\t\twill be randomly down-sampled; default is 1e-3, useful range is (0, 1e-5)\n");
    printf("\t-hs <int>\n");
    printf("\t\tUse Hierarchical Softmax; default is 0 (not used)\n");
    printf("\t-negative <int>\n");
    printf("\t\tNumber of negative examples; default is 5, common values are 3 - 10 (0 = not used)\n");
    printf("\t-threads <int>\n");
    printf("\t\tUse <int> threads (default 12)\n");
    printf("\t-iter <int>\n");
    printf("\t\tRun more training iterations (default 5)\n");
    printf("\t-min-count <int>\n");
    printf("\t\tThis will discard words that appear less than <int> times; default is 5\n");
    printf("\t-alpha <float>\n");
    printf("\t\tSet the starting learning rate; default is 0.025 for skip-gram and 0.05 for CBOW\n");
    printf("\t-classes <int>\n");
    printf("\t\tOutput word classes rather than word vectors; default number of classes is 0 (vectors are written)\n");
    printf("\t-debug <int>\n");
    printf("\t\tSet the debug mode (default = 2 = more info during training)\n");
    printf("\t-binary <int>\n");
    printf("\t\tSave the resulting vectors in binary moded; default is 0 (off)\n");
    printf("\t-save-vocab <file>\n");
    printf("\t\tThe vocabulary will be saved to <file>\n");
    printf("\t-read-vocab <file>\n");
    printf("\t\tThe vocabulary will be read from <file>, not constructed from the training data\n");
    printf("\t-cbow <int>\n");
    printf("\t\tUse the continuous bag of words model; default is 1 (use 0 for skip-gram model)\n");
    printf("\t-deepwalk <int>\n");
    printf("\t\tRun random walk before word2vec; default is 0 (off)\n");
    printf("\t-walk-length <int>\n");
    printf("\t\tSet the length of walk path; default is 40\n");
    printf("\t-number-walks <int>\n");
    printf("\t\tSet the number of restart for each node; default is 10\n");
    printf("\t-undirected <int>\n");
    printf("\t\tUse undirected edge or directed; default is 1 (undirected)\n");
    printf("\nExamples:\n");
    printf("./word2vec -train data.txt -output vec.txt -size 200 -window 5 -sample 1e-4 -negative 5 -hs 0 -binary 0 -cbow 1 -iter 3\n\n");
    return 0;
  }
  output_file[0] = 0;
  save_vocab_file[0] = 0;
  read_vocab_file[0] = 0;
  if ((i = ArgPos((char *)"-size", argc, argv)) > 0) layer1_size = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-train", argc, argv)) > 0) strcpy(train_file, argv[i + 1]);
  if ((i = ArgPos((char *)"-save-vocab", argc, argv)) > 0) strcpy(save_vocab_file, argv[i + 1]);
  if ((i = ArgPos((char *)"-read-vocab", argc, argv)) > 0) strcpy(read_vocab_file, argv[i + 1]);
  if ((i = ArgPos((char *)"-debug", argc, argv)) > 0) debug_mode = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-binary", argc, argv)) > 0) binary = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-cbow", argc, argv)) > 0) cbow = atoi(argv[i + 1]);
  if (cbow) alpha = 0.05;
  if ((i = ArgPos((char *)"-alpha", argc, argv)) > 0) alpha = atof(argv[i + 1]);
  if ((i = ArgPos((char *)"-output", argc, argv)) > 0) strcpy(output_file, argv[i + 1]);
  if ((i = ArgPos((char *)"-window", argc, argv)) > 0) window = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-sample", argc, argv)) > 0) sample = atof(argv[i + 1]);
  if ((i = ArgPos((char *)"-hs", argc, argv)) > 0) hs = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-negative", argc, argv)) > 0) negative = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-threads", argc, argv)) > 0) num_threads = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-iter", argc, argv)) > 0) iter = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-min-count", argc, argv)) > 0) min_count = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-classes", argc, argv)) > 0) classes = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-deepwalk", argc, argv)) > 0) deepwalk = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-walk-length", argc, argv)) > 0) walk_length = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-number-walks", argc, argv)) > 0) number_walks = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-undirected", argc, argv)) > 0) undirected = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-discard", argc, argv)) > 0) discard = atoi(argv[i + 1]);
  vocab = (struct vocab_word *)calloc(vocab_max_size, sizeof(struct vocab_word));
  vocab_hash = (int *)calloc(vocab_hash_size, sizeof(int));
  expTable = (real *)malloc((EXP_TABLE_SIZE + 1) * sizeof(real));
  for (i = 0; i < EXP_TABLE_SIZE; i++) {
    expTable[i] = exp((i / (real)EXP_TABLE_SIZE * 2 - 1) * MAX_EXP); // Precompute the exp() table
    expTable[i] = expTable[i] / (expTable[i] + 1);                   // Precompute f(x) = x / (x + 1)
  }
  if (deepwalk == 1) {
    RandomWalk();
  }
  TrainModel();
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x1, -0x8(%rbp)
jne 0x7a5c
leaq 0x6ac9(%rip), %rdi      # 0xe280
movb $0x0, %al
callq 0x3060
leaq 0x6ae3(%rip), %rdi      # 0xe2a8
movb $0x0, %al
callq 0x3060
leaq 0x6adf(%rip), %rdi      # 0xe2b2
movb $0x0, %al
callq 0x3060
leaq 0x6aeb(%rip), %rdi      # 0xe2cc
movb $0x0, %al
callq 0x3060
leaq 0x6aed(%rip), %rdi      # 0xe2dc
movb $0x0, %al
callq 0x3060
leaq 0x6b0f(%rip), %rdi      # 0xe30c
movb $0x0, %al
callq 0x3060
leaq 0x6b12(%rip), %rdi      # 0xe31d
movb $0x0, %al
callq 0x3060
leaq 0x6b45(%rip), %rdi      # 0xe35e
movb $0x0, %al
callq 0x3060
leaq 0x6b45(%rip), %rdi      # 0xe36c
movb $0x0, %al
callq 0x3060
leaq 0x6b63(%rip), %rdi      # 0xe398
movb $0x0, %al
callq 0x3060
leaq 0x6b65(%rip), %rdi      # 0xe3a8
movb $0x0, %al
callq 0x3060
leaq 0x6b8a(%rip), %rdi      # 0xe3db
movb $0x0, %al
callq 0x3060
leaq 0x6b8e(%rip), %rdi      # 0xe3ed
movb $0x0, %al
callq 0x3060
leaq 0x6be7(%rip), %rdi      # 0xe454
movb $0x0, %al
callq 0x3060
leaq 0x6c26(%rip), %rdi      # 0xe4a1
movb $0x0, %al
callq 0x3060
leaq 0x6c24(%rip), %rdi      # 0xe4ad
movb $0x0, %al
callq 0x3060
leaq 0x6c4b(%rip), %rdi      # 0xe4e2
movb $0x0, %al
callq 0x3060
leaq 0x6c4f(%rip), %rdi      # 0xe4f4
movb $0x0, %al
callq 0x3060
leaq 0x6c97(%rip), %rdi      # 0xe54a
movb $0x0, %al
callq 0x3060
leaq 0x6c9a(%rip), %rdi      # 0xe55b
movb $0x0, %al
callq 0x3060
leaq 0x6cae(%rip), %rdi      # 0xe57d
movb $0x0, %al
callq 0x3060
leaq 0x6cae(%rip), %rdi      # 0xe58b
movb $0x0, %al
callq 0x3060
leaq 0x6ccc(%rip), %rdi      # 0xe5b7
movb $0x0, %al
callq 0x3060
leaq 0x6cd1(%rip), %rdi      # 0xe5ca
movb $0x0, %al
callq 0x3060
leaq 0x6d0e(%rip), %rdi      # 0xe615
movb $0x0, %al
callq 0x3060
leaq 0x6d11(%rip), %rdi      # 0xe626
movb $0x0, %al
callq 0x3060
leaq 0x6d57(%rip), %rdi      # 0xe67a
movb $0x0, %al
callq 0x3060
leaq 0x6d5a(%rip), %rdi      # 0xe68b
movb $0x0, %al
callq 0x3060
leaq 0x6db2(%rip), %rdi      # 0xe6f1
movb $0x0, %al
callq 0x3060
leaq 0x6db3(%rip), %rdi      # 0xe700
movb $0x0, %al
callq 0x3060
leaq 0x6de5(%rip), %rdi      # 0xe740
movb $0x0, %al
callq 0x3060
leaq 0x6de7(%rip), %rdi      # 0xe750
movb $0x0, %al
callq 0x3060
leaq 0x6e1b(%rip), %rdi      # 0xe792
movb $0x0, %al
callq 0x3060
leaq 0x6e22(%rip), %rdi      # 0xe7a7
movb $0x0, %al
callq 0x3060
leaq 0x6e3e(%rip), %rdi      # 0xe7d1
movb $0x0, %al
callq 0x3060
leaq 0x6e45(%rip), %rdi      # 0xe7e6
movb $0x0, %al
callq 0x3060
leaq 0x6e8a(%rip), %rdi      # 0xe839
movb $0x0, %al
callq 0x3060
leaq 0x6e8a(%rip), %rdi      # 0xe847
movb $0x0, %al
callq 0x3060
leaq 0x6ecf(%rip), %rdi      # 0xe89a
movb $0x0, %al
callq 0x3060
leaq 0x6ed3(%rip), %rdi      # 0xe8ac
movb $0x0, %al
callq 0x3060
leaq 0x6efc(%rip), %rdi      # 0xe8e3
movb $0x0, %al
callq 0x3060
leaq 0x6f03(%rip), %rdi      # 0xe8f8
movb $0x0, %al
callq 0x3060
leaq 0x6f23(%rip), %rdi      # 0xe926
movb $0x0, %al
callq 0x3060
leaq 0x6f2b(%rip), %rdi      # 0xe93c
movb $0x0, %al
callq 0x3060
leaq 0x6f57(%rip), %rdi      # 0xe976
movb $0x0, %al
callq 0x3060
leaq 0x6f5d(%rip), %rdi      # 0xe98a
movb $0x0, %al
callq 0x3060
leaq 0x6f8d(%rip), %rdi      # 0xe9c8
movb $0x0, %al
callq 0x3060
leaq 0x6f8b(%rip), %rdi      # 0xe9d4
movb $0x0, %al
callq 0x3060
movl $0x0, -0x4(%rbp)
jmp 0x8056
movb $0x0, 0xc94d(%rip)      # 0x143b0
movb $0x0, 0xc9b6(%rip)      # 0x14420
movb $0x0, 0xca1f(%rip)      # 0x14490
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6fcf(%rip), %rdi      # 0xea4e
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7aab
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
cltq
movq %rax, 0xc855(%rip)      # 0x14300
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6f9b(%rip), %rdi      # 0xea54
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7ae3
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
leaq 0xc862(%rip), %rdi      # 0x14340
callq 0x3260
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6f6a(%rip), %rdi      # 0xea5b
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7b1b
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
leaq 0xc90a(%rip), %rdi      # 0x14420
callq 0x3260
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6f3e(%rip), %rdi      # 0xea67
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7b53
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
leaq 0xc942(%rip), %rdi      # 0x14490
callq 0x3260
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6f12(%rip), %rdi      # 0xea73
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7b8a
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc75a(%rip)      # 0x142e4
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6ee2(%rip), %rdi      # 0xea7a
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7bc1
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc93f(%rip)      # 0x14500
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6eb3(%rip), %rdi      # 0xea82
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7bf8
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc6e8(%rip)      # 0x142e0
cmpl $0x0, 0xc6e1(%rip)      # 0x142e0
je 0x7c11
movss 0x644b(%rip), %xmm0     # 0xe054
movss %xmm0, 0xc6ff(%rip)     # 0x14310
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6e69(%rip), %rdi      # 0xea88
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7c4e
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3370
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xc6c2(%rip)     # 0x14310
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6e33(%rip), %rdi      # 0xea8f
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7c86
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
leaq 0xc72f(%rip), %rdi      # 0x143b0
callq 0x3260
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6e03(%rip), %rdi      # 0xea97
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7cbd
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc62b(%rip)      # 0x142e8
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6dd4(%rip), %rdi      # 0xea9f
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7cfa
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3370
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xc61a(%rip)     # 0x14314
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6d9f(%rip), %rdi      # 0xeaa7
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7d31
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc837(%rip)      # 0x14568
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6d6c(%rip), %rdi      # 0xeaab
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7d68
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc5b0(%rip)      # 0x14318
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6d3f(%rip), %rdi      # 0xeab5
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7d9f
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc551(%rip)      # 0x142f0
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6d11(%rip), %rdi      # 0xeabe
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7dd9
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
cltq
movq %rax, 0xc52f(%rip)      # 0x14308
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6cdd(%rip), %rdi      # 0xeac4
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7e10
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc4dc(%rip)      # 0x142ec
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6cb1(%rip), %rdi      # 0xeacf
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7e4a
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
cltq
movq %rax, 0xc6e6(%rip)      # 0x14530
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6c80(%rip), %rdi      # 0xead8
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7e81
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc6f7(%rip)      # 0x14578
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6c53(%rip), %rdi      # 0xeae2
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7eb8
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc468(%rip)      # 0x14320
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6c29(%rip), %rdi      # 0xeaef
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7eef
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc435(%rip)      # 0x14324
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6c00(%rip), %rdi      # 0xeafd
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7f26
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc3f6(%rip)      # 0x1431c
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x6bd5(%rip), %rdi      # 0xeb09
callq 0x66f0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jle 0x7f5d
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3440
movl %eax, 0xc61f(%rip)      # 0x1457c
movq 0xc394(%rip), %rdi      # 0x142f8
movl $0x28, %esi
callq 0x31b0
movq %rax, 0xc583(%rip)      # 0x144f8
movl $0x1c9c380, %edi        # imm = 0x1C9C380
movl $0x4, %esi
callq 0x31b0
movq %rax, 0xc57d(%rip)      # 0x14508
movl $0xfa4, %edi            # imm = 0xFA4
callq 0x33c0
movq %rax, 0xc5bc(%rip)      # 0x14558
movl $0x0, -0x14(%rbp)
cmpl $0x3e8, -0x14(%rbp)     # imm = 0x3E8
jge 0x803c
cvtsi2ssl -0x14(%rbp), %xmm0
movss 0x6077(%rip), %xmm1     # 0xe034
divss %xmm1, %xmm0
addss %xmm0, %xmm0
movss 0x608b(%rip), %xmm1     # 0xe058
addss %xmm1, %xmm0
movss 0x606b(%rip), %xmm1     # 0xe044
mulss %xmm1, %xmm0
callq 0x8ac0
movq 0xc56f(%rip), %rax      # 0x14558
movslq -0x14(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
movq 0xc55f(%rip), %rax      # 0x14558
movslq -0x14(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq 0xc54f(%rip), %rax      # 0x14558
movslq -0x14(%rbp), %rcx
movss 0x602b(%rip), %xmm1     # 0xe040
addss (%rax,%rcx,4), %xmm1
divss %xmm1, %xmm0
movq 0xc533(%rip), %rax      # 0x14558
movslq -0x14(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x7fa3
cmpl $0x1, 0xc535(%rip)      # 0x14578
jne 0x804a
callq 0x6fc0
callq 0x5fe0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nop