// File: /workspace/github_cpp_makefile_star2_O1/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 0xce29
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x29ea(%rip), %rsi      # 0xf7e1
leaq 0x29e9(%rip), %rdx      # 0xf7e7
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xce29
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x2, %bpl
je 0xce71
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x29a9(%rip), %rsi      # 0xf7e8
leaq 0x29a8(%rip), %rdx      # 0xf7ee
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xce71
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x4, %bpl
je 0xceb9
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2968(%rip), %rsi      # 0xf7ef
leaq 0x2967(%rip), %rdx      # 0xf7f5
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xceb9
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x10, %bpl
je 0xcf01
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2927(%rip), %rsi      # 0xf7f6
leaq 0x2926(%rip), %rdx      # 0xf7fc
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcf01
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x20, %bpl
je 0xcf49
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x28e6(%rip), %rsi      # 0xf7fd
leaq 0x28e6(%rip), %rdx      # 0xf804
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcf49
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb $0x40, %bpl
je 0xcf91
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x28a6(%rip), %rsi      # 0xf805
leaq 0x28a2(%rip), %rdx      # 0xf808
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcf91
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
testb %bpl, %bpl
jns 0xcfd8
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2863(%rip), %rsi      # 0xf809
leaq 0x2862(%rip), %rdx      # 0xf80f
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xcfd8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x8, %ebp
jae 0xd020
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2822(%rip), %rsi      # 0xf810
leaq 0x281f(%rip), %rdx      # 0xf814
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd020
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x9, %ebp
jae 0xd068
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x27df(%rip), %rsi      # 0xf815
leaq 0x27de(%rip), %rdx      # 0xf81b
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd068
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xa, %ebp
jae 0xd0b0
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x279e(%rip), %rsi      # 0xf81c
leaq 0x2799(%rip), %rdx      # 0xf81e
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd0b0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xb, %ebp
jae 0xd0f8
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2759(%rip), %rsi      # 0xf81f
leaq 0x2756(%rip), %rdx      # 0xf823
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd0f8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xc, %ebp
jae 0xd140
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2716(%rip), %rsi      # 0xf824
leaq 0x2716(%rip), %rdx      # 0xf82b
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd140
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xd, %ebp
jae 0xd188
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x26d6(%rip), %rsi      # 0xf82c
leaq 0x26d6(%rip), %rdx      # 0xf833
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd188
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0xe, %ebp
jae 0xd1d0
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2717(%rip), %rsi      # 0xf8b5
leaq 0x2715(%rip), %rdx      # 0xf8ba
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd1d0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x15, %ebp
jae 0xd218
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x264e(%rip), %rsi      # 0xf834
leaq 0x264d(%rip), %rdx      # 0xf83a
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd218
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x11, %ebp
jae 0xd260
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x260d(%rip), %rsi      # 0xf83b
leaq 0x260d(%rip), %rdx      # 0xf842
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd260
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x12, %ebp
jae 0xd2a8
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x25cd(%rip), %rsi      # 0xf843
leaq 0x25d1(%rip), %rdx      # 0xf84e
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd2a8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
btl $0x16, %ebp
jae 0xd2f0
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2591(%rip), %rsi      # 0xf84f
leaq 0x2595(%rip), %rdx      # 0xf85a
movq %rsp, %rdi
callq 0x97be
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0xdfb6
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd2f0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x1ff5(%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 0xd32c
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 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd38d
jmp 0xd3aa
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
jmp 0xd38d
jmp 0xd3aa
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xd3ad
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3230
jmp 0xd3ad
jmp 0xd3aa
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xdf5a
movq %rbx, %rdi
callq 0x3470