// File: /workspace/github_c_makefile_star2_O0/mikeakohn[P]print_pe/build/../src/pdb.c
// Function: read_pdb_dbi_stream
void read_pdb_dbi_stream(
  struct pdb_dir_t *pdb_dir,
  struct pdb_header_t *pdb_header,
  struct pdb_dbi_t *pdb_dbi,
  FILE *in)
{
  read_data(pdb_dir, 3, pdb_header->block_size, in);

  uint8_t *data = pdb_dir->heap;

  pdb_dbi->version_signature = get_int32(data + 0);
  pdb_dbi->version_header = get_uint32(data + 4);
  pdb_dbi->age = get_uint32(data + 8);
  pdb_dbi->global_stream_index = get_int16(data + 12);
  pdb_dbi->build_number = get_int16(data + 14);
  pdb_dbi->public_stream_index = get_int16(data + 16);
  pdb_dbi->pdb_dll_version = get_int16(data + 18);
  pdb_dbi->symbol_record_stream = get_int16(data + 20);
  pdb_dbi->pdb_dll_rbld = get_int16(data + 22);
  pdb_dbi->mod_info_size = get_int32(data + 24);
  pdb_dbi->section_contribution_size = get_int32(data + 28);
  pdb_dbi->section_map_size = get_int32(data + 32);
  pdb_dbi->source_info_size = get_int32(data + 36);
  pdb_dbi->type_server_size = get_int32(data + 40);
  pdb_dbi->mfc_type_server_index = get_uint32(data + 44);
  pdb_dbi->optional_debug_header_size = get_int32(data + 48);
  pdb_dbi->ec_substream_size = get_int32(data + 52);
  pdb_dbi->flags = get_int16(data + 56);
  pdb_dbi->machine = get_uint16(data + 58);
  pdb_dbi->padding = get_uint32(data + 60);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x58(%rax), %edx
movq -0x20(%rbp), %rcx
movl $0x3, %esi
callq 0x36b0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x43a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movq -0x28(%rbp), %rdi
addq $0x4, %rdi
callq 0x3c40
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
callq 0x3c40
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x28(%rbp), %rdi
addq $0xc, %rdi
callq 0x45f0
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0xc(%rax)
movq -0x28(%rbp), %rdi
addq $0xe, %rdi
callq 0x45f0
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0xe(%rax)
movq -0x28(%rbp), %rdi
addq $0x10, %rdi
callq 0x45f0
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x10(%rax)
movq -0x28(%rbp), %rdi
addq $0x12, %rdi
callq 0x45f0
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x12(%rax)
movq -0x28(%rbp), %rdi
addq $0x14, %rdi
callq 0x45f0
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x14(%rax)
movq -0x28(%rbp), %rdi
addq $0x16, %rdi
callq 0x45f0
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x16(%rax)
movq -0x28(%rbp), %rdi
addq $0x18, %rdi
callq 0x43a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x28(%rbp), %rdi
addq $0x1c, %rdi
callq 0x43a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x28(%rbp), %rdi
addq $0x20, %rdi
callq 0x43a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x28(%rbp), %rdi
addq $0x24, %rdi
callq 0x43a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x28(%rbp), %rdi
addq $0x28, %rdi
callq 0x43a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x28(%rbp), %rdi
addq $0x2c, %rdi
callq 0x3c40
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x2c(%rax)
movq -0x28(%rbp), %rdi
addq $0x30, %rdi
callq 0x43a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x30(%rax)
movq -0x28(%rbp), %rdi
addq $0x34, %rdi
callq 0x43a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x34(%rax)
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
callq 0x45f0
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x38(%rax)
movq -0x28(%rbp), %rdi
addq $0x3a, %rdi
callq 0x4370
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x3a(%rax)
movq -0x28(%rbp), %rdi
addq $0x3c, %rdi
callq 0x3c40
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x3c(%rax)
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)