// File: /workspace/github_c_makefile_star2_O0/mikeakohn[P]print_pe/build/../src/resource.c
// Function: print_fixed_file_info
int print_fixed_file_info(struct fixed_file_info_t *fixed_file_info)
{
   const char *file_os;
   const char *file_type;

   switch (fixed_file_info->FileOS)
   {
     case 0x00000000: file_os = "(UNKNOWN)"; break;
     case 0x00000001: file_os = "(WIN16)"; break;
     case 0x00000002: file_os = "(PM32)"; break;
     case 0x00000004: file_os = "(WIN32)"; break;
     case 0x00010000: file_os = "(DOS)"; break;
     case 0x00020000: file_os = "(OS216)"; break;
     case 0x00030000: file_os = "(OS232)"; break;
     case 0x00040000: file_os = "(NT)"; break;
     default: file_os = "()"; break;
   }

   switch (fixed_file_info->FileType)
   {
     case 0x00000000: file_type = "(UNKNOWN)"; break;
     case 0x00000001: file_type = "(Application)"; break;
     case 0x00000002: file_type = "(DLL)"; break;
     case 0x00000003: file_type = "(DRV)"; break;
     case 0x00000004: file_type = "(FONT)"; break;
     case 0x00000005: file_type = "(VXD)"; break;
     case 0x00000007: file_type = "(STATIC_LIB)"; break;
     default: file_type = "()"; break;
   }

   printf("        -- VS_FIXEDFILEINFO --\n");
   printf("         Signature: 0x%08x\n", fixed_file_info->Signature);
   printf("      StrucVersion: %d.%d\n",
     fixed_file_info->StrucVersion >> 16,
     fixed_file_info->StrucVersion & 0xffff);
   printf("     FileVersionMS: 0x%x\n", fixed_file_info->FileVersionMS);
   printf("     FileVersionLS: 0x%x\n", fixed_file_info->FileVersionLS);
   printf("  ProductVersionMS: 0x%x\n", fixed_file_info->ProductVersionMS);
   printf("  ProductVersionLS: 0x%x\n", fixed_file_info->ProductVersionLS);
   printf("     FileFlagsMask: 0x%08x\n", fixed_file_info->FileFlagsMask);
   printf("         FileFlags: 0x%08x\n", fixed_file_info->FileFlags);
   printf("            FileOS: %d %s\n", fixed_file_info->FileOS, file_os);
   printf("          FileType: %d %s\n", fixed_file_info->FileType, file_type);
   printf("       FileSubtype: %d\n", fixed_file_info->FileSubtype);
   printf("        FileDateMS: %d\n", fixed_file_info->FileDateMS);
   printf("        FileDateLS: %d\n", fixed_file_info->FileDateLS);
   printf("\n");

   return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x1c(%rbp)
testl %eax, %eax
je 0x788a
jmp 0x783c
movl -0x1c(%rbp), %eax
subl $0x1, %eax
je 0x7897
jmp 0x7846
movl -0x1c(%rbp), %eax
subl $0x2, %eax
je 0x78a4
jmp 0x7850
movl -0x1c(%rbp), %eax
subl $0x4, %eax
je 0x78b1
jmp 0x785a
movl -0x1c(%rbp), %eax
subl $0x10000, %eax          # imm = 0x10000
je 0x78be
jmp 0x7866
movl -0x1c(%rbp), %eax
subl $0x20000, %eax          # imm = 0x20000
je 0x78cb
jmp 0x7872
movl -0x1c(%rbp), %eax
subl $0x30000, %eax          # imm = 0x30000
je 0x78d8
jmp 0x787e
movl -0x1c(%rbp), %eax
subl $0x40000, %eax          # imm = 0x40000
je 0x78e5
jmp 0x78f2
leaq 0x47ef(%rip), %rax      # 0xc080
movq %rax, -0x10(%rbp)
jmp 0x78fd
leaq 0x47ec(%rip), %rax      # 0xc08a
movq %rax, -0x10(%rbp)
jmp 0x78fd
leaq 0x47e7(%rip), %rax      # 0xc092
movq %rax, -0x10(%rbp)
jmp 0x78fd
leaq 0x47e1(%rip), %rax      # 0xc099
movq %rax, -0x10(%rbp)
jmp 0x78fd
leaq 0x47dc(%rip), %rax      # 0xc0a1
movq %rax, -0x10(%rbp)
jmp 0x78fd
leaq 0x47d5(%rip), %rax      # 0xc0a7
movq %rax, -0x10(%rbp)
jmp 0x78fd
leaq 0x47d0(%rip), %rax      # 0xc0af
movq %rax, -0x10(%rbp)
jmp 0x78fd
leaq 0x47cb(%rip), %rax      # 0xc0b7
movq %rax, -0x10(%rbp)
jmp 0x78fd
leaq 0x47c3(%rip), %rax      # 0xc0bc
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq %rax, -0x28(%rbp)
subq $0x7, %rax
ja 0x797d
movq -0x28(%rbp), %rax
leaq 0x44b7(%rip), %rcx      # 0xbdd0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x4757(%rip), %rax      # 0xc080
movq %rax, -0x18(%rbp)
jmp 0x7988
leaq 0x4789(%rip), %rax      # 0xc0bf
movq %rax, -0x18(%rbp)
jmp 0x7988
leaq 0x478a(%rip), %rax      # 0xc0cd
movq %rax, -0x18(%rbp)
jmp 0x7988
leaq 0x4783(%rip), %rax      # 0xc0d3
movq %rax, -0x18(%rbp)
jmp 0x7988
leaq 0x477c(%rip), %rax      # 0xc0d9
movq %rax, -0x18(%rbp)
jmp 0x7988
leaq 0x4776(%rip), %rax      # 0xc0e0
movq %rax, -0x18(%rbp)
jmp 0x7988
leaq 0x476f(%rip), %rax      # 0xc0e6
movq %rax, -0x18(%rbp)
jmp 0x7988
leaq 0x4738(%rip), %rax      # 0xc0bc
movq %rax, -0x18(%rbp)
leaq 0x4764(%rip), %rdi      # 0xc0f3
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl (%rax), %esi
leaq 0x4770(%rip), %rdi      # 0xc113
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x4(%rax), %esi
shrl $0x10, %esi
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edx
andl $0xffff, %edx           # imm = 0xFFFF
leaq 0x4767(%rip), %rdi      # 0xc12f
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x476d(%rip), %rdi      # 0xc14a
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0xc(%rax), %esi
leaq 0x4772(%rip), %rdi      # 0xc164
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x10(%rax), %esi
leaq 0x4777(%rip), %rdi      # 0xc17e
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x14(%rax), %esi
leaq 0x477c(%rip), %rdi      # 0xc198
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x18(%rax), %esi
leaq 0x4781(%rip), %rdi      # 0xc1b2
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %esi
leaq 0x4788(%rip), %rdi      # 0xc1ce
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x20(%rax), %esi
movq -0x10(%rbp), %rdx
leaq 0x478b(%rip), %rdi      # 0xc1ea
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x24(%rax), %esi
movq -0x18(%rbp), %rdx
leaq 0x478d(%rip), %rdi      # 0xc205
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x28(%rax), %esi
leaq 0x4793(%rip), %rdi      # 0xc220
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x2c(%rax), %esi
leaq 0x4796(%rip), %rdi      # 0xc238
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x30(%rax), %esi
leaq 0x4799(%rip), %rdi      # 0xc250
movb $0x0, %al
callq 0x3080
leaq 0x2667(%rip), %rdi      # 0xa12c
movb $0x0, %al
callq 0x3080
xorl %eax, %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)