// File: 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
movq %rsp, %rbp
subq $0x3c0, %rsp            # imm = 0x3C0
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1a170
movl -0x4(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x17f53
leaq -0x49(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0x35d0
movq -0x330(%rbp), %rdx
leaq 0x48ed(%rip), %rsi      # 0x1c7e1
leaq -0x48(%rbp), %rdi
callq 0xa400
jmp 0x17eff
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1a190
jmp 0x17f0e
leaq -0x48(%rbp), %rdi
callq 0x31d0
leaq -0x49(%rbp), %rdi
callq 0x33c0
jmp 0x17f53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x17f45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x31d0
leaq -0x49(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x17fe8
leaq -0x81(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0x35d0
movq -0x338(%rbp), %rdx
leaq 0x4865(%rip), %rsi      # 0x1c7e8
leaq -0x80(%rbp), %rdi
callq 0xa400
jmp 0x17f8e
leaq -0x28(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x1a190
jmp 0x17f9d
leaq -0x80(%rbp), %rdi
callq 0x31d0
leaq -0x81(%rbp), %rdi
callq 0x33c0
jmp 0x17fe8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x17fd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x31d0
leaq -0x81(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x18089
leaq -0xa9(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x35d0
movq -0x340(%rbp), %rdx
leaq 0x47d7(%rip), %rsi      # 0x1c7ef
leaq -0xa8(%rbp), %rdi
callq 0xa400
jmp 0x18026
leaq -0x28(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x1a190
jmp 0x18038
leaq -0xa8(%rbp), %rdi
callq 0x31d0
leaq -0xa9(%rbp), %rdi
callq 0x33c0
jmp 0x18089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x18078
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x31d0
leaq -0xa9(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x1812a
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x348(%rbp)
callq 0x35d0
movq -0x348(%rbp), %rdx
leaq 0x473d(%rip), %rsi      # 0x1c7f6
leaq -0xd0(%rbp), %rdi
callq 0xa400
jmp 0x180c7
leaq -0x28(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x1a190
jmp 0x180d9
leaq -0xd0(%rbp), %rdi
callq 0x31d0
leaq -0xd1(%rbp), %rdi
callq 0x33c0
jmp 0x1812a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x18119
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x31d0
leaq -0xd1(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x181cb
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x35d0
movq -0x350(%rbp), %rdx
leaq 0x46a3(%rip), %rsi      # 0x1c7fd
leaq -0xf8(%rbp), %rdi
callq 0xa400
jmp 0x18168
leaq -0x28(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x1a190
jmp 0x1817a
leaq -0xf8(%rbp), %rdi
callq 0x31d0
leaq -0xf9(%rbp), %rdi
callq 0x33c0
jmp 0x181cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x181ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x31d0
leaq -0xf9(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x1826c
leaq -0x121(%rbp), %rdi
movq %rdi, -0x358(%rbp)
callq 0x35d0
movq -0x358(%rbp), %rdx
leaq 0x460a(%rip), %rsi      # 0x1c805
leaq -0x120(%rbp), %rdi
callq 0xa400
jmp 0x18209
leaq -0x28(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x1a190
jmp 0x1821b
leaq -0x120(%rbp), %rdi
callq 0x31d0
leaq -0x121(%rbp), %rdi
callq 0x33c0
jmp 0x1826c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1825b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x31d0
leaq -0x121(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x1830f
leaq -0x149(%rbp), %rdi
movq %rdi, -0x360(%rbp)
callq 0x35d0
movq -0x360(%rbp), %rdx
leaq 0x456b(%rip), %rsi      # 0x1c809
leaq -0x148(%rbp), %rdi
callq 0xa400
jmp 0x182ac
leaq -0x28(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x1a190
jmp 0x182be
leaq -0x148(%rbp), %rdi
callq 0x31d0
leaq -0x149(%rbp), %rdi
callq 0x33c0
jmp 0x1830f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x182fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x31d0
leaq -0x149(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
je 0x183b2
leaq -0x171(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0x35d0
movq -0x368(%rbp), %rdx
leaq 0x44cf(%rip), %rsi      # 0x1c810
leaq -0x170(%rbp), %rdi
callq 0xa400
jmp 0x1834f
leaq -0x28(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x1a190
jmp 0x18361
leaq -0x170(%rbp), %rdi
callq 0x31d0
leaq -0x171(%rbp), %rdi
callq 0x33c0
jmp 0x183b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x183a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x31d0
leaq -0x171(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
je 0x18455
leaq -0x199(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x35d0
movq -0x370(%rbp), %rdx
leaq 0x4431(%rip), %rsi      # 0x1c815
leaq -0x198(%rbp), %rdi
callq 0xa400
jmp 0x183f2
leaq -0x28(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x1a190
jmp 0x18404
leaq -0x198(%rbp), %rdi
callq 0x31d0
leaq -0x199(%rbp), %rdi
callq 0x33c0
jmp 0x18455
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x18444
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x31d0
leaq -0x199(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x184f8
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x378(%rbp)
callq 0x35d0
movq -0x378(%rbp), %rdx
leaq 0x4395(%rip), %rsi      # 0x1c81c
leaq -0x1c0(%rbp), %rdi
callq 0xa400
jmp 0x18495
leaq -0x28(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x1a190
jmp 0x184a7
leaq -0x1c0(%rbp), %rdi
callq 0x31d0
leaq -0x1c1(%rbp), %rdi
callq 0x33c0
jmp 0x184f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x184e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x31d0
leaq -0x1c1(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0x1859b
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x35d0
movq -0x380(%rbp), %rdx
leaq 0x42f5(%rip), %rsi      # 0x1c81f
leaq -0x1e8(%rbp), %rdi
callq 0xa400
jmp 0x18538
leaq -0x28(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x1a190
jmp 0x1854a
leaq -0x1e8(%rbp), %rdi
callq 0x31d0
leaq -0x1e9(%rbp), %rdi
callq 0x33c0
jmp 0x1859b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1858a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x31d0
leaq -0x1e9(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x1863e
leaq -0x211(%rbp), %rdi
movq %rdi, -0x388(%rbp)
callq 0x35d0
movq -0x388(%rbp), %rdx
leaq 0x4257(%rip), %rsi      # 0x1c824
leaq -0x210(%rbp), %rdi
callq 0xa400
jmp 0x185db
leaq -0x28(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x1a190
jmp 0x185ed
leaq -0x210(%rbp), %rdi
callq 0x31d0
leaq -0x211(%rbp), %rdi
callq 0x33c0
jmp 0x1863e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1862d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x31d0
leaq -0x211(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x186e1
leaq -0x239(%rbp), %rdi
movq %rdi, -0x390(%rbp)
callq 0x35d0
movq -0x390(%rbp), %rdx
leaq 0x41bc(%rip), %rsi      # 0x1c82c
leaq -0x238(%rbp), %rdi
callq 0xa400
jmp 0x1867e
leaq -0x28(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x1a190
jmp 0x18690
leaq -0x238(%rbp), %rdi
callq 0x31d0
leaq -0x239(%rbp), %rdi
callq 0x33c0
jmp 0x186e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x186d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x31d0
leaq -0x239(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
je 0x18784
leaq -0x261(%rbp), %rdi
movq %rdi, -0x398(%rbp)
callq 0x35d0
movq -0x398(%rbp), %rdx
leaq 0x41a2(%rip), %rsi      # 0x1c8b5
leaq -0x260(%rbp), %rdi
callq 0xa400
jmp 0x18721
leaq -0x28(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x1a190
jmp 0x18733
leaq -0x260(%rbp), %rdi
callq 0x31d0
leaq -0x261(%rbp), %rdi
callq 0x33c0
jmp 0x18784
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x18773
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x31d0
leaq -0x261(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x200000, %eax         # imm = 0x200000
cmpl $0x0, %eax
je 0x18827
leaq -0x289(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x35d0
movq -0x3a0(%rbp), %rdx
leaq 0x407e(%rip), %rsi      # 0x1c834
leaq -0x288(%rbp), %rdi
callq 0xa400
jmp 0x187c4
leaq -0x28(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x1a190
jmp 0x187d6
leaq -0x288(%rbp), %rdi
callq 0x31d0
leaq -0x289(%rbp), %rdi
callq 0x33c0
jmp 0x18827
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x18816
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x31d0
leaq -0x289(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x20000, %eax          # imm = 0x20000
cmpl $0x0, %eax
je 0x188ca
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
callq 0x35d0
movq -0x3a8(%rbp), %rdx
leaq 0x3fe2(%rip), %rsi      # 0x1c83b
leaq -0x2b0(%rbp), %rdi
callq 0xa400
jmp 0x18867
leaq -0x28(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x1a190
jmp 0x18879
leaq -0x2b0(%rbp), %rdi
callq 0x31d0
leaq -0x2b1(%rbp), %rdi
callq 0x33c0
jmp 0x188ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x188b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x31d0
leaq -0x2b1(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x40000, %eax          # imm = 0x40000
cmpl $0x0, %eax
je 0x1896d
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x35d0
movq -0x3b0(%rbp), %rdx
leaq 0x3f47(%rip), %rsi      # 0x1c843
leaq -0x2d8(%rbp), %rdi
callq 0xa400
jmp 0x1890a
leaq -0x28(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x1a190
jmp 0x1891c
leaq -0x2d8(%rbp), %rdi
callq 0x31d0
leaq -0x2d9(%rbp), %rdi
callq 0x33c0
jmp 0x1896d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1895c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x31d0
leaq -0x2d9(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
movl -0x4(%rbp), %eax
andl $0x400000, %eax         # imm = 0x400000
cmpl $0x0, %eax
je 0x18a0d
leaq -0x301(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
callq 0x35d0
movq -0x3b8(%rbp), %rdx
leaq 0x3eb0(%rip), %rsi      # 0x1c84f
leaq -0x300(%rbp), %rdi
callq 0xa400
jmp 0x189ad
leaq -0x28(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x1a190
jmp 0x189bf
leaq -0x300(%rbp), %rdi
callq 0x31d0
leaq -0x301(%rbp), %rdi
callq 0x33c0
jmp 0x18a0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x189ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x31d0
leaq -0x301(%rbp), %rdi
callq 0x33c0
jmp 0x18a77
leaq 0x38da(%rip), %rdx      # 0x1c2ee
leaq -0x328(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x17db0
jmp 0x18a26
movq -0x10(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x3450
leaq -0x328(%rbp), %rdi
callq 0x31d0
leaq -0x28(%rbp), %rdi
callq 0x1a150
movw %ax, -0x3ba(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1a1c0
movw -0x3ba(%rbp), %ax
addq $0x3c0, %rsp            # imm = 0x3C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1a1c0
movq -0x58(%rbp), %rdi
callq 0x35c0
nopl (%rax)