// File: /workspace/github_cpp_makefile_star2_O1/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 0xd425
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2468(%rip), %rsi      # 0xf85b
leaq 0x2467(%rip), %rdx      # 0xf861
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd425
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x2, %bpl
je 0xd46d
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2427(%rip), %rsi      # 0xf862
leaq 0x2426(%rip), %rdx      # 0xf868
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd46d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x1, %bpl
je 0xd4b5
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x23e6(%rip), %rsi      # 0xf869
leaq 0x23e8(%rip), %rdx      # 0xf872
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd4b5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x4, %bpl
je 0xd4fd
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x23a8(%rip), %rsi      # 0xf873
leaq 0x23a6(%rip), %rdx      # 0xf878
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd4fd
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x9, %ebp
jae 0xd545
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2366(%rip), %rsi      # 0xf879
leaq 0x2365(%rip), %rdx      # 0xf87f
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd545
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xc, %ebp
jae 0xd58d
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2325(%rip), %rsi      # 0xf880
leaq 0x2325(%rip), %rdx      # 0xf887
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd58d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xd, %ebp
jae 0xd5d5
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x22e5(%rip), %rsi      # 0xf888
leaq 0x22e5(%rip), %rdx      # 0xf88f
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd5d5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testw %bp, %bp
jns 0xd61c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x22a6(%rip), %rsi      # 0xf890
leaq 0x22a3(%rip), %rdx      # 0xf894
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd61c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xb, %ebp
jae 0xd664
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2263(%rip), %rsi      # 0xf895
leaq 0x2264(%rip), %rdx      # 0xf89d
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd664
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x13, %ebp
jae 0xd6ac
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2224(%rip), %rsi      # 0xf89e
leaq 0x2225(%rip), %rdx      # 0xf8a6
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd6ac
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xa, %ebp
jae 0xd6f4
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x21e5(%rip), %rsi      # 0xf8a7
leaq 0x21e0(%rip), %rdx      # 0xf8a9
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd6f4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x11, %ebp
jae 0xd73c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x21a0(%rip), %rsi      # 0xf8aa
leaq 0x21a1(%rip), %rdx      # 0xf8b2
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd73c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x12, %ebp
jae 0xd784
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2161(%rip), %rsi      # 0xf8b3
leaq 0x2161(%rip), %rdx      # 0xf8ba
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd784
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x10, %ebp
jae 0xd7cc
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2121(%rip), %rsi      # 0xf8bb
leaq 0x211e(%rip), %rdx      # 0xf8bf
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd7cc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xe, %ebp
jae 0xd814
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x204c(%rip), %rsi      # 0xf82e
leaq 0x204a(%rip), %rdx      # 0xf833
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd814
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x14, %ebp
jae 0xd85c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2096(%rip), %rsi      # 0xf8c0
leaq 0x2096(%rip), %rdx      # 0xf8c7
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd85c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x15, %ebp
jae 0xd8a4
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1fc2(%rip), %rsi      # 0xf834
leaq 0x1fc1(%rip), %rdx      # 0xf83a
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd8a4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x10, %bpl
je 0xd8ec
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x200e(%rip), %rsi      # 0xf8c8
leaq 0x200e(%rip), %rdx      # 0xf8cf
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd8ec
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x20, %bpl
je 0xd934
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1fce(%rip), %rsi      # 0xf8d0
leaq 0x1fce(%rip), %rdx      # 0xf8d7
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd934
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x40, %bpl
je 0xd97c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1f8e(%rip), %rsi      # 0xf8d8
leaq 0x1f8e(%rip), %rdx      # 0xf8df
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd97c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x16, %ebp
jae 0xd9c4
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1f4e(%rip), %rsi      # 0xf8e0
leaq 0x1f4f(%rip), %rdx      # 0xf8e8
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd9c4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x17, %ebp
jae 0xda0c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1f0f(%rip), %rsi      # 0xf8e9
leaq 0x1f11(%rip), %rdx      # 0xf8f2
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xda0c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x18, %ebp
jae 0xda54
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1ed1(%rip), %rsi      # 0xf8f3
leaq 0x1ed0(%rip), %rdx      # 0xf8f9
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xda54
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x19, %ebp
jae 0xda9c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1e90(%rip), %rsi      # 0xf8fa
leaq 0x1e8d(%rip), %rdx      # 0xf8fe
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xda9c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testl %ebp, %ebp
jns 0xdae2
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1e4f(%rip), %rsi      # 0xf8ff
leaq 0x1e4d(%rip), %rdx      # 0xf904
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xdae2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x1803(%rip), %rdx      # 0xf2ec
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0xcd0b
movq %rsp, %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3300
movq (%r14), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xdb1e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x20(%rsp), %rdi
movl 0x8(%rdi), %ebx
subl (%rdi), %ebx
shrl $0x5, %ebx
callq 0xdf5a
movl %ebx, %eax
addq $0x40, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
jmp 0xdb9b
jmp 0xdbb8
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xdbbb
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
jmp 0xdbbb
jmp 0xdbb8
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xdf5a
movq %rbx, %rdi
callq 0x3470