// File: /workspace/github_cpp_makefile_star2_O3/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 %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
callq 0x5112
testb %al, %al
je 0x25cc
movq 0x8a90(%rip), %rbx      # 0xaff0
leaq 0x5280(%rip), %rsi      # 0x77e7
movl $0x4f, %edx
movq %rbx, %rdi
callq 0x21c0
cmpb $0x1, 0x19(%r14)
jne 0x25db
movq 0x8a6e(%rip), %rbx      # 0xaff0
leaq 0x52ae(%rip), %rsi      # 0x7837
movl $0x2f, %edx
movq %rbx, %rdi
callq 0x21c0
leaq 0x52ca(%rip), %rsi      # 0x7867
movl $0x43, %edx
movq %rbx, %rdi
callq 0x21c0
leaq 0x52fa(%rip), %rsi      # 0x78ab
movl $0x3a, %edx
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x21c0
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpb $0x1, 0x1a(%r14)
jne 0x2673
movq 0x8a03(%rip), %r15      # 0xaff0
leaq 0x52f2(%rip), %rsi      # 0x78e6
movl $0x1c, %edx
movq %r15, %rdi
callq 0x21c0
movq 0x20(%r14), %rbp
movq 0x28(%r14), %rbx
cmpq %rbx, %rbp
je 0x2645
movq 0x89db(%rip), %r12      # 0xaff0
leaq 0x5c87(%rip), %r13      # 0x82a3
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
movq %r12, %rdi
callq 0x21c0
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x21c0
addq $0x20, %rbp
cmpq %rbx, %rbp
jne 0x261c
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x897d(%rip), %rbx      # 0xaff0
cmpb $0x1, 0x18(%r14)
jne 0x2692
movq 0x896f(%rip), %rdi      # 0xaff0
leaq 0x527b(%rip), %rsi      # 0x7903
movl $0x29, %edx
callq 0x21c0
cmpb $0x1, (%r14)
jne 0x26b0
movq 0x8951(%rip), %rdi      # 0xaff0
leaq 0x5287(%rip), %rsi      # 0x792d
movl $0x2d, %edx
callq 0x21c0
cmpb $0x1, 0x1(%r14)
jne 0x26cf
movq 0x8932(%rip), %rdi      # 0xaff0
leaq 0x5296(%rip), %rsi      # 0x795b
movl $0x52, %edx
callq 0x21c0
cmpb $0x1, 0x6(%r14)
jne 0x26ee
movq 0x8913(%rip), %rdi      # 0xaff0
leaq 0x52ca(%rip), %rsi      # 0x79ae
movl $0x47, %edx
callq 0x21c0
cmpb $0x1, 0xb(%r14)
jne 0x270d
movq 0x88f4(%rip), %rdi      # 0xaff0
leaq 0x52f3(%rip), %rsi      # 0x79f6
movl $0x4e, %edx
callq 0x21c0
cmpb $0x1, 0x10(%r14)
jne 0x272c
movq 0x88d5(%rip), %rdi      # 0xaff0
leaq 0x5323(%rip), %rsi      # 0x7a45
movl $0x4f, %edx
callq 0x21c0
cmpb $0x1, 0x15(%r14)
jne 0x274b
movq 0x88b6(%rip), %rdi      # 0xaff0
leaq 0x5354(%rip), %rsi      # 0x7a95
movl $0x51, %edx
callq 0x21c0
cmpb $0x1, 0x4(%r14)
jne 0x276a
movq 0x8897(%rip), %rdi      # 0xaff0
leaq 0x5387(%rip), %rsi      # 0x7ae7
movl $0x18, %edx
callq 0x21c0
cmpb $0x1, 0x5(%r14)
jne 0x2789
movq 0x8878(%rip), %rdi      # 0xaff0
leaq 0x5381(%rip), %rsi      # 0x7b00
movl $0x27, %edx
callq 0x21c0
cmpb $0x1, 0x9(%r14)
jne 0x27a8
movq 0x8859(%rip), %rdi      # 0xaff0
leaq 0x538a(%rip), %rsi      # 0x7b28
movl $0x18, %edx
callq 0x21c0
cmpb $0x1, 0xa(%r14)
jne 0x27c7
movq 0x883a(%rip), %rdi      # 0xaff0
leaq 0x5384(%rip), %rsi      # 0x7b41
movl $0x1c, %edx
callq 0x21c0
cmpb $0x1, 0xe(%r14)
jne 0x27e6
movq 0x881b(%rip), %rdi      # 0xaff0
leaq 0x5382(%rip), %rsi      # 0x7b5e
movl $0x18, %edx
callq 0x21c0
cmpb $0x1, 0xf(%r14)
jne 0x2805
movq 0x87fc(%rip), %rdi      # 0xaff0
leaq 0x537c(%rip), %rsi      # 0x7b77
movl $0x23, %edx
callq 0x21c0
cmpb $0x1, 0x13(%r14)
jne 0x2824
movq 0x87dd(%rip), %rdi      # 0xaff0
leaq 0x5381(%rip), %rsi      # 0x7b9b
movl $0x18, %edx
callq 0x21c0
cmpb $0x1, 0x14(%r14)
jne 0x2843
movq 0x87be(%rip), %rdi      # 0xaff0
leaq 0x537b(%rip), %rsi      # 0x7bb4
movl $0x24, %edx
callq 0x21c0
cmpb $0x1, 0x2(%r14)
jne 0x2862
movq 0x879f(%rip), %rdi      # 0xaff0
leaq 0x5381(%rip), %rsi      # 0x7bd9
movl $0x38, %edx
callq 0x21c0
cmpb $0x1, 0x3(%r14)
jne 0x2881
movq 0x8780(%rip), %rdi      # 0xaff0
leaq 0x539b(%rip), %rsi      # 0x7c12
movl $0x47, %edx
callq 0x21c0
cmpb $0x1, 0x7(%r14)
jne 0x28a0
movq 0x8761(%rip), %rdi      # 0xaff0
leaq 0x53c4(%rip), %rsi      # 0x7c5a
movl $0x3c, %edx
callq 0x21c0
cmpb $0x1, 0x8(%r14)
jne 0x28bf
movq 0x8742(%rip), %rdi      # 0xaff0
leaq 0x53e2(%rip), %rsi      # 0x7c97
movl $0x40, %edx
callq 0x21c0
cmpb $0x1, 0xc(%r14)
jne 0x28de
movq 0x8723(%rip), %rdi      # 0xaff0
leaq 0x5404(%rip), %rsi      # 0x7cd8
movl $0x2e, %edx
callq 0x21c0
cmpb $0x1, 0xd(%r14)
jne 0x28fd
movq 0x8704(%rip), %rdi      # 0xaff0
leaq 0x5414(%rip), %rsi      # 0x7d07
movl $0x39, %edx
callq 0x21c0
cmpb $0x1, 0x11(%r14)
jne 0x291c
movq 0x86e5(%rip), %rdi      # 0xaff0
leaq 0x542f(%rip), %rsi      # 0x7d41
movl $0x6b, %edx
callq 0x21c0
cmpb $0x1, 0x12(%r14)
jne 0x293b
movq 0x86c6(%rip), %rdi      # 0xaff0
leaq 0x547c(%rip), %rsi      # 0x7dad
movl $0x77, %edx
callq 0x21c0
cmpb $0x1, 0x17(%r14)
jne 0x295a
movq 0x86a7(%rip), %rdi      # 0xaff0
leaq 0x54d5(%rip), %rsi      # 0x7e25
movl $0x23, %edx
callq 0x21c0
cmpb $0x1, 0x16(%r14)
jne 0x2979
movq 0x8688(%rip), %rdi      # 0xaff0
leaq 0x54da(%rip), %rsi      # 0x7e49
movl $0x22, %edx
callq 0x21c0
leaq 0x54ec(%rip), %rsi      # 0x7e6c
movl $0x9f, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x24fe