// File: /workspace/github_cpp_makefile_star2_O2/epfml[P]Bi-Sent2Vec/src/args.cc
// Function: fasttext::Args::parseArgs(int, char**)
void Args::parseArgs(int argc, char** argv) {
  std::string command(argv[1]);
  if (command == "bisent2vec") {
    model = model_name::bisent2vec;
    loss = loss_name::ns;
    neg = 10;
    minCount = 5;
    minn = 3;
    maxn = 6;
    lr = 0.05;
    dropoutK = 2;
  }
  int ai = 2;
  while (ai < argc) {
    if (argv[ai][0] != '-') {
      std::cout << "Provided argument without a dash! Usage:" << std::endl;
      printHelp();
      exit(EXIT_FAILURE);
    }
    if (strcmp(argv[ai], "-h") == 0) {
      std::cout << "Here is the help! Usage:" << std::endl;
      printHelp();
      exit(EXIT_FAILURE);
    } else if (strcmp(argv[ai], "-input") == 0) {
      input = std::string(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-test") == 0) {
      test = std::string(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-output") == 0) {
      output = std::string(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-dict") == 0) {
      dict = std::string(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-lr") == 0) {
      lr = atof(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-boostNgrams") == 0) {
      boostNgrams = atof(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-lrUpdateRate") == 0) {
      lrUpdateRate = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-dim") == 0) {
      dim = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-ws") == 0) {
      ws = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-epoch") == 0) {
      epoch = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-minCount") == 0) {
      minCount = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-minCountLabel") == 0) {
      minCountLabel = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-neg") == 0) {
      neg = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-numCheckPoints") == 0) {
      numCheckPoints = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-dropoutK") == 0) {
      dropoutK = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-wordNgrams") == 0) {
      wordNgrams = atoi(argv[ai + 1]);
      if (wordNgrams == 1) bucket = 1;
    } else if (strcmp(argv[ai], "-loss") == 0) {
      if (strcmp(argv[ai + 1], "hs") == 0) {
        loss = loss_name::hs;
      } else if (strcmp(argv[ai + 1], "ns") == 0) {
        loss = loss_name::ns;
      } else if (strcmp(argv[ai + 1], "softmax") == 0) {
        loss = loss_name::softmax;
      } else {
        std::cout << "Unknown loss: " << argv[ai + 1] << std::endl;
        printHelp();
        exit(EXIT_FAILURE);
      }
    } else if (strcmp(argv[ai], "-bucket") == 0) {
      bucket = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-bucketChar") == 0) {
      bucketChar = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-minn") == 0) {
      minn = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-maxn") == 0) {
      maxn = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-thread") == 0) {
      thread = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-t") == 0) {
      t = atof(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-label") == 0) {
      label = std::string(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-verbose") == 0) {
      verbose = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-maxVocabSize") == 0) {
      maxVocabSize = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-pretrainedVectors") == 0) {
      pretrainedVectors = std::string(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-saveOutput") == 0) {
      saveOutput = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-qnorm") == 0) {
      qnorm = true; ai--;
    } else if (strcmp(argv[ai], "-retrain") == 0) {
      retrain = true; ai--;
    } else if (strcmp(argv[ai], "-qout") == 0) {
      qout = true; ai--;
    } else if (strcmp(argv[ai], "-cutoff") == 0) {
    cutoff = atoi(argv[ai + 1]);
    } else if (strcmp(argv[ai], "-dsub") == 0) {
      dsub = atoi(argv[ai + 1]);
    } else {
      std::cout << "Unknown argument: " << argv[ai] << std::endl;
      printHelp();
      exit(EXIT_FAILURE);
    }
    ai += 2;
  }
  if (input.empty() || output.empty()) {
    std::cout << "Empty input or output path." << std::endl;
    printHelp();
    exit(EXIT_FAILURE);
  }
  if (wordNgrams <= 1 && maxn == 0) {
    bucket = 0;
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
movq 0x8(%rdx), %rsi
leaq 0x38(%rsp), %r15
leaq 0x58(%rsp), %rdx
movq %r15, %rdi
callq 0x5b64
leaq 0x15507(%rip), %rsi     # 0x1a05a
movq %r15, %rdi
callq 0x5b9f
testb %al, %al
je 0x4bb0
movabsq $0x400000002, %rax      # imm = 0x400000002
movq %rax, 0xbc(%rbx)
movl $0xa, 0xb0(%rbx)
movl $0x5, 0xa8(%rbx)
movabsq $0x600000003, %rax      # imm = 0x600000003
movq %rax, 0xcc(%rbx)
movabsq $0x3fa999999999999a, %rax # imm = 0x3FA999999999999A
movq %rax, 0x80(%rbx)
movl $0x2, 0x9c(%rbx)
leaq 0x108(%rbx), %rax
movq %rax, 0x10(%rsp)
leaq 0xe0(%rbx), %rax
movq %rax, 0x18(%rsp)
leaq 0x60(%rbx), %rax
movq %rax, 0x20(%rsp)
leaq 0x40(%rbx), %rax
movq %rax, 0x28(%rsp)
movq %rbx, 0x8(%rsp)
leaq 0x20(%rbx), %rax
movq %rax, 0x30(%rsp)
pushq $0x2
popq %r13
leaq 0x58(%rsp), %r15
cmpl %ebp, %r13d
jge 0x52d4
movslq %r13d, %rbx
movq (%r14,%rbx,8), %r12
cmpb $0x2d, (%r12)
jne 0x5321
cmpb $0x68, 0x1(%r12)
jne 0x4c20
cmpb $0x0, 0x2(%r12)
je 0x5348
movq %r12, %rdi
leaq 0x1547d(%rip), %rsi     # 0x1a0a7
callq 0x4480
testl %eax, %eax
je 0x4f2e
movq %r12, %rdi
leaq 0x1546d(%rip), %rsi     # 0x1a0ae
callq 0x4480
testl %eax, %eax
je 0x4f47
movq %r12, %rdi
leaq 0x1545c(%rip), %rsi     # 0x1a0b4
callq 0x4480
testl %eax, %eax
je 0x4f60
movq %r12, %rdi
leaq 0x1544d(%rip), %rsi     # 0x1a0bc
callq 0x4480
testl %eax, %eax
je 0x4f79
movq %r12, %rdi
leaq 0x1543c(%rip), %rsi     # 0x1a0c2
callq 0x4480
testl %eax, %eax
je 0x4fa9
movq %r12, %rdi
leaq 0x15429(%rip), %rsi     # 0x1a0c6
callq 0x4480
testl %eax, %eax
je 0x4fc2
movq %r12, %rdi
leaq 0x1541f(%rip), %rsi     # 0x1a0d3
callq 0x4480
testl %eax, %eax
je 0x4fdb
movq %r12, %rdi
leaq 0x15416(%rip), %rsi     # 0x1a0e1
callq 0x4480
testl %eax, %eax
je 0x4ff2
movq %r12, %rdi
leaq 0x15404(%rip), %rsi     # 0x1a0e6
callq 0x4480
testl %eax, %eax
je 0x5009
movq %r12, %rdi
leaq 0x153f1(%rip), %rsi     # 0x1a0ea
callq 0x4480
testl %eax, %eax
je 0x5020
movq %r12, %rdi
leaq 0x153e1(%rip), %rsi     # 0x1a0f1
callq 0x4480
testl %eax, %eax
je 0x503a
movq %r12, %rdi
leaq 0x153d4(%rip), %rsi     # 0x1a0fb
callq 0x4480
testl %eax, %eax
je 0x5054
movq %r12, %rdi
leaq 0x153cc(%rip), %rsi     # 0x1a10a
callq 0x4480
testl %eax, %eax
je 0x506e
movq %r12, %rdi
leaq 0x153ba(%rip), %rsi     # 0x1a10f
callq 0x4480
testl %eax, %eax
je 0x5088
movq %r12, %rdi
leaq 0x153b3(%rip), %rsi     # 0x1a11f
callq 0x4480
testl %eax, %eax
je 0x50a2
movq %r12, %rdi
leaq 0x153a6(%rip), %rsi     # 0x1a129
callq 0x4480
testl %eax, %eax
je 0x50bc
movq %r12, %rdi
leaq 0x1539b(%rip), %rsi     # 0x1a135
callq 0x4480
testl %eax, %eax
je 0x50e9
movq %r12, %rdi
leaq 0x153a7(%rip), %rsi     # 0x1a158
callq 0x4480
testl %eax, %eax
je 0x511b
movq %r12, %rdi
leaq 0x15398(%rip), %rsi     # 0x1a160
callq 0x4480
testl %eax, %eax
je 0x5135
movq %r12, %rdi
leaq 0x1538d(%rip), %rsi     # 0x1a16c
callq 0x4480
testl %eax, %eax
je 0x5183
movq %r12, %rdi
leaq 0x1537c(%rip), %rsi     # 0x1a172
callq 0x4480
testl %eax, %eax
je 0x519d
movq %r12, %rdi
leaq 0x1536b(%rip), %rsi     # 0x1a178
callq 0x4480
testl %eax, %eax
je 0x51b7
cmpb $0x74, 0x1(%r12)
jne 0x4e2e
cmpb $0x0, 0x2(%r12)
je 0x521b
movq %r12, %rdi
leaq 0x15348(%rip), %rsi     # 0x1a180
callq 0x4480
testl %eax, %eax
je 0x51e5
movq %r12, %rdi
leaq 0x15338(%rip), %rsi     # 0x1a187
callq 0x4480
testl %eax, %eax
je 0x5201
movq %r12, %rdi
leaq 0x1532a(%rip), %rsi     # 0x1a190
callq 0x4480
testl %eax, %eax
je 0x5237
movq %r12, %rdi
leaq 0x15321(%rip), %rsi     # 0x1a19e
callq 0x4480
testl %eax, %eax
je 0x5251
movq %r12, %rdi
leaq 0x1531d(%rip), %rsi     # 0x1a1b1
callq 0x4480
testl %eax, %eax
je 0x526d
movq %r12, %rdi
leaq 0x15312(%rip), %rsi     # 0x1a1bd
callq 0x4480
testl %eax, %eax
je 0x5287
movq %r12, %rdi
leaq 0x15302(%rip), %rsi     # 0x1a1c4
callq 0x4480
testl %eax, %eax
je 0x5295
movq %r12, %rdi
leaq 0x152f4(%rip), %rsi     # 0x1a1cd
callq 0x4480
testl %eax, %eax
je 0x52a3
movq %r12, %rdi
leaq 0x152e3(%rip), %rsi     # 0x1a1d3
callq 0x4480
testl %eax, %eax
je 0x52b7
movq %r12, %rdi
leaq 0x152d4(%rip), %rsi     # 0x1a1db
callq 0x4480
testl %eax, %eax
jne 0x53d0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
cltq
movq 0x8(%rsp), %rcx
movq %rax, 0x138(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x5b64
movq 0x8(%rsp), %rdi
jmp 0x4f90
movq 0x8(%r14,%rbx,8), %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x5b64
movq 0x30(%rsp), %rdi
jmp 0x4f90
movq 0x8(%r14,%rbx,8), %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x5b64
movq 0x28(%rsp), %rdi
jmp 0x4f90
movq 0x8(%r14,%rbx,8), %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x5b64
movq 0x20(%rsp), %rdi
movq %r15, %rsi
callq 0x43c0
movq %r15, %rdi
callq 0x46c8
addl $0x2, %r13d
jmp 0x4bf1
movq 0x8(%r14,%rbx,8), %rdi
callq 0x43d0
movq 0x8(%rsp), %rax
movsd %xmm0, 0x80(%rax)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x43d0
movq 0x8(%rsp), %rax
movsd %xmm0, 0x88(%rax)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0x90(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0x94(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0x98(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xa0(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xa8(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xac(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xb0(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xb8(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0x9c(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xb4(%rcx)
cmpl $0x1, %eax
jne 0x4fa0
movl $0x1, 0xc4(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
movzbl (%rdi), %eax
cmpl $0x6e, %eax
je 0x514f
cmpl $0x68, %eax
jne 0x515b
cmpb $0x73, 0x1(%rdi)
jne 0x515b
cmpb $0x0, 0x2(%rdi)
jne 0x515b
movq 0x8(%rsp), %rax
movl $0x1, 0xbc(%rax)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xc4(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xc8(%rcx)
jmp 0x4fa0
cmpb $0x73, 0x1(%rdi)
jne 0x515b
cmpb $0x0, 0x2(%rdi)
je 0x51d1
leaq 0x14fdf(%rip), %rsi     # 0x1a141
callq 0x4480
testl %eax, %eax
jne 0x539c
movq 0x8(%rsp), %rax
movl $0x3, 0xbc(%rax)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xcc(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xd0(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xd4(%rcx)
jmp 0x4fa0
movq 0x8(%rsp), %rax
movl $0x2, 0xbc(%rax)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x5b64
movq 0x18(%rsp), %rdi
jmp 0x4f90
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0x100(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x43d0
movq 0x8(%rsp), %rax
movsd %xmm0, 0xd8(%rax)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0xa4(%rcx)
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x5b64
movq 0x10(%rsp), %rdi
jmp 0x4f90
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
movq 0x8(%rsp), %rcx
movl %eax, 0x128(%rcx)
jmp 0x4fa0
movq 0x8(%rsp), %rax
movb $0x1, 0x12e(%rax)
jmp 0x52af
movq 0x8(%rsp), %rax
movb $0x1, 0x12d(%rax)
jmp 0x52af
movq 0x8(%rsp), %rax
movb $0x1, 0x12c(%rax)
decl %r13d
jmp 0x4fa0
movq 0x8(%r14,%rbx,8), %rdi
callq 0x44e0
cltq
movq 0x8(%rsp), %rcx
movq %rax, 0x130(%rcx)
jmp 0x4fa0
movq 0x8(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x5375
cmpq $0x0, 0x48(%rax)
je 0x5375
cmpl $0x1, 0xb4(%rax)
jg 0x5308
cmpl $0x0, 0xd0(%rax)
jne 0x5308
andl $0x0, 0xc4(%rax)
leaq 0x38(%rsp), %rdi
callq 0x46c8
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x22c98(%rip), %rdi     # 0x27fc0
leaq 0x14d36(%rip), %rsi     # 0x1a065
callq 0x4330
movq %rax, %rdi
callq 0x4190
movq 0x8(%rsp), %rdi
callq 0x5428
jmp 0x536d
movq 0x22c71(%rip), %rdi     # 0x27fc0
leaq 0x14d38(%rip), %rsi     # 0x1a08e
callq 0x4330
movq %rax, %rdi
callq 0x4190
movq 0x8(%rsp), %rdi
callq 0x5428
pushq $0x1
popq %rdi
callq 0x43b0
movq 0x22c44(%rip), %rdi     # 0x27fc0
leaq 0x14e71(%rip), %rsi     # 0x1a1f4
callq 0x4330
movq %rax, %rdi
callq 0x4190
movq 0x8(%rsp), %rdi
callq 0x5428
jmp 0x536d
movq 0x22c1d(%rip), %rdi     # 0x27fc0
leaq 0x14d9f(%rip), %rsi     # 0x1a149
callq 0x4330
movq 0x8(%r14,%rbx,8), %rsi
movq %rax, %rdi
callq 0x4330
movq %rax, %rdi
callq 0x4190
movq 0x8(%rsp), %rdi
callq 0x5428
jmp 0x536d
movq 0x22be9(%rip), %rdi     # 0x27fc0
leaq 0x14e03(%rip), %rsi     # 0x1a1e1
callq 0x4330
movq (%r14,%rbx,8), %rsi
movq %rax, %rdi
callq 0x4330
movq %rax, %rdi
callq 0x4190
movq 0x8(%rsp), %rdi
callq 0x5428
jmp 0x536d
jmp 0x5412
jmp 0x5412
jmp 0x5412
jmp 0x5412
jmp 0x5412
jmp 0x5412
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x46c8
movq %rbx, %rdi
callq 0x45d0
nop