// File: /workspace/github_cpp_makefile_star2_O2/zyLiu6707[P]Arknights-Pull-Simulation/./utils.h
// Function: display_error_detail(ErrorFlag const&)
void display_error_detail(const ErrorFlag& error_flag) {
  if (error_flag.check_err()) {
    std::cerr << "The provided command line arguments are invalid due to the following error(s):\n";
    if (error_flag.err_help_ctrl_arg_with_other_args) {
      std::cerr << "\tOther argument(s) is(are) found with \"--help\"\n";
      std::cerr << "If you would like to see help message, please ony specify \"--help\"\n";
      std::cerr << "Other arguments are ignored. Will not run the simulation.\n";
      // Ignore other args and potential errors, aborting the program
      return;
    }
    if (error_flag.err_invalid_ctrl_args) {
      std::cerr << "\tInvalid control arguments: ";
      for (const auto& invalid_arg : error_flag.invalid_ctrl_args_list) {
        std::cerr << invalid_arg << " ";
      }
      std::cerr << std::endl;
    }
    if (error_flag.err_unexpected_arguments_at_the_beginning) {
      std::cerr << "\tUnexpected argument(s) at the beginning\n";
    }
    // Redundant argument
    if (error_flag.err_redundant_identical_ctrl_arg) {
      std::cerr << "\tSame arguments are specified more than once\n";
    }
    if (error_flag.err_redundant_total_pull_time_ctrl_arg) {
      std::cerr << "\tRedundant arguments: \"-t\" and \"--total-pull-time\" are specified at the same time\n";
    }
    if (error_flag.err_redundant_pity_ctrl_arg) {
      std::cerr << "\tRedundant arguments: \"-p\" and \"--pity\" are specified at the same time\n";
    }
    if (error_flag.err_redundant_num_rate_up_ctrl_arg) {
      std::cerr << "\tRedundant arguments: \"-n\" and \"--num-rate-up\" are specified at the same time\n";
    }
    if (error_flag.err_redundant_current_pull_ctrl_arg) {
      std::cerr << "\tRedundant arguments: \"-c\" and \"--current-pull\" are specified at the same time\n";
    }
    // Conflict arguments
    if (error_flag.err_conflict_ctrl_arg_flag) {
      std::cerr << "\tConflict arguments: \"--standard\" and \"--limited\" are specified at the same time\n";
    }
    // Missing detail value
    if (error_flag.err_missing_value_for_total_pull_time_ctrl_arg) {
      std::cerr << "\tMissing value for \"-t\"\n";
    }
    if (error_flag.err_missing_value_for_total_pull_time_long_name_ctrl_arg) {
      std::cerr << "\tMissing value for \"--total-pull-time\"\n";
    }
    if (error_flag.err_missing_value_for_pity_ctrl_arg) {
      std::cerr << "\tMissing value for \"-p\"\n";
    }
    if (error_flag.err_missing_value_for_pity_long_name_ctrl_arg) {
      std::cerr << "\tMissing value for \"--pity\"\n";
    }
    if (error_flag.err_missing_value_for_num_rate_up_ctrl_arg) {
      std::cerr << "\tMissing value for \"-n\"\n";
    }
    if (error_flag.err_missing_value_for_num_rate_up_long_name_ctrl_arg) {
      std::cerr << "\tMissing value for \"--num-rate-up\"\n";
    }
    if (error_flag.err_missing_value_for_current_pull_ctrl_arg) {
      std::cerr << "\tMissing value for \"-c\"\n";
    }
    if (error_flag.err_missing_value_for_current_pull_long_name_ctrl_arg) {
      std::cerr << "\tMissing value for \"--current-pull\"\n";
    }
    // Invalid value
    if (error_flag.err_invalid_value_for_total_pull_time_ctrl_arg) {
      std::cerr << "\tInvalid value for \"-t\" - it must be a positive integer\n";
    }
    if (error_flag.err_invalid_value_for_total_pull_time_long_name_ctrl_arg) {
      std::cerr << "\tInvalid value for \"--total-pull-time\" - it must be a positive integer\n";
    }
    if (error_flag.err_invalid_value_for_pity_ctrl_arg) {
      std::cerr << "\tInvalid value for \"-p\" - it must be a non-negative integer\n";
    }
    if (error_flag.err_invalid_value_for_pity_long_name_ctrl_arg) {
      std::cerr << "\tInvalid value for \"--pity\" - it must be a non-negative integer\n";
    }
    if (error_flag.err_invalid_value_for_num_rate_up_ctrl_arg) {
      std::cerr << "\tInvalid value for \"-n\" - it must be a 1 or 2\n";
    }
    if (error_flag.err_invalid_value_for_num_rate_up_long_name_ctrl_arg) {
      std::cerr << "\tInvalid value for \"--num-rate-up\" - it must be a 1 or 2\n";
    }
    if (error_flag.err_invalid_value_for_current_pull_ctrl_arg) {
      std::cerr << "\tInvalid value for \"-c\" - it must be an integer between [0, <-p|--pity value> + 49) (inclusive, exclusive)\n";
    }
    if (error_flag.err_invalid_value_for_current_pull_long_name_ctrl_arg) {
      std::cerr << "\tInvalid value for \"--current-pull\" - it must be an integer between [0, <-p|--pity value> + 49) (inclusive, exclusive)\n";
    }
    // Unexpected value
    if (error_flag.err_unexpected_value_for_ctrl_arg_standard) {
      std::cerr << "\tUnexpected value for \"--standard\"\n";
    }
    if (error_flag.err_unexpected_value_for_ctrl_arg_limited) {
      std::cerr << "\tUnexpected value for \"--limited\"\n";
    }
    std::cerr << "Please check and correct the error(s)\nYou can refer to help message, README, or visit the online repo:\n"
                 "https://github.com/zyLiu6707/Arknights-Gacha-Simulation\n" << std::endl;

    display_help_message();
  }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
callq 0x4642
testb %al, %al
je 0x2510
movq 0x8b2f(%rip), %rdi      # 0xaff0
leaq 0x42ef(%rip), %rsi      # 0x67b7
callq 0x21a0
cmpb $0x1, 0x19(%rbx)
jne 0x251a
movq 0x8b16(%rip), %rbx      # 0xaff0
leaq 0x4326(%rip), %rsi      # 0x6807
movq %rbx, %rdi
callq 0x21a0
leaq 0x4347(%rip), %rsi      # 0x6837
movq %rbx, %rdi
callq 0x21a0
leaq 0x437c(%rip), %rsi      # 0x687b
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x21a0
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
cmpb $0x1, 0x1a(%rbx)
jne 0x2572
movq 0x8ac9(%rip), %r14      # 0xaff0
leaq 0x4388(%rip), %rsi      # 0x68b6
movq %r14, %rdi
callq 0x21a0
movq 0x20(%rbx), %r15
movq 0x28(%rbx), %r13
leaq 0x4d2e(%rip), %r12      # 0x7273
cmpq %r13, %r15
je 0x2566
movq %r14, %rdi
movq %r15, %rsi
callq 0x2170
movq %rax, %rdi
movq %r12, %rsi
callq 0x21a0
addq $0x20, %r15
jmp 0x2545
movq 0x8a83(%rip), %rdi      # 0xaff0
callq 0x20c0
cmpb $0x1, 0x18(%rbx)
jne 0x258b
movq 0x8a71(%rip), %rdi      # 0xaff0
leaq 0x434d(%rip), %rsi      # 0x68d3
callq 0x21a0
cmpb $0x1, (%rbx)
jne 0x25a3
movq 0x8a59(%rip), %rdi      # 0xaff0
leaq 0x435f(%rip), %rsi      # 0x68fd
callq 0x21a0
cmpb $0x1, 0x1(%rbx)
jne 0x25bc
movq 0x8a40(%rip), %rdi      # 0xaff0
leaq 0x4374(%rip), %rsi      # 0x692b
callq 0x21a0
cmpb $0x1, 0x6(%rbx)
jne 0x25d5
movq 0x8a27(%rip), %rdi      # 0xaff0
leaq 0x43ae(%rip), %rsi      # 0x697e
callq 0x21a0
cmpb $0x1, 0xb(%rbx)
jne 0x25ee
movq 0x8a0e(%rip), %rdi      # 0xaff0
leaq 0x43dd(%rip), %rsi      # 0x69c6
callq 0x21a0
cmpb $0x1, 0x10(%rbx)
jne 0x2607
movq 0x89f5(%rip), %rdi      # 0xaff0
leaq 0x4413(%rip), %rsi      # 0x6a15
callq 0x21a0
cmpb $0x1, 0x15(%rbx)
jne 0x2620
movq 0x89dc(%rip), %rdi      # 0xaff0
leaq 0x444a(%rip), %rsi      # 0x6a65
callq 0x21a0
cmpb $0x1, 0x4(%rbx)
jne 0x2639
movq 0x89c3(%rip), %rdi      # 0xaff0
leaq 0x4483(%rip), %rsi      # 0x6ab7
callq 0x21a0
cmpb $0x1, 0x5(%rbx)
jne 0x2652
movq 0x89aa(%rip), %rdi      # 0xaff0
leaq 0x4483(%rip), %rsi      # 0x6ad0
callq 0x21a0
cmpb $0x1, 0x9(%rbx)
jne 0x266b
movq 0x8991(%rip), %rdi      # 0xaff0
leaq 0x4492(%rip), %rsi      # 0x6af8
callq 0x21a0
cmpb $0x1, 0xa(%rbx)
jne 0x2684
movq 0x8978(%rip), %rdi      # 0xaff0
leaq 0x4492(%rip), %rsi      # 0x6b11
callq 0x21a0
cmpb $0x1, 0xe(%rbx)
jne 0x269d
movq 0x895f(%rip), %rdi      # 0xaff0
leaq 0x4496(%rip), %rsi      # 0x6b2e
callq 0x21a0
cmpb $0x1, 0xf(%rbx)
jne 0x26b6
movq 0x8946(%rip), %rdi      # 0xaff0
leaq 0x4496(%rip), %rsi      # 0x6b47
callq 0x21a0
cmpb $0x1, 0x13(%rbx)
jne 0x26cf
movq 0x892d(%rip), %rdi      # 0xaff0
leaq 0x44a1(%rip), %rsi      # 0x6b6b
callq 0x21a0
cmpb $0x1, 0x14(%rbx)
jne 0x26e8
movq 0x8914(%rip), %rdi      # 0xaff0
leaq 0x44a1(%rip), %rsi      # 0x6b84
callq 0x21a0
cmpb $0x1, 0x2(%rbx)
jne 0x2701
movq 0x88fb(%rip), %rdi      # 0xaff0
leaq 0x44ad(%rip), %rsi      # 0x6ba9
callq 0x21a0
cmpb $0x1, 0x3(%rbx)
jne 0x271a
movq 0x88e2(%rip), %rdi      # 0xaff0
leaq 0x44cd(%rip), %rsi      # 0x6be2
callq 0x21a0
cmpb $0x1, 0x7(%rbx)
jne 0x2733
movq 0x88c9(%rip), %rdi      # 0xaff0
leaq 0x44fc(%rip), %rsi      # 0x6c2a
callq 0x21a0
cmpb $0x1, 0x8(%rbx)
jne 0x274c
movq 0x88b0(%rip), %rdi      # 0xaff0
leaq 0x4520(%rip), %rsi      # 0x6c67
callq 0x21a0
cmpb $0x1, 0xc(%rbx)
jne 0x2765
movq 0x8897(%rip), %rdi      # 0xaff0
leaq 0x4548(%rip), %rsi      # 0x6ca8
callq 0x21a0
cmpb $0x1, 0xd(%rbx)
jne 0x277e
movq 0x887e(%rip), %rdi      # 0xaff0
leaq 0x455e(%rip), %rsi      # 0x6cd7
callq 0x21a0
cmpb $0x1, 0x11(%rbx)
jne 0x2797
movq 0x8865(%rip), %rdi      # 0xaff0
leaq 0x457f(%rip), %rsi      # 0x6d11
callq 0x21a0
cmpb $0x1, 0x12(%rbx)
jne 0x27b0
movq 0x884c(%rip), %rdi      # 0xaff0
leaq 0x45d2(%rip), %rsi      # 0x6d7d
callq 0x21a0
cmpb $0x1, 0x17(%rbx)
jne 0x27c9
movq 0x8833(%rip), %rdi      # 0xaff0
leaq 0x4631(%rip), %rsi      # 0x6df5
callq 0x21a0
cmpb $0x1, 0x16(%rbx)
jne 0x27e2
movq 0x881a(%rip), %rdi      # 0xaff0
leaq 0x463c(%rip), %rsi      # 0x6e19
callq 0x21a0
movq 0x8807(%rip), %rdi      # 0xaff0
leaq 0x464c(%rip), %rsi      # 0x6e3c
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x2488