// File: cpottamus[P]btree_lab/disksystem.cc
// Function: DiskSystem::WriteConfig()
ERROR_T DiskSystem::WriteConfig()
{
  ftruncate(fileno(configfilefd),0);
  rewind(configfilefd);
  fprintf(configfilefd,"# disksystem config file version 0.9\n");
  fprintf(configfilefd,"# filestem\n");
  fprintf(configfilefd,"%s\n",diskfilestem.c_str());
  fprintf(configfilefd,"# offset\n");
  fprintf(configfilefd,"%u\n",offset);
  fprintf(configfilefd,"# numblocks\n");
  fprintf(configfilefd,"%u\n",numblocks);
  fprintf(configfilefd,"# blocksize\n");
  fprintf(configfilefd,"%u\n",blocksize);
  fprintf(configfilefd,"# numheads\n");
  fprintf(configfilefd,"%u\n",numheads);
  fprintf(configfilefd,"# blockspertrack\n");
  fprintf(configfilefd,"%u\n",blockspertrack);
  fprintf(configfilefd,"# numtracks\n");
  fprintf(configfilefd,"%u\n",numtracks);
  fprintf(configfilefd,"# averageseeklatency\n");
  fprintf(configfilefd,"%lf\n",averageseeklatency);
  fprintf(configfilefd,"# trackseeklatency\n");
  fprintf(configfilefd,"%lf\n",trackseeklatency);
  fprintf(configfilefd,"# rotationalatency\n");
  fprintf(configfilefd,"%lf\n",rotationallatency);
  fflush(configfilefd);

  return ERROR_NOERROR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq 0x18(%rax), %rdi
callq 0x3260
movl %eax, %edi
xorl %eax, %eax
movl %eax, %esi
callq 0x3330
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x3040
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xaed9(%rip), %rsi      # 0x1026d
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xaee9(%rip), %rsi      # 0x10293
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rdi
movq 0x18(%rdi), %rax
movq %rax, -0x18(%rbp)
addq $0x28, %rdi
callq 0x30a0
movq -0x18(%rbp), %rdi
movq %rax, %rdx
leaq 0xaecb(%rip), %rsi      # 0x1029f
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xaeb9(%rip), %rsi      # 0x102a3
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl 0x48(%rax), %edx
leaq 0xaeaa(%rip), %rsi      # 0x102ad
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xae98(%rip), %rsi      # 0x102b1
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl 0x4c(%rax), %edx
leaq 0xae7b(%rip), %rsi      # 0x102ad
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xae76(%rip), %rsi      # 0x102be
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl 0x50(%rax), %edx
leaq 0xae4c(%rip), %rsi      # 0x102ad
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xae54(%rip), %rsi      # 0x102cb
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl 0x54(%rax), %edx
leaq 0xae1d(%rip), %rsi      # 0x102ad
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xae31(%rip), %rsi      # 0x102d7
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl 0x58(%rax), %edx
leaq 0xadee(%rip), %rsi      # 0x102ad
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xae14(%rip), %rsi      # 0x102e9
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl 0x5c(%rax), %edx
leaq 0xadbf(%rip), %rsi      # 0x102ad
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xadf2(%rip), %rsi      # 0x102f6
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movsd 0x68(%rax), %xmm0
leaq 0xaded(%rip), %rsi      # 0x1030c
movb $0x1, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xaddc(%rip), %rsi      # 0x10311
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movsd 0x70(%rax), %xmm0
leaq 0xadbc(%rip), %rsi      # 0x1030c
movb $0x1, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xadbf(%rip), %rsi      # 0x10325
movb $0x0, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movsd 0x78(%rax), %xmm0
leaq 0xad8b(%rip), %rsi      # 0x1030c
movb $0x1, %al
callq 0x3340
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x32d0
xorl %eax, %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)