// File: Jacobious52[P]Tanks/Bullet.cpp
// Function: Bullet::update(int)
void Bullet::update(int t)
{
    // don't update unless launched
    if (_launched == false)
    {
        return;
    }

    // increment velocity and position
    // vel += (gravity + wind) * slowdownfactor
    // pos += vel
    _velocity = _velocity + (Point<float>(0, GRAVITY) + Point<float>(_terrain->get_wind_speed(), 0)) * Point<float>(0.1, 0.1);
    _position = Point<int>(static_cast<int>(_position.x + _velocity.x), static_cast<int>(_position.y + _velocity.y));

    // remove if outside of view
    if (_position.y >= _terrain->get_size().y
        || _position.x >= _terrain->get_size().x
        || _position.x <= 0)
    {
        _should_remove_from_parent = true;
    }
    else if (_position.y <= 0)
    {
        // show ^ for above screen
        _position.y = 0;
        _texture = "^";
    }
    else
    {
        // going left to right
        if (_velocity.x > 0.5)
        {
            // going down
            if (_velocity.y > 0.5)
            {
                DebugView::shared_view()->watch("direction", 1);
                _texture = TextureTools::get_texture("bullet_down");
            }
            else if (_velocity.y < -0.5)
            {
                // going up
                DebugView::shared_view()->watch("direction", 2);
                _texture = TextureTools::get_texture("bullet_up");
            }
            else
            {
                // going horrizontal
                DebugView::shared_view()->watch("direction", 3);
                _texture = TextureTools::get_texture("bullet_flat");
            }
        }
        else if (_velocity.x < -0.5)
        {
            if (_velocity.y > 0.5)
            {
                // going down
                DebugView::shared_view()->watch("direction", 4);
                _texture = TextureTools::get_texture("bullet_up");
            }
            else if (_velocity.y < -0.5)
            {
                // going up
                DebugView::shared_view()->watch("direction", 5);
                _texture = TextureTools::get_texture("bullet_down");
            }
            else
            {
                // horizontal
                DebugView::shared_view()->watch("direction", 6);
                _texture = TextureTools::get_texture("bullet_flat");
            }
        }
        else
        {
            // vertical
            DebugView::shared_view()->watch("direction", 0);
            _texture = TextureTools::get_texture("bullet_vert");
        }

        LOOPV(i, _terrain)
        {
            if (_position.y >= _terrain->get_floor(_position.x))
            {
                // bullet hit ground.. remove it
                _position.y = _terrain->get_floor(_position.x);
                if (_terrain->impact(Point<int>(_position.x, _terrain->get_floor(_position.x)), 10))
                {
                    DebugView::shared_view()->watch("impact x", _position.x);
                    DebugView::shared_view()->watch("impact y", _terrain->get_floor(_position.x));
                    _should_remove_from_parent = true;
                }
            }
        }
    }

    // update debug watch vars
    DebugView::shared_view()->watch("bullet pos x ", static_cast<float>(get_position().x));
    DebugView::shared_view()->watch("bullet pos y ", static_cast<float>(get_position().y));
    DebugView::shared_view()->watch("bullet vel x ", _velocity.x);
    DebugView::shared_view()->watch("bullet vel y ", _velocity.y);

    Sprite::update(t);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x600, %rsp            # imm = 0x600
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x490(%rbp)
movb 0x70(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xedff
jmp 0x10102
movq -0x490(%rbp), %rax
addq $0x60, %rax
movq %rax, -0x4a0(%rbp)
leaq -0x2c(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x4bc(%rbp)
movss 0x5411(%rip), %xmm1     # 0x14240
callq 0x10280
movq -0x490(%rbp), %rax
movq 0x80(%rax), %rdi
callq 0xcb90
movss -0x4bc(%rbp), %xmm1
leaq -0x34(%rbp), %rdi
movq %rdi, -0x4b0(%rbp)
callq 0x10280
movq -0x4b8(%rbp), %rdi
movq -0x4b0(%rbp), %rsi
callq 0x102b0
movlpd %xmm0, -0x24(%rbp)
leaq -0x3c(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
movss 0x53ba(%rip), %xmm1     # 0x14244
movaps %xmm1, %xmm0
callq 0x10280
movq -0x4a8(%rbp), %rsi
leaq -0x24(%rbp), %rdi
callq 0x10300
movq -0x4a0(%rbp), %rdi
movlpd %xmm0, -0x1c(%rbp)
leaq -0x1c(%rbp), %rsi
callq 0x102b0
movq -0x490(%rbp), %rax
movlpd %xmm0, -0x14(%rbp)
movq -0x14(%rbp), %rcx
movq %rcx, 0x60(%rax)
cvtsi2ssl 0x18(%rax), %xmm0
addss 0x60(%rax), %xmm0
cvttss2si %xmm0, %esi
cvtsi2ssl 0x1c(%rax), %xmm0
addss 0x64(%rax), %xmm0
cvttss2si %xmm0, %edx
leaq -0x44(%rbp), %rdi
callq 0x4ed0
movq -0x490(%rbp), %rax
movq -0x44(%rbp), %rcx
movq %rcx, 0x18(%rax)
movl 0x1c(%rax), %ecx
movl %ecx, -0x494(%rbp)
movq 0x80(%rax), %rdi
callq 0x106a0
movq %rax, %rcx
movl -0x494(%rbp), %eax
movq %rcx, -0x4c(%rbp)
cmpl -0x48(%rbp), %eax
jge 0xef61
movq -0x490(%rbp), %rax
movl 0x18(%rax), %ecx
movl %ecx, -0x4c0(%rbp)
movq 0x80(%rax), %rdi
callq 0x106a0
movq %rax, %rcx
movl -0x4c0(%rbp), %eax
movq %rcx, -0x54(%rbp)
cmpl -0x54(%rbp), %eax
jge 0xef61
movq -0x490(%rbp), %rax
cmpl $0x0, 0x18(%rax)
jg 0xef71
movq -0x490(%rbp), %rax
movb $0x1, 0x30(%rax)
jmp 0xfedd
movq -0x490(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
jg 0xefa1
movq -0x490(%rbp), %rdi
movl $0x0, 0x1c(%rdi)
addq $0x38, %rdi
leaq 0x52e2(%rip), %rsi      # 0x14279
callq 0x4480
jmp 0xfedb
movq -0x490(%rbp), %rax
movss 0x60(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x52a7(%rip), %xmm1     # 0x14260
ucomisd %xmm1, %xmm0
jbe 0xf503
movq -0x490(%rbp), %rax
movss 0x64(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x5285(%rip), %xmm1     # 0x14260
ucomisd %xmm1, %xmm0
jbe 0xf17e
callq 0x70a0
movq %rax, -0x4d0(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x45f0
movq -0x4c8(%rbp), %rdx
leaq 0x526c(%rip), %rsi      # 0x1427b
leaq -0x78(%rbp), %rdi
callq 0x4490
jmp 0xf01a
movq -0x4d0(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movss 0x522b(%rip), %xmm0     # 0x14258
callq 0x10cc0
jmp 0xf034
leaq -0x78(%rbp), %rdi
callq 0x4200
jmp 0xf03f
leaq -0x79(%rbp), %rdi
callq 0x4400
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x45f0
movq -0x4d8(%rbp), %rdx
leaq 0x521c(%rip), %rsi      # 0x14285
leaq -0xd0(%rbp), %rdi
callq 0x4490
jmp 0xf077
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xd2a0
jmp 0xf08c
movq -0x490(%rbp), %rdi
addq $0x38, %rdi
leaq -0xb0(%rbp), %rsi
callq 0x4060
jmp 0xf0a5
leaq -0xb0(%rbp), %rdi
callq 0x4200
jmp 0xf0b3
leaq -0xd0(%rbp), %rdi
callq 0x4200
jmp 0xf0c1
leaq -0xd1(%rbp), %rdi
callq 0x4400
jmp 0xf4fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf105
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x4200
jmp 0xf103
jmp 0xf105
leaq -0x79(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf16d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf15d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x4200
jmp 0xf15b
jmp 0xf15d
leaq -0xd0(%rbp), %rdi
callq 0x4200
jmp 0xf16b
jmp 0xf16d
leaq -0xd1(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq -0x490(%rbp), %rax
movss 0x64(%rax), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x50d2(%rip), %xmm0     # 0x14268
ucomisd %xmm1, %xmm0
jbe 0xf34e
callq 0x70a0
movq %rax, -0x4e8(%rbp)
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x45f0
movq -0x4e0(%rbp), %rdx
leaq 0x50ae(%rip), %rsi      # 0x1427b
leaq -0xf8(%rbp), %rdi
callq 0x4490
jmp 0xf1db
movq -0x4e8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
movss 0x504f(%rip), %xmm0     # 0x14240
callq 0x10cc0
jmp 0xf1f8
leaq -0xf8(%rbp), %rdi
callq 0x4200
jmp 0xf206
leaq -0xf9(%rbp), %rdi
callq 0x4400
leaq -0x141(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x45f0
movq -0x4f0(%rbp), %rdx
leaq 0x505e(%rip), %rsi      # 0x14291
leaq -0x140(%rbp), %rdi
callq 0x4490
jmp 0xf241
leaq -0x120(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0xd2a0
jmp 0xf256
movq -0x490(%rbp), %rdi
addq $0x38, %rdi
leaq -0x120(%rbp), %rsi
callq 0x4060
jmp 0xf26f
leaq -0x120(%rbp), %rdi
callq 0x4200
jmp 0xf27d
leaq -0x140(%rbp), %rdi
callq 0x4200
jmp 0xf28b
leaq -0x141(%rbp), %rdi
callq 0x4400
jmp 0xf4fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf2d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x4200
jmp 0xf2d0
jmp 0xf2d2
leaq -0xf9(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf33d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf32d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x4200
jmp 0xf32b
jmp 0xf32d
leaq -0x140(%rbp), %rdi
callq 0x4200
jmp 0xf33b
jmp 0xf33d
leaq -0x141(%rbp), %rdi
callq 0x4400
jmp 0x1021f
callq 0x70a0
movq %rax, -0x500(%rbp)
leaq -0x169(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x45f0
movq -0x4f8(%rbp), %rdx
leaq 0x4f00(%rip), %rsi      # 0x1427b
leaq -0x168(%rbp), %rdi
callq 0x4490
jmp 0xf389
movq -0x500(%rbp), %rdi
leaq -0x168(%rbp), %rsi
movss 0x4eb5(%rip), %xmm0     # 0x14254
callq 0x10cc0
jmp 0xf3a6
leaq -0x168(%rbp), %rdi
callq 0x4200
jmp 0xf3b4
leaq -0x169(%rbp), %rdi
callq 0x4400
leaq -0x1b1(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x45f0
movq -0x508(%rbp), %rdx
leaq 0x4eba(%rip), %rsi      # 0x1429b
leaq -0x1b0(%rbp), %rdi
callq 0x4490
jmp 0xf3ef
leaq -0x190(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0xd2a0
jmp 0xf404
movq -0x490(%rbp), %rdi
addq $0x38, %rdi
leaq -0x190(%rbp), %rsi
callq 0x4060
jmp 0xf41d
leaq -0x190(%rbp), %rdi
callq 0x4200
jmp 0xf42b
leaq -0x1b0(%rbp), %rdi
callq 0x4200
jmp 0xf439
leaq -0x1b1(%rbp), %rdi
callq 0x4400
jmp 0xf4fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf480
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x4200
jmp 0xf47e
jmp 0xf480
leaq -0x169(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf4eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf4db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x4200
jmp 0xf4d9
jmp 0xf4db
leaq -0x1b0(%rbp), %rdi
callq 0x4200
jmp 0xf4e9
jmp 0xf4eb
leaq -0x1b1(%rbp), %rdi
callq 0x4400
jmp 0x1021f
jmp 0xf4fe
jmp 0xfc25
movq -0x490(%rbp), %rax
movss 0x60(%rax), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x4d4d(%rip), %xmm0     # 0x14268
ucomisd %xmm1, %xmm0
jbe 0xfa7a
movq -0x490(%rbp), %rax
movss 0x64(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x4d23(%rip), %xmm1     # 0x14260
ucomisd %xmm1, %xmm0
jbe 0xf6f5
callq 0x70a0
movq %rax, -0x518(%rbp)
leaq -0x1d9(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x45f0
movq -0x510(%rbp), %rdx
leaq 0x4d07(%rip), %rsi      # 0x1427b
leaq -0x1d8(%rbp), %rdi
callq 0x4490
jmp 0xf582
movq -0x518(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
movss 0x4cb8(%rip), %xmm0     # 0x14250
callq 0x10cc0
jmp 0xf59f
leaq -0x1d8(%rbp), %rdi
callq 0x4200
jmp 0xf5ad
leaq -0x1d9(%rbp), %rdi
callq 0x4400
leaq -0x221(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x45f0
movq -0x520(%rbp), %rdx
leaq 0x4cb7(%rip), %rsi      # 0x14291
leaq -0x220(%rbp), %rdi
callq 0x4490
jmp 0xf5e8
leaq -0x200(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xd2a0
jmp 0xf5fd
movq -0x490(%rbp), %rdi
addq $0x38, %rdi
leaq -0x200(%rbp), %rsi
callq 0x4060
jmp 0xf616
leaq -0x200(%rbp), %rdi
callq 0x4200
jmp 0xf624
leaq -0x220(%rbp), %rdi
callq 0x4200
jmp 0xf632
leaq -0x221(%rbp), %rdi
callq 0x4400
jmp 0xfa75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf679
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x4200
jmp 0xf677
jmp 0xf679
leaq -0x1d9(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf6e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf6d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x4200
jmp 0xf6d2
jmp 0xf6d4
leaq -0x220(%rbp), %rdi
callq 0x4200
jmp 0xf6e2
jmp 0xf6e4
leaq -0x221(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq -0x490(%rbp), %rax
movss 0x64(%rax), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x4b5b(%rip), %xmm0     # 0x14268
ucomisd %xmm1, %xmm0
jbe 0xf8c5
callq 0x70a0
movq %rax, -0x530(%rbp)
leaq -0x249(%rbp), %rdi
movq %rdi, -0x528(%rbp)
callq 0x45f0
movq -0x528(%rbp), %rdx
leaq 0x4b37(%rip), %rsi      # 0x1427b
leaq -0x248(%rbp), %rdi
callq 0x4490
jmp 0xf752
movq -0x530(%rbp), %rdi
leaq -0x248(%rbp), %rsi
movss 0x4ae4(%rip), %xmm0     # 0x1424c
callq 0x10cc0
jmp 0xf76f
leaq -0x248(%rbp), %rdi
callq 0x4200
jmp 0xf77d
leaq -0x249(%rbp), %rdi
callq 0x4400
leaq -0x291(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x45f0
movq -0x538(%rbp), %rdx
leaq 0x4adb(%rip), %rsi      # 0x14285
leaq -0x290(%rbp), %rdi
callq 0x4490
jmp 0xf7b8
leaq -0x270(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0xd2a0
jmp 0xf7cd
movq -0x490(%rbp), %rdi
addq $0x38, %rdi
leaq -0x270(%rbp), %rsi
callq 0x4060
jmp 0xf7e6
leaq -0x270(%rbp), %rdi
callq 0x4200
jmp 0xf7f4
leaq -0x290(%rbp), %rdi
callq 0x4200
jmp 0xf802
leaq -0x291(%rbp), %rdi
callq 0x4400
jmp 0xfa73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x4200
jmp 0xf847
jmp 0xf849
leaq -0x249(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf8b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf8a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x4200
jmp 0xf8a2
jmp 0xf8a4
leaq -0x290(%rbp), %rdi
callq 0x4200
jmp 0xf8b2
jmp 0xf8b4
leaq -0x291(%rbp), %rdi
callq 0x4400
jmp 0x1021f
callq 0x70a0
movq %rax, -0x548(%rbp)
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x45f0
movq -0x540(%rbp), %rdx
leaq 0x4989(%rip), %rsi      # 0x1427b
leaq -0x2b8(%rbp), %rdi
callq 0x4490
jmp 0xf900
movq -0x548(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
movss 0x4932(%rip), %xmm0     # 0x14248
callq 0x10cc0
jmp 0xf91d
leaq -0x2b8(%rbp), %rdi
callq 0x4200
jmp 0xf92b
leaq -0x2b9(%rbp), %rdi
callq 0x4400
leaq -0x301(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x45f0
movq -0x550(%rbp), %rdx
leaq 0x4943(%rip), %rsi      # 0x1429b
leaq -0x300(%rbp), %rdi
callq 0x4490
jmp 0xf966
leaq -0x2e0(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0xd2a0
jmp 0xf97b
movq -0x490(%rbp), %rdi
addq $0x38, %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x4060
jmp 0xf994
leaq -0x2e0(%rbp), %rdi
callq 0x4200
jmp 0xf9a2
leaq -0x300(%rbp), %rdi
callq 0x4200
jmp 0xf9b0
leaq -0x301(%rbp), %rdi
callq 0x4400
jmp 0xfa73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xf9f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x4200
jmp 0xf9f5
jmp 0xf9f7
leaq -0x2b9(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xfa62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xfa52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x4200
jmp 0xfa50
jmp 0xfa52
leaq -0x300(%rbp), %rdi
callq 0x4200
jmp 0xfa60
jmp 0xfa62
leaq -0x301(%rbp), %rdi
callq 0x4400
jmp 0x1021f
jmp 0xfa75
jmp 0xfc23
callq 0x70a0
movq %rax, -0x560(%rbp)
leaq -0x329(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x45f0
movq -0x558(%rbp), %rdx
leaq 0x47d4(%rip), %rsi      # 0x1427b
leaq -0x328(%rbp), %rdi
callq 0x4490
jmp 0xfab5
movq -0x560(%rbp), %rdi
leaq -0x328(%rbp), %rsi
xorps %xmm0, %xmm0
callq 0x10cc0
jmp 0xfacd
leaq -0x328(%rbp), %rdi
callq 0x4200
jmp 0xfadb
leaq -0x329(%rbp), %rdi
callq 0x4400
leaq -0x371(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0x45f0
movq -0x568(%rbp), %rdx
leaq 0x479f(%rip), %rsi      # 0x142a7
leaq -0x370(%rbp), %rdi
callq 0x4490
jmp 0xfb16
leaq -0x350(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xd2a0
jmp 0xfb2b
movq -0x490(%rbp), %rdi
addq $0x38, %rdi
leaq -0x350(%rbp), %rsi
callq 0x4060
jmp 0xfb44
leaq -0x350(%rbp), %rdi
callq 0x4200
jmp 0xfb52
leaq -0x370(%rbp), %rdi
callq 0x4200
jmp 0xfb60
leaq -0x371(%rbp), %rdi
callq 0x4400
jmp 0xfc23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xfba7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x4200
jmp 0xfba5
jmp 0xfba7
leaq -0x329(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xfc12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xfc02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x4200
jmp 0xfc00
jmp 0xfc02
leaq -0x370(%rbp), %rdi
callq 0x4200
jmp 0xfc10
jmp 0xfc12
leaq -0x371(%rbp), %rdi
callq 0x4400
jmp 0x1021f
jmp 0xfc25
movq $0x0, -0x380(%rbp)
movq -0x490(%rbp), %rax
movq -0x380(%rbp), %rcx
movq %rcx, -0x570(%rbp)
movq 0x80(%rax), %rdi
callq 0x10400
movq %rax, %rdi
callq 0x7680
movq %rax, %rcx
movq -0x570(%rbp), %rax
cmpq %rcx, %rax
jae 0xfed9
movq -0x490(%rbp), %rax
movl 0x1c(%rax), %ecx
movl %ecx, -0x574(%rbp)
movq 0x80(%rax), %rdi
movl 0x18(%rax), %esi
callq 0xc7b0
movl %eax, %ecx
movl -0x574(%rbp), %eax
cmpl %ecx, %eax
jl 0xfec0
movq -0x490(%rbp), %rax
movq 0x80(%rax), %rdi
movl 0x18(%rax), %esi
callq 0xc7b0
movl %eax, %ecx
movq -0x490(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq 0x80(%rax), %rcx
movq %rcx, -0x580(%rbp)
movl 0x18(%rax), %ecx
movl %ecx, -0x584(%rbp)
movq 0x80(%rax), %rdi
movl 0x18(%rax), %esi
callq 0xc7b0
movl -0x584(%rbp), %esi
movl %eax, %edx
leaq -0x388(%rbp), %rdi
callq 0x4ed0
movq -0x580(%rbp), %rdi
movq -0x388(%rbp), %rsi
movl $0xa, %edx
callq 0xc850
testb $0x1, %al
jne 0xfd18
jmp 0xfebe
callq 0x70a0
movq %rax, -0x598(%rbp)
leaq -0x3a9(%rbp), %rdi
movq %rdi, -0x590(%rbp)
callq 0x45f0
movq -0x590(%rbp), %rdx
leaq 0x456e(%rip), %rsi      # 0x142b3
leaq -0x3a8(%rbp), %rdi
callq 0x4490
jmp 0xfd53
movq -0x598(%rbp), %rdi
movq -0x490(%rbp), %rax
cvtsi2ssl 0x18(%rax), %xmm0
leaq -0x3a8(%rbp), %rsi
callq 0x10cc0
jmp 0xfd74
leaq -0x3a8(%rbp), %rdi
callq 0x4200
jmp 0xfd82
leaq -0x3a9(%rbp), %rdi
callq 0x4400
callq 0x70a0
movq %rax, -0x5a8(%rbp)
leaq -0x3d1(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x45f0
movq -0x5a0(%rbp), %rdx
leaq 0x4501(%rip), %rsi      # 0x142bc
leaq -0x3d0(%rbp), %rdi
callq 0x4490
jmp 0xfdc9
movq -0x490(%rbp), %rax
movq 0x80(%rax), %rdi
movl 0x18(%rax), %esi
callq 0xc7b0
movl %eax, -0x5ac(%rbp)
jmp 0xfde7
movq -0x5a8(%rbp), %rdi
movl -0x5ac(%rbp), %eax
cvtsi2ss %eax, %xmm0
leaq -0x3d0(%rbp), %rsi
callq 0x10cc0
jmp 0xfe06
leaq -0x3d0(%rbp), %rdi
callq 0x4200
jmp 0xfe14
leaq -0x3d1(%rbp), %rdi
callq 0x4400
movq -0x490(%rbp), %rax
movb $0x1, 0x30(%rax)
jmp 0xfebe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xfe66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x4200
jmp 0xfe64
jmp 0xfe66
leaq -0x3a9(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xfead
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x4200
jmp 0xfeab
jmp 0xfead
leaq -0x3d1(%rbp), %rdi
callq 0x4400
jmp 0x1021f
jmp 0xfec0
jmp 0xfec2
movq -0x380(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x380(%rbp)
jmp 0xfc30
jmp 0xfedb
jmp 0xfedd
callq 0x70a0
movq %rax, -0x5c0(%rbp)
leaq -0x3f9(%rbp), %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x45f0
movq -0x5b8(%rbp), %rdx
leaq 0x43bb(%rip), %rsi      # 0x142c5
leaq -0x3f8(%rbp), %rdi
callq 0x4490
jmp 0xff18
movq -0x490(%rbp), %rdi
callq 0x10660
movq %rax, -0x5c8(%rbp)
jmp 0xff2d
movq -0x5c0(%rbp), %rdi
movq -0x5c8(%rbp), %rax
movq %rax, -0x404(%rbp)
cvtsi2ssl -0x404(%rbp), %xmm0
leaq -0x3f8(%rbp), %rsi
callq 0x10cc0
jmp 0xff58
leaq -0x3f8(%rbp), %rdi
callq 0x4200
jmp 0xff66
leaq -0x3f9(%rbp), %rdi
callq 0x4400
callq 0x70a0
movq %rax, -0x5d8(%rbp)
leaq -0x429(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0x45f0
movq -0x5d0(%rbp), %rdx
leaq 0x4334(%rip), %rsi      # 0x142d3
leaq -0x428(%rbp), %rdi
callq 0x4490
jmp 0xffad
movq -0x490(%rbp), %rdi
callq 0x10660
movq %rax, -0x5e0(%rbp)
jmp 0xffc2
movq -0x5d8(%rbp), %rdi
movq -0x5e0(%rbp), %rax
movq %rax, -0x434(%rbp)
cvtsi2ssl -0x430(%rbp), %xmm0
leaq -0x428(%rbp), %rsi
callq 0x10cc0
jmp 0xffed
leaq -0x428(%rbp), %rdi
callq 0x4200
jmp 0xfffb
leaq -0x429(%rbp), %rdi
callq 0x4400
callq 0x70a0
movq %rax, -0x5f0(%rbp)
leaq -0x459(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
callq 0x45f0
movq -0x5e8(%rbp), %rdx
leaq 0x42ad(%rip), %rsi      # 0x142e1
leaq -0x458(%rbp), %rdi
callq 0x4490
jmp 0x10042
movq -0x5f0(%rbp), %rdi
movq -0x490(%rbp), %rax
movss 0x60(%rax), %xmm0
leaq -0x458(%rbp), %rsi
callq 0x10cc0
jmp 0x10063
leaq -0x458(%rbp), %rdi
callq 0x4200
jmp 0x10071
leaq -0x459(%rbp), %rdi
callq 0x4400
callq 0x70a0
movq %rax, -0x600(%rbp)
leaq -0x481(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x45f0
movq -0x5f8(%rbp), %rdx
leaq 0x4245(%rip), %rsi      # 0x142ef
leaq -0x480(%rbp), %rdi
callq 0x4490
jmp 0x100b8
movq -0x600(%rbp), %rdi
movq -0x490(%rbp), %rax
movss 0x64(%rax), %xmm0
leaq -0x480(%rbp), %rsi
callq 0x10cc0
jmp 0x100d9
leaq -0x480(%rbp), %rdi
callq 0x4200
jmp 0x100e7
leaq -0x481(%rbp), %rdi
callq 0x4400
movq -0x490(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0xa730
addq $0x600, %rsp            # imm = 0x600
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x10141
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x4200
jmp 0x1013f
jmp 0x10141
leaq -0x3f9(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x10188
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x4200
jmp 0x10186
jmp 0x10188
leaq -0x429(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x101cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x458(%rbp), %rdi
callq 0x4200
jmp 0x101cd
jmp 0x101cf
leaq -0x459(%rbp), %rdi
callq 0x4400
jmp 0x1021f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x10213
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x4200
jmp 0x10211
jmp 0x10213
leaq -0x481(%rbp), %rdi
callq 0x4400
movq -0x88(%rbp), %rdi
callq 0x45e0
movq %rax, %rdi
callq 0x4ec0
nopw %cs:(%rax,%rax)