// File: tylerkaraszewski[P]Argyle/FilenameResolver.cpp
// Function: FilenameResolver::getContentType(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
string FilenameResolver::getContentType(const string& filename)
{
  string contentType = "text/plain";
  size_t offset = filename.find_last_of('.');
  string ext = filename.substr(offset + 1);
  HttpRequest::toLower(ext);
  if (ext == "html")
    contentType = "text/html";
  else if (ext == "gz")
    contentType = "application/x-compressed";
  else if (ext == "avi")
    contentType = "video/avi";
  else if (ext == "mp4")
    contentType = "video/mp4";
  else if (ext == "zip")
    contentType = "application/zip";
  else if (ext == "js")
    contentType = "application/x-javascript";
  else if (ext == "css")
    contentType = "text/css";
  else if (ext == "png")
    contentType = "image/png";
  else if (ext == "jpg")
    contentType = "image/jpeg";
  else if (ext == "xml")
    contentType = "application/xml";
  else if (ext == "pdf")
    contentType = "application/pdf";
  else if (ext == "ico")
    contentType = "image/png"; // hack for favicons.

  return contentType;
}

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x28(%rsp)
movq %rdi, %rax
movq %rax, 0x20(%rsp)
movq %rdi, 0x80(%rsp)
movq %rsi, 0x78(%rsp)
movb $0x0, 0x77(%rsp)
leaq 0x76(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x46c0
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rdx
leaq 0x4b7a(%rip), %rsi      # 0x13300
callq 0x6450
jmp 0xe78d
leaq 0x76(%rsp), %rdi
callq 0x4400
movq 0x78(%rsp), %rdi
movl $0x2e, %esi
movq $-0x1, %rdx
movq %rdx, 0x18(%rsp)
callq 0x4720
movq 0x18(%rsp), %rcx
movq %rax, 0x58(%rsp)
movq 0x78(%rsp), %rsi
movq 0x58(%rsp), %rdx
incq %rdx
leaq 0x38(%rsp), %rdi
callq 0x43d0
jmp 0xe7d5
leaq 0x38(%rsp), %rdi
callq 0xb550
jmp 0xe7e1
leaq 0x4b13(%rip), %rsi      # 0x132fb
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0x17(%rsp)
jmp 0xe7f8
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0xe802
jmp 0xe867
movq 0x28(%rsp), %rdi
leaq 0x4afd(%rip), %rsi      # 0x1330b
callq 0x4540
jmp 0xe815
jmp 0xeae7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x68(%rsp)
movl %eax, 0x64(%rsp)
leaq 0x76(%rsp), %rdi
callq 0x4400
jmp 0xeb1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x68(%rsp)
movl %eax, 0x64(%rsp)
jmp 0xeb14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x68(%rsp)
movl %eax, 0x64(%rsp)
leaq 0x38(%rsp), %rdi
callq 0x4788
jmp 0xeb14
leaq 0x4aa7(%rip), %rsi      # 0x13315
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0x16(%rsp)
jmp 0xe87e
movb 0x16(%rsp), %al
testb $0x1, %al
jne 0xe888
jmp 0xe8a0
movq 0x28(%rsp), %rdi
leaq 0x4a84(%rip), %rsi      # 0x13318
callq 0x4540
jmp 0xe89b
jmp 0xeae5
leaq 0x4a90(%rip), %rsi      # 0x13337
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0x15(%rsp)
jmp 0xe8b7
movb 0x15(%rsp), %al
testb $0x1, %al
jne 0xe8c1
jmp 0xe8d9
movq 0x28(%rsp), %rdi
leaq 0x4a64(%rip), %rsi      # 0x13331
callq 0x4540
jmp 0xe8d4
jmp 0xeae3
leaq 0x4a61(%rip), %rsi      # 0x13341
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0x14(%rsp)
jmp 0xe8f0
movb 0x14(%rsp), %al
testb $0x1, %al
jne 0xe8fa
jmp 0xe912
movq 0x28(%rsp), %rdi
leaq 0x4a35(%rip), %rsi      # 0x1333b
callq 0x4540
jmp 0xe90d
jmp 0xeae1
leaq 0x4a38(%rip), %rsi      # 0x13351
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0x13(%rsp)
jmp 0xe929
movb 0x13(%rsp), %al
testb $0x1, %al
jne 0xe933
jmp 0xe94b
movq 0x28(%rsp), %rdi
leaq 0x4a06(%rip), %rsi      # 0x13345
callq 0x4540
jmp 0xe946
jmp 0xeadf
leaq 0x4a03(%rip), %rsi      # 0x13355
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0x12(%rsp)
jmp 0xe962
movb 0x12(%rsp), %al
testb $0x1, %al
jne 0xe96c
jmp 0xe984
movq 0x28(%rsp), %rdi
leaq 0x49e0(%rip), %rsi      # 0x13358
callq 0x4540
jmp 0xe97f
jmp 0xeadd
leaq 0x49eb(%rip), %rsi      # 0x13376
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0x11(%rsp)
jmp 0xe99b
movb 0x11(%rsp), %al
testb $0x1, %al
jne 0xe9a5
jmp 0xe9bd
movq 0x28(%rsp), %rdi
leaq 0x49c0(%rip), %rsi      # 0x13371
callq 0x4540
jmp 0xe9b8
jmp 0xeadb
leaq 0x49bc(%rip), %rsi      # 0x13380
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0x10(%rsp)
jmp 0xe9d4
movb 0x10(%rsp), %al
testb $0x1, %al
jne 0xe9de
jmp 0xe9f6
movq 0x28(%rsp), %rdi
leaq 0x4990(%rip), %rsi      # 0x1337a
callq 0x4540
jmp 0xe9f1
jmp 0xead9
leaq 0x4987(%rip), %rsi      # 0x13384
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0xf(%rsp)
jmp 0xea0d
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0xea17
jmp 0xea2f
movq 0x28(%rsp), %rdi
leaq 0x4965(%rip), %rsi      # 0x13388
callq 0x4540
jmp 0xea2a
jmp 0xead7
leaq 0x48ae(%rip), %rsi      # 0x132e4
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0xe(%rsp)
jmp 0xea46
movb 0xe(%rsp), %al
testb $0x1, %al
jne 0xea50
jmp 0xea65
movq 0x28(%rsp), %rdi
leaq 0x4937(%rip), %rsi      # 0x13393
callq 0x4540
jmp 0xea63
jmp 0xead5
leaq 0x4943(%rip), %rsi      # 0x133af
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0xd(%rsp)
jmp 0xea7c
movb 0xd(%rsp), %al
testb $0x1, %al
jne 0xea86
jmp 0xea9b
movq 0x28(%rsp), %rdi
leaq 0x4911(%rip), %rsi      # 0x133a3
callq 0x4540
jmp 0xea99
jmp 0xead3
leaq 0x4911(%rip), %rsi      # 0x133b3
leaq 0x38(%rsp), %rdi
callq 0xb7c0
movb %al, 0xc(%rsp)
jmp 0xeab2
movb 0xc(%rsp), %al
testb $0x1, %al
jne 0xeabc
jmp 0xead1
movq 0x28(%rsp), %rdi
leaq 0x48b2(%rip), %rsi      # 0x1337a
callq 0x4540
jmp 0xeacf
jmp 0xead1
jmp 0xead3
jmp 0xead5
jmp 0xead7
jmp 0xead9
jmp 0xeadb
jmp 0xeadd
jmp 0xeadf
jmp 0xeae1
jmp 0xeae3
jmp 0xeae5
jmp 0xeae7
movb $0x1, 0x77(%rsp)
leaq 0x38(%rsp), %rdi
callq 0x4788
testb $0x1, 0x77(%rsp)
jne 0xeb07
movq 0x28(%rsp), %rdi
callq 0x4788
movq 0x20(%rsp), %rax
addq $0x88, %rsp
retq
movq 0x28(%rsp), %rdi
callq 0x4788
movq 0x68(%rsp), %rdi
callq 0x46b0
nopl (%rax,%rax)