// File: /workspace/github_cpp_makefile_star2_O3/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 $0x40, %rsp
movq %rsi, %rbx
movl %edi, %ebp
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
btl $0x8, %edi
jae 0xd3e9
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x24a3(%rip), %rsi      # 0xf85a
leaq 0x24a2(%rip), %rdx      # 0xf860
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd3e9
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x2, %bpl
je 0xd431
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2462(%rip), %rsi      # 0xf861
leaq 0x2461(%rip), %rdx      # 0xf867
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd431
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x1, %bpl
je 0xd479
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2421(%rip), %rsi      # 0xf868
leaq 0x2423(%rip), %rdx      # 0xf871
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd479
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x4, %bpl
je 0xd4c1
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x23e3(%rip), %rsi      # 0xf872
leaq 0x23e1(%rip), %rdx      # 0xf877
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd4c1
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x9, %ebp
jae 0xd509
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x23a1(%rip), %rsi      # 0xf878
leaq 0x23a0(%rip), %rdx      # 0xf87e
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd509
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xc, %ebp
jae 0xd551
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2360(%rip), %rsi      # 0xf87f
leaq 0x2360(%rip), %rdx      # 0xf886
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd551
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xd, %ebp
jae 0xd599
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2320(%rip), %rsi      # 0xf887
leaq 0x2320(%rip), %rdx      # 0xf88e
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd599
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testw %bp, %bp
jns 0xd5e0
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x22e1(%rip), %rsi      # 0xf88f
leaq 0x22de(%rip), %rdx      # 0xf893
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd5e0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xb, %ebp
jae 0xd628
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x229e(%rip), %rsi      # 0xf894
leaq 0x229f(%rip), %rdx      # 0xf89c
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd628
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x13, %ebp
jae 0xd670
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x225f(%rip), %rsi      # 0xf89d
leaq 0x2260(%rip), %rdx      # 0xf8a5
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd670
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xa, %ebp
jae 0xd6b8
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2220(%rip), %rsi      # 0xf8a6
leaq 0x221b(%rip), %rdx      # 0xf8a8
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd6b8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x11, %ebp
jae 0xd700
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x21db(%rip), %rsi      # 0xf8a9
leaq 0x21dc(%rip), %rdx      # 0xf8b1
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd700
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x12, %ebp
jae 0xd748
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x219c(%rip), %rsi      # 0xf8b2
leaq 0x219c(%rip), %rdx      # 0xf8b9
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd748
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x10, %ebp
jae 0xd790
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x215c(%rip), %rsi      # 0xf8ba
leaq 0x2159(%rip), %rdx      # 0xf8be
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd790
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xe, %ebp
jae 0xd7d8
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2087(%rip), %rsi      # 0xf82d
leaq 0x2085(%rip), %rdx      # 0xf832
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd7d8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x14, %ebp
jae 0xd820
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x20d1(%rip), %rsi      # 0xf8bf
leaq 0x20d1(%rip), %rdx      # 0xf8c6
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd820
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x15, %ebp
jae 0xd868
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1ffd(%rip), %rsi      # 0xf833
leaq 0x1ffc(%rip), %rdx      # 0xf839
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd868
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x10, %bpl
je 0xd8b0
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2049(%rip), %rsi      # 0xf8c7
leaq 0x2049(%rip), %rdx      # 0xf8ce
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd8b0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x20, %bpl
je 0xd8f8
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2009(%rip), %rsi      # 0xf8cf
leaq 0x2009(%rip), %rdx      # 0xf8d6
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd8f8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x40, %bpl
je 0xd940
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1fc9(%rip), %rsi      # 0xf8d7
leaq 0x1fc9(%rip), %rdx      # 0xf8de
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd940
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x16, %ebp
jae 0xd988
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1f89(%rip), %rsi      # 0xf8df
leaq 0x1f8a(%rip), %rdx      # 0xf8e7
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd988
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x17, %ebp
jae 0xd9d0
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1f4a(%rip), %rsi      # 0xf8e8
leaq 0x1f4c(%rip), %rdx      # 0xf8f1
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd9d0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x18, %ebp
jae 0xda18
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1f0c(%rip), %rsi      # 0xf8f2
leaq 0x1f0b(%rip), %rdx      # 0xf8f8
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xda18
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x19, %ebp
jae 0xda60
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1ecb(%rip), %rsi      # 0xf8f9
leaq 0x1ec8(%rip), %rdx      # 0xf8fd
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xda60
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testl %ebp, %ebp
jns 0xdaa6
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1e8a(%rip), %rsi      # 0xf8fe
leaq 0x1e88(%rip), %rdx      # 0xf903
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xdaa6
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x183f(%rip), %rdx      # 0xf2ec
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0xcccf
movq %rsp, %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3300
movq (%r14), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xdae2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x20(%rsp), %rdi
movl 0x8(%rdi), %ebx
subl (%rdi), %ebx
shrl $0x5, %ebx
callq 0xdf26
movl %ebx, %eax
addq $0x40, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
jmp 0xdb5f
jmp 0xdb7c
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xdb7f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
jmp 0xdb7f
jmp 0xdb7c
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xdf26
movq %rbx, %rdi
callq 0x3460