// File: olegk0[P]readAVI/ReadAVI.cpp
// Function: ReadAVI::read_avi_header()
int ReadAVI::read_avi_header()
{
#ifdef VERBOSE
    long offset = inFile.tellg();
#endif
    avi_header.TimeBetweenFrames = read_int();
    avi_header.MaximumDataRate = read_int();
    avi_header.PaddingGranularity = read_int();
    avi_header.Flags = read_int();
    avi_header.TotalNumberOfFrames = read_int();
    avi_header.NumberOfInitialFrames = read_int();
    avi_header.NumberOfStreams = read_int();
    avi_header.SuggestedBufferSize = read_int();
    avi_header.Width = read_int();
    avi_header.Height = read_int();
    avi_header.TimeScale = read_int();
    avi_header.DataRate = read_int();
    avi_header.StartTime = read_int();
    avi_header.DataLength = read_int();

    MSG_DBG(2, "         offset=0x%lx\n", offset);
    MSG_DBG(2, "             TimeBetweenFrames: %d\n", avi_header.TimeBetweenFrames);
    MSG_DBG(2, "               MaximumDataRate: %d\n", avi_header.MaximumDataRate);
    MSG_DBG(2, "            PaddingGranularity: %d\n", avi_header.PaddingGranularity);
    MSG_DBG(2, "                         Flags: %d\n", avi_header.Flags);
    MSG_DBG(2, "           TotalNumberOfFrames: %d\n", avi_header.TotalNumberOfFrames);
    MSG_DBG(2, "         NumberOfInitialFrames: %d\n", avi_header.NumberOfInitialFrames);
    MSG_DBG(2, "               NumberOfStreams: %d\n", avi_header.NumberOfStreams);
    MSG_DBG(2, "           SuggestedBufferSize: %d\n", avi_header.SuggestedBufferSize);
    MSG_DBG(2, "                         Width: %d\n", avi_header.Width);
    MSG_DBG(2, "                        Height: %d\n", avi_header.Height);
    MSG_DBG(2, "                     TimeScale: %d\n", avi_header.TimeScale);
    MSG_DBG(2, "                      DataRate: %d\n", avi_header.DataRate);
    MSG_DBG(2, "                     StartTime: %d\n", avi_header.StartTime);
    MSG_DBG(2, "                    DataLength: %d\n", avi_header.DataLength);

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
addq $0x20, %rdi
callq 0x23f0
movq %rax, -0x20(%rbp)
movq %rdx, -0x18(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5350
movq -0x28(%rbp), %rdi
movq %rax, -0x10(%rbp)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x228(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x22c(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x230(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x234(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x238(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x23c(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x240(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x244(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x248(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x24c(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x250(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x254(%rdi)
callq 0x3f60
movq -0x28(%rbp), %rdi
movl %eax, 0x258(%rdi)
callq 0x3f60
movl %eax, %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x25c(%rax)
movq 0x4edf(%rip), %rax      # 0x8fb0
movq (%rax), %rdi
movq -0x10(%rbp), %rdx
leaq 0x2358(%rip), %rsi      # 0x6437
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4ebf(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x228(%rax), %edx
leaq 0x213b(%rip), %rsi      # 0x623c
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4e9d(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x22c(%rax), %edx
leaq 0x213d(%rip), %rsi      # 0x6260
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4e7b(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x230(%rax), %edx
leaq 0x213f(%rip), %rsi      # 0x6284
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4e59(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x234(%rax), %edx
leaq 0x2141(%rip), %rsi      # 0x62a8
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4e37(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x238(%rax), %edx
leaq 0x2143(%rip), %rsi      # 0x62cc
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4e15(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x23c(%rax), %edx
leaq 0x2145(%rip), %rsi      # 0x62f0
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4df3(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x240(%rax), %edx
leaq 0x2147(%rip), %rsi      # 0x6314
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4dd1(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x244(%rax), %edx
leaq 0x2149(%rip), %rsi      # 0x6338
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4daf(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x248(%rax), %edx
leaq 0x214b(%rip), %rsi      # 0x635c
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4d8d(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x24c(%rax), %edx
leaq 0x214d(%rip), %rsi      # 0x6380
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4d6b(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x250(%rax), %edx
leaq 0x214f(%rip), %rsi      # 0x63a4
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4d49(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x254(%rax), %edx
leaq 0x2151(%rip), %rsi      # 0x63c8
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4d27(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x258(%rax), %edx
leaq 0x2153(%rip), %rsi      # 0x63ec
movb $0x0, %al
callq 0x2360
movq -0x28(%rbp), %rax
movq 0x4d05(%rip), %rcx      # 0x8fb0
movq (%rcx), %rdi
movl 0x25c(%rax), %edx
leaq 0x2155(%rip), %rsi      # 0x6410
movb $0x0, %al
callq 0x2360
xorl %eax, %eax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)