// File: /workspace/github_c_makefile_star2_O0/mikeakohn[P]print_pe/build/../src/dos.c
// Function: print_dos_header
int print_dos_header(struct dos_header_t *dos_header)
{
  printf("---------------------------------------------\n");
  printf("MS DOS Header\n");
  printf("---------------------------------------------\n");

  printf("      Magic Number: %c%c\n", dos_header->e_magic & 0xff, dos_header->e_magic >> 8);
  printf("Bytes On Last Page: %d\n", dos_header->e_cblp);
  printf("     Pages In File: %d\n", dos_header->e_cp);
  printf("       Relocations: %d\n", dos_header->e_crlc);
  printf("    Size Of Header: %d\n", dos_header->e_cparhdr);
  printf("    Min Extra Para: %d\n", dos_header->e_minalloc);
  printf("    Max Extra Para: %d\n", dos_header->e_maxalloc);
  printf("  Initial SS Value: %d\n", dos_header->e_ss);
  printf("  Initial SP Value: %d\n", dos_header->e_sp);
  printf("          Checksum: %d\n", dos_header->e_csum);
  printf("  Initial IP Value: %d\n", dos_header->e_ip);
  printf("  Initial CS Value: %d\n", dos_header->e_cs);
  printf("  Addr Reloc Table: %d\n", dos_header->e_lfarlc);
  printf("    Overlay Number: %d\n", dos_header->e_ovno);
  /* read_chars_bin(in,dos_header->e_res,4); */
  printf("            OEM ID: %d\n", dos_header->e_oemid);
  printf("          OEM Info: %d\n", dos_header->e_oeminfo);
  /* read_chars_bin(in,dos_header->e_res2,10); */
  printf("Addr Of New Header: %d\n", dos_header->e_lfanew);
  printf("\n");

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x4e7f(%rip), %rdi      # 0xa1f2
movb $0x0, %al
callq 0x3080
leaq 0x5ce2(%rip), %rdi      # 0xb063
movb $0x0, %al
callq 0x3080
leaq 0x4e63(%rip), %rdi      # 0xa1f2
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl (%rax), %esi
andl $0xff, %esi
movq -0x8(%rbp), %rax
movzwl (%rax), %edx
sarl $0x8, %edx
leaq 0x5cbe(%rip), %rdi      # 0xb072
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x2(%rax), %esi
leaq 0x5cc2(%rip), %rdi      # 0xb08c
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x4(%rax), %esi
leaq 0x5cc4(%rip), %rdi      # 0xb0a4
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x6(%rax), %esi
leaq 0x5cc6(%rip), %rdi      # 0xb0bc
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x8(%rax), %esi
leaq 0x5cc8(%rip), %rdi      # 0xb0d4
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0xa(%rax), %esi
leaq 0x5cca(%rip), %rdi      # 0xb0ec
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0xc(%rax), %esi
leaq 0x5ccc(%rip), %rdi      # 0xb104
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0xe(%rax), %esi
leaq 0x5cce(%rip), %rdi      # 0xb11c
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x10(%rax), %esi
leaq 0x5cd0(%rip), %rdi      # 0xb134
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x12(%rax), %esi
leaq 0x5cd2(%rip), %rdi      # 0xb14c
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x14(%rax), %esi
leaq 0x5cd4(%rip), %rdi      # 0xb164
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x16(%rax), %esi
leaq 0x5cd6(%rip), %rdi      # 0xb17c
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x18(%rax), %esi
leaq 0x5cd8(%rip), %rdi      # 0xb194
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x1a(%rax), %esi
leaq 0x5cda(%rip), %rdi      # 0xb1ac
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x24(%rax), %esi
leaq 0x5cdc(%rip), %rdi      # 0xb1c4
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movzwl 0x26(%rax), %esi
leaq 0x5cde(%rip), %rdi      # 0xb1dc
movb $0x0, %al
callq 0x3080
movq -0x8(%rbp), %rax
movl 0x3c(%rax), %esi
leaq 0x5ce1(%rip), %rdi      # 0xb1f4
movb $0x0, %al
callq 0x3080
leaq 0x4c0b(%rip), %rdi      # 0xa12c
movb $0x0, %al
callq 0x3080
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq