// File: halfflat[P]tinyopt/test/test_parse.cc
// Function: parse_value_Test::TestBody()
TEST(parse, value) {
    {
        mockargs M("-s\0003\0end\0");
        char** arg = M.argv;

        auto r = to::parse<int>(arg, "-s", "--long");
        ASSERT_TRUE(r);
        ASSERT_EQ(3, *r);
        ASSERT_EQ(M.argv+2, arg);
    }

    {
        mockargs M("-s\0fish\0");
        char** arg = M.argv;

        EXPECT_THROW(to::parse<int>(arg, "-s"), to::option_parse_error);
    }

    {
        mockargs M("--long\0-123\0end\0");
        char** arg = M.argv;

        auto r = to::parse<int>(arg, "--long");
        ASSERT_TRUE(r);
        ASSERT_EQ(-123, *r);
        ASSERT_EQ(M.argv+2, arg);
    }

    {
        mockargs M("--long\0");
        char** arg = M.argv;

        EXPECT_THROW(to::parse<int>(arg, "--long"), to::missing_argument);
    }

    {
        mockargs M("--xyz\0end\0");
        char** arg = M.argv;

        auto r = to::parse<int>(arg, "-s", "--long");
        ASSERT_FALSE(r);
        ASSERT_EQ(M.argv, arg);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4e0, %rsp            # imm = 0x4E0
movq %rdi, -0x8(%rbp)
leaq 0x7a284(%rip), %rsi     # 0xcab8a
leaq -0x30(%rbp), %rdi
callq 0x4bfe0
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq 0x79daf(%rip), %rsi     # 0xca6cd
leaq -0x68(%rbp), %rdi
callq 0x38290
jmp 0x50929
leaq 0x78c87(%rip), %rcx     # 0xc95b7
leaq -0x40(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x68(%rbp), %rdx
callq 0x534d0
jmp 0x50943
leaq -0x68(%rbp), %rdi
callq 0x384f0
xorl %eax, %eax
movl %eax, %edx
leaq -0x88(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1d6b0
jmp 0x50962
leaq -0x88(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x461(%rbp)
jmp 0x50976
movb -0x461(%rbp), %al
testb $0x1, %al
jne 0x50982
jmp 0x509d4
jmp 0x50ad0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50ec8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x384f0
jmp 0x50ec8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50ebf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50b54
leaq -0x90(%rbp), %rdi
callq 0x84210
jmp 0x509e2
leaq 0x79cf8(%rip), %rdx     # 0xca6e1
leaq 0x77a5f(%rip), %rcx     # 0xc844f
leaq 0x77a5e(%rip), %r8      # 0xc8455
leaq -0xb8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x7d210
jmp 0x50a0c
leaq -0xb8(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x79c5d(%rip), %rdx     # 0xca67f
leaq -0x98(%rbp), %rdi
movl $0x2, %esi
movl $0x41, %ecx
callq 0x80580
jmp 0x50a3a
leaq -0x98(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x7d370
jmp 0x50a4f
leaq -0x98(%rbp), %rdi
callq 0x80600
leaq -0xb8(%rbp), %rdi
callq 0x10fc8
leaq -0x90(%rbp), %rdi
callq 0x1d500
movl $0x1, -0xbc(%rbp)
jmp 0x50ada
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50abf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50ab3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x80600
leaq -0xb8(%rbp), %rdi
callq 0x10fc8
leaq -0x90(%rbp), %rdi
callq 0x1d500
jmp 0x50b54
movl $0x0, -0xbc(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x1d520
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x50db7
jmp 0x50af6
movl $0x3, -0xd4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x1d6f0
movq %rax, %r8
leaq 0x7a2e7(%rip), %rsi     # 0xcadfa
leaq 0x79bc6(%rip), %rdx     # 0xca6e0
leaq -0xd0(%rbp), %rdi
leaq -0xd4(%rbp), %rcx
callq 0x1d5d0
jmp 0x50b2f
leaq -0xd0(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x462(%rbp)
jmp 0x50b43
movb -0x462(%rbp), %al
testb $0x1, %al
jne 0x50b4f
jmp 0x50b76
jmp 0x50c2f
leaq -0x88(%rbp), %rdi
callq 0x1d520
jmp 0x50ebf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50cb0
leaq -0xe0(%rbp), %rdi
callq 0x84210
jmp 0x50b84
leaq -0xd0(%rbp), %rdi
callq 0x1d620
movq %rax, -0x470(%rbp)
jmp 0x50b99
movq -0x470(%rbp), %r8
leaq 0x79ad8(%rip), %rdx     # 0xca67f
leaq -0xe8(%rbp), %rdi
movl $0x2, %esi
movl $0x42, %ecx
callq 0x80580
jmp 0x50bbf
leaq -0xe8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x7d370
jmp 0x50bd4
leaq -0xe8(%rbp), %rdi
callq 0x80600
leaq -0xe0(%rbp), %rdi
callq 0x1d500
movl $0x1, -0xbc(%rbp)
jmp 0x50c39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50c1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x80600
leaq -0xe0(%rbp), %rdi
callq 0x1d500
jmp 0x50cb0
movl $0x0, -0xbc(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x1d520
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x50db7
jmp 0x50c55
movq -0x28(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x100(%rbp)
leaq 0x79a78(%rip), %rsi     # 0xca6e3
leaq 0x78a13(%rip), %rdx     # 0xc9685
leaq -0xf8(%rbp), %rdi
leaq -0x100(%rbp), %rcx
leaq -0x38(%rbp), %r8
callq 0x53440
jmp 0x50c8b
leaq -0xf8(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x471(%rbp)
jmp 0x50c9f
movb -0x471(%rbp), %al
testb $0x1, %al
jne 0x50cab
jmp 0x50cd2
jmp 0x50d8b
leaq -0xd0(%rbp), %rdi
callq 0x1d520
jmp 0x50ebf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50eb3
leaq -0x108(%rbp), %rdi
callq 0x84210
jmp 0x50ce0
leaq -0xf8(%rbp), %rdi
callq 0x1d620
movq %rax, -0x480(%rbp)
jmp 0x50cf5
movq -0x480(%rbp), %r8
leaq 0x7997c(%rip), %rdx     # 0xca67f
leaq -0x110(%rbp), %rdi
movl $0x2, %esi
movl $0x43, %ecx
callq 0x80580
jmp 0x50d1b
leaq -0x110(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x7d370
jmp 0x50d30
leaq -0x110(%rbp), %rdi
callq 0x80600
leaq -0x108(%rbp), %rdi
callq 0x1d500
movl $0x1, -0xbc(%rbp)
jmp 0x50d95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50d7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x80600
leaq -0x108(%rbp), %rdi
callq 0x1d500
jmp 0x50eb3
movl $0x0, -0xbc(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x1d520
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x50db7
jmp 0x50dad
movl $0x0, -0xbc(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x1d710
leaq -0x30(%rbp), %rdi
callq 0x4c380
movl -0xbc(%rbp), %eax
testl %eax, %eax
je 0x50dda
jmp 0x50dd5
jmp 0x51df4
leaq 0x79db3(%rip), %rsi     # 0xcab94
leaq -0x138(%rbp), %rdi
callq 0x4bfe0
movq -0x130(%rbp), %rax
movq %rax, -0x140(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x150(%rbp)
movaps %xmm0, -0x160(%rbp)
leaq -0x160(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0x39af0
movq -0x490(%rbp), %rdi
callq 0x39b10
movb %al, -0x481(%rbp)
jmp 0x50e33
movb -0x481(%rbp), %al
testb $0x1, %al
jne 0x50e42
jmp 0x510c2
movb $0x0, -0x161(%rbp)
callq 0x841d0
movb %al, -0x491(%rbp)
jmp 0x50e56
movb -0x491(%rbp), %al
testb $0x1, %al
jne 0x50e65
jmp 0x51066
leaq 0x79861(%rip), %rsi     # 0xca6cd
leaq -0x198(%rbp), %rdi
callq 0x38290
jmp 0x50e7a
leaq -0x16c(%rbp), %rdi
leaq -0x140(%rbp), %rsi
leaq -0x198(%rbp), %rdx
callq 0x53570
jmp 0x50e96
leaq -0x16c(%rbp), %rdi
callq 0x1d710
leaq -0x198(%rbp), %rdi
callq 0x384f0
jmp 0x51068
leaq -0xf8(%rbp), %rdi
callq 0x1d520
leaq -0x40(%rbp), %rdi
callq 0x1d710
leaq -0x30(%rbp), %rdi
callq 0x4c380
jmp 0x51e21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x5121a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x50f0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x384f0
movl -0x74(%rbp), %eax
movl %eax, -0x498(%rbp)
movl $0x3, %ecx
cmpl %ecx, %eax
jne 0x50f66
movq -0x70(%rbp), %rdi
callq 0x102b0
movq %rax, -0x1c8(%rbp)
movb $0x1, -0x161(%rbp)
callq 0x10d40
jmp 0x50f3d
jmp 0x50f3f
testb $0x1, -0x161(%rbp)
jne 0x510bd
leaq 0x79884(%rip), %rsi     # 0xca7d7
leaq -0x160(%rbp), %rdi
callq 0x10b40
jmp 0x50f61
jmp 0x510c4
movl -0x498(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x51037
movq -0x70(%rbp), %rdi
callq 0x102b0
movq %rax, -0x1a0(%rbp)
leaq 0x797da(%rip), %rsi     # 0xca76a
leaq -0x160(%rbp), %rdi
callq 0x10b40
jmp 0x50f9e
movq -0x1a0(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x39c70
jmp 0x50fba
leaq -0x160(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x10a70
jmp 0x50fcf
leaq -0x1c0(%rbp), %rdi
callq 0x10fc8
leaq 0x7f11f(%rip), %rsi     # 0xd0101
leaq -0x160(%rbp), %rdi
callq 0x10700
jmp 0x50ff0
movq -0x1a0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
leaq -0x160(%rbp), %rdi
callq 0x10700
jmp 0x51011
leaq 0x78a6a(%rip), %rsi     # 0xc9a82
leaq -0x160(%rbp), %rdi
callq 0x10700
jmp 0x51026
movl $0x2, -0xbc(%rbp)
callq 0x10d40
jmp 0x510af
movq -0x70(%rbp), %rdi
callq 0x102b0
leaq 0x796a5(%rip), %rsi     # 0xca6ec
leaq -0x160(%rbp), %rdi
callq 0x10b40
jmp 0x51055
movl $0x2, -0xbc(%rbp)
callq 0x10d40
jmp 0x51080
jmp 0x51068
jmp 0x50f3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
callq 0x10d40
jmp 0x51082
jmp 0x510c4
jmp 0x5121a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x510b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x10fc8
jmp 0x510b1
jmp 0x510c4
callq 0x10d40
jmp 0x510b8
jmp 0x5121a
jmp 0x51166
jmp 0x510c4
leaq -0x1d0(%rbp), %rdi
callq 0x84210
jmp 0x510d2
leaq -0x160(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x79597(%rip), %rdx     # 0xca67f
leaq -0x1d8(%rbp), %rdi
movl $0x1, %esi
movl $0x4a, %ecx
callq 0x80580
jmp 0x51100
leaq -0x1d8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x7d370
jmp 0x51115
leaq -0x1d8(%rbp), %rdi
callq 0x80600
leaq -0x1d0(%rbp), %rdi
callq 0x1d500
jmp 0x51166
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x80600
leaq -0x1d0(%rbp), %rdi
callq 0x1d500
jmp 0x5121a
leaq -0x160(%rbp), %rdi
callq 0x39ed0
leaq -0x138(%rbp), %rdi
callq 0x4c380
leaq 0x79a18(%rip), %rsi     # 0xcab9d
leaq -0x200(%rbp), %rdi
callq 0x4bfe0
movq -0x1f8(%rbp), %rax
movq %rax, -0x208(%rbp)
leaq 0x78411(%rip), %rsi     # 0xc95b7
leaq -0x238(%rbp), %rdi
callq 0x38290
jmp 0x511b4
leaq -0x210(%rbp), %rdi
leaq -0x208(%rbp), %rsi
leaq -0x238(%rbp), %rdx
callq 0x53570
jmp 0x511d0
leaq -0x238(%rbp), %rdi
callq 0x384f0
xorl %eax, %eax
movl %eax, %edx
leaq -0x248(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x1d6b0
jmp 0x511f5
leaq -0x248(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x499(%rbp)
jmp 0x51209
movb -0x499(%rbp), %al
testb $0x1, %al
jne 0x51215
jmp 0x51287
jmp 0x51383
leaq -0x160(%rbp), %rdi
callq 0x39ed0
leaq -0x138(%rbp), %rdi
callq 0x4c380
jmp 0x51e21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x5178d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x384f0
jmp 0x5178d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51781
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x5140a
leaq -0x250(%rbp), %rdi
callq 0x84210
jmp 0x51295
leaq 0x79445(%rip), %rdx     # 0xca6e1
leaq 0x771ac(%rip), %rcx     # 0xc844f
leaq 0x771ab(%rip), %r8      # 0xc8455
leaq -0x278(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x7d210
jmp 0x512bf
leaq -0x278(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x793aa(%rip), %rdx     # 0xca67f
leaq -0x258(%rbp), %rdi
movl $0x2, %esi
movl $0x52, %ecx
callq 0x80580
jmp 0x512ed
leaq -0x258(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x7d370
jmp 0x51302
leaq -0x258(%rbp), %rdi
callq 0x80600
leaq -0x278(%rbp), %rdi
callq 0x10fc8
leaq -0x250(%rbp), %rdi
callq 0x1d500
movl $0x1, -0xbc(%rbp)
jmp 0x5138d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51372
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51366
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x80600
leaq -0x278(%rbp), %rdi
callq 0x10fc8
leaq -0x250(%rbp), %rdi
callq 0x1d500
jmp 0x5140a
movl $0x0, -0xbc(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x1d520
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x51673
jmp 0x513a9
movl $0xffffff85, -0x28c(%rbp) # imm = 0xFFFFFF85
leaq -0x210(%rbp), %rdi
callq 0x1d6f0
movq %rax, %r8
leaq 0x79483(%rip), %rsi     # 0xca84c
leaq 0x79310(%rip), %rdx     # 0xca6e0
leaq -0x288(%rbp), %rdi
leaq -0x28c(%rbp), %rcx
callq 0x1d5d0
jmp 0x513e5
leaq -0x288(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x49a(%rbp)
jmp 0x513f9
movb -0x49a(%rbp), %al
testb $0x1, %al
jne 0x51405
jmp 0x5142c
jmp 0x514e5
leaq -0x248(%rbp), %rdi
callq 0x1d520
jmp 0x51781
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x5156c
leaq -0x298(%rbp), %rdi
callq 0x84210
jmp 0x5143a
leaq -0x288(%rbp), %rdi
callq 0x1d620
movq %rax, -0x4a8(%rbp)
jmp 0x5144f
movq -0x4a8(%rbp), %r8
leaq 0x79222(%rip), %rdx     # 0xca67f
leaq -0x2a0(%rbp), %rdi
movl $0x2, %esi
movl $0x53, %ecx
callq 0x80580
jmp 0x51475
leaq -0x2a0(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x7d370
jmp 0x5148a
leaq -0x2a0(%rbp), %rdi
callq 0x80600
leaq -0x298(%rbp), %rdi
callq 0x1d500
movl $0x1, -0xbc(%rbp)
jmp 0x514ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x514d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x80600
leaq -0x298(%rbp), %rdi
callq 0x1d500
jmp 0x5156c
movl $0x0, -0xbc(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x1d520
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x51673
jmp 0x5150b
movq -0x1f8(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x2b8(%rbp)
leaq 0x791bf(%rip), %rsi     # 0xca6e3
leaq 0x7815a(%rip), %rdx     # 0xc9685
leaq -0x2b0(%rbp), %rdi
leaq -0x2b8(%rbp), %rcx
leaq -0x208(%rbp), %r8
callq 0x53440
jmp 0x51547
leaq -0x2b0(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x4a9(%rbp)
jmp 0x5155b
movb -0x4a9(%rbp), %al
testb $0x1, %al
jne 0x51567
jmp 0x5158e
jmp 0x51647
leaq -0x288(%rbp), %rdi
callq 0x1d520
jmp 0x51781
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51775
leaq -0x2c0(%rbp), %rdi
callq 0x84210
jmp 0x5159c
leaq -0x2b0(%rbp), %rdi
callq 0x1d620
movq %rax, -0x4b8(%rbp)
jmp 0x515b1
movq -0x4b8(%rbp), %r8
leaq 0x790c0(%rip), %rdx     # 0xca67f
leaq -0x2c8(%rbp), %rdi
movl $0x2, %esi
movl $0x54, %ecx
callq 0x80580
jmp 0x515d7
leaq -0x2c8(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x7d370
jmp 0x515ec
leaq -0x2c8(%rbp), %rdi
callq 0x80600
leaq -0x2c0(%rbp), %rdi
callq 0x1d500
movl $0x1, -0xbc(%rbp)
jmp 0x51651
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51636
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x80600
leaq -0x2c0(%rbp), %rdi
callq 0x1d500
jmp 0x51775
movl $0x0, -0xbc(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x1d520
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x51673
jmp 0x51669
movl $0x0, -0xbc(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x1d710
leaq -0x200(%rbp), %rdi
callq 0x4c380
movl -0xbc(%rbp), %eax
testl %eax, %eax
je 0x5169c
jmp 0x51697
jmp 0x51df4
leaq 0x794ac(%rip), %rsi     # 0xcab4f
leaq -0x2f0(%rbp), %rdi
callq 0x4bfe0
movq -0x2e8(%rbp), %rax
movq %rax, -0x2f8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x310(%rbp)
movaps %xmm0, -0x320(%rbp)
leaq -0x320(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x39af0
movq -0x4c8(%rbp), %rdi
callq 0x39b10
movb %al, -0x4b9(%rbp)
jmp 0x516f5
movb -0x4b9(%rbp), %al
testb $0x1, %al
jne 0x51704
jmp 0x5198a
movb $0x0, -0x321(%rbp)
callq 0x841d0
movb %al, -0x4c9(%rbp)
jmp 0x51718
movb -0x4c9(%rbp), %al
testb $0x1, %al
jne 0x51727
jmp 0x5192e
leaq 0x77e89(%rip), %rsi     # 0xc95b7
leaq -0x358(%rbp), %rdi
callq 0x38290
jmp 0x5173c
leaq -0x32c(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
leaq -0x358(%rbp), %rdx
callq 0x53570
jmp 0x51758
leaq -0x32c(%rbp), %rdi
callq 0x1d710
leaq -0x358(%rbp), %rdi
callq 0x384f0
jmp 0x51930
leaq -0x2b0(%rbp), %rdi
callq 0x1d520
leaq -0x210(%rbp), %rdi
callq 0x1d710
leaq -0x200(%rbp), %rdi
callq 0x4c380
jmp 0x51e21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51afd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x517d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x384f0
movl -0x74(%rbp), %eax
movl %eax, -0x4d0(%rbp)
movl $0x4, %ecx
cmpl %ecx, %eax
jne 0x5182e
movq -0x70(%rbp), %rdi
callq 0x102b0
movq %rax, -0x388(%rbp)
movb $0x1, -0x321(%rbp)
callq 0x10d40
jmp 0x51805
jmp 0x51807
testb $0x1, -0x321(%rbp)
jne 0x51985
leaq 0x79125(%rip), %rsi     # 0xca940
leaq -0x320(%rbp), %rdi
callq 0x10b40
jmp 0x51829
jmp 0x5198c
movl -0x4d0(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x518ff
movq -0x70(%rbp), %rdi
callq 0x102b0
movq %rax, -0x360(%rbp)
leaq 0x79079(%rip), %rsi     # 0xca8d1
leaq -0x320(%rbp), %rdi
callq 0x10b40
jmp 0x51866
movq -0x360(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq -0x380(%rbp), %rdi
callq 0x39c70
jmp 0x51882
leaq -0x320(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x10a70
jmp 0x51897
leaq -0x380(%rbp), %rdi
callq 0x10fc8
leaq 0x7e857(%rip), %rsi     # 0xd0101
leaq -0x320(%rbp), %rdi
callq 0x10700
jmp 0x518b8
movq -0x360(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
leaq -0x320(%rbp), %rdi
callq 0x10700
jmp 0x518d9
leaq 0x781a2(%rip), %rsi     # 0xc9a82
leaq -0x320(%rbp), %rdi
callq 0x10700
jmp 0x518ee
movl $0x3, -0xbc(%rbp)
callq 0x10d40
jmp 0x51977
movq -0x70(%rbp), %rdi
callq 0x102b0
leaq 0x78f42(%rip), %rsi     # 0xca851
leaq -0x320(%rbp), %rdi
callq 0x10b40
jmp 0x5191d
movl $0x3, -0xbc(%rbp)
callq 0x10d40
jmp 0x51948
jmp 0x51930
jmp 0x51807
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
callq 0x10d40
jmp 0x5194a
jmp 0x5198c
jmp 0x51afd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51979
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x10fc8
jmp 0x51979
jmp 0x5198c
callq 0x10d40
jmp 0x51980
jmp 0x51afd
jmp 0x51a2e
jmp 0x5198c
leaq -0x390(%rbp), %rdi
callq 0x84210
jmp 0x5199a
leaq -0x320(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x78ccf(%rip), %rdx     # 0xca67f
leaq -0x398(%rbp), %rdi
movl $0x1, %esi
movl $0x5b, %ecx
callq 0x80580
jmp 0x519c8
leaq -0x398(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x7d370
jmp 0x519dd
leaq -0x398(%rbp), %rdi
callq 0x80600
leaq -0x390(%rbp), %rdi
callq 0x1d500
jmp 0x51a2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51a1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x80600
leaq -0x390(%rbp), %rdi
callq 0x1d500
jmp 0x51afd
leaq -0x320(%rbp), %rdi
callq 0x39ed0
leaq -0x2f0(%rbp), %rdi
callq 0x4c380
leaq 0x79132(%rip), %rsi     # 0xcab7f
leaq -0x3c0(%rbp), %rdi
callq 0x4bfe0
movq -0x3b8(%rbp), %rax
movq %rax, -0x3c8(%rbp)
leaq 0x78c5f(%rip), %rsi     # 0xca6cd
leaq -0x3f8(%rbp), %rdi
callq 0x38290
jmp 0x51a7c
leaq 0x77b34(%rip), %rcx     # 0xc95b7
leaq -0x3d0(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
leaq -0x3f8(%rbp), %rdx
callq 0x534d0
jmp 0x51a9f
leaq -0x3f8(%rbp), %rdi
callq 0x384f0
leaq -0x3d0(%rbp), %rdi
callq 0x1d690
xorb $0x1, %al
movb %al, -0x409(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x408(%rbp), %rdi
leaq -0x409(%rbp), %rsi
callq 0x1d4a0
jmp 0x51ad8
leaq -0x408(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x4d1(%rbp)
jmp 0x51aec
movb -0x4d1(%rbp), %al
testb $0x1, %al
jne 0x51af8
jmp 0x51b6a
jmp 0x51c63
leaq -0x320(%rbp), %rdi
callq 0x39ed0
leaq -0x2f0(%rbp), %rdi
callq 0x4c380
jmp 0x51e21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51e15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x384f0
jmp 0x51e15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51e09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51cd8
leaq -0x418(%rbp), %rdi
callq 0x84210
jmp 0x51b78
leaq 0x78b62(%rip), %rdx     # 0xca6e1
leaq 0x768cf(%rip), %rcx     # 0xc8455
leaq 0x768c2(%rip), %r8      # 0xc844f
leaq -0x440(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x7d210
jmp 0x51ba2
leaq -0x440(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x78ac7(%rip), %rdx     # 0xca67f
leaq -0x420(%rbp), %rdi
movl $0x2, %esi
movl $0x63, %ecx
callq 0x80580
jmp 0x51bd0
leaq -0x420(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x7d370
jmp 0x51be5
leaq -0x420(%rbp), %rdi
callq 0x80600
leaq -0x440(%rbp), %rdi
callq 0x10fc8
leaq -0x418(%rbp), %rdi
callq 0x1d500
movl $0x1, -0xbc(%rbp)
jmp 0x51c6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51c55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51c49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x80600
leaq -0x440(%rbp), %rdi
callq 0x10fc8
leaq -0x418(%rbp), %rdi
callq 0x1d500
jmp 0x51cd8
movl $0x0, -0xbc(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x1d520
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x51ddc
jmp 0x51c89
leaq -0x3b8(%rbp), %rcx
leaq 0x78a42(%rip), %rsi     # 0xca6d9
leaq 0x779e7(%rip), %rdx     # 0xc9685
leaq -0x450(%rbp), %rdi
leaq -0x3c8(%rbp), %r8
callq 0x53440
jmp 0x51cb3
leaq -0x450(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x4d2(%rbp)
jmp 0x51cc7
movb -0x4d2(%rbp), %al
testb $0x1, %al
jne 0x51cd3
jmp 0x51cfa
jmp 0x51db0
leaq -0x408(%rbp), %rdi
callq 0x1d520
jmp 0x51e09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51dfd
leaq -0x458(%rbp), %rdi
callq 0x84210
jmp 0x51d08
leaq -0x450(%rbp), %rdi
callq 0x1d620
movq %rax, -0x4e0(%rbp)
jmp 0x51d1d
movq -0x4e0(%rbp), %r8
leaq 0x78954(%rip), %rdx     # 0xca67f
leaq -0x460(%rbp), %rdi
movl $0x2, %esi
movl $0x64, %ecx
callq 0x80580
jmp 0x51d43
leaq -0x460(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0x7d370
jmp 0x51d58
leaq -0x460(%rbp), %rdi
callq 0x80600
leaq -0x458(%rbp), %rdi
callq 0x1d500
movl $0x1, -0xbc(%rbp)
jmp 0x51dba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x51da2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x80600
leaq -0x458(%rbp), %rdi
callq 0x1d500
jmp 0x51dfd
movl $0x0, -0xbc(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x1d520
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x51ddc
jmp 0x51dd2
movl $0x0, -0xbc(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x1d710
leaq -0x3c0(%rbp), %rdi
callq 0x4c380
addq $0x4e0, %rsp            # imm = 0x4E0
popq %rbp
retq
leaq -0x450(%rbp), %rdi
callq 0x1d520
leaq -0x3d0(%rbp), %rdi
callq 0x1d710
leaq -0x3c0(%rbp), %rdi
callq 0x4c380
movq -0x70(%rbp), %rdi
callq 0x10e00
movq %rax, %rdi
callq 0x1dfc0
nopw %cs:(%rax,%rax)