// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/utils.cpp
// Function: parse_reason(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
uint16_t parse_reason(uint32_t flags, string *reasons_str) {
  vector<string> reason_str;
  
  if (flags & CREATE)
    reason_str.push_back("CREATE");  
  if (flags & EXTEND)
    reason_str.push_back("EXTEND");
  if (flags & OVERWRITE)
    reason_str.push_back("OVERWRITE");
  if (flags & TRUNC)
    reason_str.push_back("TRUNC");
  if (flags & DELETE)
    reason_str.push_back("DELETE");
  if (flags & OLDNAME)
    reason_str.push_back("OLDNAME");
  if (flags & NEWNAME)
    reason_str.push_back("NEWNAME");
  if (flags & INFO)
    reason_str.push_back("INFO");
  if (flags & SECURITY)
    reason_str.push_back("SECURITY");
  if (flags & OBJECTID)
    reason_str.push_back("OBJECTID");
  if (flags & EA)
    reason_str.push_back("EA");
  if (flags & COMPRESS)
    reason_str.push_back("COMPRESS");
  if (flags & ENCRYPT)
    reason_str.push_back("ENCRYPT");
  if (flags & LINK)
    reason_str.push_back("LINK");
  if (flags & INDEX)
    reason_str.push_back("INDEX");
  if (flags & REPARSE)
    reason_str.push_back("REPARSE");
  if (flags & STREAM)
    reason_str.push_back("STREAM");
  if (flags & NAMED_O)
    reason_str.push_back("NAMED_O");
  if (flags & NAMED_E)
    reason_str.push_back("NAMED_E");
  if (flags & NAMED_T)
    reason_str.push_back("NAMED_T");
  if (flags & TRANSACT)
    reason_str.push_back("TRANSACT");
  if (flags & INTEGRITY)
    reason_str.push_back("INTEGRITY");
  if (flags & RENAME)
    reason_str.push_back("RENAME");
  if (flags & MOVE)
    reason_str.push_back("MOVE");
  if (flags & CLOSE)
    reason_str.push_back("CLOSE");

  *reasons_str = join(reason_str, "|");
  return reason_str.size();
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x50, %rsp
movq %rsi, %rbx
movl %edi, %ebp
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x40(%rsp)
btl $0x8, %edi
jae 0xaf1f
leaq 0x1963(%rip), %rsi      # 0xc85a
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
testb $0x2, %bpl
je 0xaf54
leaq 0x1935(%rip), %rsi      # 0xc861
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
testb $0x1, %bpl
je 0xaf89
leaq 0x1907(%rip), %rsi      # 0xc868
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
testb $0x4, %bpl
je 0xafbe
leaq 0x18dc(%rip), %rsi      # 0xc872
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x9, %ebp
jae 0xaff3
leaq 0x18ad(%rip), %rsi      # 0xc878
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0xc, %ebp
jae 0xb028
leaq 0x187f(%rip), %rsi      # 0xc87f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0xd, %ebp
jae 0xb05d
leaq 0x1852(%rip), %rsi      # 0xc887
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
testw %bp, %bp
jns 0xb091
leaq 0x1826(%rip), %rsi      # 0xc88f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0xb, %ebp
jae 0xb0c6
leaq 0x17f6(%rip), %rsi      # 0xc894
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x13, %ebp
jae 0xb0fb
leaq 0x17ca(%rip), %rsi      # 0xc89d
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0xa, %ebp
jae 0xb130
leaq 0x179e(%rip), %rsi      # 0xc8a6
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x11, %ebp
jae 0xb165
leaq 0x176c(%rip), %rsi      # 0xc8a9
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x12, %ebp
jae 0xb19a
leaq 0x1740(%rip), %rsi      # 0xc8b2
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x10, %ebp
jae 0xb1cf
leaq 0x1713(%rip), %rsi      # 0xc8ba
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0xe, %ebp
jae 0xb204
leaq 0x1651(%rip), %rsi      # 0xc82d
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x14, %ebp
jae 0xb239
leaq 0x16ae(%rip), %rsi      # 0xc8bf
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x15, %ebp
jae 0xb26e
leaq 0x15ed(%rip), %rsi      # 0xc833
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
testb $0x10, %bpl
je 0xb2a3
leaq 0x164c(%rip), %rsi      # 0xc8c7
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
testb $0x20, %bpl
je 0xb2d8
leaq 0x161f(%rip), %rsi      # 0xc8cf
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
testb $0x40, %bpl
je 0xb30d
leaq 0x15f2(%rip), %rsi      # 0xc8d7
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x16, %ebp
jae 0xb342
leaq 0x15c5(%rip), %rsi      # 0xc8df
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x17, %ebp
jae 0xb377
leaq 0x1599(%rip), %rsi      # 0xc8e8
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x18, %ebp
jae 0xb3ac
leaq 0x156e(%rip), %rsi      # 0xc8f2
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
btl $0x19, %ebp
jae 0xb3e1
leaq 0x1540(%rip), %rsi      # 0xc8f9
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
testl %ebp, %ebp
jns 0xb414
leaq 0x1512(%rip), %rsi      # 0xc8fe
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7072
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb850
leaq 0x10(%rsp), %rdi
callq 0x3100
leaq 0xed1(%rip), %rdx       # 0xc2ec
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xa9ac
leaq 0x10(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3320
movq %r14, %rdi
callq 0x3100
leaq 0x30(%rsp), %rdi
movl 0x8(%rdi), %ebx
subl (%rdi), %ebx
shrl $0x5, %ebx
callq 0xb7d4
movl %ebx, %eax
addq $0x50, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
jmp 0xb4bf
jmp 0xb4d0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3100
jmp 0xb4d3
jmp 0xb4d0
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb7d4
movq %rbx, %rdi
callq 0x3480