#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *);
void print_help() {
  printf(
      "Dict2vec: Learning Word Embeddings using Lexical Dictionaries\n"
      "Author: Julien Tissier <30314448+tca19@users.noreply.github.com>\n\n");
  printf("Options:\n"
         "  -input <file>\n"
         "    Train the model with text data from <file>\n\n"
         "  -strong-file <file>\n"
         "    Add strong pairs data from <file> to improve the model\n\n"
         "  -weak-file <file>\n"
         "    Add weak pairs data from <file> to improve the model\n\n"
         "  -output <file>\n"
         "    Save word embeddings in <file>\n\n");
  printf(
      "  -size <int>\n"
      "    Size of word vectors; default 100\n\n"
      "  -window <int>\n"
      "    Window size for target/context pairs generation; default 5\n\n"
      "  -sample <float>\n"
      "    Value of the threshold t used for subsampling frequent words in\n"
      "    the original word2vec paper of Mikolov; default 1e-4\n\n"
      "  -min-count <int>\n"
      "    Do not train words with less than <int> occurrences; default 5\n\n"
      "  -negative <int>\n"
      "    Number of random words used for negative sampling; default 5\n\n"
      "  -alpha <float>\n"
      "    Starting learning rate; default 0.025\n\n");
  printf(
      "  -strong-draws <int>\n"
      "    Number of strong pairs picked for positive sampling; default 0\n\n"
      "  -weak-draws <int>\n"
      "    Number of weak pairs picked for positive sampling; default 0\n\n"
      "  -beta-strong <float>\n"
      "    Coefficient for strong pairs; default 1.0\n\n"
      "  -beta-weak <float>\n"
      "    Coefficient for weak pairs; default 0.25\n\n"
      "  -threads <int>\n"
      "    Number of threads to use; default 1\n\n"
      "  -epoch <int>\n"
      "    Number of epoch; default 1\n\n"
      "  -save-each-epoch <int>\n"
      "    Save the embeddings after each epoch; 0 (off, default), 1 (on)");
  printf(
      "\n\nUsage:\n"
      "./dict2vec -input data/enwiki-50M -output data/enwiki-50M \\\n"
      "-strong-file data/strong-pairs.txt -weak-file data/weak-pairs.txt \\\n"
      "-size 100 -window 5 -sample 1e-4 -min-count 5 -negative 5 \\\n"
      "-strong-draws 4 -beta-strong 0.8 -weak-draws 5 -beta-weak 0.45 \\\n"
      "-alpha 0.025 -threads 8 -epoch 5 -save-each-epoch 0\n\n");
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0xf5a(%rip),%rdi
call   1030 <printf@plt>
lea    0x106d(%rip),%rdi
call   1030 <printf@plt>
lea    0x125e(%rip),%rdi
call   1030 <printf@plt>
lea    0x1450(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
push   %rax
lea    0x10d6(%rip),%rdi
call   1030 <puts@plt>
lea    0x114a(%rip),%rdi
call   1030 <puts@plt>
lea    0x125c(%rip),%rdi
call   1030 <puts@plt>
lea    0xeb4(%rip),%rdi
call   1040 <printf@plt>
lea    0x1440(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [129 x i8] c"Dict2vec: Learning Word Embeddings using Lexical Dictionaries\0AAuthor: Julien Tissier <30314448+tca19@users.noreply.github.com>\0A\0A\00"
@.str.1 = [287 x i8] c"Options:\0A -input <file>\0A Train the model with text data from <file>\0A\0A -strong-file <file>\0A Add strong pairs data from <file> to improve the model\0A\0A -weak-file <file>\0A Add weak pairs data from <file> to improve the model\0A\0A -output <file>\0A Save word embeddings in <file>\0A\0A\00"
@.str.2 = [509 x i8] c" -size <int>\0A Size of word vectors; default 100\0A\0A -window <int>\0A Window size for target/context pairs generation; default 5\0A\0A -sample <float>\0A Value of the threshold t used for subsampling frequent words in\0A the original word2vec paper of Mikolov; default 1e-4\0A\0A -min-count <int>\0A Do not train words with less than <int> occurrences; default 5\0A\0A -negative <int>\0A Number of random words used for negative sampling; default 5\0A\0A -alpha <float>\0A Starting learning rate; default 0.025\0A\0A\00"
@.str.3 = [510 x i8] c" -strong-draws <int>\0A Number of strong pairs picked for positive sampling; default 0\0A\0A -weak-draws <int>\0A Number of weak pairs picked for positive sampling; default 0\0A\0A -beta-strong <float>\0A Coefficient for strong pairs; default 1.0\0A\0A -beta-weak <float>\0A Coefficient for weak pairs; default 0.25\0A\0A -threads <int>\0A Number of threads to use; default 1\0A\0A -epoch <int>\0A Number of epoch; default 1\0A\0A -save-each-epoch <int>\0A Save the embeddings after each epoch; 0 (off, default), 1 (on)\00"
@.str.4 = [316 x i8] c"\0A\0AUsage:\0A./dict2vec -input data/enwiki-50M -output data/enwiki-50M \\\0A-strong-file data/strong-pairs.txt -weak-file data/weak-pairs.txt \\\0A-size 100 -window 5 -sample 1e-4 -min-count 5 -negative 5 \\\0A-strong-draws 4 -beta-strong 0.8 -weak-draws 5 -beta-weak 0.45 \\\0A-alpha 0.025 -threads 8 -epoch 5 -save-each-epoch 0\0A\0A\00"
define void @print_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([129 x i8], [129 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([287 x i8], [287 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([509 x i8], [509 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([510 x i8], [510 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([316 x i8], [316 x i8]* @.str.4, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.3 = [510 x i8] c" -strong-draws <int>\0A Number of strong pairs picked for positive sampling; default 0\0A\0A -weak-draws <int>\0A Number of weak pairs picked for positive sampling; default 0\0A\0A -beta-strong <float>\0A Coefficient for strong pairs; default 1.0\0A\0A -beta-weak <float>\0A Coefficient for weak pairs; default 0.25\0A\0A -threads <int>\0A Number of threads to use; default 1\0A\0A -epoch <int>\0A Number of epoch; default 1\0A\0A -save-each-epoch <int>\0A Save the embeddings after each epoch; 0 (off, default), 1 (on)\00"
@str = [128 x i8] c"Dict2vec: Learning Word Embeddings using Lexical Dictionaries\0AAuthor: Julien Tissier <30314448+tca19@users.noreply.github.com>\0A\00"
@str.5 = [286 x i8] c"Options:\0A -input <file>\0A Train the model with text data from <file>\0A\0A -strong-file <file>\0A Add strong pairs data from <file> to improve the model\0A\0A -weak-file <file>\0A Add weak pairs data from <file> to improve the model\0A\0A -output <file>\0A Save word embeddings in <file>\0A\00"
@str.6 = [508 x i8] c" -size <int>\0A Size of word vectors; default 100\0A\0A -window <int>\0A Window size for target/context pairs generation; default 5\0A\0A -sample <float>\0A Value of the threshold t used for subsampling frequent words in\0A the original word2vec paper of Mikolov; default 1e-4\0A\0A -min-count <int>\0A Do not train words with less than <int> occurrences; default 5\0A\0A -negative <int>\0A Number of random words used for negative sampling; default 5\0A\0A -alpha <float>\0A Starting learning rate; default 0.025\0A\00"
@str.7 = [315 x i8] c"\0A\0AUsage:\0A./dict2vec -input data/enwiki-50M -output data/enwiki-50M \\\0A-strong-file data/strong-pairs.txt -weak-file data/weak-pairs.txt \\\0A-size 100 -window 5 -sample 1e-4 -min-count 5 -negative 5 \\\0A-strong-draws 4 -beta-strong 0.8 -weak-draws 5 -beta-weak 0.45 \\\0A-alpha 0.025 -threads 8 -epoch 5 -save-each-epoch 0\0A\00"
define void @print_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([128 x i8], [128 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([286 x i8], [286 x i8]* @str.5, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([508 x i8], [508 x i8]* @str.6, i64 0, i64 0))
%4 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([510 x i8], [510 x i8]* @.str.3, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([315 x i8], [315 x i8]* @str.7, i64 0, i64 0))
ret void
}