// File: stevedonovan[P]outstreams/speedtest.cpp
// Function: main
int main(int argc, char **argv)
{
    U64 start = millisecs();
    testwrite_f("f.dat");
    U64 diff = millisecs() - start;
    U64 stdio_ms = diff;
    outs("stdio ")(diff)("ms")();
    start = millisecs();
    testwrite_s("s.dat");
    diff = millisecs() - start;
    outs("outstreams ")(diff)("ms")();
    start = millisecs();
    testwrite_i("io.dat");
    diff = millisecs() - start;
    outs("iostreams ")(diff)("ms")();
    exec("rm f.dat s.dat io.dat");
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
callq 0x2b00
movq %rax, -0x18(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x22b0
movq -0xb8(%rbp), %rdx
leaq 0x17c6(%rip), %rsi      # 0x4016
leaq -0x38(%rbp), %rdi
callq 0x2b80
jmp 0x285b
leaq -0x38(%rbp), %rdi
callq 0x25c0
jmp 0x2866
leaq -0x38(%rbp), %rdi
callq 0x20d0
leaq -0x39(%rbp), %rdi
callq 0x21a0
callq 0x2b00
movq -0x18(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq 0x3949(%rip), %rdi      # 0x61e0
leaq 0x177e(%rip), %rsi      # 0x401c
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0xc8(%rbp)
callq 0x2c30
movq -0xc8(%rbp), %rdx
movq %rax, %rdi
movq -0x58(%rbp), %rsi
callq 0x2c70
movq -0xc8(%rbp), %rdx
movq %rax, %rdi
leaq 0x1751(%rip), %rsi      # 0x4023
callq 0x2c30
movq %rax, %rdi
callq 0x3700
callq 0x2b00
movq %rax, -0x18(%rbp)
leaq -0x81(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x22b0
movq -0xc0(%rbp), %rdx
leaq 0x171d(%rip), %rsi      # 0x4026
leaq -0x80(%rbp), %rdi
callq 0x2b80
jmp 0x2914
leaq -0x80(%rbp), %rdi
callq 0x24a0
jmp 0x291f
leaq -0x80(%rbp), %rdi
callq 0x20d0
leaq -0x81(%rbp), %rdi
callq 0x21a0
callq 0x2b00
movq -0x18(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x58(%rbp)
leaq 0x3895(%rip), %rdi      # 0x61e0
leaq 0x16da(%rip), %rsi      # 0x402c
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0xd8(%rbp)
callq 0x2c30
movq -0xd8(%rbp), %rdx
movq %rax, %rdi
movq -0x58(%rbp), %rsi
callq 0x2c70
movq -0xd8(%rbp), %rdx
movq %rax, %rdi
leaq 0x169d(%rip), %rsi      # 0x4023
callq 0x2c30
movq %rax, %rdi
callq 0x3700
callq 0x2b00
movq %rax, -0x18(%rbp)
leaq -0xa9(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x22b0
movq -0xd0(%rbp), %rdx
leaq 0x1695(%rip), %rsi      # 0x4052
leaq -0xa8(%rbp), %rdi
callq 0x2b80
jmp 0x29cb
leaq -0xa8(%rbp), %rdi
callq 0x2650
jmp 0x29d9
leaq -0xa8(%rbp), %rdi
callq 0x20d0
leaq -0xa9(%rbp), %rdi
callq 0x21a0
callq 0x2b00
subq -0x18(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x37db(%rip), %rdi      # 0x61e0
leaq 0x162c(%rip), %rsi      # 0x4038
xorl %eax, %eax
movl %eax, %edx
callq 0x2c30
movq %rax, %rdi
movq -0x58(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x2c70
movq %rax, %rdi
leaq 0x15f4(%rip), %rsi      # 0x4023
xorl %eax, %eax
movl %eax, %edx
callq 0x2c30
movq %rax, %rdi
callq 0x3700
leaq 0x15fc(%rip), %rdi      # 0x4043
callq 0x27f0
xorl %eax, %eax
addq $0xe0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2a7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x20d0
leaq -0x39(%rbp), %rdi
callq 0x21a0
jmp 0x2ae8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2aa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x20d0
leaq -0x81(%rbp), %rdi
callq 0x21a0
jmp 0x2ae8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2adc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x20d0
leaq -0xa9(%rbp), %rdi
callq 0x21a0
movq -0x48(%rbp), %rdi
callq 0x22a0
nopw %cs:(%rax,%rax)