// File: donfreiday[P]gb/./imgui/imgui_draw.cpp
// Function: ImDrawList::AddPolyline(ImVec2 const*, int, unsigned int, bool, float, bool)
void ImDrawList::AddPolyline(const ImVec2* points, const int points_count, ImU32 col, bool closed, float thickness, bool anti_aliased)
{
    if (points_count < 2)
        return;

    const ImVec2 uv = GImGui->FontTexUvWhitePixel;
    anti_aliased &= GImGui->Style.AntiAliasedLines;
    //if (ImGui::GetIO().KeyCtrl) anti_aliased = false; // Debug

    int count = points_count;
    if (!closed)
        count = points_count-1;

    const bool thick_line = thickness > 1.0f;
    if (anti_aliased)
    {
        // Anti-aliased stroke
        const float AA_SIZE = 1.0f;
        const ImU32 col_trans = col & 0x00ffffff;

        const int idx_count = thick_line ? count*18 : count*12;
        const int vtx_count = thick_line ? points_count*4 : points_count*3;
        PrimReserve(idx_count, vtx_count);

        // Temporary buffer
        ImVec2* temp_normals = (ImVec2*)alloca(points_count * (thick_line ? 5 : 3) * sizeof(ImVec2));
        ImVec2* temp_points = temp_normals + points_count;

        for (int i1 = 0; i1 < count; i1++)
        {
            const int i2 = (i1+1) == points_count ? 0 : i1+1;
            ImVec2 diff = points[i2] - points[i1];
            diff *= ImInvLength(diff, 1.0f);
            temp_normals[i1].x = diff.y;
            temp_normals[i1].y = -diff.x;
        }
        if (!closed)
            temp_normals[points_count-1] = temp_normals[points_count-2];

        if (!thick_line)
        {
            if (!closed)
            {
                temp_points[0] = points[0] + temp_normals[0] * AA_SIZE;
                temp_points[1] = points[0] - temp_normals[0] * AA_SIZE;
                temp_points[(points_count-1)*2+0] = points[points_count-1] + temp_normals[points_count-1] * AA_SIZE;
                temp_points[(points_count-1)*2+1] = points[points_count-1] - temp_normals[points_count-1] * AA_SIZE;
            }

            // FIXME-OPT: Merge the different loops, possibly remove the temporary buffer.
            unsigned int idx1 = _VtxCurrentIdx;
            for (int i1 = 0; i1 < count; i1++)
            {
                const int i2 = (i1+1) == points_count ? 0 : i1+1;
                unsigned int idx2 = (i1+1) == points_count ? _VtxCurrentIdx : idx1+3;

                // Average normals
                ImVec2 dm = (temp_normals[i1] + temp_normals[i2]) * 0.5f;
                float dmr2 = dm.x*dm.x + dm.y*dm.y;
                if (dmr2 > 0.000001f)
                {
                    float scale = 1.0f / dmr2;
                    if (scale > 100.0f) scale = 100.0f;
                    dm *= scale;
                }
                dm *= AA_SIZE;
                temp_points[i2*2+0] = points[i2] + dm;
                temp_points[i2*2+1] = points[i2] - dm;

                // Add indexes
                _IdxWritePtr[0] = (ImDrawIdx)(idx2+0); _IdxWritePtr[1] = (ImDrawIdx)(idx1+0); _IdxWritePtr[2] = (ImDrawIdx)(idx1+2);
                _IdxWritePtr[3] = (ImDrawIdx)(idx1+2); _IdxWritePtr[4] = (ImDrawIdx)(idx2+2); _IdxWritePtr[5] = (ImDrawIdx)(idx2+0);
                _IdxWritePtr[6] = (ImDrawIdx)(idx2+1); _IdxWritePtr[7] = (ImDrawIdx)(idx1+1); _IdxWritePtr[8] = (ImDrawIdx)(idx1+0);
                _IdxWritePtr[9] = (ImDrawIdx)(idx1+0); _IdxWritePtr[10]= (ImDrawIdx)(idx2+0); _IdxWritePtr[11]= (ImDrawIdx)(idx2+1);
                _IdxWritePtr += 12;

                idx1 = idx2;
            }

            // Add vertexes
            for (int i = 0; i < points_count; i++)
            {
                _VtxWritePtr[0].pos = points[i];          _VtxWritePtr[0].uv = uv; _VtxWritePtr[0].col = col;
                _VtxWritePtr[1].pos = temp_points[i*2+0]; _VtxWritePtr[1].uv = uv; _VtxWritePtr[1].col = col_trans;
                _VtxWritePtr[2].pos = temp_points[i*2+1]; _VtxWritePtr[2].uv = uv; _VtxWritePtr[2].col = col_trans;
                _VtxWritePtr += 3;
            }
        }
        else
        {
            const float half_inner_thickness = (thickness - AA_SIZE) * 0.5f;
            if (!closed)
            {
                temp_points[0] = points[0] + temp_normals[0] * (half_inner_thickness + AA_SIZE);
                temp_points[1] = points[0] + temp_normals[0] * (half_inner_thickness);
                temp_points[2] = points[0] - temp_normals[0] * (half_inner_thickness);
                temp_points[3] = points[0] - temp_normals[0] * (half_inner_thickness + AA_SIZE);
                temp_points[(points_count-1)*4+0] = points[points_count-1] + temp_normals[points_count-1] * (half_inner_thickness + AA_SIZE);
                temp_points[(points_count-1)*4+1] = points[points_count-1] + temp_normals[points_count-1] * (half_inner_thickness);
                temp_points[(points_count-1)*4+2] = points[points_count-1] - temp_normals[points_count-1] * (half_inner_thickness);
                temp_points[(points_count-1)*4+3] = points[points_count-1] - temp_normals[points_count-1] * (half_inner_thickness + AA_SIZE);
            }

            // FIXME-OPT: Merge the different loops, possibly remove the temporary buffer.
            unsigned int idx1 = _VtxCurrentIdx;
            for (int i1 = 0; i1 < count; i1++)
            {
                const int i2 = (i1+1) == points_count ? 0 : i1+1;
                unsigned int idx2 = (i1+1) == points_count ? _VtxCurrentIdx : idx1+4;

                // Average normals
                ImVec2 dm = (temp_normals[i1] + temp_normals[i2]) * 0.5f;
                float dmr2 = dm.x*dm.x + dm.y*dm.y;
                if (dmr2 > 0.000001f)
                {
                    float scale = 1.0f / dmr2;
                    if (scale > 100.0f) scale = 100.0f;
                    dm *= scale;
                }
                ImVec2 dm_out = dm * (half_inner_thickness + AA_SIZE);
                ImVec2 dm_in = dm * half_inner_thickness;
                temp_points[i2*4+0] = points[i2] + dm_out;
                temp_points[i2*4+1] = points[i2] + dm_in;
                temp_points[i2*4+2] = points[i2] - dm_in;
                temp_points[i2*4+3] = points[i2] - dm_out;

                // Add indexes
                _IdxWritePtr[0]  = (ImDrawIdx)(idx2+1); _IdxWritePtr[1]  = (ImDrawIdx)(idx1+1); _IdxWritePtr[2]  = (ImDrawIdx)(idx1+2);
                _IdxWritePtr[3]  = (ImDrawIdx)(idx1+2); _IdxWritePtr[4]  = (ImDrawIdx)(idx2+2); _IdxWritePtr[5]  = (ImDrawIdx)(idx2+1);
                _IdxWritePtr[6]  = (ImDrawIdx)(idx2+1); _IdxWritePtr[7]  = (ImDrawIdx)(idx1+1); _IdxWritePtr[8]  = (ImDrawIdx)(idx1+0);
                _IdxWritePtr[9]  = (ImDrawIdx)(idx1+0); _IdxWritePtr[10] = (ImDrawIdx)(idx2+0); _IdxWritePtr[11] = (ImDrawIdx)(idx2+1);
                _IdxWritePtr[12] = (ImDrawIdx)(idx2+2); _IdxWritePtr[13] = (ImDrawIdx)(idx1+2); _IdxWritePtr[14] = (ImDrawIdx)(idx1+3);
                _IdxWritePtr[15] = (ImDrawIdx)(idx1+3); _IdxWritePtr[16] = (ImDrawIdx)(idx2+3); _IdxWritePtr[17] = (ImDrawIdx)(idx2+2);
                _IdxWritePtr += 18;

                idx1 = idx2;
            }

            // Add vertexes
            for (int i = 0; i < points_count; i++)
            {
                _VtxWritePtr[0].pos = temp_points[i*4+0]; _VtxWritePtr[0].uv = uv; _VtxWritePtr[0].col = col_trans;
                _VtxWritePtr[1].pos = temp_points[i*4+1]; _VtxWritePtr[1].uv = uv; _VtxWritePtr[1].col = col;
                _VtxWritePtr[2].pos = temp_points[i*4+2]; _VtxWritePtr[2].uv = uv; _VtxWritePtr[2].col = col;
                _VtxWritePtr[3].pos = temp_points[i*4+3]; _VtxWritePtr[3].uv = uv; _VtxWritePtr[3].col = col_trans;
                _VtxWritePtr += 4;
            }
        }
        _VtxCurrentIdx += (ImDrawIdx)vtx_count;
    }
    else
    {
        // Non Anti-aliased Stroke
        const int idx_count = count*6;
        const int vtx_count = count*4;      // FIXME-OPT: Not sharing edges
        PrimReserve(idx_count, vtx_count);

        for (int i1 = 0; i1 < count; i1++)
        {
            const int i2 = (i1+1) == points_count ? 0 : i1+1;
            const ImVec2& p1 = points[i1];
            const ImVec2& p2 = points[i2];
            ImVec2 diff = p2 - p1;
            diff *= ImInvLength(diff, 1.0f);

            const float dx = diff.x * (thickness * 0.5f);
            const float dy = diff.y * (thickness * 0.5f);
            _VtxWritePtr[0].pos.x = p1.x + dy; _VtxWritePtr[0].pos.y = p1.y - dx; _VtxWritePtr[0].uv = uv; _VtxWritePtr[0].col = col;
            _VtxWritePtr[1].pos.x = p2.x + dy; _VtxWritePtr[1].pos.y = p2.y - dx; _VtxWritePtr[1].uv = uv; _VtxWritePtr[1].col = col;
            _VtxWritePtr[2].pos.x = p2.x - dy; _VtxWritePtr[2].pos.y = p2.y + dx; _VtxWritePtr[2].uv = uv; _VtxWritePtr[2].col = col;
            _VtxWritePtr[3].pos.x = p1.x - dy; _VtxWritePtr[3].pos.y = p1.y + dx; _VtxWritePtr[3].uv = uv; _VtxWritePtr[3].col = col;
            _VtxWritePtr += 4;

            _IdxWritePtr[0] = (ImDrawIdx)(_VtxCurrentIdx); _IdxWritePtr[1] = (ImDrawIdx)(_VtxCurrentIdx+1); _IdxWritePtr[2] = (ImDrawIdx)(_VtxCurrentIdx+2);
            _IdxWritePtr[3] = (ImDrawIdx)(_VtxCurrentIdx); _IdxWritePtr[4] = (ImDrawIdx)(_VtxCurrentIdx+2); _IdxWritePtr[5] = (ImDrawIdx)(_VtxCurrentIdx+3);
            _IdxWritePtr += 6;
            _VtxCurrentIdx += 4;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2d0, %rsp            # imm = 0x2D0
movl %r8d, -0x214(%rbp)
movl %ecx, %eax
movl -0x214(%rbp), %ecx
movl %eax, -0x210(%rbp)
movl %edx, %eax
movl -0x210(%rbp), %edx
movl %eax, -0x20c(%rbp)
movq %rsi, %rax
movl -0x20c(%rbp), %esi
movq %rax, -0x208(%rbp)
movq %rdi, %r8
movq -0x208(%rbp), %rdi
movb %r9b, %al
movq %r8, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
andb $0x1, %cl
movb %cl, -0x19(%rbp)
movss %xmm0, -0x20(%rbp)
andb $0x1, %al
movb %al, -0x21(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x200(%rbp)
cmpl $0x2, -0x14(%rbp)
jge 0x3dc7f
jmp 0x3efec
leaq 0x3b83a(%rip), %rax     # 0x794c0
movq (%rax), %rax
movq 0x1720(%rax), %rax
movq %rax, -0x2c(%rbp)
leaq 0x3b825(%rip), %rax     # 0x794c0
movq (%rax), %rax
movb 0x1458(%rax), %al
andb $0x1, %al
movzbl %al, %ecx
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
andl %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x21(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x30(%rbp)
testb $0x1, -0x19(%rbp)
jne 0x3dcd3
movl -0x14(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x30(%rbp)
movss -0x20(%rbp), %xmm0
movss 0x1d338(%rip), %xmm1    # 0x5b018
ucomiss %xmm1, %xmm0
seta %al
andb $0x1, %al
movb %al, -0x31(%rbp)
testb $0x1, -0x21(%rbp)
je 0x3ecf1
movss 0x1d31b(%rip), %xmm0    # 0x5b018
movss %xmm0, -0x38(%rbp)
movl -0x18(%rbp), %eax
andl $0xffffff, %eax         # imm = 0xFFFFFF
movl %eax, -0x3c(%rbp)
testb $0x1, -0x31(%rbp)
je 0x3dd1f
imull $0x12, -0x30(%rbp), %eax
movl %eax, -0x218(%rbp)
jmp 0x3dd29
imull $0xc, -0x30(%rbp), %eax
movl %eax, -0x218(%rbp)
movl -0x218(%rbp), %eax
movl %eax, -0x40(%rbp)
testb $0x1, -0x31(%rbp)
je 0x3dd46
movl -0x14(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x21c(%rbp)
jmp 0x3dd50
imull $0x3, -0x14(%rbp), %eax
movl %eax, -0x21c(%rbp)
movq -0x200(%rbp), %rdi
movl -0x21c(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %esi
movl -0x44(%rbp), %edx
callq 0x3d830
movl -0x14(%rbp), %eax
movzbl -0x31(%rbp), %edx
andl $0x1, %edx
movl %edx, %ecx
leal 0x3(%rcx,%rcx), %ecx
imull %ecx, %eax
cltq
leaq 0xf(,%rax,8), %rcx
andq $-0x10, %rcx
movq %rsp, %rax
subq %rcx, %rax
movq %rax, %rsp
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movslq -0x14(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x30(%rbp), %eax
jge 0x3de61
movl -0x5c(%rbp), %eax
addl $0x1, %eax
cmpl -0x14(%rbp), %eax
jne 0x3ddd4
xorl %eax, %eax
movl %eax, -0x220(%rbp)
jmp 0x3dde0
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x220(%rbp)
movl -0x220(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x10(%rbp), %rax
movslq -0x60(%rbp), %rcx
leaq (%rax,%rcx,8), %rdi
movslq -0x5c(%rbp), %rcx
leaq (%rax,%rcx,8), %rsi
callq 0x3f000
movlpd %xmm0, -0x68(%rbp)
leaq -0x68(%rbp), %rdi
movss 0x1d205(%rip), %xmm0    # 0x5b018
callq 0x3f090
leaq -0x68(%rbp), %rdi
callq 0x3f050
movss -0x64(%rbp), %xmm0
movq -0x50(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movss %xmm0, (%rax,%rcx,8)
movss -0x68(%rbp), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
movq -0x50(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movss %xmm0, 0x4(%rax,%rcx,8)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x3ddb3
testb $0x1, -0x19(%rbp)
jne 0x3de89
movq -0x50(%rbp), %rdx
movl -0x14(%rbp), %eax
subl $0x2, %eax
movslq %eax, %rsi
movq -0x50(%rbp), %rax
movl -0x14(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rdx,%rsi,8), %rdx
movq %rdx, (%rax,%rcx,8)
testb $0x1, -0x31(%rbp)
jne 0x3e410
testb $0x1, -0x19(%rbp)
jne 0x3e00d
movq -0x10(%rbp), %rax
movq %rax, -0x248(%rbp)
movq -0x50(%rbp), %rdi
movss 0x1d164(%rip), %xmm0    # 0x5b018
movss %xmm0, -0x22c(%rbp)
callq 0x3f170
movq -0x248(%rbp), %rdi
movlpd %xmm0, -0x78(%rbp)
leaq -0x78(%rbp), %rsi
callq 0x3f120
movaps %xmm0, %xmm1
movss -0x22c(%rbp), %xmm0
movlpd %xmm1, -0x70(%rbp)
movq -0x58(%rbp), %rax
movq -0x70(%rbp), %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x240(%rbp)
movq -0x50(%rbp), %rdi
callq 0x3f170
movq -0x240(%rbp), %rdi
movlpd %xmm0, -0x88(%rbp)
leaq -0x88(%rbp), %rsi
callq 0x3f000
movaps %xmm0, %xmm1
movss -0x22c(%rbp), %xmm0
movlpd %xmm1, -0x80(%rbp)
movq -0x58(%rbp), %rax
movq -0x80(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
decl %ecx
movslq %ecx, %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x238(%rbp)
movq -0x50(%rbp), %rax
leaq (%rax,%rcx,8), %rdi
callq 0x3f170
movq -0x238(%rbp), %rdi
movlpd %xmm0, -0x98(%rbp)
leaq -0x98(%rbp), %rsi
callq 0x3f120
movaps %xmm0, %xmm1
movss -0x22c(%rbp), %xmm0
movlpd %xmm1, -0x90(%rbp)
movq -0x58(%rbp), %rax
movl -0x14(%rbp), %edx
movl %edx, %ecx
leal -0x2(%rcx,%rcx), %ecx
movslq %ecx, %rcx
movq -0x90(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
decl %ecx
movslq %ecx, %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x228(%rbp)
movq -0x50(%rbp), %rax
leaq (%rax,%rcx,8), %rdi
callq 0x3f170
movq -0x228(%rbp), %rdi
movlpd %xmm0, -0xa8(%rbp)
leaq -0xa8(%rbp), %rsi
callq 0x3f000
movlpd %xmm0, -0xa0(%rbp)
movq -0x58(%rbp), %rax
movl -0x14(%rbp), %ecx
subl $0x1, %ecx
shll %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq -0xa0(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x200(%rbp), %rax
movl 0x38(%rax), %eax
movl %eax, -0xac(%rbp)
movl $0x0, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
cmpl -0x30(%rbp), %eax
jge 0x3e337
movl -0xb0(%rbp), %eax
addl $0x1, %eax
cmpl -0x14(%rbp), %eax
jne 0x3e04e
xorl %eax, %eax
movl %eax, -0x24c(%rbp)
jmp 0x3e05d
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24c(%rbp)
movl -0x24c(%rbp), %eax
movl %eax, -0xb4(%rbp)
movl -0xb0(%rbp), %eax
addl $0x1, %eax
cmpl -0x14(%rbp), %eax
jne 0x3e089
movq -0x200(%rbp), %rax
movl 0x38(%rax), %eax
movl %eax, -0x250(%rbp)
jmp 0x3e098
movl -0xac(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x250(%rbp)
movl -0x250(%rbp), %eax
movl %eax, -0xb8(%rbp)
movq -0x50(%rbp), %rax
movslq -0xb0(%rbp), %rcx
leaq (%rax,%rcx,8), %rdi
movslq -0xb4(%rbp), %rcx
leaq (%rax,%rcx,8), %rsi
callq 0x3f120
movlpd %xmm0, -0xc8(%rbp)
leaq -0xc8(%rbp), %rdi
movss 0x1cf4a(%rip), %xmm0    # 0x5b024
callq 0x3f170
movlpd %xmm0, -0xc0(%rbp)
movss -0xc0(%rbp), %xmm0
movss -0xc0(%rbp), %xmm2
movss -0xbc(%rbp), %xmm1
mulss -0xbc(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0xcc(%rbp)
movss -0xcc(%rbp), %xmm0
movss 0x2249d(%rip), %xmm1    # 0x605c4
ucomiss %xmm1, %xmm0
jbe 0x3e17d
movss 0x1cee4(%rip), %xmm0    # 0x5b018
divss -0xcc(%rbp), %xmm0
movss %xmm0, -0xd0(%rbp)
movss -0xd0(%rbp), %xmm0
movss 0x1cfd4(%rip), %xmm1    # 0x5b128
ucomiss %xmm1, %xmm0
jbe 0x3e169
movss 0x1cfc7(%rip), %xmm0    # 0x5b128
movss %xmm0, -0xd0(%rbp)
movss -0xd0(%rbp), %xmm0
leaq -0xc0(%rbp), %rdi
callq 0x3f050
leaq -0xc0(%rbp), %rdi
movq %rdi, -0x258(%rbp)
movss 0x1ce85(%rip), %xmm0    # 0x5b018
callq 0x3f050
movq -0x258(%rbp), %rsi
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
leaq (%rax,%rcx,8), %rdi
callq 0x3f120
movq -0x258(%rbp), %rsi
movlpd %xmm0, -0xd8(%rbp)
movq -0x58(%rbp), %rax
movl -0xb4(%rbp), %ecx
addl %ecx, %ecx
movslq %ecx, %rcx
movq -0xd8(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
leaq (%rax,%rcx,8), %rdi
callq 0x3f000
movq -0x200(%rbp), %rax
movlpd %xmm0, -0xe0(%rbp)
movq -0x58(%rbp), %rcx
movl -0xb4(%rbp), %edx
shll %edx
addl $0x1, %edx
movslq %edx, %rdx
movq -0xe0(%rbp), %rsi
movq %rsi, (%rcx,%rdx,8)
movl -0xb8(%rbp), %ecx
addl $0x0, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, (%rcx)
movl -0xac(%rbp), %ecx
addl $0x0, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x2(%rcx)
movl -0xac(%rbp), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x4(%rcx)
movl -0xac(%rbp), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x6(%rcx)
movl -0xb8(%rbp), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x8(%rcx)
movl -0xb8(%rbp), %ecx
addl $0x0, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0xa(%rcx)
movl -0xb8(%rbp), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0xc(%rcx)
movl -0xac(%rbp), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0xe(%rcx)
movl -0xac(%rbp), %ecx
addl $0x0, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x10(%rcx)
movl -0xac(%rbp), %ecx
addl $0x0, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x12(%rcx)
movl -0xb8(%rbp), %ecx
addl $0x0, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x14(%rcx)
movl -0xb8(%rbp), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x16(%rcx)
movq 0x48(%rax), %rcx
addq $0x18, %rcx
movq %rcx, 0x48(%rax)
movl -0xb8(%rbp), %eax
movl %eax, -0xac(%rbp)
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x3e027
movl $0x0, -0xe4(%rbp)
movl -0xe4(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x3e40b
movq -0x200(%rbp), %rax
movq -0x10(%rbp), %rdx
movslq -0xe4(%rbp), %rsi
movq 0x40(%rax), %rcx
movq (%rdx,%rsi,8), %rdx
movq %rdx, (%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x8(%rcx)
movl -0x18(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x10(%rcx)
movq -0x58(%rbp), %rdx
movl -0xe4(%rbp), %ecx
shll %ecx
addl $0x0, %ecx
movslq %ecx, %rsi
movq 0x40(%rax), %rcx
movq (%rdx,%rsi,8), %rdx
movq %rdx, 0x14(%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x1c(%rcx)
movl -0x3c(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x24(%rcx)
movq -0x58(%rbp), %rdx
movl -0xe4(%rbp), %ecx
shll %ecx
addl $0x1, %ecx
movslq %ecx, %rsi
movq 0x40(%rax), %rcx
movq (%rdx,%rsi,8), %rdx
movq %rdx, 0x28(%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x30(%rcx)
movl -0x3c(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x38(%rcx)
movq 0x40(%rax), %rcx
addq $0x3c, %rcx
movq %rcx, 0x40(%rax)
movl -0xe4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe4(%rbp)
jmp 0x3e341
jmp 0x3ecd9
movss -0x20(%rbp), %xmm0
movss 0x1cbfb(%rip), %xmm1    # 0x5b018
subss %xmm1, %xmm0
movss 0x1cbfb(%rip), %xmm1    # 0x5b024
mulss %xmm1, %xmm0
movss %xmm0, -0xe8(%rbp)
testb $0x1, -0x19(%rbp)
jne 0x3e764
movq -0x10(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x50(%rbp), %rdi
movss -0xe8(%rbp), %xmm0
movss 0x1cbba(%rip), %xmm1    # 0x5b018
movss %xmm1, -0x264(%rbp)
addss %xmm1, %xmm0
callq 0x3f170
movq -0x2a0(%rbp), %rdi
movlpd %xmm0, -0xf8(%rbp)
leaq -0xf8(%rbp), %rsi
callq 0x3f120
movlpd %xmm0, -0xf0(%rbp)
movq -0x58(%rbp), %rax
movq -0xf0(%rbp), %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x298(%rbp)
movq -0x50(%rbp), %rdi
movss -0xe8(%rbp), %xmm0
callq 0x3f170
movq -0x298(%rbp), %rdi
movlpd %xmm0, -0x108(%rbp)
leaq -0x108(%rbp), %rsi
callq 0x3f120
movlpd %xmm0, -0x100(%rbp)
movq -0x58(%rbp), %rax
movq -0x100(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x50(%rbp), %rdi
movss -0xe8(%rbp), %xmm0
callq 0x3f170
movq -0x290(%rbp), %rdi
movlpd %xmm0, -0x118(%rbp)
leaq -0x118(%rbp), %rsi
callq 0x3f000
movss -0x264(%rbp), %xmm1
movlpd %xmm0, -0x110(%rbp)
movq -0x58(%rbp), %rax
movq -0x110(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x50(%rbp), %rdi
movss -0xe8(%rbp), %xmm0
addss %xmm1, %xmm0
callq 0x3f170
movq -0x288(%rbp), %rdi
movlpd %xmm0, -0x128(%rbp)
leaq -0x128(%rbp), %rsi
callq 0x3f000
movss -0x264(%rbp), %xmm1
movlpd %xmm0, -0x120(%rbp)
movq -0x58(%rbp), %rax
movq -0x120(%rbp), %rcx
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
decl %ecx
movslq %ecx, %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x280(%rbp)
movq -0x50(%rbp), %rax
leaq (%rax,%rcx,8), %rdi
movss -0xe8(%rbp), %xmm0
addss %xmm1, %xmm0
callq 0x3f170
movq -0x280(%rbp), %rdi
movlpd %xmm0, -0x138(%rbp)
leaq -0x138(%rbp), %rsi
callq 0x3f120
movlpd %xmm0, -0x130(%rbp)
movq -0x58(%rbp), %rax
movl -0x14(%rbp), %edx
movl %edx, %ecx
leal -0x4(,%rcx,4), %ecx
movslq %ecx, %rcx
movq -0x130(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
decl %ecx
movslq %ecx, %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x278(%rbp)
movq -0x50(%rbp), %rax
leaq (%rax,%rcx,8), %rdi
movss -0xe8(%rbp), %xmm0
callq 0x3f170
movq -0x278(%rbp), %rdi
movlpd %xmm0, -0x148(%rbp)
leaq -0x148(%rbp), %rsi
callq 0x3f120
movlpd %xmm0, -0x140(%rbp)
movq -0x58(%rbp), %rax
movl -0x14(%rbp), %edx
movl %edx, %ecx
leal -0x4(,%rcx,4), %ecx
movslq %ecx, %rcx
movq -0x140(%rbp), %rdx
movq %rdx, 0x8(%rax,%rcx,8)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
decl %ecx
movslq %ecx, %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x270(%rbp)
movq -0x50(%rbp), %rax
leaq (%rax,%rcx,8), %rdi
movss -0xe8(%rbp), %xmm0
callq 0x3f170
movq -0x270(%rbp), %rdi
movlpd %xmm0, -0x158(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x3f000
movss -0x264(%rbp), %xmm1
movlpd %xmm0, -0x150(%rbp)
movq -0x58(%rbp), %rax
movl -0x14(%rbp), %edx
movl %edx, %ecx
leal -0x4(,%rcx,4), %ecx
movslq %ecx, %rcx
movq -0x150(%rbp), %rdx
movq %rdx, 0x10(%rax,%rcx,8)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
decl %ecx
movslq %ecx, %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x260(%rbp)
movq -0x50(%rbp), %rax
leaq (%rax,%rcx,8), %rdi
movss -0xe8(%rbp), %xmm0
addss %xmm1, %xmm0
callq 0x3f170
movq -0x260(%rbp), %rdi
movlpd %xmm0, -0x168(%rbp)
leaq -0x168(%rbp), %rsi
callq 0x3f000
movlpd %xmm0, -0x160(%rbp)
movq -0x58(%rbp), %rax
movl -0x14(%rbp), %ecx
subl $0x1, %ecx
shll $0x2, %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movq -0x160(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x200(%rbp), %rax
movl 0x38(%rax), %eax
movl %eax, -0x16c(%rbp)
movl $0x0, -0x170(%rbp)
movl -0x170(%rbp), %eax
cmpl -0x30(%rbp), %eax
jge 0x3ebc4
movl -0x170(%rbp), %eax
addl $0x1, %eax
cmpl -0x14(%rbp), %eax
jne 0x3e7a5
xorl %eax, %eax
movl %eax, -0x2a4(%rbp)
jmp 0x3e7b4
movl -0x170(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2a4(%rbp)
movl -0x2a4(%rbp), %eax
movl %eax, -0x174(%rbp)
movl -0x170(%rbp), %eax
addl $0x1, %eax
cmpl -0x14(%rbp), %eax
jne 0x3e7e0
movq -0x200(%rbp), %rax
movl 0x38(%rax), %eax
movl %eax, -0x2a8(%rbp)
jmp 0x3e7ef
movl -0x16c(%rbp), %eax
addl $0x4, %eax
movl %eax, -0x2a8(%rbp)
movl -0x2a8(%rbp), %eax
movl %eax, -0x178(%rbp)
movq -0x50(%rbp), %rax
movslq -0x170(%rbp), %rcx
leaq (%rax,%rcx,8), %rdi
movslq -0x174(%rbp), %rcx
leaq (%rax,%rcx,8), %rsi
callq 0x3f120
movlpd %xmm0, -0x188(%rbp)
leaq -0x188(%rbp), %rdi
movss 0x1c7f3(%rip), %xmm0    # 0x5b024
callq 0x3f170
movlpd %xmm0, -0x180(%rbp)
movss -0x180(%rbp), %xmm0
movss -0x180(%rbp), %xmm2
movss -0x17c(%rbp), %xmm1
mulss -0x17c(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x18c(%rbp)
movss -0x18c(%rbp), %xmm0
movss 0x21d46(%rip), %xmm1    # 0x605c4
ucomiss %xmm1, %xmm0
jbe 0x3e8d4
movss 0x1c78d(%rip), %xmm0    # 0x5b018
divss -0x18c(%rbp), %xmm0
movss %xmm0, -0x190(%rbp)
movss -0x190(%rbp), %xmm0
movss 0x1c87d(%rip), %xmm1    # 0x5b128
ucomiss %xmm1, %xmm0
jbe 0x3e8c0
movss 0x1c870(%rip), %xmm0    # 0x5b128
movss %xmm0, -0x190(%rbp)
movss -0x190(%rbp), %xmm0
leaq -0x180(%rbp), %rdi
callq 0x3f050
movss -0xe8(%rbp), %xmm0
movss 0x1c734(%rip), %xmm1    # 0x5b018
addss %xmm1, %xmm0
leaq -0x180(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x3f170
movq -0x2c0(%rbp), %rdi
movlpd %xmm0, -0x198(%rbp)
movss -0xe8(%rbp), %xmm0
callq 0x3f170
movlpd %xmm0, -0x1a0(%rbp)
movq -0x10(%rbp), %rax
movslq -0x174(%rbp), %rcx
leaq (%rax,%rcx,8), %rdi
leaq -0x198(%rbp), %rsi
movq %rsi, -0x2b0(%rbp)
callq 0x3f120
movlpd %xmm0, -0x1a8(%rbp)
movq -0x58(%rbp), %rax
movl -0x174(%rbp), %ecx
shll $0x2, %ecx
movslq %ecx, %rcx
movq -0x1a8(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movslq -0x174(%rbp), %rcx
leaq (%rax,%rcx,8), %rdi
leaq -0x1a0(%rbp), %rsi
movq %rsi, -0x2b8(%rbp)
callq 0x3f120
movq -0x2b8(%rbp), %rsi
movlpd %xmm0, -0x1b0(%rbp)
movq -0x58(%rbp), %rax
movl -0x174(%rbp), %ecx
shll $0x2, %ecx
movslq %ecx, %rcx
movq -0x1b0(%rbp), %rdx
movq %rdx, 0x8(%rax,%rcx,8)
movq -0x10(%rbp), %rax
movslq -0x174(%rbp), %rcx
leaq (%rax,%rcx,8), %rdi
callq 0x3f000
movq -0x2b0(%rbp), %rsi
movlpd %xmm0, -0x1b8(%rbp)
movq -0x58(%rbp), %rax
movl -0x174(%rbp), %ecx
shll $0x2, %ecx
movslq %ecx, %rcx
movq -0x1b8(%rbp), %rdx
movq %rdx, 0x10(%rax,%rcx,8)
movq -0x10(%rbp), %rax
movslq -0x174(%rbp), %rcx
leaq (%rax,%rcx,8), %rdi
callq 0x3f000
movq -0x200(%rbp), %rax
movlpd %xmm0, -0x1c0(%rbp)
movq -0x58(%rbp), %rcx
movl -0x174(%rbp), %edx
shll $0x2, %edx
addl $0x3, %edx
movslq %edx, %rdx
movq -0x1c0(%rbp), %rsi
movq %rsi, (%rcx,%rdx,8)
movl -0x178(%rbp), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, (%rcx)
movl -0x16c(%rbp), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x2(%rcx)
movl -0x16c(%rbp), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x4(%rcx)
movl -0x16c(%rbp), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x6(%rcx)
movl -0x178(%rbp), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x8(%rcx)
movl -0x178(%rbp), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0xa(%rcx)
movl -0x178(%rbp), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0xc(%rcx)
movl -0x16c(%rbp), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0xe(%rcx)
movl -0x16c(%rbp), %ecx
addl $0x0, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x10(%rcx)
movl -0x16c(%rbp), %ecx
addl $0x0, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x12(%rcx)
movl -0x178(%rbp), %ecx
addl $0x0, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x14(%rcx)
movl -0x178(%rbp), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x16(%rcx)
movl -0x178(%rbp), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x18(%rcx)
movl -0x16c(%rbp), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x1a(%rcx)
movl -0x16c(%rbp), %ecx
addl $0x3, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x1c(%rcx)
movl -0x16c(%rbp), %ecx
addl $0x3, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x1e(%rcx)
movl -0x178(%rbp), %ecx
addl $0x3, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x20(%rcx)
movl -0x178(%rbp), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x22(%rcx)
movq 0x48(%rax), %rcx
addq $0x24, %rcx
movq %rcx, 0x48(%rax)
movl -0x178(%rbp), %eax
movl %eax, -0x16c(%rbp)
movl -0x170(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x170(%rbp)
jmp 0x3e77e
movl $0x0, -0x1c4(%rbp)
movl -0x1c4(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x3ecd7
movq -0x200(%rbp), %rax
movq -0x58(%rbp), %rdx
movl -0x1c4(%rbp), %ecx
shll $0x2, %ecx
addl $0x0, %ecx
movslq %ecx, %rsi
movq 0x40(%rax), %rcx
movq (%rdx,%rsi,8), %rdx
movq %rdx, (%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x8(%rcx)
movl -0x3c(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x10(%rcx)
movq -0x58(%rbp), %rdx
movl -0x1c4(%rbp), %ecx
shll $0x2, %ecx
addl $0x1, %ecx
movslq %ecx, %rsi
movq 0x40(%rax), %rcx
movq (%rdx,%rsi,8), %rdx
movq %rdx, 0x14(%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x1c(%rcx)
movl -0x18(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x24(%rcx)
movq -0x58(%rbp), %rdx
movl -0x1c4(%rbp), %ecx
shll $0x2, %ecx
addl $0x2, %ecx
movslq %ecx, %rsi
movq 0x40(%rax), %rcx
movq (%rdx,%rsi,8), %rdx
movq %rdx, 0x28(%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x30(%rcx)
movl -0x18(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x38(%rcx)
movq -0x58(%rbp), %rdx
movl -0x1c4(%rbp), %ecx
shll $0x2, %ecx
addl $0x3, %ecx
movslq %ecx, %rsi
movq 0x40(%rax), %rcx
movq (%rdx,%rsi,8), %rdx
movq %rdx, 0x3c(%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x44(%rcx)
movl -0x3c(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x4c(%rcx)
movq 0x40(%rax), %rcx
addq $0x50, %rcx
movq %rcx, 0x40(%rax)
movl -0x1c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c4(%rbp)
jmp 0x3ebce
jmp 0x3ecd9
movq -0x200(%rbp), %rax
movl -0x44(%rbp), %ecx
movzwl %cx, %ecx
addl 0x38(%rax), %ecx
movl %ecx, 0x38(%rax)
jmp 0x3efec
movq -0x200(%rbp), %rdi
imull $0x6, -0x30(%rbp), %eax
movl %eax, -0x1c8(%rbp)
movl -0x30(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x1cc(%rbp)
movl -0x1c8(%rbp), %esi
movl -0x1cc(%rbp), %edx
callq 0x3d830
movl $0x0, -0x1d0(%rbp)
movl -0x1d0(%rbp), %eax
cmpl -0x30(%rbp), %eax
jge 0x3efea
movl -0x1d0(%rbp), %eax
addl $0x1, %eax
cmpl -0x14(%rbp), %eax
jne 0x3ed50
xorl %eax, %eax
movl %eax, -0x2c4(%rbp)
jmp 0x3ed5f
movl -0x1d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c4(%rbp)
movl -0x2c4(%rbp), %eax
movl %eax, -0x1d4(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1d0(%rbp), %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x1e0(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1d4(%rbp), %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x1e8(%rbp)
movq -0x1e8(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
callq 0x3f000
movlpd %xmm0, -0x1f0(%rbp)
leaq -0x1f0(%rbp), %rdi
movss 0x1c257(%rip), %xmm0    # 0x5b018
callq 0x3f090
leaq -0x1f0(%rbp), %rdi
callq 0x3f050
movq -0x200(%rbp), %rax
movss -0x1f0(%rbp), %xmm0
movss 0x1c23b(%rip), %xmm1    # 0x5b024
mulss -0x20(%rbp), %xmm1
mulss %xmm1, %xmm0
movss %xmm0, -0x1f4(%rbp)
movss -0x1ec(%rbp), %xmm0
movss 0x1c21a(%rip), %xmm1    # 0x5b024
mulss -0x20(%rbp), %xmm1
mulss %xmm1, %xmm0
movss %xmm0, -0x1f8(%rbp)
movq -0x1e0(%rbp), %rcx
movss (%rcx), %xmm0
addss -0x1f8(%rbp), %xmm0
movq 0x40(%rax), %rcx
movss %xmm0, (%rcx)
movq -0x1e0(%rbp), %rcx
movss 0x4(%rcx), %xmm0
subss -0x1f4(%rbp), %xmm0
movq 0x40(%rax), %rcx
movss %xmm0, 0x4(%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x8(%rcx)
movl -0x18(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x10(%rcx)
movq -0x1e8(%rbp), %rcx
movss (%rcx), %xmm0
addss -0x1f8(%rbp), %xmm0
movq 0x40(%rax), %rcx
movss %xmm0, 0x14(%rcx)
movq -0x1e8(%rbp), %rcx
movss 0x4(%rcx), %xmm0
subss -0x1f4(%rbp), %xmm0
movq 0x40(%rax), %rcx
movss %xmm0, 0x18(%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x1c(%rcx)
movl -0x18(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x24(%rcx)
movq -0x1e8(%rbp), %rcx
movss (%rcx), %xmm0
subss -0x1f8(%rbp), %xmm0
movq 0x40(%rax), %rcx
movss %xmm0, 0x28(%rcx)
movq -0x1e8(%rbp), %rcx
movss 0x4(%rcx), %xmm0
addss -0x1f4(%rbp), %xmm0
movq 0x40(%rax), %rcx
movss %xmm0, 0x2c(%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x30(%rcx)
movl -0x18(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x38(%rcx)
movq -0x1e0(%rbp), %rcx
movss (%rcx), %xmm0
subss -0x1f8(%rbp), %xmm0
movq 0x40(%rax), %rcx
movss %xmm0, 0x3c(%rcx)
movq -0x1e0(%rbp), %rcx
movss 0x4(%rcx), %xmm0
addss -0x1f4(%rbp), %xmm0
movq 0x40(%rax), %rcx
movss %xmm0, 0x40(%rcx)
movq 0x40(%rax), %rcx
movq -0x2c(%rbp), %rdx
movq %rdx, 0x44(%rcx)
movl -0x18(%rbp), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x4c(%rcx)
movq 0x40(%rax), %rcx
addq $0x50, %rcx
movq %rcx, 0x40(%rax)
movl 0x38(%rax), %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, (%rcx)
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x2(%rcx)
movl 0x38(%rax), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x4(%rcx)
movl 0x38(%rax), %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x6(%rcx)
movl 0x38(%rax), %ecx
addl $0x2, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0x8(%rcx)
movl 0x38(%rax), %ecx
addl $0x3, %ecx
movw %cx, %dx
movq 0x48(%rax), %rcx
movw %dx, 0xa(%rcx)
movq 0x48(%rax), %rcx
addq $0xc, %rcx
movq %rcx, 0x48(%rax)
movl 0x38(%rax), %ecx
addl $0x4, %ecx
movl %ecx, 0x38(%rax)
movl -0x1d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d0(%rbp)
jmp 0x3ed29
jmp 0x3efec
movq %rbp, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)