// File: /workspace/github_c_makefile_star2_O2/Leeheng86[P]word2vec/word2phrase.c
// Function: main
int main(int argc, char **argv) {
  int i;
  if (argc == 1) {
    printf("WORD2PHRASE tool v0.1a\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 / phrases\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-threshold <float>\n");
    printf("\t\t The <float> value represents threshold for forming the phrases (higher means less phrases); default 100\n");
    printf("\t-debug <int>\n");
    printf("\t\tSet the debug mode (default = 2 = more info during training)\n");
    printf("\nExamples:\n");
    printf("./word2phrase -train text.txt -output phrases.txt -threshold 100 -debug 2\n\n");
    return 0;
  }
  if ((i = ArgPos((char *)"-train", argc, argv)) > 0) strcpy(train_file, argv[i + 1]);
  if ((i = ArgPos((char *)"-debug", argc, argv)) > 0) debug_mode = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-output", argc, argv)) > 0) strcpy(output_file, argv[i + 1]);
  if ((i = ArgPos((char *)"-min-count", argc, argv)) > 0) min_count = atoi(argv[i + 1]);
  if ((i = ArgPos((char *)"-threshold", argc, argv)) > 0) threshold = atof(argv[i + 1]);
  vocab = (struct vocab_word *)calloc(vocab_max_size, sizeof(struct vocab_word));
  vocab_hash = (int *)calloc(vocab_hash_size, sizeof(int));
  TrainModel();
  return 0;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
cmpl $0x1, %edi
jne 0x1c75
leaq 0x56c(%rip), %rdi       # 0x212f
callq 0x1130
leaq 0x578(%rip), %rdi       # 0x2147
callq 0x1130
leaq 0x575(%rip), %rdi       # 0x2150
callq 0x1130
leaq 0x582(%rip), %rdi       # 0x2169
callq 0x1130
leaq 0x585(%rip), %rdi       # 0x2178
callq 0x1130
leaq 0x5a8(%rip), %rdi       # 0x21a7
callq 0x1130
leaq 0x5ac(%rip), %rdi       # 0x21b7
callq 0x1130
leaq 0x5ea(%rip), %rdi       # 0x2201
callq 0x1130
leaq 0x5f0(%rip), %rdi       # 0x2213
callq 0x1130
leaq 0x62e(%rip), %rdi       # 0x225d
callq 0x1130
leaq 0x636(%rip), %rdi       # 0x2271
callq 0x1130
leaq 0x695(%rip), %rdi       # 0x22dc
callq 0x1130
leaq 0x697(%rip), %rdi       # 0x22ea
callq 0x1130
leaq 0x6ca(%rip), %rdi       # 0x2329
callq 0x1130
leaq 0x6c9(%rip), %rdi       # 0x2334
callq 0x1130
jmp 0x1d74
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x45d(%rip), %rdi       # 0x20de
movl %ebp, %esi
movq %rbx, %rdx
callq 0x1b41
testl %eax, %eax
jle 0x1ca2
movl %eax, %eax
movq 0x8(%rbx,%rax,8), %rsi
leaq 0x2473(%rip), %rdi      # 0x4110
callq 0x1080
leaq 0x43c(%rip), %rdi       # 0x20e5
movl %ebp, %esi
movq %rbx, %rdx
callq 0x1b41
testl %eax, %eax
jle 0x1cc9
movl %eax, %eax
movq 0x8(%rbx,%rax,8), %rdi
callq 0x1150
movl %eax, 0x240f(%rip)      # 0x40d8
leaq 0x41c(%rip), %rdi       # 0x20ec
movl %ebp, %esi
movq %rbx, %rdx
callq 0x1b41
testl %eax, %eax
jle 0x1cf1
movl %eax, %eax
movq 0x8(%rbx,%rax,8), %rsi
leaq 0x2464(%rip), %rdi      # 0x4150
callq 0x1080
leaq 0x3fc(%rip), %rdi       # 0x20f4
movl %ebp, %esi
movq %rbx, %rdx
callq 0x1b41
testl %eax, %eax
jle 0x1d18
movl %eax, %eax
movq 0x8(%rbx,%rax,8), %rdi
callq 0x1150
movl %eax, 0x23c4(%rip)      # 0x40dc
leaq 0x3e0(%rip), %rdi       # 0x20ff
movl %ebp, %esi
movq %rbx, %rdx
callq 0x1b41
testl %eax, %eax
jle 0x1d45
movl %eax, %eax
movq 0x8(%rbx,%rax,8), %rdi
callq 0x10f0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x23ab(%rip)     # 0x40f0
movq 0x239c(%rip), %rdi      # 0x40e8
pushq $0x10
popq %rsi
callq 0x1070
movq %rax, 0x2435(%rip)      # 0x4190
pushq $0x4
popq %rsi
movl $0x1dcd6500, %edi       # imm = 0x1DCD6500
callq 0x1070
movq %rax, 0x2429(%rip)      # 0x4198
callq 0x18b9
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq