// File: /workspace/github_cpp_makefile_star2_O2/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 $0x50, %rsp
movq %rsi, %rbx
movl %edi, %ebp
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x40(%rsp)
testb $0x1, %bpl
je 0xaa96
leaq 0x1d72(%rip), %rsi      # 0xc7e0
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 0xaacb
leaq 0x1d44(%rip), %rsi      # 0xc7e7
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 0xab00
leaq 0x1d16(%rip), %rsi      # 0xc7ee
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 0xab35
leaq 0x1ce8(%rip), %rsi      # 0xc7f5
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 0xab6a
leaq 0x1cba(%rip), %rsi      # 0xc7fc
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 0xab9f
leaq 0x1c8d(%rip), %rsi      # 0xc804
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 %bpl, %bpl
jns 0xabd3
leaq 0x1c5d(%rip), %rsi      # 0xc808
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 $0x8, %ebp
jae 0xac08
leaq 0x1c2f(%rip), %rsi      # 0xc80f
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 0xac3d
leaq 0x1bff(%rip), %rsi      # 0xc814
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 0xac72
leaq 0x1bd1(%rip), %rsi      # 0xc81b
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 0xaca7
leaq 0x1b9f(%rip), %rsi      # 0xc81e
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 0xacdc
leaq 0x1b6f(%rip), %rsi      # 0xc823
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 0xad11
leaq 0x1b42(%rip), %rsi      # 0xc82b
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 0xad46
leaq 0x1b96(%rip), %rsi      # 0xc8b4
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 0xad7b
leaq 0x1ae0(%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
btl $0x11, %ebp
jae 0xadb0
leaq 0x1ab2(%rip), %rsi      # 0xc83a
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 0xade5
leaq 0x1a85(%rip), %rsi      # 0xc842
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 0xae1a
leaq 0x1a5c(%rip), %rsi      # 0xc84e
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 0x14cb(%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 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaea9
jmp 0xaeba
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
jmp 0xaea9
jmp 0xaeba
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3100
jmp 0xaebd
jmp 0xaeba
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb7d4
movq %rbx, %rdi
callq 0x3480