// File: /workspace/github_cpp_makefile_star2_O1/Ciaxur[P]yagb-emu/include/imgui/imgui_draw.cpp
// Function: ImFontAtlasBuildWithStbTruetype(ImFontAtlas*)
bool    ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas)
{
    IM_ASSERT(atlas->ConfigData.Size > 0);

    ImFontAtlasBuildInit(atlas);

    // Clear atlas
    atlas->TexID = (ImTextureID)NULL;
    atlas->TexWidth = atlas->TexHeight = 0;
    atlas->TexUvScale = ImVec2(0.0f, 0.0f);
    atlas->TexUvWhitePixel = ImVec2(0.0f, 0.0f);
    atlas->ClearTexData();

    // Temporary storage for building
    ImVector<ImFontBuildSrcData> src_tmp_array;
    ImVector<ImFontBuildDstData> dst_tmp_array;
    src_tmp_array.resize(atlas->ConfigData.Size);
    dst_tmp_array.resize(atlas->Fonts.Size);
    memset(src_tmp_array.Data, 0, (size_t)src_tmp_array.size_in_bytes());
    memset(dst_tmp_array.Data, 0, (size_t)dst_tmp_array.size_in_bytes());

    // 1. Initialize font loading structure, check font data validity
    for (int src_i = 0; src_i < atlas->ConfigData.Size; src_i++)
    {
        ImFontBuildSrcData& src_tmp = src_tmp_array[src_i];
        ImFontConfig& cfg = atlas->ConfigData[src_i];
        IM_ASSERT(cfg.DstFont && (!cfg.DstFont->IsLoaded() || cfg.DstFont->ContainerAtlas == atlas));

        // Find index from cfg.DstFont (we allow the user to set cfg.DstFont. Also it makes casual debugging nicer than when storing indices)
        src_tmp.DstIndex = -1;
        for (int output_i = 0; output_i < atlas->Fonts.Size && src_tmp.DstIndex == -1; output_i++)
            if (cfg.DstFont == atlas->Fonts[output_i])
                src_tmp.DstIndex = output_i;
        if (src_tmp.DstIndex == -1)
        {
            IM_ASSERT(src_tmp.DstIndex != -1); // cfg.DstFont not pointing within atlas->Fonts[] array?
            return false;
        }
        // Initialize helper structure for font loading and verify that the TTF/OTF data is correct
        const int font_offset = stbtt_GetFontOffsetForIndex((unsigned char*)cfg.FontData, cfg.FontNo);
        IM_ASSERT(font_offset >= 0 && "FontData is incorrect, or FontNo cannot be found.");
        if (!stbtt_InitFont(&src_tmp.FontInfo, (unsigned char*)cfg.FontData, font_offset))
            return false;

        // Measure highest codepoints
        ImFontBuildDstData& dst_tmp = dst_tmp_array[src_tmp.DstIndex];
        src_tmp.SrcRanges = cfg.GlyphRanges ? cfg.GlyphRanges : atlas->GetGlyphRangesDefault();
        for (const ImWchar* src_range = src_tmp.SrcRanges; src_range[0] && src_range[1]; src_range += 2)
            src_tmp.GlyphsHighest = ImMax(src_tmp.GlyphsHighest, (int)src_range[1]);
        dst_tmp.SrcCount++;
        dst_tmp.GlyphsHighest = ImMax(dst_tmp.GlyphsHighest, src_tmp.GlyphsHighest);
    }

    // 2. For every requested codepoint, check for their presence in the font data, and handle redundancy or overlaps between source fonts to avoid unused glyphs.
    int total_glyphs_count = 0;
    for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
    {
        ImFontBuildSrcData& src_tmp = src_tmp_array[src_i];
        ImFontBuildDstData& dst_tmp = dst_tmp_array[src_tmp.DstIndex];
        src_tmp.GlyphsSet.Create(src_tmp.GlyphsHighest + 1);
        if (dst_tmp.GlyphsSet.Storage.empty())
            dst_tmp.GlyphsSet.Create(dst_tmp.GlyphsHighest + 1);

        for (const ImWchar* src_range = src_tmp.SrcRanges; src_range[0] && src_range[1]; src_range += 2)
            for (unsigned int codepoint = src_range[0]; codepoint <= src_range[1]; codepoint++)
            {
                if (dst_tmp.GlyphsSet.TestBit(codepoint))    // Don't overwrite existing glyphs. We could make this an option for MergeMode (e.g. MergeOverwrite==true)
                    continue;
                if (!stbtt_FindGlyphIndex(&src_tmp.FontInfo, codepoint))    // It is actually in the font?
                    continue;

                // Add to avail set/counters
                src_tmp.GlyphsCount++;
                dst_tmp.GlyphsCount++;
                src_tmp.GlyphsSet.SetBit(codepoint);
                dst_tmp.GlyphsSet.SetBit(codepoint);
                total_glyphs_count++;
            }
    }

    // 3. Unpack our bit map into a flat list (we now have all the Unicode points that we know are requested _and_ available _and_ not overlapping another)
    for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
    {
        ImFontBuildSrcData& src_tmp = src_tmp_array[src_i];
        src_tmp.GlyphsList.reserve(src_tmp.GlyphsCount);
        UnpackBitVectorToFlatIndexList(&src_tmp.GlyphsSet, &src_tmp.GlyphsList);
        src_tmp.GlyphsSet.Clear();
        IM_ASSERT(src_tmp.GlyphsList.Size == src_tmp.GlyphsCount);
    }
    for (int dst_i = 0; dst_i < dst_tmp_array.Size; dst_i++)
        dst_tmp_array[dst_i].GlyphsSet.Clear();
    dst_tmp_array.clear();

    // Allocate packing character data and flag packed characters buffer as non-packed (x0=y0=x1=y1=0)
    // (We technically don't need to zero-clear buf_rects, but let's do it for the sake of sanity)
    ImVector<stbrp_rect> buf_rects;
    ImVector<stbtt_packedchar> buf_packedchars;
    buf_rects.resize(total_glyphs_count);
    buf_packedchars.resize(total_glyphs_count);
    memset(buf_rects.Data, 0, (size_t)buf_rects.size_in_bytes());
    memset(buf_packedchars.Data, 0, (size_t)buf_packedchars.size_in_bytes());

    // 4. Gather glyphs sizes so we can pack them in our virtual canvas.
    int total_surface = 0;
    int buf_rects_out_n = 0;
    int buf_packedchars_out_n = 0;
    for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
    {
        ImFontBuildSrcData& src_tmp = src_tmp_array[src_i];
        if (src_tmp.GlyphsCount == 0)
            continue;

        src_tmp.Rects = &buf_rects[buf_rects_out_n];
        src_tmp.PackedChars = &buf_packedchars[buf_packedchars_out_n];
        buf_rects_out_n += src_tmp.GlyphsCount;
        buf_packedchars_out_n += src_tmp.GlyphsCount;

        // Convert our ranges in the format stb_truetype wants
        ImFontConfig& cfg = atlas->ConfigData[src_i];
        src_tmp.PackRange.font_size = cfg.SizePixels;
        src_tmp.PackRange.first_unicode_codepoint_in_range = 0;
        src_tmp.PackRange.array_of_unicode_codepoints = src_tmp.GlyphsList.Data;
        src_tmp.PackRange.num_chars = src_tmp.GlyphsList.Size;
        src_tmp.PackRange.chardata_for_range = src_tmp.PackedChars;
        src_tmp.PackRange.h_oversample = (unsigned char)cfg.OversampleH;
        src_tmp.PackRange.v_oversample = (unsigned char)cfg.OversampleV;

        // Gather the sizes of all rectangles we will need to pack (this loop is based on stbtt_PackFontRangesGatherRects)
        const float scale = (cfg.SizePixels > 0) ? stbtt_ScaleForPixelHeight(&src_tmp.FontInfo, cfg.SizePixels) : stbtt_ScaleForMappingEmToPixels(&src_tmp.FontInfo, -cfg.SizePixels);
        const int padding = atlas->TexGlyphPadding;
        for (int glyph_i = 0; glyph_i < src_tmp.GlyphsList.Size; glyph_i++)
        {
            int x0, y0, x1, y1;
            const int glyph_index_in_font = stbtt_FindGlyphIndex(&src_tmp.FontInfo, src_tmp.GlyphsList[glyph_i]);
            IM_ASSERT(glyph_index_in_font != 0);
            stbtt_GetGlyphBitmapBoxSubpixel(&src_tmp.FontInfo, glyph_index_in_font, scale * cfg.OversampleH, scale * cfg.OversampleV, 0, 0, &x0, &y0, &x1, &y1);
            src_tmp.Rects[glyph_i].w = (stbrp_coord)(x1 - x0 + padding + cfg.OversampleH - 1);
            src_tmp.Rects[glyph_i].h = (stbrp_coord)(y1 - y0 + padding + cfg.OversampleV - 1);
            total_surface += src_tmp.Rects[glyph_i].w * src_tmp.Rects[glyph_i].h;
        }
    }

    // We need a width for the skyline algorithm, any width!
    // The exact width doesn't really matter much, but some API/GPU have texture size limitations and increasing width can decrease height.
    // User can override TexDesiredWidth and TexGlyphPadding if they wish, otherwise we use a simple heuristic to select the width based on expected surface.
    const int surface_sqrt = (int)ImSqrt((float)total_surface) + 1;
    atlas->TexHeight = 0;
    if (atlas->TexDesiredWidth > 0)
        atlas->TexWidth = atlas->TexDesiredWidth;
    else
        atlas->TexWidth = (surface_sqrt >= 4096 * 0.7f) ? 4096 : (surface_sqrt >= 2048 * 0.7f) ? 2048 : (surface_sqrt >= 1024 * 0.7f) ? 1024 : 512;

    // 5. Start packing
    // Pack our extra data rectangles first, so it will be on the upper-left corner of our texture (UV will have small values).
    const int TEX_HEIGHT_MAX = 1024 * 32;
    stbtt_pack_context spc = {};
    stbtt_PackBegin(&spc, NULL, atlas->TexWidth, TEX_HEIGHT_MAX, 0, atlas->TexGlyphPadding, NULL);
    ImFontAtlasBuildPackCustomRects(atlas, spc.pack_info);

    // 6. Pack each source font. No rendering yet, we are working with rectangles in an infinitely tall texture at this point.
    for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
    {
        ImFontBuildSrcData& src_tmp = src_tmp_array[src_i];
        if (src_tmp.GlyphsCount == 0)
            continue;

        stbrp_pack_rects((stbrp_context*)spc.pack_info, src_tmp.Rects, src_tmp.GlyphsCount);

        // Extend texture height and mark missing glyphs as non-packed so we won't render them.
        // FIXME: We are not handling packing failure here (would happen if we got off TEX_HEIGHT_MAX or if a single if larger than TexWidth?)
        for (int glyph_i = 0; glyph_i < src_tmp.GlyphsCount; glyph_i++)
            if (src_tmp.Rects[glyph_i].was_packed)
                atlas->TexHeight = ImMax(atlas->TexHeight, src_tmp.Rects[glyph_i].y + src_tmp.Rects[glyph_i].h);
    }

    // 7. Allocate texture
    atlas->TexHeight = (atlas->Flags & ImFontAtlasFlags_NoPowerOfTwoHeight) ? (atlas->TexHeight + 1) : ImUpperPowerOfTwo(atlas->TexHeight);
    atlas->TexUvScale = ImVec2(1.0f / atlas->TexWidth, 1.0f / atlas->TexHeight);
    atlas->TexPixelsAlpha8 = (unsigned char*)IM_ALLOC(atlas->TexWidth * atlas->TexHeight);
    memset(atlas->TexPixelsAlpha8, 0, atlas->TexWidth * atlas->TexHeight);
    spc.pixels = atlas->TexPixelsAlpha8;
    spc.height = atlas->TexHeight;

    // 8. Render/rasterize font characters into the texture
    for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
    {
        ImFontConfig& cfg = atlas->ConfigData[src_i];
        ImFontBuildSrcData& src_tmp = src_tmp_array[src_i];
        if (src_tmp.GlyphsCount == 0)
            continue;

        stbtt_PackFontRangesRenderIntoRects(&spc, &src_tmp.FontInfo, &src_tmp.PackRange, 1, src_tmp.Rects);

        // Apply multiply operator
        if (cfg.RasterizerMultiply != 1.0f)
        {
            unsigned char multiply_table[256];
            ImFontAtlasBuildMultiplyCalcLookupTable(multiply_table, cfg.RasterizerMultiply);
            stbrp_rect* r = &src_tmp.Rects[0];
            for (int glyph_i = 0; glyph_i < src_tmp.GlyphsCount; glyph_i++, r++)
                if (r->was_packed)
                    ImFontAtlasBuildMultiplyRectAlpha8(multiply_table, atlas->TexPixelsAlpha8, r->x, r->y, r->w, r->h, atlas->TexWidth * 1);
        }
        src_tmp.Rects = NULL;
    }

    // End packing
    stbtt_PackEnd(&spc);
    buf_rects.clear();

    // 9. Setup ImFont and glyphs for runtime
    for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
    {
        ImFontBuildSrcData& src_tmp = src_tmp_array[src_i];
        if (src_tmp.GlyphsCount == 0)
            continue;

        // When merging fonts with MergeMode=true:
        // - We can have multiple input fonts writing into a same destination font.
        // - dst_font->ConfigData is != from cfg which is our source configuration.
        ImFontConfig& cfg = atlas->ConfigData[src_i];
        ImFont* dst_font = cfg.DstFont;

        const float font_scale = stbtt_ScaleForPixelHeight(&src_tmp.FontInfo, cfg.SizePixels);
        int unscaled_ascent, unscaled_descent, unscaled_line_gap;
        stbtt_GetFontVMetrics(&src_tmp.FontInfo, &unscaled_ascent, &unscaled_descent, &unscaled_line_gap);

        const float ascent = ImFloor(unscaled_ascent * font_scale + ((unscaled_ascent > 0.0f) ? +1 : -1));
        const float descent = ImFloor(unscaled_descent * font_scale + ((unscaled_descent > 0.0f) ? +1 : -1));
        ImFontAtlasBuildSetupFont(atlas, dst_font, &cfg, ascent, descent);
        const float font_off_x = cfg.GlyphOffset.x;
        const float font_off_y = cfg.GlyphOffset.y + IM_ROUND(dst_font->Ascent);

        for (int glyph_i = 0; glyph_i < src_tmp.GlyphsCount; glyph_i++)
        {
            // Register glyph
            const int codepoint = src_tmp.GlyphsList[glyph_i];
            const stbtt_packedchar& pc = src_tmp.PackedChars[glyph_i];
            stbtt_aligned_quad q;
            float unused_x = 0.0f, unused_y = 0.0f;
            stbtt_GetPackedQuad(src_tmp.PackedChars, atlas->TexWidth, atlas->TexHeight, glyph_i, &unused_x, &unused_y, &q, 0);
            dst_font->AddGlyph(&cfg, (ImWchar)codepoint, q.x0 + font_off_x, q.y0 + font_off_y, q.x1 + font_off_x, q.y1 + font_off_y, q.s0, q.t0, q.s1, q.t1, pc.xadvance);
        }
    }

    // Cleanup temporary (ImVector doesn't honor destructor)
    for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
        src_tmp_array[src_i].~ImFontBuildSrcData();

    ImFontAtlasBuildFinish(atlas);
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x478, %rsp            # imm = 0x478
cmpl $0x0, 0x60(%rdi)
jle 0x810de
movq %rdi, %r14
callq 0x81228
xorl %eax, %eax
movq %rax, 0x8(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%r14)
movq $0x0, -0x58(%rbp)
movq %rax, 0x38(%r14)
movq %r14, %rdi
callq 0x7ca4a
movslq 0x60(%r14), %rax
movq %rax, -0x98(%rbp)
testq %rax, %rax
jle 0x7de08
movq -0x98(%rbp), %rcx
cmpl $0x9, %ecx
movl $0x8, %eax
cmovgel %ecx, %eax
imulq $0x110, %rax, %rdi      # imm = 0x110
movq $0x0, -0x58(%rbp)
callq 0x424fb
movq %rax, -0x58(%rbp)
movslq 0x40(%r14), %rax
testq %rax, %rax
movq %rax, -0x30(%rbp)
jle 0x7de2e
cmpl $0x9, %eax
movl $0x8, %edi
cmovgel %eax, %edi
shlq $0x5, %rdi
callq 0x424fb
movq %rax, %rbx
jmp 0x7de30
xorl %ebx, %ebx
movq -0x98(%rbp), %r15
imulq $0x110, %r15, %rdx      # imm = 0x110
movq $0x0, -0x70(%rbp)
movq -0x58(%rbp), %rdi
xorl %esi, %esi
movq %rdx, -0x208(%rbp)
callq 0xc260
movq -0x30(%rbp), %rdx
shlq $0x5, %rdx
movq %rbx, -0xe8(%rbp)
movq %rbx, %rdi
xorl %esi, %esi
movq %rdx, -0x50(%rbp)
callq 0xc260
movl 0x60(%r14), %eax
testl %eax, %eax
setle -0x31(%rbp)
movq %r14, -0xa8(%rbp)
jle 0x7e565
testl %r15d, %r15d
movl $0x0, %ecx
cmovgl %r15d, %ecx
movq %rcx, -0x88(%rbp)
xorl %r8d, %r8d
cmpq -0x88(%rbp), %r8
je 0x810c4
cltq
cmpq %rax, %r8
jge 0x80fc4
movq 0x68(%r14), %r9
movq %r8, %rax
shlq $0x7, %rax
leaq (%rax,%r8,8), %rdx
movq 0x80(%r9,%rdx), %rax
testq %rax, %rax
je 0x81033
movq 0x40(%rax), %rcx
testq %rcx, %rcx
sete %sil
cmpq %r14, %rcx
sete %cl
orb %sil, %cl
je 0x81033
imulq $0x110, %r8, %rbx       # imm = 0x110
addq -0x58(%rbp), %rbx
movl $0xffffffff, 0xe0(%rbx) # imm = 0xFFFFFFFF
movslq 0x40(%r14), %rcx
testq %rcx, %rcx
jle 0x81014
addq %rdx, %r9
movq 0x48(%r14), %rdx
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
xorl %esi, %esi
cmpq (%rdx,%rsi,8), %rax
jne 0x7df32
movl %esi, 0xe0(%rbx)
movl %esi, %edi
incq %rsi
cmpq %rcx, %rsi
jae 0x7df3f
cmpl $-0x1, %edi
je 0x7df24
cmpl $-0x1, %edi
je 0x81014
movq %r8, -0x1a8(%rbp)
movq (%r9), %r12
movslq 0x10(%r9), %rax
movzbl (%r12), %ecx
cmpl $0x31, %ecx
jne 0x7df7c
cmpb $0x0, 0x1(%r12)
jne 0x7df7c
cmpb $0x0, 0x2(%r12)
jne 0x7df7c
cmpb $0x0, 0x3(%r12)
je 0x7e001
cmpl $0x74, %ecx
jne 0x7df99
cmpb $0x79, 0x1(%r12)
jne 0x7df99
cmpb $0x70, 0x2(%r12)
jne 0x7df99
cmpb $0x31, 0x3(%r12)
je 0x7e001
testl %ecx, %ecx
je 0x7dfbe
cmpl $0x4f, %ecx
jne 0x7dfd6
cmpb $0x54, 0x1(%r12)
jne 0x7dfba
cmpb $0x54, 0x2(%r12)
jne 0x7dfba
cmpb $0x4f, 0x3(%r12)
je 0x7e001
testl %ecx, %ecx
jne 0x7dfd6
cmpb $0x1, 0x1(%r12)
jne 0x7dfd6
cmpb $0x0, 0x2(%r12)
jne 0x7dfd6
cmpb $0x0, 0x3(%r12)
je 0x7e001
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
cmpl $0x74, %ecx
jne 0x7e04d
movzbl 0x1(%r12), %ecx
cmpl $0x74, %ecx
je 0x7e013
cmpl $0x72, %ecx
jne 0x7e04d
cmpb $0x75, 0x2(%r12)
jne 0x7e00e
cmpb $0x65, 0x3(%r12)
jne 0x7e00e
negl %eax
movl $0x0, %r14d
sbbl %r14d, %r14d
jmp 0x7e04d
cmpb $0x74, %cl
jne 0x7e04d
cmpb $0x63, 0x2(%r12)
jne 0x7e04d
cmpb $0x66, 0x3(%r12)
jne 0x7e04d
movl 0x4(%r12), %ecx
bswapl %ecx
cmpl $0x20000, %ecx          # imm = 0x20000
je 0x7e03a
cmpl $0x10000, %ecx          # imm = 0x10000
jne 0x7e04d
movl 0x8(%r12), %ecx
bswapl %ecx
cmpl %eax, %ecx
jle 0x7e04d
movl 0xc(%r12,%rax,4), %r14d
bswapl %r14d
movq %r9, -0x1e0(%rbp)
testl %r14d, %r14d
js 0x810a5
movq %r12, 0x8(%rbx)
movl %r14d, 0x10(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x40(%rbx)
movq %r12, %rdi
movl %r14d, %esi
leaq 0x51e77(%rip), %rdx     # 0xcfef0
callq 0x84f7b
movq %rax, -0x80(%rbp)
movq %r12, %rdi
movl %r14d, %esi
leaq 0x51e66(%rip), %rdx     # 0xcfef5
callq 0x84f7b
movl %eax, -0xc0(%rbp)
movl %eax, 0x18(%rbx)
movq %r12, %rdi
movl %r14d, %esi
leaq 0x51e50(%rip), %rdx     # 0xcfefa
callq 0x84f7b
movl %eax, -0x48(%rbp)
movl %eax, 0x1c(%rbx)
movq %r12, %rdi
movl %r14d, %esi
leaq 0x51e3d(%rip), %rdx     # 0xcfeff
callq 0x84f7b
movl %eax, -0x110(%rbp)
movl %eax, 0x20(%rbx)
movq %r12, %rdi
movl %r14d, %esi
leaq 0x51e27(%rip), %rdx     # 0xcff04
callq 0x84f7b
movl %eax, %r15d
movl %eax, 0x24(%rbx)
movq %r12, %rdi
movl %r14d, %esi
leaq 0x51e14(%rip), %rdx     # 0xcff09
callq 0x84f7b
movl %eax, %r13d
movl %eax, 0x28(%rbx)
movq %r12, %rdi
movl %r14d, %esi
leaq 0x51e01(%rip), %rdx     # 0xcff0e
callq 0x84f7b
movl %eax, 0x2c(%rbx)
movq %r12, %rdi
movl %r14d, -0x40(%rbp)
movl %r14d, %esi
leaq 0x51ded(%rip), %rdx     # 0xcff13
callq 0x84f7b
movl %eax, 0x30(%rbx)
cmpl $0x0, -0x80(%rbp)
je 0x80e39
cmpl $0x0, -0x48(%rbp)
je 0x80e39
testl %r15d, %r15d
je 0x80e39
testl %r13d, %r13d
je 0x80e39
cmpl $0x0, -0x110(%rbp)
je 0x7e17a
cmpl $0x0, -0xc0(%rbp)
movq -0xa8(%rbp), %r14
movl -0x40(%rbp), %r13d
jne 0x7e411
jmp 0x80e39
movl $0x2, -0x100(%rbp)
xorl %eax, %eax
movl %eax, -0xb8(%rbp)
movl %eax, -0x120(%rbp)
movq $0x0, -0x70(%rbp)
movl %eax, -0x90(%rbp)
movq %r12, %rdi
movl -0x40(%rbp), %r13d
movl %r13d, %esi
leaq 0x51d67(%rip), %rdx     # 0xcff18
callq 0x84f7b
testl %eax, %eax
je 0x80e39
leaq 0x40(%rbx), %rcx
movl %eax, %eax
addq %r12, %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x90(%rbx)
movups %xmm0, 0x80(%rbx)
movq %rax, 0x40(%rbx)
movabsq $0x2000000000000000, %rax # imm = 0x2000000000000000
movq %rax, 0x48(%rbx)
movups (%rcx), %xmm0
movaps %xmm0, -0x480(%rbp)
movslq -0x478(%rbp), %rax
cmpq $-0x2, %rax
jl 0x81086
leaq 0x2(%rax), %rdx
movl -0x474(%rbp), %ecx
cmpl %edx, %ecx
jl 0x81086
movl %edx, -0x478(%rbp)
xorl %esi, %esi
cmpl %ecx, %edx
jge 0x7e237
movq -0x480(%rbp), %rsi
addl $0x3, %eax
movl %eax, -0x478(%rbp)
movzbl (%rsi,%rdx), %esi
cmpl %esi, %ecx
jl 0x81086
movl %esi, -0x478(%rbp)
leaq -0x480(%rbp), %r14
movq %r14, %rdi
callq 0x8502c
movq %r14, %rdi
callq 0x8502c
movq %rax, %rdi
movq %rdx, %rsi
xorl %edx, %edx
callq 0x8514b
movq %rax, -0xd0(%rbp)
movq %rdx, -0xc8(%rbp)
movq %r14, %rdi
callq 0x8502c
movq %r14, %rdi
callq 0x8502c
movq %rax, 0x60(%rbx)
movq %rdx, 0x68(%rbx)
leaq -0xd0(%rbp), %r14
movq %r14, %rdi
movl $0x11, %esi
movl $0x1, %edx
leaq -0xb8(%rbp), %rcx
callq 0x852bc
movq %r14, %rdi
movl $0x106, %esi            # imm = 0x106
movl $0x1, %edx
leaq -0x100(%rbp), %rcx
callq 0x852bc
movq %r14, %rdi
movl $0x124, %esi            # imm = 0x124
movl $0x1, %edx
leaq -0x120(%rbp), %rcx
callq 0x852bc
movq %r14, %rdi
movl $0x125, %esi            # imm = 0x125
movl $0x1, %edx
leaq -0x90(%rbp), %rcx
callq 0x852bc
movq -0x480(%rbp), %rdi
movq -0x478(%rbp), %rsi
movq -0xd0(%rbp), %rdx
movq -0xc8(%rbp), %rcx
callq 0x854ba
movq %rax, 0x70(%rbx)
movq %rdx, 0x78(%rbx)
cmpl $0x2, -0x100(%rbp)
jne 0x80e39
movl -0xb8(%rbp), %r14d
testl %r14d, %r14d
je 0x80e39
movl -0x120(%rbp), %eax
testl %eax, %eax
je 0x7e3d9
movl -0x90(%rbp), %r15d
testq %r15, %r15
je 0x80e39
testl %eax, %eax
js 0x81086
cmpl %eax, -0x474(%rbp)
jl 0x81086
movl %eax, -0x478(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x8502c
movq %rax, 0x80(%rbx)
movq %rdx, 0x88(%rbx)
movl -0x474(%rbp), %eax
subl %r15d, %eax
setl %cl
movl %eax, %edx
orl %r15d, %edx
sets %dl
orb %cl, %dl
addq -0x480(%rbp), %r15
shlq $0x20, %rax
testb %dl, %dl
movl $0x0, %edx
cmovneq %rdx, %r15
movl $0x0, %ecx
movq %rcx, -0x70(%rbp)
cmovneq %rdx, %rax
movq %r15, 0x90(%rbx)
movq %rax, 0x98(%rbx)
testl %r14d, %r14d
js 0x81086
cmpl %r14d, -0x474(%rbp)
jl 0x81086
movl %r14d, -0x478(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x8502c
movq %rax, 0x50(%rbx)
movq %rdx, 0x58(%rbx)
movq -0xa8(%rbp), %r14
movq %r12, %rdi
movl %r13d, %esi
leaq 0x51aff(%rip), %rdx     # 0xcff1d
callq 0x84f7b
testl %eax, %eax
je 0x7e438
movl %eax, %eax
movzwl 0x4(%r12,%rax), %eax
rolw $0x8, %ax
movzwl %ax, %eax
jmp 0x7e43d
movl $0xffff, %eax           # imm = 0xFFFF
movq -0x1e0(%rbp), %rsi
movq -0x80(%rbp), %rdi
movl %eax, 0x14(%rbx)
movl %edi, %eax
movzwl 0x2(%r12,%rax), %eax
rolw $0x8, %ax
movl $0x0, 0x34(%rbx)
testw %ax, %ax
je 0x7e4af
movzwl %ax, %ecx
leal 0x4(%rdi), %eax
movl %ecx, %ecx
movl %eax, %eax
movzwl (%r12,%rax), %edx
rolw $0x8, %dx
testw %dx, %dx
je 0x7e49b
movzwl %dx, %edx
cmpl $0x3, %edx
jne 0x7e4a7
movzwl 0x2(%r12,%rax), %edx
rolw $0x8, %dx
cmpw $0xa, %dx
je 0x7e49b
movzwl %dx, %edx
cmpl $0x1, %edx
jne 0x7e4a7
movl 0x4(%r12,%rax), %edx
bswapl %edx
addl %edi, %edx
movl %edx, 0x34(%rbx)
addl $0x8, %eax
decq %rcx
jne 0x7e46b
cmpl $0x0, 0x34(%rbx)
je 0x80e39
movslq 0x1c(%rbx), %rax
movzwl 0x32(%r12,%rax), %eax
rolw $0x8, %ax
movzwl %ax, %eax
movl %eax, 0x38(%rbx)
movslq 0xe0(%rbx), %rax
testq %rax, %rax
js 0x80fdb
cmpl %eax, -0x30(%rbp)
jle 0x80fdb
movq 0x38(%rsi), %rcx
testq %rcx, %rcx
leaq 0x4a6a4(%rip), %rdx     # 0xc8b98
cmoveq %rdx, %rcx
movq %rcx, 0xd8(%rbx)
cmpw $0x0, (%rcx)
movq -0x1a8(%rbp), %r8
je 0x7e533
addq $0x4, %rcx
movzwl -0x2(%rcx), %edx
testl %edx, %edx
je 0x7e533
movl 0xe4(%rbx), %esi
cmpl %edx, %esi
cmovgl %esi, %edx
movl %edx, 0xe4(%rbx)
cmpw $0x0, (%rcx)
leaq 0x4(%rcx), %rcx
jne 0x7e510
shlq $0x5, %rax
addq -0xe8(%rbp), %rax
incl (%rax)
movl 0x4(%rax), %ecx
movl 0xe4(%rbx), %edx
cmpl %edx, %ecx
cmovgl %ecx, %edx
movl %edx, 0x4(%rax)
incq %r8
movslq 0x60(%r14), %rax
cmpq %rax, %r8
setge -0x31(%rbp)
jl 0x7dea2
movq -0x98(%rbp), %rax
testl %eax, %eax
jle 0x7e685
xorl %ecx, %ecx
movq $0x0, -0x70(%rbp)
imulq $0x110, %rcx, %r14      # imm = 0x110
movq -0x58(%rbp), %rax
movslq 0xe0(%rax,%r14), %rbx
testq %rbx, %rbx
js 0x80fdb
cmpl %ebx, -0x30(%rbp)
jle 0x80fdb
movq %rcx, -0x48(%rbp)
addq -0x58(%rbp), %r14
leaq 0xf0(%r14), %rdi
movl 0xe4(%r14), %esi
incl %esi
movq %rdi, -0x80(%rbp)
callq 0x87c76
shlq $0x5, %rbx
addq -0xe8(%rbp), %rbx
leaq 0x10(%rbx), %r12
cmpl $0x0, 0x10(%rbx)
jne 0x7e5e6
movl 0x4(%rbx), %esi
incl %esi
movq %r12, %rdi
callq 0x87c76
movq 0xd8(%r14), %r15
movzwl (%r15), %eax
testw %ax, %ax
je 0x7e66e
cmpw $0x0, 0x2(%r15)
je 0x7e66e
cmpw 0x2(%r15), %ax
ja 0x7e663
movzwl %ax, %r13d
movq %r12, %rdi
movl %r13d, %esi
callq 0x87d10
testb %al, %al
jne 0x7e652
movq %r14, %rdi
movl %r13d, %esi
callq 0x81295
testl %eax, %eax
je 0x7e652
incl 0xe8(%r14)
incl 0x8(%rbx)
movq -0x80(%rbp), %rdi
movl %r13d, %esi
callq 0x87d52
movq %r12, %rdi
movl %r13d, %esi
callq 0x87d52
movq -0x70(%rbp), %rax
incl %eax
movq %rax, -0x70(%rbp)
leal 0x1(%r13), %eax
movzwl 0x2(%r15), %ecx
cmpl %ecx, %r13d
movl %eax, %r13d
jb 0x7e609
movzwl 0x4(%r15), %eax
addq $0x4, %r15
jmp 0x7e5f1
movq -0x48(%rbp), %rcx
incq %rcx
movq -0x98(%rbp), %rax
cmpq %rax, %rcx
jne 0x7e57e
testl %eax, %eax
jle 0x7e864
xorl %eax, %eax
movq %rax, -0x110(%rbp)
imulq $0x110, %rax, %rax      # imm = 0x110
movq -0x58(%rbp), %rcx
leaq (%rcx,%rax), %r15
movl 0xe8(%rcx,%rax), %r14d
cmpl %r14d, 0x104(%rcx,%rax)
jge 0x7e6ff
movslq %r14d, %rdi
shlq $0x2, %rdi
callq 0x424fb
movq %rax, %rbx
movq 0x108(%r15), %rsi
testq %rsi, %rsi
je 0x7e6f1
movslq 0x100(%r15), %rdx
shlq $0x2, %rdx
movq %rbx, %rdi
callq 0xc080
movq 0x108(%r15), %rdi
callq 0x425d4
movq %rbx, 0x108(%r15)
movl %r14d, 0x104(%r15)
movslq 0xf0(%r15), %rax
testq %rax, %rax
movq -0x98(%rbp), %rcx
jle 0x7e80f
movq 0xf8(%r15), %rdx
leaq (%rdx,%rax,4), %rax
movq %rax, -0x40(%rbp)
xorl %r13d, %r13d
movq %rdx, -0x48(%rbp)
movl (%rdx), %edi
testl %edi, %edi
je 0x7e7f9
xorl %r12d, %r12d
movl %edi, -0x80(%rbp)
btl %r12d, %edi
jae 0x7e7ec
movl 0x100(%r15), %r14d
movl 0x104(%r15), %eax
cmpl %eax, %r14d
jne 0x7e7c9
testl %eax, %eax
je 0x7e76a
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
addl %eax, %ecx
jmp 0x7e76f
movl $0x8, %ecx
incl %r14d
cmpl %r14d, %ecx
cmovgl %ecx, %r14d
cmpl %r14d, %eax
jge 0x7e7c9
movslq %r14d, %rdi
shlq $0x2, %rdi
callq 0x424fb
movq %rax, %rbx
movq 0x108(%r15), %rsi
testq %rsi, %rsi
je 0x7e7b8
movslq 0x100(%r15), %rdx
shlq $0x2, %rdx
movq %rbx, %rdi
callq 0xc080
movq 0x108(%r15), %rdi
callq 0x425d4
movq %rbx, 0x108(%r15)
movl %r14d, 0x104(%r15)
movl -0x80(%rbp), %edi
leal (%r12,%r13), %eax
movq 0x108(%r15), %rcx
movslq 0x100(%r15), %rdx
movl %eax, (%rcx,%rdx,4)
incl 0x100(%r15)
movq -0x98(%rbp), %rcx
incl %r12d
cmpl $0x20, %r12d
jne 0x7e73c
movq -0x48(%rbp), %rdx
addq $0x4, %rdx
addl $0x20, %r13d
cmpq -0x40(%rbp), %rdx
jb 0x7e728
movq 0xf8(%r15), %rdi
testq %rdi, %rdi
je 0x7e83d
movq $0x0, 0xf0(%r15)
callq 0x425d4
movq $0x0, 0xf8(%r15)
movq -0x98(%rbp), %rcx
movl 0x100(%r15), %eax
cmpl 0xe8(%r15), %eax
jne 0x80ff5
movq -0x110(%rbp), %rax
incq %rax
cmpq %rcx, %rax
jne 0x7e68f
cmpl $0x0, -0x30(%rbp)
jle 0x7e89e
xorl %ebx, %ebx
movq -0xe8(%rbp), %r14
movq 0x18(%r14,%rbx), %rdi
testq %rdi, %rdi
je 0x7e894
movq $0x0, 0x10(%r14,%rbx)
callq 0x425d4
movq $0x0, 0x18(%r14,%rbx)
addq $0x20, %rbx
cmpq %rbx, -0x50(%rbp)
jne 0x7e873
movq -0xe8(%rbp), %rdi
testq %rdi, %rdi
movq -0x70(%rbp), %rbx
je 0x7e8be
callq 0x425d4
movq $0x0, -0xe8(%rbp)
movq -0xa8(%rbp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, -0xd0(%rbp)
movaps %xmm0, -0x100(%rbp)
movl -0xcc(%rbp), %eax
cmpl %ebx, %eax
movq %rbx, %rcx
jge 0x7e95b
testl %eax, %eax
je 0x7e8f9
movl %eax, %r14d
shrl $0x1f, %r14d
addl %eax, %r14d
sarl %r14d
addl %eax, %r14d
jmp 0x7e8ff
movl $0x8, %r14d
movq -0x70(%rbp), %rcx
cmpl %ecx, %r14d
cmovlel %ecx, %r14d
cmpl %r14d, %eax
jge 0x7e95b
movslq %r14d, %rdi
shlq $0x4, %rdi
callq 0x424fb
movq %rax, %rbx
movq -0xc8(%rbp), %rsi
testq %rsi, %rsi
je 0x7e949
movslq -0xd0(%rbp), %rdx
shlq $0x4, %rdx
movq %rbx, %rdi
callq 0xc080
movq -0xc8(%rbp), %rdi
callq 0x425d4
movq %rbx, -0xc8(%rbp)
movl %r14d, -0xcc(%rbp)
movq -0x70(%rbp), %rcx
movl %ecx, -0xd0(%rbp)
movl -0xfc(%rbp), %eax
cmpl %ecx, %eax
jge 0x7e9f5
testl %eax, %eax
je 0x7e985
movl %eax, %r14d
shrl $0x1f, %r14d
addl %eax, %r14d
sarl %r14d
addl %eax, %r14d
jmp 0x7e98b
movl $0x8, %r14d
movq -0x70(%rbp), %rcx
cmpl %ecx, %r14d
cmovlel %ecx, %r14d
cmpl %r14d, %eax
jge 0x7e9f5
movslq %r14d, %rax
leaq (%rax,%rax,8), %rcx
leaq (%rcx,%rcx,2), %rdi
addq %rax, %rdi
callq 0x424fb
movq %rax, %rbx
movq -0xf8(%rbp), %rsi
testq %rsi, %rsi
je 0x7e9e3
movslq -0x100(%rbp), %rax
leaq (%rax,%rax,8), %rcx
leaq (%rcx,%rcx,2), %rdx
addq %rax, %rdx
movq %rbx, %rdi
callq 0xc080
movq -0xf8(%rbp), %rdi
callq 0x425d4
movq %rbx, -0xf8(%rbp)
movl %r14d, -0xfc(%rbp)
movq -0x70(%rbp), %rcx
movl %ecx, -0x100(%rbp)
movq -0xc8(%rbp), %rdi
movslq -0xd0(%rbp), %rdx
shlq $0x4, %rdx
xorl %ebx, %ebx
xorl %esi, %esi
callq 0xc260
movq -0xf8(%rbp), %rdi
movslq -0x100(%rbp), %rax
leaq (%rax,%rax,8), %rcx
leaq (%rcx,%rcx,2), %rdx
addq %rax, %rdx
xorl %esi, %esi
callq 0xc260
xorps %xmm0, %xmm0
movq -0x98(%rbp), %r14
testl %r14d, %r14d
jle 0x7eceb
xorl %r9d, %r9d
xorl %r10d, %r10d
xorl %r11d, %r11d
imulq $0x110, %r9, %r13       # imm = 0x110
movq -0x58(%rbp), %rax
movl 0xe8(%rax,%r13), %eax
testl %eax, %eax
je 0x7ecd8
testl %r10d, %r10d
js 0x8106c
cmpl %r10d, -0xd0(%rbp)
jle 0x8106c
addq -0x58(%rbp), %r13
movl %r10d, %ecx
shlq $0x4, %rcx
addq -0xc8(%rbp), %rcx
movq %rcx, 0xc8(%r13)
testl %r11d, %r11d
js 0x81052
cmpl %r11d, -0x100(%rbp)
jle 0x81052
movl %r11d, %ecx
leaq (%rcx,%rcx,8), %rdx
leaq (%rdx,%rdx,2), %rdx
addq %rcx, %rdx
addq -0xf8(%rbp), %rdx
movq %rdx, 0xd0(%r13)
movslq 0x60(%r15), %rcx
cmpq %rcx, %r9
jge 0x80fc4
movq 0x68(%r15), %r12
movq %r9, %rcx
shlq $0x7, %rcx
leaq (%rcx,%r9,8), %rcx
movss 0x14(%r12,%rcx), %xmm1
movss %xmm1, 0xa0(%r13)
movl $0x0, 0xa4(%r13)
movq 0x108(%r13), %rsi
movq %rsi, 0xa8(%r13)
movl 0x100(%r13), %esi
movl %esi, 0xb0(%r13)
movq %rdx, 0xb8(%r13)
movb 0x18(%r12,%rcx), %dl
movb %dl, 0xc0(%r13)
movb 0x1c(%r12,%rcx), %dl
movb %dl, 0xc1(%r13)
ucomiss 0x38cfd(%rip), %xmm1    # 0xb7844
jbe 0x7eb82
movq 0x8(%r13), %rdx
movslq 0x24(%r13), %rsi
movzbl 0x4(%rdx,%rsi), %edi
shll $0x8, %edi
movzbl 0x5(%rdx,%rsi), %r8d
movswl %di, %edi
orl %r8d, %edi
movzbl 0x6(%rdx,%rsi), %r8d
shll $0x8, %r8d
movzbl 0x7(%rdx,%rsi), %edx
movswl %r8w, %esi
orl %edx, %esi
subl %esi, %edi
cvtsi2ss %edi, %xmm0
jmp 0x7eba4
xorps 0x38437(%rip), %xmm1    # 0xb6fc0
movq 0x8(%r13), %rdx
movslq 0x1c(%r13), %rsi
movzwl 0x12(%rdx,%rsi), %edx
rolw $0x8, %dx
movzwl %dx, %edx
xorps %xmm0, %xmm0
cvtsi2ss %edx, %xmm0
divss %xmm0, %xmm1
addl %eax, %r10d
addl %eax, %r11d
cmpl $0x0, 0x100(%r13)
jle 0x7ecd8
movaps %xmm1, -0x70(%rbp)
movl %r11d, -0x110(%rbp)
movl %r10d, -0x40(%rbp)
movq %r9, -0x48(%rbp)
addq %rcx, %r12
movl 0x14(%r15), %eax
movl %eax, -0x80(%rbp)
movl $0x6, %r14d
xorl %r15d, %r15d
movslq 0x100(%r13), %rax
cmpq %rax, %r15
jge 0x80f48
movq 0x108(%r13), %rax
movl (%rax,%r15,4), %esi
movq %r13, %rdi
callq 0x81295
testl %eax, %eax
je 0x80f67
xorps %xmm0, %xmm0
cvtsi2ssl 0x18(%r12), %xmm0
movaps -0x70(%rbp), %xmm2
mulss %xmm2, %xmm0
xorps %xmm1, %xmm1
cvtsi2ssl 0x1c(%r12), %xmm1
mulss %xmm2, %xmm1
movq %r13, %rdi
movl %eax, %esi
leaq -0x480(%rbp), %rdx
leaq -0xb8(%rbp), %rcx
leaq -0x120(%rbp), %r8
leaq -0x90(%rbp), %r9
callq 0x81569
movl 0x18(%r12), %eax
movl -0x120(%rbp), %ecx
movl -0x80(%rbp), %edi
addl %edi, %ecx
subl -0x480(%rbp), %ecx
addl %ecx, %eax
decl %eax
movq 0xc8(%r13), %rcx
movw %ax, -0x2(%rcx,%r14)
movl 0x1c(%r12), %edx
movl -0x90(%rbp), %esi
addl %edi, %esi
subl -0xb8(%rbp), %esi
addl %esi, %edx
decl %edx
movw %dx, (%rcx,%r14)
movl $0xffff, %ecx           # imm = 0xFFFF
andl %ecx, %eax
andl %ecx, %edx
imull %eax, %edx
addl %edx, %ebx
incq %r15
movslq 0x100(%r13), %rax
addq $0x10, %r14
cmpq %rax, %r15
jl 0x7ebe2
movq -0xa8(%rbp), %r15
movq -0x98(%rbp), %r14
movq -0x48(%rbp), %r9
movl -0x40(%rbp), %r10d
movl -0x110(%rbp), %r11d
incq %r9
cmpq %r14, %r9
jne 0x7ea52
xorps %xmm0, %xmm0
cvtsi2ss %ebx, %xmm0
ucomiss 0x38b52(%rip), %xmm0    # 0xb7844
jb 0x7ecfa
sqrtss %xmm0, %xmm0
jmp 0x7ecff
callq 0xc860
movl $0x0, 0x2c(%r15)
movl 0x10(%r15), %ecx
testl %ecx, %ecx
jg 0x7ed3e
cvttss2si %xmm0, %eax
movl $0x1000, %ecx           # imm = 0x1000
cmpl $0xb32, %eax            # imm = 0xB32
jg 0x7ed3e
movl $0x800, %ecx            # imm = 0x800
cmpl $0x598, %eax            # imm = 0x598
jg 0x7ed3e
xorl %ecx, %ecx
cmpl $0x2cc, %eax            # imm = 0x2CC
setge %cl
shll $0x9, %ecx
addl $0x200, %ecx            # imm = 0x200
movl %ecx, -0xbc(%rbp)
movl %ecx, 0x28(%r15)
movl 0x14(%r15), %eax
movl %eax, -0x8c(%rbp)
movl $0x48, %edi
callq 0x424fb
movq %rax, %r13
movl -0xbc(%rbp), %eax
movl %eax, %ebx
subl -0x8c(%rbp), %ebx
movslq %ebx, %rdi
shlq $0x4, %rdi
callq 0x424fb
movq %rax, %r12
testq %r13, %r13
je 0x7edd2
testq %r12, %r12
je 0x7edd2
cmpl $0xffff8001, -0x8c(%rbp) # imm = 0xFFFF8001
jl 0x810fd
cmpl $0xffff, %ebx           # imm = 0xFFFF
jg 0x810fd
movl $0x8000, %eax           # imm = 0x8000
subl -0x8c(%rbp), %eax
cmpl $0x2, %ebx
jl 0x7ee07
leal -0x1(%rbx), %ecx
movq %r12, %rsi
addq $0x10, %rsi
xorl %edx, %edx
incq %rdx
movq %rsi, -0x8(%rsi)
addq $0x10, %rsi
cmpq %rdx, %rcx
jne 0x7edbe
movl %edx, %ecx
jmp 0x7ee09
testq %r13, %r13
je 0x7eddf
movq %r13, %rdi
callq 0x425d4
testq %r12, %r12
je 0x7edec
movq %r12, %rdi
callq 0x425d4
xorl %r12d, %r12d
movl $0x0, -0x8c(%rbp)
movl $0x0, -0xbc(%rbp)
xorl %esi, %esi
jmp 0x7ee68
xorl %ecx, %ecx
shlq $0x4, %rcx
xorl %edi, %edi
movq %rdi, 0x8(%r12,%rcx)
movq $0x1, 0xc(%r13)
movq %r12, 0x20(%r13)
leaq 0x28(%r13), %rcx
movq %rcx, 0x18(%r13)
movl %ebx, (%r13)
movl %eax, 0x4(%r13)
movl %ebx, 0x14(%r13)
leal -0x1(,%rbx,2), %eax
cltd
idivl %ebx
movl %eax, 0x8(%r13)
movl $0x0, 0x28(%r13)
movq %r13, %rax
addq $0x38, %rax
movq %rax, 0x30(%r13)
movw %bx, 0x38(%r13)
movq %r13, %rsi
movw $0xffff, 0x3a(%r13)     # imm = 0xFFFF
movq %rdi, 0x40(%r13)
movq %r15, %rdi
movq %rsi, -0x1e8(%rbp)
callq 0x8173c
testl %r14d, %r14d
jle 0x7ef09
xorl %ebx, %ebx
imulq $0x110, %rbx, %r14      # imm = 0x110
movq -0x58(%rbp), %rax
movl 0xe8(%rax,%r14), %edx
testl %edx, %edx
je 0x7eef6
addq -0x58(%rbp), %r14
movq 0xc8(%r14), %rsi
movq -0x1e8(%rbp), %rdi
callq 0x819f1
movslq 0xe8(%r14), %rax
testq %rax, %rax
jle 0x7eef6
movq 0xc8(%r14), %rcx
shlq $0x4, %rax
xorl %edx, %edx
cmpl $0x0, 0xc(%rcx,%rdx)
je 0x7eeed
movl 0x2c(%r15), %esi
movzwl 0xa(%rcx,%rdx), %edi
movzwl 0x6(%rcx,%rdx), %r8d
addl %edi, %r8d
cmpl %r8d, %esi
cmovgl %esi, %r8d
movl %r8d, 0x2c(%r15)
addq $0x10, %rdx
cmpq %rdx, %rax
jne 0x7eec9
incq %rbx
movq -0x98(%rbp), %r14
cmpq %r14, %rbx
jne 0x7ee82
testb $0x1, 0x4(%r15)
movl 0x2c(%r15), %eax
jne 0x7ef38
decl %eax
movl %eax, %ecx
sarl %ecx
orl %eax, %ecx
movl %ecx, %eax
sarl $0x2, %eax
orl %ecx, %eax
movl %eax, %ecx
sarl $0x4, %ecx
orl %eax, %ecx
movl %ecx, %edx
sarl $0x8, %edx
orl %ecx, %edx
movl %edx, %eax
sarl $0x10, %eax
orl %edx, %eax
incl %eax
movl %eax, 0x2c(%r15)
movl 0x28(%r15), %ecx
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
movss 0x38093(%rip), %xmm3    # 0xb6fe4
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
movaps %xmm3, %xmm2
divss %xmm0, %xmm2
movaps %xmm3, %xmm0
divss %xmm1, %xmm0
movss %xmm2, 0x30(%r15)
movss %xmm0, 0x34(%r15)
imull %ecx, %eax
movslq %eax, %rdi
callq 0x424fb
movq %rax, 0x18(%r15)
movslq 0x28(%r15), %rcx
movslq 0x2c(%r15), %rdx
imulq %rcx, %rdx
movq %rax, %rdi
xorl %esi, %esi
callq 0xc260
testl %r14d, %r14d
jle 0x80ab7
movq 0x18(%r15), %rax
movq %rax, -0x180(%rbp)
movslq -0xbc(%rbp), %rax
movq %rax, -0xb0(%rbp)
xorl %eax, %eax
movq %r12, -0x168(%rbp)
movq %rax, -0x160(%rbp)
movslq 0x60(%r15), %rax
cmpq %rax, -0x160(%rbp)
movq -0x160(%rbp), %rax
jge 0x80fc4
imulq $0x110, %rax, %rbx      # imm = 0x110
movq -0x58(%rbp), %rax
cmpl $0x0, 0xe8(%rax,%rbx)
je 0x80aa4
addq -0x58(%rbp), %rbx
movss 0xa0(%rbx), %xmm0
ucomiss 0x38837(%rip), %xmm0    # 0xb7844
movq %rbx, -0x138(%rbp)
jbe 0x7f057
movq 0x8(%rbx), %rax
movslq 0x24(%rbx), %rcx
movzbl 0x4(%rax,%rcx), %edx
shll $0x8, %edx
movzbl 0x5(%rax,%rcx), %esi
movswl %dx, %edx
orl %esi, %edx
movzbl 0x6(%rax,%rcx), %esi
shll $0x8, %esi
movzbl 0x7(%rax,%rcx), %eax
movswl %si, %ecx
orl %eax, %ecx
subl %ecx, %edx
movaps %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsi2ss %edx, %xmm0
movq -0x138(%rbp), %rbx
jmp 0x7f07c
xorps 0x37f62(%rip), %xmm0    # 0xb6fc0
movq 0x8(%rbx), %rax
movslq 0x1c(%rbx), %rcx
movzwl 0x12(%rax,%rcx), %eax
rolw $0x8, %ax
movzwl %ax, %eax
movaps %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
divss %xmm0, %xmm1
movaps %xmm1, -0x200(%rbp)
movzbl 0xc0(%rbx), %eax
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
xorps %xmm0, %xmm0
movss %xmm0, -0x150(%rbp)
movss %xmm0, -0x14c(%rbp)
movq %rax, -0x88(%rbp)
testl %eax, %eax
je 0x7f0d8
movl $0x1, %eax
subl -0x88(%rbp), %eax
xorps %xmm2, %xmm2
cvtsi2ss %eax, %xmm2
movaps %xmm1, %xmm0
addss %xmm1, %xmm0
divss %xmm0, %xmm2
movss %xmm2, -0x14c(%rbp)
movzbl 0xc1(%rbx), %eax
xorps %xmm3, %xmm3
cvtsi2ss %eax, %xmm3
movq %rax, -0xa0(%rbp)
testl %eax, %eax
je 0x7f116
movl $0x1, %eax
subl -0xa0(%rbp), %eax
xorps %xmm2, %xmm2
cvtsi2ss %eax, %xmm2
movaps %xmm3, %xmm0
addss %xmm3, %xmm0
divss %xmm0, %xmm2
movss %xmm2, -0x150(%rbp)
movq 0x68(%r15), %rax
movq %rax, -0x210(%rbp)
cmpl $0x0, 0xb0(%rbx)
jle 0x809b0
movq 0xc8(%rbx), %rcx
movss 0x37ea7(%rip), %xmm0    # 0xb6fe4
movaps %xmm0, %xmm2
divss %xmm1, %xmm2
movss %xmm2, -0x1b0(%rbp)
divss %xmm3, %xmm0
movss %xmm0, -0x1ac(%rbp)
movaps -0x200(%rbp), %xmm0
mulss %xmm0, %xmm1
mulss %xmm0, %xmm3
movaps %xmm3, %xmm0
movss %xmm1, -0x124(%rbp)
minss %xmm1, %xmm0
movss 0x3dd56(%rip), %xmm1    # 0xbced4
divss %xmm0, %xmm1
mulss %xmm1, %xmm1
movss %xmm1, -0x158(%rbp)
movaps %xmm3, -0x270(%rbp)
xorps 0x37e24(%rip), %xmm3    # 0xb6fc0
movaps %xmm3, -0x490(%rbp)
movl -0x88(%rbp), %eax
movq %rax, -0x220(%rbp)
movl -0xa0(%rbp), %eax
movq %rax, -0x238(%rbp)
xorl %edx, %edx
movq %rcx, -0x218(%rbp)
movq %rdx, %rax
shlq $0x4, %rax
cmpl $0x0, 0xc(%rcx,%rax)
je 0x8099d
addq %rcx, %rax
cmpw $0x0, 0x4(%rax)
je 0x8099d
cmpw $0x0, 0x6(%rax)
je 0x8099d
movq %rax, -0x170(%rbp)
movq 0xa8(%rbx), %rax
testq %rax, %rax
je 0x7f209
movl (%rax,%rdx,4), %esi
jmp 0x7f211
movl 0xa4(%rbx), %esi
addl %edx, %esi
leaq (%rdx,%rdx,8), %rax
leaq (%rax,%rax,2), %rax
movq %rdx, -0x230(%rbp)
addq %rdx, %rax
addq 0xb8(%rbx), %rax
movq %rax, -0x228(%rbp)
movq %rbx, %rdi
callq 0x81295
movl -0x8c(%rbp), %ecx
movq -0x170(%rbp), %r15
addw %cx, 0x8(%r15)
addw %cx, 0xa(%r15)
movl %eax, %r14d
subw %cx, 0x4(%r15)
subw %cx, 0x6(%r15)
movq 0x8(%rbx), %rax
movslq 0x24(%rbx), %rcx
movzwl 0x22(%rax,%rcx), %ecx
rolw $0x8, %cx
movzwl %cx, %ecx
movslq 0x28(%rbx), %rdx
addq %rax, %rdx
leal (,%r14,4), %eax
cltq
leaq (%rdx,%rax), %rsi
cmpl %r14d, %ecx
leaq -0x4(%rdx,%rcx,4), %rdi
leaq -0x3(%rdx,%rcx,4), %rcx
leaq 0x1(%rax,%rdx), %rax
cmovleq %rcx, %rax
cmovgq %rsi, %rdi
movzbl (%rdi), %ecx
movl %ecx, -0x1b8(%rbp)
movzbl (%rax), %eax
movl %eax, -0x1b4(%rbp)
movq %rbx, %rdi
movl %r14d, %esi
movss -0x124(%rbp), %xmm0
movaps -0x270(%rbp), %xmm1
leaq -0x1c8(%rbp), %rdx
leaq -0x1c4(%rbp), %rcx
leaq -0x260(%rbp), %r8
leaq -0x25c(%rbp), %r9
callq 0x81569
movzwl 0x8(%r15), %eax
movq %rax, -0x110(%rbp)
movzwl 0xa(%r15), %eax
movq %rax, -0x190(%rbp)
movzwl 0x4(%r15), %eax
movq %rax, -0x118(%rbp)
movzwl 0x6(%r15), %eax
movq %rax, -0x178(%rbp)
movq %rbx, %rdi
movl %r14d, %esi
leaq -0x120(%rbp), %rdx
callq 0x86855
movl %eax, -0x48(%rbp)
movq %r12, %r15
movq -0x88(%rbp), %rax
negl %eax
movq -0x118(%rbp), %rcx
leal (%rcx,%rax), %ebx
incl %ebx
movq -0x138(%rbp), %rdi
movl %r14d, %esi
movss -0x124(%rbp), %xmm0
movaps -0x270(%rbp), %xmm1
leaq -0x90(%rbp), %rdx
leaq -0x1cc(%rbp), %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x81569
movl %ebx, -0xc0(%rbp)
testl %ebx, %ebx
je 0x8037b
movq -0xa0(%rbp), %rax
negl %eax
movq -0x178(%rbp), %rcx
addl %ecx, %eax
incl %eax
movl %eax, -0x30(%rbp)
testl %eax, %eax
je 0x8037b
movq -0x120(%rbp), %rbx
movl -0x90(%rbp), %eax
movl %eax, -0x50(%rbp)
movl -0x1cc(%rbp), %eax
movl %eax, -0x154(%rbp)
movl $0x0, -0x480(%rbp)
movl -0x48(%rbp), %eax
movl %eax, %esi
testl %eax, %eax
jle 0x7f3fb
movq %rsi, %rax
shlq $0x4, %rax
subq %rsi, %rax
subq %rsi, %rax
xorl %ecx, %ecx
xorl %edi, %edi
xorl %edx, %edx
cmpb $0x1, 0xc(%rbx,%rcx)
sete %dl
addl %edx, %edi
addq $0xe, %rcx
cmpq %rcx, %rax
jne 0x7f3e4
jmp 0x7f3fd
xorl %edi, %edi
testl %edi, %edi
movq %rdi, -0x40(%rbp)
je 0x7f6b1
movq %rsi, %r14
movslq %edi, %rdi
shlq $0x2, %rdi
callq 0x424fb
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %r15
testq %r15, %r15
je 0x7f682
movq %r14, %rsi
shlq $0x4, %rsi
subq %r14, %rsi
subq %r14, %rsi
xorl %eax, %eax
xorl %edx, %edx
xorl %r14d, %r14d
movq %rsi, -0x70(%rbp)
testl %eax, %eax
movq %rax, -0x80(%rbp)
je 0x7f475
movq %rdx, %r13
movslq -0x480(%rbp), %rdi
shlq $0x3, %rdi
callq 0x424fb
movq %rax, %r14
testq %rax, %rax
movq -0x70(%rbp), %rsi
movq %r13, %rdx
je 0x7f668
movl $0x0, -0x480(%rbp)
cmpl $0x0, -0x48(%rbp)
jle 0x7f651
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
xorps %xmm1, %xmm1
xorl %r15d, %r15d
xorps %xmm0, %xmm0
movzbl 0xc(%rbx,%r15), %eax
decl %eax
cmpl $0x3, %eax
ja 0x7f631
leaq 0x49510(%rip), %rcx     # 0xc89c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
testl %r13d, %r13d
js 0x7f4d3
movl -0x480(%rbp), %eax
subl %edx, %eax
movl %r13d, %ecx
movq -0xd8(%rbp), %rdx
movl %eax, (%rdx,%rcx,4)
incl %r13d
movswl (%rbx,%r15), %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movswl 0x2(%rbx,%r15), %eax
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
movl -0x480(%rbp), %edx
leal 0x1(%rdx), %eax
movl %eax, -0x480(%rbp)
testq %r14, %r14
je 0x7f631
movq %r14, %rcx
movslq %edx, %rax
jmp 0x7f626
movswl 0x4(%rbx,%r15), %eax
xorps %xmm2, %xmm2
cvtsi2ss %eax, %xmm2
movswl 0x6(%rbx,%r15), %eax
xorps %xmm3, %xmm3
cvtsi2ss %eax, %xmm3
movswl (%rbx,%r15), %eax
xorps %xmm4, %xmm4
cvtsi2ss %eax, %xmm4
movswl 0x2(%rbx,%r15), %eax
xorps %xmm5, %xmm5
cvtsi2ss %eax, %xmm5
movq %r14, %rdi
leaq -0x480(%rbp), %rsi
movss -0x158(%rbp), %xmm6
movq %rdx, %r12
xorl %edx, %edx
callq 0x87330
jmp 0x7f5d3
movswl 0x4(%rbx,%r15), %eax
xorps %xmm2, %xmm2
cvtsi2ss %eax, %xmm2
movswl 0x6(%rbx,%r15), %eax
xorps %xmm3, %xmm3
cvtsi2ss %eax, %xmm3
movswl 0x8(%rbx,%r15), %eax
xorps %xmm4, %xmm4
cvtsi2ss %eax, %xmm4
movswl 0xa(%rbx,%r15), %eax
xorps %xmm5, %xmm5
cvtsi2ss %eax, %xmm5
movswl (%rbx,%r15), %eax
xorps %xmm6, %xmm6
cvtsi2ss %eax, %xmm6
movswl 0x2(%rbx,%r15), %eax
xorps %xmm7, %xmm7
cvtsi2ss %eax, %xmm7
movss -0x158(%rbp), %xmm8
movss %xmm8, (%rsp)
movq %r14, %rdi
leaq -0x480(%rbp), %rsi
movq %rdx, %r12
xorl %edx, %edx
callq 0x87490
movq %r12, %rdx
movq -0x70(%rbp), %rsi
movswl (%rbx,%r15), %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movswl 0x2(%rbx,%r15), %eax
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
jmp 0x7f631
movswl (%rbx,%r15), %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movswl 0x2(%rbx,%r15), %eax
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
movslq -0x480(%rbp), %rax
leal 0x1(%rax), %ecx
movl %ecx, -0x480(%rbp)
testq %r14, %r14
je 0x7f631
movq %r14, %rcx
movss %xmm0, (%rcx,%rax,8)
movss %xmm1, 0x4(%rcx,%rax,8)
addq $0xe, %r15
cmpq %r15, %rsi
jne 0x7f498
movslq %r13d, %rax
movq -0x168(%rbp), %r12
movq -0xd8(%rbp), %r15
jmp 0x7f658
movq $-0x1, %rax
movl -0x480(%rbp), %ecx
subl %edx, %ecx
movl %ecx, (%r15,%rax,4)
movb $0x1, %al
jmp 0x7f66d
xorl %r14d, %r14d
xorl %eax, %eax
testb %al, %al
je 0x7f692
movq -0x80(%rbp), %rcx
leal 0x1(%rcx), %eax
testl %ecx, %ecx
je 0x7f447
jmp 0x7f68d
movq $0x0, -0x40(%rbp)
xorl %r14d, %r14d
movq %r12, %r15
jmp 0x7f6bf
movq %r14, %rdi
callq 0x425d4
movq %r12, %r15
movq -0xd8(%rbp), %rdi
callq 0x425d4
movq $0x0, -0x40(%rbp)
movq $0x0, -0xd8(%rbp)
xorl %r14d, %r14d
movq %r14, -0x188(%rbp)
testq %r14, %r14
je 0x8037b
movq -0x40(%rbp), %rax
movl %eax, %ebx
testl %eax, %eax
jle 0x7f704
xorl %eax, %eax
xorl %ecx, %ecx
movq -0xd8(%rbp), %rsi
movslq (%rsi,%rax,4), %rdx
movslq %ecx, %rcx
addq %rdx, %rcx
incq %rax
cmpq %rax, %rbx
jne 0x7f6e4
leaq (%rcx,%rcx,4), %rax
leaq 0x14(,%rax,4), %rdi
jmp 0x7f709
movl $0x14, %edi
callq 0x424fb
movq %rax, -0x148(%rbp)
cmpq $0x0, -0x148(%rbp)
je 0x80363
cmpl $0x0, -0x40(%rbp)
movaps -0x490(%rbp), %xmm3
jle 0x7f86c
movq -0x188(%rbp), %rax
addq $0x4, %rax
xorl %ecx, %ecx
xorl %r15d, %r15d
xorl %edx, %edx
movq -0x88(%rbp), %r12
movq -0xa0(%rbp), %r13
movq -0xd8(%rbp), %rsi
movl (%rsi,%rcx,4), %esi
testl %esi, %esi
jle 0x7f85c
movslq %edx, %r8
movq -0x188(%rbp), %rdi
leaq (%rdi,%r8,8), %rdi
leal -0x1(%rsi), %r10d
leaq (%rax,%r8,8), %r8
xorl %r9d, %r9d
movslq %r10d, %r11
movss 0x4(%rdi,%r11,8), %xmm0
movss (%r8,%r9,8), %xmm1
ucomiss %xmm1, %xmm0
jne 0x7f79a
jnp 0x7f83e
xorl %r14d, %r14d
ucomiss %xmm1, %xmm0
seta %r12b
ja 0x7f7ab
movl %r9d, %r13d
jmp 0x7f7b1
movl %r10d, %r13d
movl %r9d, %r10d
movslq %r15d, %r15
leaq (%r15,%r15,4), %r11
movb %r12b, %r14b
movq -0x148(%rbp), %r12
movl %r14d, 0x10(%r12,%r11,4)
movslq %r13d, %r14
movss (%rdi,%r14,8), %xmm0
movss -0x124(%rbp), %xmm2
mulss %xmm2, %xmm0
xorps %xmm1, %xmm1
addss %xmm1, %xmm0
movss %xmm0, (%r12,%r11,4)
movss 0x4(%rdi,%r14,8), %xmm0
mulss %xmm3, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x4(%r12,%r11,4)
movslq %r10d, %r10
movss (%rdi,%r10,8), %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x8(%r12,%r11,4)
movss 0x4(%rdi,%r10,8), %xmm0
mulss %xmm3, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xc(%r12,%r11,4)
incl %r15d
movq -0x88(%rbp), %r12
movq -0xa0(%rbp), %r13
movl %r9d, %r10d
leaq 0x1(%r9), %r11
movq -0xd8(%rbp), %r9
movslq (%r9,%rcx,4), %r14
movq %r11, %r9
cmpq %r14, %r11
jl 0x7f77f
addl %esi, %edx
incq %rcx
cmpq %rbx, %rcx
jne 0x7f754
jmp 0x7f87d
xorl %r15d, %r15d
movq -0x88(%rbp), %r12
movq -0xa0(%rbp), %r13
movq -0x148(%rbp), %rbx
movq %rbx, %rdi
movl %r15d, %esi
callq 0x87733
cmpl $0x2, %r15d
jl 0x7f930
movl %r15d, %eax
movl $0x1, %ecx
leaq (%rcx,%rcx,4), %rdx
movss (%rbx,%rdx,4), %xmm0
movss 0x4(%rbx,%rdx,4), %xmm1
movl 0x10(%rbx,%rdx,4), %esi
movl %esi, -0x478(%rbp)
movq 0x8(%rbx,%rdx,4), %rdx
movq %rdx, -0x480(%rbp)
movl %ecx, %edx
testl %edx, %edx
jle 0x7f8f5
movl %edx, %esi
leaq (%rsi,%rsi,4), %rsi
movss -0x10(%rbx,%rsi,4), %xmm2
ucomiss %xmm1, %xmm2
jbe 0x7f8f0
leaq (%rbx,%rsi,4), %rsi
movl -0x4(%rsi), %edi
movl %edi, 0x10(%rsi)
movups -0x14(%rsi), %xmm3
movups %xmm3, (%rsi)
decl %edx
ucomiss %xmm1, %xmm2
ja 0x7f8c8
movl %edx, %esi
cmpq %rsi, %rcx
je 0x7f924
movslq %edx, %rdx
leaq (%rdx,%rdx,4), %rdx
movss %xmm0, (%rbx,%rdx,4)
movss %xmm1, 0x4(%rbx,%rdx,4)
movq -0x480(%rbp), %rsi
movq %rsi, 0x8(%rbx,%rdx,4)
movl -0x478(%rbp), %esi
movl %esi, 0x10(%rbx,%rdx,4)
incq %rcx
cmpq %rax, %rcx
jne 0x7f8a1
movq -0x118(%rbp), %rax
subl %r12d, %eax
movq $0x0, -0xb8(%rbp)
leaq -0x480(%rbp), %r12
movq %rax, -0x118(%rbp)
cmpl $0x40, %eax
jl 0x7f97c
movl -0xc0(%rbp), %eax
leaq 0x4(,%rax,8), %rdi
callq 0x424fb
movq %rax, %r12
movq -0xa0(%rbp), %r13
movq -0x148(%rbp), %rbx
movq -0x178(%rbp), %rcx
subl %r13d, %ecx
movl -0x154(%rbp), %edx
movl -0x30(%rbp), %eax
addl %edx, %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
addss 0x37644(%rip), %xmm0    # 0xb6fe4
movslq %r15d, %rax
leaq (%rax,%rax,4), %rax
movss %xmm0, 0x4(%rbx,%rax,4)
movq %rcx, -0x178(%rbp)
cmpl $0x7ffffffe, %ecx       # imm = 0x7FFFFFFE
ja 0x80315
movq -0x110(%rbp), %rcx
addq -0x180(%rbp), %rcx
movq -0x190(%rbp), %rax
imulq -0xb0(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x190(%rbp)
xorps %xmm0, %xmm0
cvtsi2ssl -0x50(%rbp), %xmm0
movss %xmm0, -0x1c0(%rbp)
movl -0xc0(%rbp), %ecx
movslq %ecx, %rax
leaq (%r12,%rax,4), %rsi
movq %rsi, -0x1a0(%rbp)
addq $0x4, %rsi
movq %rsi, -0x1f0(%rbp)
movq %rax, -0x240(%rbp)
leaq (,%rax,4), %rax
movq %rax, -0x250(%rbp)
movslq -0x118(%rbp), %rax
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
movss %xmm0, -0x128(%rbp)
leaq 0x8(,%rax,4), %rax
movq %rax, -0x248(%rbp)
movq %rbx, %r13
xorl %ebx, %ebx
movq $0x0, -0x198(%rbp)
movq $0x0, -0x140(%rbp)
movl $0x0, -0xdc(%rbp)
xorl %r14d, %r14d
leaq 0x386a4(%rip), %r15     # 0xb8124
movl %edx, -0x1bc(%rbp)
xorps %xmm0, %xmm0
cvtsi2ss %edx, %xmm0
movss %xmm0, -0x30(%rbp)
addss 0x3754a(%rip), %xmm0    # 0xb6fe4
movss %xmm0, -0x50(%rbp)
movq %r12, %rdi
xorl %esi, %esi
movq -0x250(%rbp), %rdx
callq 0xc260
movq -0x1a0(%rbp), %rdi
xorl %esi, %esi
movq -0x248(%rbp), %rdx
callq 0xc260
movq -0xb8(%rbp), %rax
testq %rax, %rax
je 0x7fb1c
leaq -0xb8(%rbp), %rcx
movss -0x30(%rbp), %xmm0
ucomiss 0x1c(%rax), %xmm0
jae 0x7fae8
movq %rax, %rcx
jmp 0x7fb14
movq (%rax), %rdx
movq %rdx, (%rcx)
movss 0x14(%rax), %xmm0
ucomiss 0x37d4a(%rip), %xmm0    # 0xb7844
jne 0x7fb02
jnp 0x80ecc
movl $0x0, 0x14(%rax)
movq %r14, (%rax)
movq %rax, %r14
movss -0x30(%rbp), %xmm0
movq (%rcx), %rax
testq %rax, %rax
jne 0x7fadd
movq %rbx, -0x258(%rbp)
movss 0x4(%r13), %xmm0
movss -0x50(%rbp), %xmm1
ucomiss %xmm0, %xmm1
jae 0x80172
movq %r14, -0x130(%rbp)
movq -0xb8(%rbp), %r15
testq %r15, %r15
je 0x80093
movss 0x1c(%r15), %xmm0
ucomiss -0x30(%rbp), %xmm0
jb 0x80ead
movss 0x8(%r15), %xmm6
movss 0xc(%r15), %xmm4
ucomiss 0x37cd3(%rip), %xmm4    # 0xb7844
jne 0x7fbaf
jp 0x7fbaf
movss -0x128(%rbp), %xmm0
ucomiss %xmm6, %xmm0
jbe 0x8008b
ucomiss 0x37cb7(%rip), %xmm6    # 0xb7844
jae 0x7feb3
movq -0x1a0(%rbp), %rdi
xorl %esi, %esi
movq %r15, %rdx
movaps %xmm6, %xmm0
movss -0x30(%rbp), %xmm1
movaps %xmm6, %xmm2
jmp 0x7fefc
movss 0x18(%r15), %xmm1
movss -0x50(%rbp), %xmm2
ucomiss %xmm1, %xmm2
jb 0x80f29
movaps %xmm4, %xmm8
addss %xmm6, %xmm8
movaps %xmm1, %xmm2
movss -0x30(%rbp), %xmm5
subss %xmm5, %xmm2
mulss %xmm4, %xmm2
addss %xmm6, %xmm2
cmpltss %xmm1, %xmm5
andps %xmm5, %xmm2
andnps %xmm6, %xmm5
orps %xmm2, %xmm5
ucomiss 0x37c4f(%rip), %xmm5    # 0xb7844
jb 0x7fcc1
movaps %xmm0, %xmm2
subss -0x30(%rbp), %xmm2
mulss %xmm4, %xmm2
addss %xmm6, %xmm2
movaps %xmm0, %xmm3
cmpltss -0x50(%rbp), %xmm3
andps %xmm3, %xmm2
andnps %xmm8, %xmm3
orps %xmm2, %xmm3
ucomiss 0x37c1f(%rip), %xmm3    # 0xb7844
jb 0x7fcc1
movss -0x128(%rbp), %xmm2
ucomiss %xmm5, %xmm2
jbe 0x7fcc1
movss -0x128(%rbp), %xmm2
ucomiss %xmm3, %xmm2
jbe 0x7fcc1
maxss -0x30(%rbp), %xmm1
cvttss2si %xmm5, %eax
minss -0x50(%rbp), %xmm0
cvttss2si %xmm3, %ecx
cmpl %ecx, %eax
jne 0x7ff0b
testl %eax, %eax
js 0x80fa5
cmpl %eax, -0x118(%rbp)
jl 0x80fa5
xorps %xmm2, %xmm2
cvtsi2ss %eax, %xmm2
subss %xmm1, %xmm0
subss %xmm2, %xmm5
subss %xmm2, %xmm3
addss %xmm5, %xmm3
mulss 0x37c2e(%rip), %xmm3    # 0xb78c4
addss 0x37346(%rip), %xmm3    # 0xb6fe4
mulss 0x14(%r15), %xmm3
movl %eax, %eax
mulss %xmm0, %xmm3
addss (%r12,%rax,4), %xmm3
movss %xmm3, (%r12,%rax,4)
mulss 0x14(%r15), %xmm0
jmp 0x8007a
cmpl $0x7ffffffe, -0x118(%rbp) # imm = 0x7FFFFFFE
movss -0x30(%rbp), %xmm1
ja 0x8008b
xorl %ebx, %ebx
movaps %xmm6, -0x1e0(%rbp)
movaps %xmm8, -0x110(%rbp)
movss %xmm4, -0x1a8(%rbp)
movl %ebx, %r14d
xorps %xmm5, %xmm5
cvtsi2ss %ebx, %xmm5
leal 0x1(%r14), %ebx
xorps %xmm2, %xmm2
cvtsi2ss %ebx, %xmm2
movaps %xmm5, %xmm7
subss %xmm6, %xmm7
divss %xmm4, %xmm7
addss %xmm1, %xmm7
movaps %xmm2, %xmm3
subss %xmm6, %xmm3
divss %xmm4, %xmm3
addss %xmm1, %xmm3
ucomiss %xmm6, %xmm5
movss %xmm7, -0x70(%rbp)
movss %xmm5, -0x80(%rbp)
jbe 0x7fd92
ucomiss %xmm2, %xmm8
jbe 0x7fd92
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movaps %xmm6, %xmm0
movss %xmm2, -0x48(%rbp)
movaps %xmm5, %xmm2
movss %xmm3, -0x40(%rbp)
movaps %xmm7, %xmm3
callq 0x878d2
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movss -0x80(%rbp), %xmm0
movss -0x70(%rbp), %xmm1
movss -0x48(%rbp), %xmm2
movss -0x40(%rbp), %xmm3
callq 0x878d2
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movss -0x48(%rbp), %xmm0
movss -0x40(%rbp), %xmm1
jmp 0x7fe17
ucomiss %xmm8, %xmm5
jbe 0x7fdd7
ucomiss %xmm2, %xmm6
jbe 0x7fdd7
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movaps %xmm6, %xmm0
movss %xmm2, -0x48(%rbp)
movss %xmm3, -0x40(%rbp)
callq 0x878d2
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movss -0x48(%rbp), %xmm0
movss -0x40(%rbp), %xmm1
movss -0x80(%rbp), %xmm2
movss -0x70(%rbp), %xmm3
jmp 0x7fdff
ucomiss %xmm6, %xmm5
jbe 0x7fde2
ucomiss %xmm5, %xmm8
ja 0x7fded
ucomiss %xmm8, %xmm5
jbe 0x7fe55
ucomiss %xmm5, %xmm6
jbe 0x7fe55
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movaps %xmm6, %xmm0
movaps %xmm5, %xmm2
movaps %xmm7, %xmm3
callq 0x878d2
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movss -0x80(%rbp), %xmm0
movss -0x70(%rbp), %xmm1
movaps -0x110(%rbp), %xmm2
movss -0x50(%rbp), %xmm3
callq 0x878d2
cmpl %ebx, -0xc0(%rbp)
movss -0x30(%rbp), %xmm1
movaps -0x1e0(%rbp), %xmm6
movaps -0x110(%rbp), %xmm8
movss -0x1a8(%rbp), %xmm4
jne 0x7fcef
jmp 0x8008b
ucomiss %xmm6, %xmm2
jbe 0x7fe6e
ucomiss %xmm2, %xmm8
jbe 0x7fe6e
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movaps %xmm6, %xmm0
jmp 0x7fe8a
ucomiss %xmm8, %xmm2
jbe 0x7fe99
ucomiss %xmm2, %xmm6
jbe 0x7fe99
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movaps %xmm6, %xmm0
movss -0x30(%rbp), %xmm1
movss %xmm2, -0x48(%rbp)
movss %xmm3, -0x40(%rbp)
jmp 0x7fd75
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movaps %xmm6, %xmm0
movss -0x30(%rbp), %xmm1
movaps %xmm8, %xmm2
jmp 0x7fe1e
cvttss2si %xmm6, %r14d
movq %r12, %rdi
movl %r14d, %esi
movq %r15, %rdx
movaps %xmm6, %xmm0
movss -0x30(%rbp), %xmm1
movaps %xmm6, %xmm2
movss -0x50(%rbp), %xmm3
movaps %xmm6, -0x1e0(%rbp)
callq 0x878d2
incl %r14d
movq -0x1a0(%rbp), %rdi
movl %r14d, %esi
movq %r15, %rdx
movaps -0x1e0(%rbp), %xmm0
movss -0x30(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x50(%rbp), %xmm3
callq 0x878d2
jmp 0x8008b
movss 0x10(%r15), %xmm2
ucomiss %xmm3, %xmm5
jbe 0x7ff45
movss -0x30(%rbp), %xmm6
movaps %xmm6, %xmm4
subss %xmm1, %xmm4
movss -0x50(%rbp), %xmm7
addss %xmm7, %xmm4
movaps %xmm6, %xmm1
subss %xmm0, %xmm1
addss %xmm7, %xmm1
xorps 0x37083(%rip), %xmm2    # 0xb6fc0
movaps %xmm4, %xmm0
movaps %xmm5, %xmm4
jmp 0x7ff54
movaps %xmm3, %xmm4
movaps %xmm5, %xmm3
movaps %xmm6, %xmm8
movss -0x30(%rbp), %xmm6
cvttss2si %xmm3, %ecx
cvttss2si %xmm4, %eax
leal 0x1(%rcx), %esi
xorps %xmm7, %xmm7
cvtsi2ss %esi, %xmm7
subss %xmm8, %xmm7
mulss %xmm2, %xmm7
addss %xmm6, %xmm7
movss 0x14(%r15), %xmm5
movaps %xmm7, %xmm6
subss %xmm1, %xmm6
mulss %xmm5, %xmm6
cvttps2dq %xmm3, %xmm8
cvtdq2ps %xmm8, %xmm8
subss %xmm8, %xmm3
movss 0x37049(%rip), %xmm8    # 0xb6fe4
addss %xmm8, %xmm3
mulss 0x3791c(%rip), %xmm3    # 0xb78c4
addss %xmm8, %xmm3
movslq %ecx, %rdx
mulss %xmm6, %xmm3
addss (%r12,%rdx,4), %xmm3
movss %xmm3, (%r12,%rdx,4)
movl %eax, %ecx
subl %esi, %ecx
jle 0x7ffff
movaps %xmm2, %xmm3
mulss %xmm5, %xmm3
movaps %xmm3, %xmm8
mulss 0x3702a(%rip), %xmm8    # 0xb7004
leal -0x1(%rax), %esi
movaps %xmm8, %xmm9
addss %xmm6, %xmm9
addss 0x4(%r12,%rdx,4), %xmm9
movss %xmm9, 0x4(%r12,%rdx,4)
addss %xmm3, %xmm6
incq %rdx
cmpl %edx, %esi
jne 0x7ffdd
movaps %xmm6, %xmm3
andps 0x377c7(%rip), %xmm3    # 0xb77d0
movss 0x48982(%rip), %xmm8    # 0xc8994
ucomiss %xmm3, %xmm8
jb 0x80f86
xorps %xmm3, %xmm3
cvtsi2ss %ecx, %xmm3
xorps %xmm8, %xmm8
cvtsi2ss %eax, %xmm8
mulss %xmm3, %xmm2
addss %xmm7, %xmm2
subss %xmm8, %xmm4
addss 0x37803(%rip), %xmm4    # 0xb7844
mulss 0x3787b(%rip), %xmm4    # 0xb78c4
addss 0x36f93(%rip), %xmm4    # 0xb6fe4
mulss %xmm5, %xmm4
movaps %xmm0, %xmm3
subss %xmm2, %xmm3
mulss %xmm4, %xmm3
addss %xmm6, %xmm3
cltq
addss (%r12,%rax,4), %xmm3
movss %xmm3, (%r12,%rax,4)
subss %xmm1, %xmm0
mulss %xmm5, %xmm0
movq -0x1f0(%rbp), %rcx
addss (%rcx,%rax,4), %xmm0
movss %xmm0, (%rcx,%rax,4)
movq (%r15), %r15
jmp 0x7fb45
cmpl $0x7ffffffe, -0x118(%rbp) # imm = 0x7FFFFFFE
movaps 0x3772c(%rip), %xmm2    # 0xb77d0
movss 0x3779c(%rip), %xmm3    # 0xb7848
movss 0x36f50(%rip), %xmm4    # 0xb7004
movl $0xff, %edi
movq -0x190(%rbp), %r8
movq -0x240(%rbp), %r9
movq -0x258(%rbp), %rbx
ja 0x8010f
xorps %xmm0, %xmm0
movq %r12, %rax
movl %ebx, %ecx
movq %r9, %rdx
addss (%rax,%r9,4), %xmm0
movss (%rax), %xmm1
addss %xmm0, %xmm1
andps %xmm2, %xmm1
mulss %xmm3, %xmm1
addss %xmm4, %xmm1
cvttss2si %xmm1, %esi
cmpl %edi, %esi
cmovgel %edi, %esi
movslq %ecx, %rcx
movb %sil, (%r8,%rcx)
incl %ecx
addq $0x4, %rax
decq %rdx
jne 0x800db
movq -0xb8(%rbp), %rax
testq %rax, %rax
movl -0xbc(%rbp), %ecx
leaq 0x37ffe(%rip), %r15     # 0xb8124
movq -0x130(%rbp), %r14
je 0x80146
movss 0xc(%rax), %xmm0
addss 0x8(%rax), %xmm0
movss %xmm0, 0x8(%rax)
movq (%rax), %rax
testq %rax, %rax
jne 0x8012f
movl -0x1bc(%rbp), %edx
incl %edx
movq -0x198(%rbp), %rsi
leal 0x1(%rsi), %eax
addl %ecx, %ebx
cmpl -0x178(%rbp), %esi
movq %rax, -0x198(%rbp)
jne 0x7fa80
jmp 0x80320
cmpl $0x0, -0x154(%rbp)
setne %al
cmpl $0x0, -0x198(%rbp)
sete %bl
andb %al, %bl
ucomiss 0xc(%r13), %xmm0
jne 0x80191
jnp 0x801a2
testq %r14, %r14
je 0x801ae
movq (%r14), %rax
movq %rax, -0x130(%rbp)
jmp 0x80210
movq %r14, -0x130(%rbp)
jmp 0x802e9
cmpl $0x0, -0xdc(%rbp)
jne 0x801e5
movl $0x6408, %edi           # imm = 0x6408
callq 0x424fb
testq %rax, %rax
je 0x80306
movq -0x140(%rbp), %rcx
movq %rcx, (%rax)
movl $0x320, -0xdc(%rbp)     # imm = 0x320
movq %rax, -0x140(%rbp)
movl -0xdc(%rbp), %ecx
movslq %ecx, %rax
decl %ecx
movl %ecx, -0xdc(%rbp)
shlq $0x5, %rax
movq %r14, -0x130(%rbp)
movq -0x140(%rbp), %rcx
leaq (%rax,%rcx), %r14
addq $-0x18, %r14
testq %r14, %r14
je 0x80eeb
movss 0x8(%r13), %xmm2
movss (%r13), %xmm3
movss 0x4(%r13), %xmm0
subss %xmm3, %xmm2
movss 0xc(%r13), %xmm1
movaps %xmm1, %xmm4
subss %xmm0, %xmm4
divss %xmm4, %xmm2
movss %xmm2, 0xc(%r14)
movss 0x36d96(%rip), %xmm4    # 0xb6fe4
divss %xmm2, %xmm4
movss -0x30(%rbp), %xmm6
movaps %xmm6, %xmm5
subss %xmm0, %xmm5
mulss %xmm2, %xmm5
cmpneqss 0x375d9(%rip), %xmm2    # 0xb7844
andps %xmm4, %xmm2
movss %xmm2, 0x10(%r14)
addss %xmm3, %xmm5
subss -0x1c0(%rbp), %xmm5
movss %xmm5, 0x8(%r14)
xorl %eax, %eax
cmpl $0x0, 0x10(%r13)
sete %al
movss (%r15,%rax,4), %xmm2
movss %xmm2, 0x14(%r14)
movss %xmm0, 0x18(%r14)
movss %xmm1, 0x1c(%r14)
movq $0x0, (%r14)
ucomiss %xmm1, %xmm6
seta %al
andb %bl, %al
cmpb $0x1, %al
jne 0x802c1
movss %xmm6, 0x1c(%r14)
movss 0x1c(%r14), %xmm0
ucomiss -0x30(%rbp), %xmm0
jb 0x80f0a
movq -0xb8(%rbp), %rax
movq %rax, (%r14)
movq %r14, -0xb8(%rbp)
movq -0x130(%rbp), %r14
movss 0x18(%r13), %xmm0
addq $0x14, %r13
movss -0x50(%rbp), %xmm1
ucomiss %xmm0, %xmm1
jae 0x80188
jmp 0x7fb3e
movq %r14, -0x130(%rbp)
xorl %r14d, %r14d
jmp 0x80210
movq $0x0, -0x140(%rbp)
movq -0x140(%rbp), %rbx
testq %rbx, %rbx
movq -0x168(%rbp), %r15
je 0x80343
movq %rbx, %rdi
movq (%rbx), %rbx
callq 0x425d4
testq %rbx, %rbx
jne 0x80333
leaq -0x480(%rbp), %rax
cmpq %rax, %r12
je 0x80357
movq %r12, %rdi
callq 0x425d4
movq -0x148(%rbp), %rdi
callq 0x425d4
movq -0xd8(%rbp), %rdi
callq 0x425d4
movq -0x188(%rbp), %rdi
callq 0x425d4
movq -0x120(%rbp), %rdi
callq 0x425d4
cmpb $0x2, -0x88(%rbp)
jb 0x805e7
movq -0x170(%rbp), %rcx
movzwl 0x8(%rcx), %eax
movzwl 0xa(%rcx), %ebx
movzwl 0x4(%rcx), %r14d
movzwl 0x6(%rcx), %ecx
movq $0x0, -0x480(%rbp)
movl %ecx, -0x70(%rbp)
testl %ecx, %ecx
je 0x805e0
addq -0x180(%rbp), %rax
imulq -0xb0(%rbp), %rbx
addq %rax, %rbx
movl %r14d, %eax
subl -0x88(%rbp), %eax
movq %rax, -0x80(%rbp)
leal 0x1(%rax), %r13d
xorl %r15d, %r15d
leaq -0x480(%rbp), %rdi
xorl %esi, %esi
movq -0x88(%rbp), %r12
movq %r12, %rdx
callq 0xc260
leal -0x2(%r12), %eax
cmpl $0x3, %eax
ja 0x80544
leaq 0x485bb(%rip), %rcx     # 0xc89d0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movl $0xaaaaaaab, %r8d       # imm = 0xAAAAAAAB
movl $0xcccccccd, %r9d       # imm = 0xCCCCCCCD
jmpq *%rax
cmpl $0x0, -0x80(%rbp)
js 0x80593
xorl %esi, %esi
xorl %ecx, %ecx
movzbl (%rbx,%rsi), %eax
movl %esi, %edx
andl $0x7, %edx
movzbl -0x480(%rbp,%rdx), %edx
leal 0x2(%rsi), %edi
andl $0x7, %edi
movb %al, -0x480(%rbp,%rdi)
subl %edx, %eax
addl %eax, %ecx
movl %ecx, %eax
shrl %eax
movb %al, (%rbx,%rsi)
incq %rsi
cmpq %rsi, %r13
jne 0x80438
jmp 0x80597
cmpl $0x0, -0x80(%rbp)
js 0x80593
xorl %esi, %esi
xorl %ecx, %ecx
movzbl (%rbx,%rsi), %eax
movl %esi, %edx
andl $0x7, %edx
movzbl -0x480(%rbp,%rdx), %edi
xorq $0x4, %rdx
movb %al, -0x480(%rbp,%rdx)
subl %edi, %eax
addl %eax, %ecx
movl %ecx, %eax
shrl $0x2, %eax
movb %al, (%rbx,%rsi)
incq %rsi
cmpq %rsi, %r13
jne 0x8047c
jmp 0x80597
cmpl $0x0, -0x80(%rbp)
js 0x80593
xorl %esi, %esi
xorl %ecx, %ecx
movzbl (%rbx,%rsi), %eax
movl %esi, %edx
andl $0x7, %edx
movzbl -0x480(%rbp,%rdx), %edx
leal 0x5(%rsi), %edi
andl $0x7, %edi
movb %al, -0x480(%rbp,%rdi)
subl %edx, %eax
addl %eax, %ecx
movq %rcx, %rax
imulq %r9, %rax
shrq $0x22, %rax
movb %al, (%rbx,%rsi)
incq %rsi
cmpq %rsi, %r13
jne 0x804bf
jmp 0x80597
cmpl $0x0, -0x80(%rbp)
js 0x80593
xorl %esi, %esi
xorl %ecx, %ecx
movzbl (%rbx,%rsi), %eax
movl %esi, %edx
andl $0x7, %edx
movzbl -0x480(%rbp,%rdx), %edx
leal 0x3(%rsi), %edi
andl $0x7, %edi
movb %al, -0x480(%rbp,%rdi)
subl %edx, %eax
addl %eax, %ecx
movq %rcx, %rax
imulq %r8, %rax
shrq $0x21, %rax
movb %al, (%rbx,%rsi)
incq %rsi
cmpq %rsi, %r13
jne 0x8050a
jmp 0x80597
cmpl $0x0, -0x80(%rbp)
js 0x80593
xorl %esi, %esi
xorl %ecx, %ecx
movq -0x88(%rbp), %r8
movq -0x220(%rbp), %r9
movzbl (%rbx,%rsi), %eax
leal (%r9,%rsi), %edx
movl %esi, %edi
andl $0x7, %edi
movzbl -0x480(%rbp,%rdi), %edi
andl $0x7, %edx
movb %al, -0x480(%rbp,%rdx)
subl %edi, %eax
addl %eax, %ecx
movl %ecx, %eax
xorl %edx, %edx
divl %r8d
movb %al, (%rbx,%rsi)
incq %rsi
cmpq %rsi, %r13
jne 0x8055c
jmp 0x80597
xorl %esi, %esi
xorl %ecx, %ecx
cmpl %r14d, %esi
jge 0x805cc
movl %esi, %esi
cmpb $0x0, (%rbx,%rsi)
jne 0x80e6f
movl %esi, %eax
andl $0x7, %eax
movzbl -0x480(%rbp,%rax), %eax
subl %eax, %ecx
movl %ecx, %eax
xorl %edx, %edx
divl -0x88(%rbp)
movb %al, (%rbx,%rsi)
incq %rsi
cmpl %r14d, %esi
jl 0x8059e
addq -0xb0(%rbp), %rbx
incl %r15d
cmpl -0x70(%rbp), %r15d
jne 0x803e8
movq -0x168(%rbp), %r15
cmpb $0x2, -0xa0(%rbp)
movq -0x170(%rbp), %rsi
jb 0x808a4
movzwl 0x8(%rsi), %eax
movzwl 0xa(%rsi), %ebx
movzwl 0x4(%rsi), %ecx
movzwl 0x6(%rsi), %edx
movl %edx, -0x70(%rbp)
movq $0x0, -0x480(%rbp)
movl %ecx, -0x80(%rbp)
testl %ecx, %ecx
je 0x80896
addq -0x180(%rbp), %rax
imulq -0xb0(%rbp), %rbx
addq %rax, %rbx
movl -0x70(%rbp), %eax
movl %eax, %r12d
subl -0xa0(%rbp), %r12d
leal 0x1(%r12), %r13d
xorl %r15d, %r15d
leaq -0x480(%rbp), %rdi
xorl %esi, %esi
movq -0xa0(%rbp), %r14
movq %r14, %rdx
callq 0xc260
leal -0x2(%r14), %eax
cmpl $0x3, %eax
ja 0x807d9
leaq 0x48369(%rip), %rcx     # 0xc89e0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movl $0xaaaaaaab, %r10d      # imm = 0xAAAAAAAB
movl $0xcccccccd, %r11d      # imm = 0xCCCCCCCD
jmpq *%rax
testl %r12d, %r12d
js 0x80836
xorl %esi, %esi
movq %rbx, %rax
xorl %ecx, %ecx
movq -0xb0(%rbp), %r9
movzbl (%rax), %edx
movl %esi, %edi
andl $0x7, %edi
movzbl -0x480(%rbp,%rdi), %edi
leal 0x2(%rsi), %r8d
andl $0x7, %r8d
movb %dl, -0x480(%rbp,%r8)
subl %edi, %edx
addl %edx, %ecx
movl %ecx, %edx
shrl %edx
movb %dl, (%rax)
incq %rsi
addq %r9, %rax
cmpq %rsi, %r13
jne 0x806a3
jmp 0x8083a
testl %r12d, %r12d
js 0x80836
xorl %esi, %esi
movq %rbx, %rax
xorl %ecx, %ecx
movq -0xb0(%rbp), %r9
movzbl (%rax), %edx
movl %esi, %edi
andl $0x7, %edi
movzbl -0x480(%rbp,%rdi), %r8d
xorq $0x4, %rdi
movb %dl, -0x480(%rbp,%rdi)
subl %r8d, %edx
addl %edx, %ecx
movl %ecx, %edx
shrl $0x2, %edx
movb %dl, (%rax)
incq %rsi
addq %r9, %rax
cmpq %rsi, %r13
jne 0x806f4
jmp 0x8083a
testl %r12d, %r12d
js 0x80836
xorl %esi, %esi
movq %rbx, %rax
xorl %ecx, %ecx
movq -0xb0(%rbp), %r9
movzbl (%rax), %edx
movl %esi, %edi
andl $0x7, %edi
movzbl -0x480(%rbp,%rdi), %edi
leal 0x5(%rsi), %r8d
andl $0x7, %r8d
movb %dl, -0x480(%rbp,%r8)
subl %edi, %edx
addl %edx, %ecx
movq %rcx, %rdx
imulq %r11, %rdx
shrq $0x22, %rdx
movb %dl, (%rax)
incq %rsi
addq %r9, %rax
cmpq %rsi, %r13
jne 0x80743
jmp 0x8083a
testl %r12d, %r12d
js 0x80836
xorl %esi, %esi
movq %rbx, %rax
xorl %ecx, %ecx
movq -0xb0(%rbp), %r9
movzbl (%rax), %edx
movl %esi, %edi
andl $0x7, %edi
movzbl -0x480(%rbp,%rdi), %edi
leal 0x3(%rsi), %r8d
andl $0x7, %r8d
movb %dl, -0x480(%rbp,%r8)
subl %edi, %edx
addl %edx, %ecx
movq %rcx, %rdx
imulq %r10, %rdx
shrq $0x21, %rdx
movb %dl, (%rax)
incq %rsi
addq %r9, %rax
cmpq %rsi, %r13
jne 0x8079b
jmp 0x8083a
testl %r12d, %r12d
movq -0x238(%rbp), %r11
js 0x80836
xorl %esi, %esi
movq %rbx, %rdi
xorl %ecx, %ecx
movq -0xb0(%rbp), %r9
movq -0xa0(%rbp), %r10
movzbl (%rdi), %eax
leal (%r11,%rsi), %edx
movl %esi, %r8d
andl $0x7, %r8d
movzbl -0x480(%rbp,%r8), %r8d
andl $0x7, %edx
movb %al, -0x480(%rbp,%rdx)
subl %r8d, %eax
addl %eax, %ecx
movl %ecx, %eax
xorl %edx, %edx
divl %r10d
movb %al, (%rdi)
incq %rsi
addq %r9, %rdi
cmpq %rsi, %r13
jne 0x807fa
jmp 0x8083a
xorl %esi, %esi
xorl %ecx, %ecx
movl -0x70(%rbp), %edi
subl %esi, %edi
jle 0x80886
movslq %esi, %rsi
movq -0xb0(%rbp), %r8
imulq %rsi, %r8
addq %rbx, %r8
cmpb $0x0, (%r8)
jne 0x80e8e
movl %esi, %eax
andl $0x7, %eax
movzbl -0x480(%rbp,%rax), %eax
subl %eax, %ecx
movl %ecx, %eax
xorl %edx, %edx
divl -0xa0(%rbp)
movb %al, (%r8)
incq %rsi
addq -0xb0(%rbp), %r8
decl %edi
jne 0x80852
incq %rbx
incl %r15d
cmpl -0x80(%rbp), %r15d
jne 0x8064b
movq -0x168(%rbp), %r15
movq -0x170(%rbp), %rsi
movq %r15, %r12
movl -0x1b8(%rbp), %r8d
shll $0x8, %r8d
addl -0x1b4(%rbp), %r8d
movl 0x8(%rsi), %eax
movq -0x228(%rbp), %rdi
movw %ax, (%rdi)
movzwl 0xa(%rsi), %edx
movw %dx, 0x2(%rdi)
movzwl 0x4(%rsi), %ecx
addl %ecx, %eax
movw %ax, 0x4(%rdi)
movzwl 0x6(%rsi), %eax
movswl %r8w, %esi
xorps %xmm0, %xmm0
cvtsi2ss %esi, %xmm0
addl %eax, %edx
movw %dx, 0x6(%rdi)
mulss -0x200(%rbp), %xmm0
movss %xmm0, 0x10(%rdi)
movl -0x1c8(%rbp), %edx
xorps %xmm0, %xmm0
cvtsi2ss %edx, %xmm0
movss -0x1b0(%rbp), %xmm4
mulss %xmm4, %xmm0
movss -0x14c(%rbp), %xmm3
addss %xmm3, %xmm0
movss %xmm0, 0x8(%rdi)
movl -0x1c4(%rbp), %esi
xorps %xmm0, %xmm0
cvtsi2ss %esi, %xmm0
movss -0x1ac(%rbp), %xmm5
mulss %xmm5, %xmm0
addl %ecx, %edx
xorps %xmm1, %xmm1
cvtsi2ss %edx, %xmm1
movss -0x150(%rbp), %xmm2
addss %xmm2, %xmm0
movss %xmm0, 0xc(%rdi)
mulss %xmm4, %xmm1
addss %xmm3, %xmm1
addl %eax, %esi
xorps %xmm0, %xmm0
cvtsi2ss %esi, %xmm0
movss %xmm1, 0x14(%rdi)
mulss %xmm5, %xmm0
addss %xmm2, %xmm0
movss %xmm0, 0x18(%rdi)
movq -0xa8(%rbp), %r15
movq -0x98(%rbp), %r14
movq -0x138(%rbp), %rbx
movq -0x218(%rbp), %rcx
movq -0x230(%rbp), %rdx
incq %rdx
movslq 0xb0(%rbx), %rax
cmpq %rax, %rdx
jl 0x7f1c6
movq -0x160(%rbp), %rcx
movq %rcx, %rax
shlq $0x7, %rax
leaq (%rax,%rcx,8), %rax
movq -0x210(%rbp), %rcx
movss 0x50(%rcx,%rax), %xmm0
ucomiss 0x3660e(%rip), %xmm0    # 0xb6fe4
jne 0x809de
jnp 0x80a99
xorl %eax, %eax
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
mulss %xmm0, %xmm1
cvttss2si %xmm1, %rcx
movl $0xff, %edx
cmpl %edx, %ecx
jb 0x809fe
movl $0xff, %ecx
movb %cl, -0x480(%rbp,%rax)
incq %rax
cmpq $0x100, %rax            # imm = 0x100
jne 0x809e0
movq -0x138(%rbp), %rbx
cmpl $0x0, 0xe8(%rbx)
jle 0x80a99
movq 0xc8(%rbx), %rax
xorl %ecx, %ecx
cmpl $0x0, 0xc(%rax)
je 0x80a84
movzwl 0x6(%rax), %edx
testl %edx, %edx
je 0x80a84
movzwl 0x4(%rax), %esi
movslq 0x28(%r15), %rdi
movzwl 0xa(%rax), %r8d
movzwl 0x8(%rax), %r9d
addq 0x18(%r15), %r9
imulq %rdi, %r8
addq %r9, %r8
testq %rsi, %rsi
je 0x80a75
xorl %r9d, %r9d
movzbl (%r8,%r9), %r10d
movb -0x480(%rbp,%r10), %r10b
movb %r10b, (%r8,%r9)
incq %r9
cmpq %r9, %rsi
jne 0x80a5c
leal -0x1(%rdx), %r9d
addq %rdi, %r8
cmpl $0x1, %edx
movl %r9d, %edx
jg 0x80a54
incl %ecx
addq $0x10, %rax
movq -0x138(%rbp), %rbx
cmpl 0xe8(%rbx), %ecx
jl 0x80a29
movq $0x0, 0xc8(%rbx)
movq -0x160(%rbp), %rax
incq %rax
cmpq %r14, %rax
jne 0x7efc2
movq %r12, %rdi
callq 0x425d4
movq -0x1e8(%rbp), %rdi
callq 0x425d4
movq -0xc8(%rbp), %rdi
testq %rdi, %rdi
je 0x80af2
movq $0x0, -0xd0(%rbp)
callq 0x425d4
movq $0x0, -0xc8(%rbp)
testl %r14d, %r14d
jle 0x80dc5
xorl %eax, %eax
movq %rax, -0x48(%rbp)
imulq $0x110, %rax, %r12      # imm = 0x110
movq -0x58(%rbp), %rax
cmpl $0x0, 0xe8(%rax,%r12)
je 0x80dae
movq -0xa8(%rbp), %rax
movslq 0x60(%rax), %rax
movq -0x48(%rbp), %rdi
cmpq %rax, %rdi
jge 0x80fc4
addq -0x58(%rbp), %r12
movq 0x8(%r12), %rax
movslq 0x24(%r12), %rcx
movzbl 0x4(%rax,%rcx), %edx
shll $0x8, %edx
movzbl 0x5(%rax,%rcx), %esi
movswl %dx, %r15d
orl %esi, %r15d
movss 0x36473(%rip), %xmm0    # 0xb6fd0
testw %r15w, %r15w
jle 0x80b6b
movss 0x36479(%rip), %xmm0    # 0xb6fe4
movss %xmm0, -0x80(%rbp)
movzbl 0x6(%rax,%rcx), %edx
shll $0x8, %edx
movzbl 0x7(%rax,%rcx), %eax
movswl %dx, %r13d
orl %eax, %r13d
movss 0x36444(%rip), %xmm0    # 0xb6fd0
movss %xmm0, -0x70(%rbp)
testw %r13w, %r13w
jle 0x80ba4
movss 0x36445(%rip), %xmm0    # 0xb6fe4
movss %xmm0, -0x70(%rbp)
movq -0xa8(%rbp), %rax
movq 0x68(%rax), %rax
movq %rdi, %rcx
shlq $0x7, %rcx
leaq (%rcx,%rdi,8), %rcx
leaq (%rax,%rcx), %rbx
movq 0x80(%rax,%rcx), %r14
cmpb $0x0, 0x48(%rax,%rcx)
jne 0x80c52
movss 0x14(%rax,%rcx), %xmm0
movss %xmm0, -0x40(%rbp)
movq %r14, %rdi
callq 0x82638
xorps %xmm0, %xmm0
cvtsi2ss %r15d, %xmm0
subl %r13d, %r15d
cvtsi2ss %r15d, %xmm1
movss -0x40(%rbp), %xmm2
divss %xmm1, %xmm2
mulss %xmm2, %xmm0
addss -0x80(%rbp), %xmm0
cvttps2dq %xmm0, %xmm0
xorps %xmm1, %xmm1
cvtsi2ss %r13d, %xmm1
cvtdq2ps %xmm0, %xmm0
mulss %xmm2, %xmm1
addss -0x70(%rbp), %xmm1
cvttps2dq %xmm1, %xmm1
cvtdq2ps %xmm1, %xmm1
movss 0x14(%rbx), %xmm2
movss %xmm2, 0x14(%r14)
movq %rbx, 0x48(%r14)
movw $0x0, 0x50(%r14)
movq -0xa8(%rbp), %rax
movq %rax, 0x40(%r14)
movss %xmm0, 0x5c(%r14)
movss %xmm1, 0x60(%r14)
incw 0x50(%r14)
movss 0x5c(%r14), %xmm0
addss 0x3639f(%rip), %xmm0    # 0xb7004
cmpl $0x0, 0xe8(%r12)
jle 0x80dae
movss 0x2c(%rbx), %xmm1
movss %xmm1, -0x70(%rbp)
cvttps2dq %xmm0, %xmm0
cvtdq2ps %xmm0, %xmm0
addss 0x30(%rbx), %xmm0
movaps %xmm0, -0x80(%rbp)
xorl %r13d, %r13d
xorl %r15d, %r15d
movslq 0x100(%r12), %rax
cmpq %rax, %r15
jge 0x80f48
movq 0xd0(%r12), %rax
movq 0x108(%r12), %rcx
movzwl (%rcx,%r15,4), %edx
movss 0x8(%rax,%r13), %xmm0
xorps %xmm9, %xmm9
addss %xmm9, %xmm0
movss 0xc(%rax,%r13), %xmm1
addss %xmm9, %xmm1
movss 0x14(%rax,%r13), %xmm2
addss %xmm9, %xmm2
movss 0x18(%rax,%r13), %xmm3
movq -0xa8(%rbp), %rcx
xorps %xmm4, %xmm4
cvtsi2ssl 0x2c(%rcx), %xmm4
movss 0x362e4(%rip), %xmm7    # 0xb6fe4
movaps %xmm7, %xmm8
divss %xmm4, %xmm8
xorps %xmm5, %xmm5
cvtsi2ssl 0x28(%rcx), %xmm5
movzwl (%rax,%r13), %ecx
xorps %xmm4, %xmm4
cvtsi2ss %ecx, %xmm4
divss %xmm5, %xmm7
mulss %xmm7, %xmm4
movzwl 0x2(%rax,%r13), %ecx
xorps %xmm5, %xmm5
cvtsi2ss %ecx, %xmm5
movzwl 0x4(%rax,%r13), %ecx
xorps %xmm6, %xmm6
cvtsi2ss %ecx, %xmm6
mulss %xmm7, %xmm6
movzwl 0x6(%rax,%r13), %ecx
xorps %xmm7, %xmm7
cvtsi2ss %ecx, %xmm7
addss %xmm9, %xmm3
mulss %xmm8, %xmm5
mulss %xmm8, %xmm7
movss -0x70(%rbp), %xmm8
addss %xmm8, %xmm0
movaps -0x80(%rbp), %xmm9
addss %xmm9, %xmm1
addss %xmm8, %xmm2
addss %xmm9, %xmm3
movss 0x10(%rax,%r13), %xmm8
movss %xmm8, (%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x81e9a
incq %r15
movslq 0xe8(%r12), %rax
addq $0x1c, %r13
cmpq %rax, %r15
jl 0x80c94
movq -0x48(%rbp), %rax
incq %rax
movq -0x98(%rbp), %r14
cmpq %r14, %rax
jne 0x80afd
testl %r14d, %r14d
movq -0xa8(%rbp), %r14
jle 0x80e0f
xorl %ebx, %ebx
movq -0x58(%rbp), %rax
movq 0x108(%rax,%rbx), %rdi
testq %rdi, %rdi
je 0x80de9
callq 0x425d4
movq -0x58(%rbp), %rax
movq 0xf8(%rax,%rbx), %rdi
testq %rdi, %rdi
je 0x80dff
callq 0x425d4
addq $0x110, %rbx            # imm = 0x110
cmpq %rbx, -0x208(%rbp)
jne 0x80dd3
movq %r14, %rdi
callq 0x82115
movq -0xf8(%rbp), %rdi
testq %rdi, %rdi
je 0x80e28
callq 0x425d4
movq -0xc8(%rbp), %rdi
testq %rdi, %rdi
je 0x80e39
callq 0x425d4
movq -0xe8(%rbp), %rdi
testq %rdi, %rdi
je 0x80e4a
callq 0x425d4
movq -0x58(%rbp), %rdi
testq %rdi, %rdi
je 0x80e58
callq 0x425d4
movb -0x31(%rbp), %al
andb $0x1, %al
addq $0x478, %rsp            # imm = 0x478
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4f79a(%rip), %rdi     # 0xd0610
leaq 0x4f0a5(%rip), %rsi     # 0xcff22
leaq 0x4f79b(%rip), %rcx     # 0xd061f
movl $0xf41, %edx            # imm = 0xF41
callq 0xc140
leaq 0x4f7d0(%rip), %rdi     # 0xd0665
leaq 0x4f086(%rip), %rsi     # 0xcff22
leaq 0x4f7e1(%rip), %rcx     # 0xd0684
movl $0xf7f, %edx            # imm = 0xF7F
callq 0xc140
leaq 0x4f668(%rip), %rdi     # 0xd051c
leaq 0x4f067(%rip), %rsi     # 0xcff22
leaq 0x4f5ef(%rip), %rcx     # 0xd04b1
movl $0xba5, %edx            # imm = 0xBA5
callq 0xc140
leaq 0x4f4f9(%rip), %rdi     # 0xd03cc
leaq 0x4f048(%rip), %rsi     # 0xcff22
leaq 0x4f4f8(%rip), %rcx     # 0xd03d9
movl $0xc63, %edx            # imm = 0xC63
callq 0xc140
leaq 0x4f55a(%rip), %rdi     # 0xd044c
leaq 0x4f029(%rip), %rsi     # 0xcff22
leaq 0x4f558(%rip), %rcx     # 0xd0458
movl $0xad1, %edx            # imm = 0xAD1
callq 0xc140
leaq 0x4f527(%rip), %rdi     # 0xd0438
leaq 0x4f00a(%rip), %rsi     # 0xcff22
leaq 0x4f4ba(%rip), %rcx     # 0xd03d9
movl $0xc76, %edx            # imm = 0xC76
callq 0xc140
leaq 0x4f5d7(%rip), %rdi     # 0xd0507
leaq 0x4efeb(%rip), %rsi     # 0xcff22
leaq 0x4f573(%rip), %rcx     # 0xd04b1
movl $0xbb8, %edx            # imm = 0xBB8
callq 0xc140
leaq 0x3a729(%rip), %rdi     # 0xbb678
leaq 0x3a735(%rip), %rsi     # 0xbb68b
leaq 0x415d7(%rip), %rcx     # 0xc2534
movl $0x65c, %edx            # imm = 0x65C
callq 0xc140
leaq 0x4eb89(%rip), %rdi     # 0xcfaf7
leaq 0x4e261(%rip), %rsi     # 0xcf1d6
leaq 0x4ea67(%rip), %rcx     # 0xcf9e3
movl $0x8e3, %edx            # imm = 0x8E3
callq 0xc140
leaq 0x4f5b0(%rip), %rdi     # 0xd053d
leaq 0x4ef8e(%rip), %rsi     # 0xcff22
leaq 0x4f516(%rip), %rcx     # 0xd04b1
movl $0xbfb, %edx            # imm = 0xBFB
callq 0xc140
leaq 0x4f57f(%rip), %rdi     # 0xd052b
leaq 0x4ef6f(%rip), %rsi     # 0xcff22
leaq 0x4f4f7(%rip), %rcx     # 0xd04b1
movl $0xbd4, %edx            # imm = 0xBD4
callq 0xc140
leaq 0x3a6ad(%rip), %rdi     # 0xbb678
leaq 0x3a6b9(%rip), %rsi     # 0xbb68b
leaq 0x4fc58(%rip), %rcx     # 0xd0c31
jmp 0x80f5d
leaq 0x3a696(%rip), %rdi     # 0xbb678
leaq 0x3a6a2(%rip), %rsi     # 0xbb68b
leaq 0x4fcfe(%rip), %rcx     # 0xd0cee
jmp 0x80f5d
leaq 0x4eacc(%rip), %rdi     # 0xcfac8
leaq 0x4e1d3(%rip), %rsi     # 0xcf1d6
leaq 0x4e9d9(%rip), %rcx     # 0xcf9e3
movl $0x8b4, %edx            # imm = 0x8B4
callq 0xc140
leaq 0x4ea4e(%rip), %rdi     # 0xcfa69
leaq 0x4e1b4(%rip), %rsi     # 0xcf1d6
leaq 0x4e9ba(%rip), %rcx     # 0xcf9e3
movl $0x880, %edx            # imm = 0x880
callq 0xc140
leaq 0x4e9dd(%rip), %rdi     # 0xcfa17
leaq 0x4e195(%rip), %rsi     # 0xcf1d6
leaq 0x4e99b(%rip), %rcx     # 0xcf9e3
movl $0x877, %edx            # imm = 0x877
callq 0xc140
leaq 0x3a61f(%rip), %rdi     # 0xbb678
leaq 0x3a62b(%rip), %rsi     # 0xbb68b
leaq 0x4fd0b(%rip), %rcx     # 0xd0d72
jmp 0x80f5d
leaq 0x3a605(%rip), %rdi     # 0xbb678
leaq 0x3a611(%rip), %rsi     # 0xbb68b
leaq 0x4fcb7(%rip), %rcx     # 0xd0d38
jmp 0x80f5d
leaq 0x4eeb4(%rip), %rdi     # 0xcff41
leaq 0x4ee8e(%rip), %rsi     # 0xcff22
leaq 0x4eebe(%rip), %rcx     # 0xcff59
movl $0x46c, %edx            # imm = 0x46C
callq 0xc140
leaq 0x4e9d4(%rip), %rdi     # 0xcfa80
leaq 0x4e123(%rip), %rsi     # 0xcf1d6
leaq 0x4e929(%rip), %rcx     # 0xcf9e3
movl $0x885, %edx            # imm = 0x885
callq 0xc140
leaq 0x3a5ad(%rip), %rdi     # 0xbb678
leaq 0x3a5b9(%rip), %rsi     # 0xbb68b
leaq 0x4fbcb(%rip), %rcx     # 0xd0ca4
jmp 0x80f5d
leaq 0x4e8e3(%rip), %rdi     # 0xcf9c8
leaq 0x4e0ea(%rip), %rsi     # 0xcf1d6
leaq 0x4e8f0(%rip), %rcx     # 0xcf9e3
movl $0x85f, %edx            # imm = 0x85F
callq 0xc140
leaq 0x4f07a(%rip), %rdi     # 0xd017e
leaq 0x4f097(%rip), %rsi     # 0xd01a2
leaq 0x4f0af(%rip), %rcx     # 0xd01c1
movl $0x10a, %edx            # imm = 0x10A
callq 0xc140
jmp 0x8119b
jmp 0x8119b
jmp 0x8116f
jmp 0x81150
jmp 0x8119b
jmp 0x8119b
movq %rax, %rbx
movq $0x0, -0xe8(%rbp)
jmp 0x81172
jmp 0x81150
jmp 0x81150
jmp 0x8119b
jmp 0x8119b
jmp 0x81150
jmp 0x8116f
jmp 0x8116f
jmp 0x8116f
jmp 0x81150
jmp 0x81150
jmp 0x81150
jmp 0x81150
movq %rax, %rbx
leaq -0x100(%rbp), %rdi
callq 0x87d96
leaq -0xd0(%rbp), %rdi
callq 0x87db2
jmp 0x81172
jmp 0x8116f
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
testq %rdi, %rdi
je 0x81183
callq 0x425d4
movq -0x58(%rbp), %rdi
testq %rdi, %rdi
je 0x81191
callq 0x425d4
movq %rbx, %rdi
callq 0xc560
jmp 0x8119b
movq %rax, %rdi
callq 0x3a5b4