// File: /workspace/github_cpp_makefile_star2_O3/4n6ist[P]usn_analytics/lib/utils.cpp
// Function: parse_file_attr(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
uint16_t parse_file_attr(uint32_t flags, string *file_attrs_str) {
  vector<string> file_attr_str;
  
  if (flags & RDONLY)
    file_attr_str.push_back("RDONLY");
  if (flags & HIDDEN)
    file_attr_str.push_back("HIDDEN");
  if (flags & SYSTEM)
    file_attr_str.push_back("SYSTEM");
  if (flags & FOLDER)
    file_attr_str.push_back("FOLDER");
  if (flags & ARCHIVE)
    file_attr_str.push_back("ARCHIVE");
  if (flags & DEV)
    file_attr_str.push_back("DEV");
  if (flags & NORMAL)
    file_attr_str.push_back("NORMAL");
  if (flags & TEMP)
    file_attr_str.push_back("TEMP");
  if (flags & SPARSE)
    file_attr_str.push_back("SPARSE");
  if (flags & RP)
    file_attr_str.push_back("RP");
  if (flags & COMP)
    file_attr_str.push_back("COMP");
  if (flags & OFFLINE)
    file_attr_str.push_back("OFFLINE");
  if (flags & NOINDEX)
    file_attr_str.push_back("NOINDEX");
  if (flags & CRYPT)
    file_attr_str.push_back("CRYPT");
  if (flags & STREAM)
    file_attr_str.push_back("STREAM");
  if (flags & NOSCRUB)
    file_attr_str.push_back("NOSCRUB");
  if (flags & RECALL_OPEN)
    file_attr_str.push_back("RECALL_OPEN");
  if (flags & RECALL_DATA)
    file_attr_str.push_back("RECALL_DATA");
  
  *file_attrs_str = join(file_attr_str, "|");
  return file_attr_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)
testb $0x1, %bpl
je 0xcded
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2a25(%rip), %rsi      # 0xf7e0
leaq 0x2a24(%rip), %rdx      # 0xf7e6
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcded
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x2, %bpl
je 0xce35
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x29e4(%rip), %rsi      # 0xf7e7
leaq 0x29e3(%rip), %rdx      # 0xf7ed
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xce35
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x4, %bpl
je 0xce7d
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x29a3(%rip), %rsi      # 0xf7ee
leaq 0x29a2(%rip), %rdx      # 0xf7f4
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xce7d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x10, %bpl
je 0xcec5
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2962(%rip), %rsi      # 0xf7f5
leaq 0x2961(%rip), %rdx      # 0xf7fb
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcec5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x20, %bpl
je 0xcf0d
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2921(%rip), %rsi      # 0xf7fc
leaq 0x2921(%rip), %rdx      # 0xf803
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcf0d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x40, %bpl
je 0xcf55
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x28e1(%rip), %rsi      # 0xf804
leaq 0x28dd(%rip), %rdx      # 0xf807
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcf55
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb %bpl, %bpl
jns 0xcf9c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x289e(%rip), %rsi      # 0xf808
leaq 0x289d(%rip), %rdx      # 0xf80e
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcf9c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x8, %ebp
jae 0xcfe4
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x285d(%rip), %rsi      # 0xf80f
leaq 0x285a(%rip), %rdx      # 0xf813
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcfe4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x9, %ebp
jae 0xd02c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x281a(%rip), %rsi      # 0xf814
leaq 0x2819(%rip), %rdx      # 0xf81a
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd02c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xa, %ebp
jae 0xd074
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x27d9(%rip), %rsi      # 0xf81b
leaq 0x27d4(%rip), %rdx      # 0xf81d
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd074
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xb, %ebp
jae 0xd0bc
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2794(%rip), %rsi      # 0xf81e
leaq 0x2791(%rip), %rdx      # 0xf822
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd0bc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xc, %ebp
jae 0xd104
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2751(%rip), %rsi      # 0xf823
leaq 0x2751(%rip), %rdx      # 0xf82a
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd104
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xd, %ebp
jae 0xd14c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2711(%rip), %rsi      # 0xf82b
leaq 0x2711(%rip), %rdx      # 0xf832
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd14c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xe, %ebp
jae 0xd194
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2752(%rip), %rsi      # 0xf8b4
leaq 0x2750(%rip), %rdx      # 0xf8b9
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd194
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x15, %ebp
jae 0xd1dc
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2689(%rip), %rsi      # 0xf833
leaq 0x2688(%rip), %rdx      # 0xf839
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd1dc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x11, %ebp
jae 0xd224
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2648(%rip), %rsi      # 0xf83a
leaq 0x2648(%rip), %rdx      # 0xf841
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd224
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x12, %ebp
jae 0xd26c
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2608(%rip), %rsi      # 0xf842
leaq 0x260c(%rip), %rdx      # 0xf84d
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd26c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x16, %ebp
jae 0xd2b4
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x25cc(%rip), %rsi      # 0xf84e
leaq 0x25d0(%rip), %rdx      # 0xf859
movq %rsp, %rdi
callq 0x981e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdf84
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd2b4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x2031(%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 0xd2f0
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 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd351
jmp 0xd36e
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
jmp 0xd351
jmp 0xd36e
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd371
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
jmp 0xd371
jmp 0xd36e
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xdf26
movq %rbx, %rdi
callq 0x3460