// File: /workspace/github_cpp_makefile_star2_O1/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 0x51c2
testb %al, %al
je 0x25cc
movq 0x8a90(%rip), %rbx      # 0xaff0
leaq 0x5240(%rip), %rsi      # 0x77a7
movl $0x4f, %edx
movq %rbx, %rdi
callq 0x21c0
cmpb $0x1, 0x19(%r14)
jne 0x25db
movq 0x8a6e(%rip), %rbx      # 0xaff0
leaq 0x526e(%rip), %rsi      # 0x77f7
movl $0x2f, %edx
movq %rbx, %rdi
callq 0x21c0
leaq 0x528a(%rip), %rsi      # 0x7827
movl $0x43, %edx
movq %rbx, %rdi
callq 0x21c0
leaq 0x52ba(%rip), %rsi      # 0x786b
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 0x52b2(%rip), %rsi      # 0x78a6
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 0x5c47(%rip), %r13      # 0x8263
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 0x523b(%rip), %rsi      # 0x78c3
movl $0x29, %edx
callq 0x21c0
cmpb $0x1, (%r14)
jne 0x26b0
movq 0x8951(%rip), %rdi      # 0xaff0
leaq 0x5247(%rip), %rsi      # 0x78ed
movl $0x2d, %edx
callq 0x21c0
cmpb $0x1, 0x1(%r14)
jne 0x26cf
movq 0x8932(%rip), %rdi      # 0xaff0
leaq 0x5256(%rip), %rsi      # 0x791b
movl $0x52, %edx
callq 0x21c0
cmpb $0x1, 0x6(%r14)
jne 0x26ee
movq 0x8913(%rip), %rdi      # 0xaff0
leaq 0x528a(%rip), %rsi      # 0x796e
movl $0x47, %edx
callq 0x21c0
cmpb $0x1, 0xb(%r14)
jne 0x270d
movq 0x88f4(%rip), %rdi      # 0xaff0
leaq 0x52b3(%rip), %rsi      # 0x79b6
movl $0x4e, %edx
callq 0x21c0
cmpb $0x1, 0x10(%r14)
jne 0x272c
movq 0x88d5(%rip), %rdi      # 0xaff0
leaq 0x52e3(%rip), %rsi      # 0x7a05
movl $0x4f, %edx
callq 0x21c0
cmpb $0x1, 0x15(%r14)
jne 0x274b
movq 0x88b6(%rip), %rdi      # 0xaff0
leaq 0x5314(%rip), %rsi      # 0x7a55
movl $0x51, %edx
callq 0x21c0
cmpb $0x1, 0x4(%r14)
jne 0x276a
movq 0x8897(%rip), %rdi      # 0xaff0
leaq 0x5347(%rip), %rsi      # 0x7aa7
movl $0x18, %edx
callq 0x21c0
cmpb $0x1, 0x5(%r14)
jne 0x2789
movq 0x8878(%rip), %rdi      # 0xaff0
leaq 0x5341(%rip), %rsi      # 0x7ac0
movl $0x27, %edx
callq 0x21c0
cmpb $0x1, 0x9(%r14)
jne 0x27a8
movq 0x8859(%rip), %rdi      # 0xaff0
leaq 0x534a(%rip), %rsi      # 0x7ae8
movl $0x18, %edx
callq 0x21c0
cmpb $0x1, 0xa(%r14)
jne 0x27c7
movq 0x883a(%rip), %rdi      # 0xaff0
leaq 0x5344(%rip), %rsi      # 0x7b01
movl $0x1c, %edx
callq 0x21c0
cmpb $0x1, 0xe(%r14)
jne 0x27e6
movq 0x881b(%rip), %rdi      # 0xaff0
leaq 0x5342(%rip), %rsi      # 0x7b1e
movl $0x18, %edx
callq 0x21c0
cmpb $0x1, 0xf(%r14)
jne 0x2805
movq 0x87fc(%rip), %rdi      # 0xaff0
leaq 0x533c(%rip), %rsi      # 0x7b37
movl $0x23, %edx
callq 0x21c0
cmpb $0x1, 0x13(%r14)
jne 0x2824
movq 0x87dd(%rip), %rdi      # 0xaff0
leaq 0x5341(%rip), %rsi      # 0x7b5b
movl $0x18, %edx
callq 0x21c0
cmpb $0x1, 0x14(%r14)
jne 0x2843
movq 0x87be(%rip), %rdi      # 0xaff0
leaq 0x533b(%rip), %rsi      # 0x7b74
movl $0x24, %edx
callq 0x21c0
cmpb $0x1, 0x2(%r14)
jne 0x2862
movq 0x879f(%rip), %rdi      # 0xaff0
leaq 0x5341(%rip), %rsi      # 0x7b99
movl $0x38, %edx
callq 0x21c0
cmpb $0x1, 0x3(%r14)
jne 0x2881
movq 0x8780(%rip), %rdi      # 0xaff0
leaq 0x535b(%rip), %rsi      # 0x7bd2
movl $0x47, %edx
callq 0x21c0
cmpb $0x1, 0x7(%r14)
jne 0x28a0
movq 0x8761(%rip), %rdi      # 0xaff0
leaq 0x5384(%rip), %rsi      # 0x7c1a
movl $0x3c, %edx
callq 0x21c0
cmpb $0x1, 0x8(%r14)
jne 0x28bf
movq 0x8742(%rip), %rdi      # 0xaff0
leaq 0x53a2(%rip), %rsi      # 0x7c57
movl $0x40, %edx
callq 0x21c0
cmpb $0x1, 0xc(%r14)
jne 0x28de
movq 0x8723(%rip), %rdi      # 0xaff0
leaq 0x53c4(%rip), %rsi      # 0x7c98
movl $0x2e, %edx
callq 0x21c0
cmpb $0x1, 0xd(%r14)
jne 0x28fd
movq 0x8704(%rip), %rdi      # 0xaff0
leaq 0x53d4(%rip), %rsi      # 0x7cc7
movl $0x39, %edx
callq 0x21c0
cmpb $0x1, 0x11(%r14)
jne 0x291c
movq 0x86e5(%rip), %rdi      # 0xaff0
leaq 0x53ef(%rip), %rsi      # 0x7d01
movl $0x6b, %edx
callq 0x21c0
cmpb $0x1, 0x12(%r14)
jne 0x293b
movq 0x86c6(%rip), %rdi      # 0xaff0
leaq 0x543c(%rip), %rsi      # 0x7d6d
movl $0x77, %edx
callq 0x21c0
cmpb $0x1, 0x17(%r14)
jne 0x295a
movq 0x86a7(%rip), %rdi      # 0xaff0
leaq 0x5495(%rip), %rsi      # 0x7de5
movl $0x23, %edx
callq 0x21c0
cmpb $0x1, 0x16(%r14)
jne 0x2979
movq 0x8688(%rip), %rdi      # 0xaff0
leaq 0x549a(%rip), %rsi      # 0x7e09
movl $0x22, %edx
callq 0x21c0
leaq 0x54ac(%rip), %rsi      # 0x7e2c
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