// File: /workspace/github_cpp_makefile_star2_O1/Lut99[P]RayTracer/src/RayTracer.cpp
// Function: main
int main(int argc, char** argv) {
    std::string filename, scenename, temppath;
    unsigned int screen_width, screen_height, number_of_rays, n_threads, batch_size, vfov, fps, n_frames;
    bool show_progressbar, correct_gamma, dynamic_writing;
    double aperture;

    Options arguments("RayTracer", "Renders images using a custom-written RayTracer.");
    arguments.add_options()
        ("f,filename", "The name of the output picture (relative to the run directory). If more than one frames are rendered, this will be an .mp4.", value<string>())
        ("s,scene", "Path to the JSON file that will be used to create a RenderWorld", value<string>())
        ("T,temppath", "Path to a folder where all the frames will be saved before creating an .mp4", value<string>())
        ("W,width", "The width (in pixels) of the output image", value<unsigned int>())
        ("H,height", "The height (in pixels) of the output image", value<unsigned int>())
        ("r,rays", "The number of rays shot per pixel", value<unsigned int>())
        ("v,vfov", "Specifies the field of view for the camera.", value<unsigned int>())
        ("a,aperture", "Determines the aperture of the camera. Determines the amount of blur.", value<double>())
        ("n,n_frames", "The number of frames that will be rendered. If this is higher than one, then a .mp4 is created.", value<unsigned int>())
        ("F,framerate", "The framerate of the output video.", value<unsigned int>())
        ("d,dynamic_write", "If given, writes the frame immediately to disk when rendered.")
        ("p,progressbar", "If given, shows a progressbar to indice the render process")
        ("g,gamma", "If given, corrects the gamma before saving")
        #ifdef THREADED
        ("t,threads", "The number of threads this program runs", value<unsigned int>())
        ("b,batch_size", "The batch size for the ThreadPool", value<unsigned int>())
        #endif
        ;
    
    auto result = arguments.parse(argc, argv);
    
    if (result.count("filename")) {
        filename = result["filename"].as<string>();
    } else {
        filename = "output/out1.";
    }
    if (result.count("scene")) {
        scenename = result["scene"].as<string>();
    } else {
        scenename = "";
    }
    if (result.count("temppath")) {
        temppath = result["temppath"].as<string>();
    } else {
        temppath = "output/animation";
    }

    try {
        screen_width = result["width"].as<unsigned int>();
    } catch (domain_error&) {
        screen_width = 1000;
    } catch (OptionParseException& opt) {
        cerr << "Could not parse image width: " << opt.what() << endl;
        exit(-1);
    }
    try {
        screen_height = result["height"].as<unsigned int>();
    } catch (domain_error&) {
        screen_height = 500;
    } catch (OptionParseException& opt) {
        cerr << "Could not parse image height: " << opt.what() << endl;
        exit(-1);
    }
    try {
        number_of_rays = result["rays"].as<unsigned int>();
    } catch (domain_error&) {
        number_of_rays = 500;
    } catch (OptionParseException& opt) {
        cerr << "Could not parse number of rays: " << opt.what() << endl;
        exit(-1);
    }
    try {
        vfov = result["vfov"].as<unsigned int>();
    } catch (domain_error&) {
        vfov = 90;
    } catch (OptionParseException& opt) {
        cerr << "Could not parse field of view: " << opt.what() << endl;
        exit(-1);
    }
    try {
        fps = result["framerate"].as<unsigned int>();
    } catch (domain_error&) {
        fps = 30;
    } catch (OptionParseException& opt) {
        cerr << "Could not parse framerate: " << opt.what() << endl;
        exit(-1);
    }
    try {
        n_frames = result["n_frames"].as<unsigned int>();
    } catch (domain_error&) {
        n_frames = 1;
    } catch (OptionParseException& opt) {
        cerr << "Could not parse number of frames: " << opt.what() << endl;
        exit(-1);
    }
    try {
        aperture = result["aperture"].as<double>();
    } catch (domain_error&) {
        aperture = 0.1;
    } catch (OptionParseException& opt) {
        cerr << "Could not parse aperture: " << opt.what() << endl;
        exit(-1);
    }
    show_progressbar = result.count("progressbar") != 0;
    correct_gamma = result.count("gamma") != 0;
    dynamic_writing = result.count("dynamic_write") != 0;
    #ifdef THREADED
    try {
        n_threads = result["threads"].as<unsigned int>();
    } catch (domain_error&) {
        n_threads = 16;
    } catch (OptionParseException& opt) {
        cerr << "Could not parse number of threads: " << opt.what() << endl;
        exit(-1);
    }
    try {
        batch_size = result["batch_size"].as<unsigned int>();
    } catch (domain_error&) {
        batch_size = 1000;
    } catch (OptionParseException& opt) {
        cerr << "Could not parse batch size: " << opt.what() << endl;
        exit(-1);
    }
    #else
    n_threads = 16;
    batch_size = 1000;
    #endif

    // Fix the output file if needed
    if (filename[filename.length() - 1] == '.') {
        if (n_frames == 1) {
            filename += "png";
        } else {
            filename += "mp4";
        }
    }

    cout << endl << "*** RayTracer Renderer ***" << endl << endl;
    cout << "Using options:" << endl;
    cout << "  Output file         : " << filename << endl;
    if (scenename != "") {
        cout << "  Scene used          : " << scenename << endl;
    }
    if (n_frames > 1) {
        cout << "  Temp output dict    : " << temppath << endl;
    }
    cout << "  Image dimensions    : " << screen_width << "x" << screen_height << "px" << endl;
    cout << "  Number of frames    : " << n_frames << endl;
    if (n_frames > 1) {
        cout << "  Framerate           : " << fps << endl;
    }
    cout << "  Number of rays      : " << number_of_rays << endl;
    #ifdef THREADED
    cout << "  Number of threads   : " << n_threads << endl;
    cout << "  Batch size          : " << batch_size << endl;
    #endif
    cout << "  Field of view       : " << vfov << endl;
    cout << "  Aperture            : " << aperture << endl;
    cout << "  Correct for gamma   ? ";
    if (correct_gamma) {
        cout << "yes" << endl;
    } else {
        cout << "no" << endl;
    }
    if (n_frames > 1) {
        cout << "  Write frames dynamic? ";
        if (dynamic_writing) {
            cout << "yes" << endl;
        } else {
            cout << "no" << endl;
        }
    }

    RenderWorld* world;
    Camera *cam = NULL;
    if (scenename.empty()) {
        cout << endl << "Creating default scene..." << endl;
        cout << "  Generating world..." << endl;
        world = create_default_renderworld();
        cout << "  Done, counting " << world->get_object_count() << " objects" << endl;

        cout << "  Generating camera..." << endl;
        cam = create_default_camera(vfov, aperture, screen_width, screen_height, number_of_rays, correct_gamma);
        cout << "  Done" << endl;

        cout << "Done" << endl;
    } else {
        // Open a filestream to the input scene
        cout << endl << "Loading JSON..." << endl;
        ifstream scene_file(scenename);
        if (!scene_file.is_open()) {
            cerr << "Could not open file: " << string_error(errno) << endl;
            exit(-1);
        }

        // Load a JSON from it
        nlohmann::json j;
        scene_file >> j;
        scene_file.close();

        // Check if the j is an object
        if (!j.is_object()) {
            cerr << "JSON in file \"" << scenename << "\" is not a JSON object" << endl;
            exit(-1);
        }

        // Load all the objects (if present)
        if (!j["world"].is_null()) {
            cout << "  Loading world..." << endl;
            try {
                world = RenderWorld::from_json(j["world"]);
            } catch (JSONException& e) {
                cerr << e.what() << endl;
                exit(-1);
            }
        } else {
            cout << "  Generating world..." << endl;
            world = create_default_renderworld();
        }
        cout << "  Done, counting " << world->get_object_count() << " objects" << endl;

        // Load any camera
        if (!j["camera"].is_null()) {
            cout << "  Loading camera..." << endl;

            // Load the actual object
            cam = Camera::from_json(j["camera"]);

            // Update it to make sure it has some meta variables
            update_camera(cam, screen_width, screen_height, number_of_rays, correct_gamma);
            
            // Let the camera compute some initial variables
            cam->recompute();

            // Print some nice stuff
            if (cam->vfov != vfov) {
                cout << "    Camera: overriding field of view to " << cam->vfov << endl;
            }
            if (cam->aperture != aperture) {
                cout << "    Camera: overriding aperture to " << cam->aperture << endl;
            }
        } else {
            cam = create_default_camera(vfov, aperture, screen_width, screen_height, number_of_rays, correct_gamma);
        }
        cout << "  Done" << endl;

        cout << "Done" << endl;
    }


    // Render one picture
    cout << endl << "Rendering..." << endl;
    Renderer renderer(n_threads, batch_size, show_progressbar);

    auto start = chrono::system_clock::now();
    auto stop = start;

    if (n_frames == 1) {
        Image out = renderer.render(world, cam);

        stop = chrono::system_clock::now();

        cout << "Writing output..." << endl;
        out.to_png(filename);
    } else {
        Frames out(cam->width, cam->height, n_frames, fps, temppath, dynamic_writing);
        renderer.render_animation(world, cam, out);

        stop = chrono::system_clock::now();

        cout << "Creating .mp4..." << endl;
        out.to_mp4(filename);
    }
    auto duration = stop - start;
    auto duration_ms = chrono::duration_cast<chrono::milliseconds>(duration);

    cout << "Done, rendering took " << ((double) duration_ms.count()) / 1000.0 << " seconds" << endl;

    // Delete the allocated objects
    delete world;
    delete cam;

    cout << endl <<  "Done." << endl << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xbd8, %rsp            # imm = 0xBD8
movl %edi, 0x94(%rsp)
movq %rsi, 0x6a8(%rsp)
leaq 0x60(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x80(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xc8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x9e8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x479bf(%rip), %rsi     # 0x8481e
leaq 0x479c1(%rip), %rdx     # 0x84827
leaq 0x9d8(%rsp), %rdi
callq 0x44728
leaq 0x9c8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x479a2(%rip), %rsi     # 0x84828
leaq 0x479cb(%rip), %rdx     # 0x84858
leaq 0x9b8(%rsp), %rdi
callq 0x44728
leaq 0xab8(%rsp), %rbx
leaq 0x9d8(%rsp), %rsi
leaq 0x9b8(%rsp), %rdx
movq %rbx, %rdi
callq 0x40bee
movq 0x9b8(%rsp), %rdi
cmpq %r15, %rdi
je 0x3ced7
movq 0x9c8(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x9d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x3cef4
movq 0x9e8(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0xa8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x48494(%rip), %rdx     # 0x8539b
leaq 0x98(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0xa08(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq 0x98(%rsp), %rax
cmpq %r14, %rax
je 0x3cf4a
movq %rax, 0x9f8(%rsp)
movq 0xa8(%rsp), %rax
movq %rax, 0xa08(%rsp)
jmp 0x3cf53
movupd (%r14), %xmm0
movupd %xmm0, (%rsi)
movq 0xa0(%rsp), %rax
movq %rax, 0xa00(%rsp)
movq %r14, 0x98(%rsp)
movq $0x0, 0xa0(%rsp)
movb $0x0, 0xa8(%rsp)
leaq 0x6c8(%rsp), %rdx
movq %rbx, -0x18(%rdx)
movq %rdx, -0x10(%rdx)
movq 0x9f8(%rsp), %rcx
cmpq %rsi, %rcx
je 0x3cfb6
movq %rcx, 0x6b8(%rsp)
movq 0xa08(%rsp), %rcx
movq %rcx, 0x6c8(%rsp)
jmp 0x3cfbe
movupd (%rsi), %xmm0
movupd %xmm0, (%rdx)
movq %rax, 0x6c0(%rsp)
leaq 0x9f8(%rsp), %rdi
movq %rsi, (%rdi)
leaq 0x47881(%rip), %rsi     # 0x84859
leaq 0x47884(%rip), %rdx     # 0x84863
callq 0x44728
leaq 0x30(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47870(%rip), %rsi     # 0x84864
leaq 0x478e4(%rip), %rdx     # 0x848df
leaq 0x20(%rsp), %rdi
callq 0x44728
leaq 0x1a0(%rsp), %rdi
callq 0x41174
movapd 0x1a0(%rsp), %xmm0
movapd %xmm0, 0x690(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x1a0(%rsp)
leaq 0x5c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x48357(%rip), %rdx     # 0x8539b
leaq 0x5b0(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x6b0(%rsp), %rdi
leaq 0x9f8(%rsp), %rsi
leaq 0x20(%rsp), %rdx
leaq 0x690(%rsp), %rcx
leaq 0x5b0(%rsp), %r8
callq 0x40e36
movq %rax, %rbx
leaq 0x5a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4784c(%rip), %rsi     # 0x848e0
leaq 0x4784c(%rip), %rdx     # 0x848e7
leaq 0x590(%rsp), %rdi
callq 0x44728
leaq 0x580(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4782d(%rip), %rsi     # 0x848e8
leaq 0x47865(%rip), %rdx     # 0x84927
leaq 0x570(%rsp), %rdi
callq 0x44728
leaq 0x190(%rsp), %rdi
callq 0x41174
movapd 0x190(%rsp), %xmm0
movapd %xmm0, 0x680(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x190(%rsp)
leaq 0x560(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4828d(%rip), %rdx     # 0x8539b
leaq 0x550(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x590(%rsp), %rsi
leaq 0x570(%rsp), %rdx
leaq 0x680(%rsp), %rcx
leaq 0x550(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x540(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x477cc(%rip), %rsi     # 0x84928
leaq 0x477cf(%rip), %rdx     # 0x84932
leaq 0x530(%rsp), %rdi
callq 0x44728
leaq 0x520(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x477b0(%rip), %rsi     # 0x84933
leaq 0x477f4(%rip), %rdx     # 0x8497e
leaq 0x510(%rsp), %rdi
callq 0x44728
leaq 0x180(%rsp), %rdi
callq 0x41174
movapd 0x180(%rsp), %xmm0
movapd %xmm0, 0x670(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x180(%rsp)
leaq 0x500(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x481c5(%rip), %rdx     # 0x8539b
leaq 0x4f0(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x530(%rsp), %rsi
leaq 0x510(%rsp), %rdx
leaq 0x670(%rsp), %rcx
leaq 0x4f0(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x4e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4775b(%rip), %rsi     # 0x8497f
leaq 0x4775b(%rip), %rdx     # 0x84986
leaq 0x4d0(%rsp), %rdi
callq 0x44728
leaq 0x4c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4773c(%rip), %rsi     # 0x84987
leaq 0x4775e(%rip), %rdx     # 0x849b0
leaq 0x4b0(%rsp), %rdi
callq 0x44728
leaq 0x170(%rsp), %rdi
callq 0x411c5
movapd 0x170(%rsp), %xmm0
movapd %xmm0, 0x660(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x170(%rsp)
leaq 0x4a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x480fd(%rip), %rdx     # 0x8539b
leaq 0x490(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x4d0(%rsp), %rsi
leaq 0x4b0(%rsp), %rdx
leaq 0x660(%rsp), %rcx
leaq 0x490(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x480(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x476c5(%rip), %rsi     # 0x849b1
leaq 0x476c6(%rip), %rdx     # 0x849b9
leaq 0x470(%rsp), %rdi
callq 0x44728
leaq 0x460(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x476a7(%rip), %rsi     # 0x849ba
leaq 0x476ca(%rip), %rdx     # 0x849e4
leaq 0x450(%rsp), %rdi
callq 0x44728
leaq 0x160(%rsp), %rdi
callq 0x411c5
movapd 0x160(%rsp), %xmm0
movapd %xmm0, 0x650(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x160(%rsp)
leaq 0x440(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x48035(%rip), %rdx     # 0x8539b
leaq 0x430(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x470(%rsp), %rsi
leaq 0x450(%rsp), %rdx
leaq 0x650(%rsp), %rcx
leaq 0x430(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x420(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47631(%rip), %rsi     # 0x849e5
leaq 0x47630(%rip), %rdx     # 0x849eb
leaq 0x410(%rsp), %rdi
callq 0x44728
leaq 0x400(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47611(%rip), %rsi     # 0x849ec
leaq 0x4762b(%rip), %rdx     # 0x84a0d
leaq 0x3f0(%rsp), %rdi
callq 0x44728
leaq 0x150(%rsp), %rdi
callq 0x411c5
movapd 0x150(%rsp), %xmm0
movapd %xmm0, 0x640(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x150(%rsp)
leaq 0x3e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47f6d(%rip), %rdx     # 0x8539b
leaq 0x3d0(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x410(%rsp), %rsi
leaq 0x3f0(%rsp), %rdx
leaq 0x640(%rsp), %rcx
leaq 0x3d0(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x3c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47592(%rip), %rsi     # 0x84a0e
leaq 0x47591(%rip), %rdx     # 0x84a14
leaq 0x3b0(%rsp), %rdi
callq 0x44728
leaq 0x3a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47572(%rip), %rsi     # 0x84a15
leaq 0x47596(%rip), %rdx     # 0x84a40
leaq 0x390(%rsp), %rdi
callq 0x44728
leaq 0x140(%rsp), %rdi
callq 0x411c5
movapd 0x140(%rsp), %xmm0
movapd %xmm0, 0x630(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x140(%rsp)
leaq 0x380(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47ea5(%rip), %rdx     # 0x8539b
leaq 0x370(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x3b0(%rsp), %rsi
leaq 0x390(%rsp), %rdx
leaq 0x630(%rsp), %rcx
leaq 0x370(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x360(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x474fd(%rip), %rsi     # 0x84a41
leaq 0x47500(%rip), %rdx     # 0x84a4b
leaq 0x350(%rsp), %rdi
callq 0x44728
leaq 0x340(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x474e1(%rip), %rsi     # 0x84a4c
leaq 0x4751f(%rip), %rdx     # 0x84a91
leaq 0x330(%rsp), %rdi
callq 0x44728
leaq 0x130(%rsp), %rdi
callq 0x41216
movapd 0x130(%rsp), %xmm0
movapd %xmm0, 0x620(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x130(%rsp)
leaq 0x320(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47ddd(%rip), %rdx     # 0x8539b
leaq 0x310(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x350(%rsp), %rsi
leaq 0x330(%rsp), %rdx
leaq 0x620(%rsp), %rcx
leaq 0x310(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x300(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47486(%rip), %rsi     # 0x84a92
leaq 0x47489(%rip), %rdx     # 0x84a9c
leaq 0x2f0(%rsp), %rdi
callq 0x44728
leaq 0x2e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4746a(%rip), %rsi     # 0x84a9d
leaq 0x474c2(%rip), %rdx     # 0x84afc
leaq 0x2d0(%rsp), %rdi
callq 0x44728
leaq 0x120(%rsp), %rdi
callq 0x411c5
movapd 0x120(%rsp), %xmm0
movapd %xmm0, 0x610(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x120(%rsp)
leaq 0x2c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47d15(%rip), %rdx     # 0x8539b
leaq 0x2b0(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x2f0(%rsp), %rsi
leaq 0x2d0(%rsp), %rdx
leaq 0x610(%rsp), %rcx
leaq 0x2b0(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x2a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47429(%rip), %rsi     # 0x84afd
leaq 0x4742d(%rip), %rdx     # 0x84b08
leaq 0x290(%rsp), %rdi
callq 0x44728
leaq 0x280(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4740e(%rip), %rsi     # 0x84b09
leaq 0x47429(%rip), %rdx     # 0x84b2b
leaq 0x270(%rsp), %rdi
callq 0x44728
leaq 0x110(%rsp), %rdi
callq 0x411c5
movapd 0x110(%rsp), %xmm0
movapd %xmm0, 0x600(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x110(%rsp)
leaq 0x260(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47c4d(%rip), %rdx     # 0x8539b
leaq 0x250(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x290(%rsp), %rsi
leaq 0x270(%rsp), %rdx
leaq 0x600(%rsp), %rcx
leaq 0x250(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x240(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47390(%rip), %rsi     # 0x84b2c
leaq 0x47398(%rip), %rdx     # 0x84b3b
leaq 0x230(%rsp), %rdi
callq 0x44728
leaq 0x220(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47379(%rip), %rsi     # 0x84b3c
leaq 0x473af(%rip), %rdx     # 0x84b79
leaq 0x210(%rsp), %rdi
callq 0x44728
leaq 0x100(%rsp), %rdi
callq 0x41267
movapd 0x100(%rsp), %xmm0
movapd %xmm0, 0x5f0(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x100(%rsp)
leaq 0x200(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x47b85(%rip), %rdx     # 0x8539b
leaq 0x1f0(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x230(%rsp), %rsi
leaq 0x210(%rsp), %rdx
leaq 0x5f0(%rsp), %rcx
leaq 0x1f0(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x9a8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x47316(%rip), %rsi     # 0x84b7a
leaq 0x4731c(%rip), %rdx     # 0x84b87
leaq 0x998(%rsp), %rdi
callq 0x44728
leaq 0x1e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x472fd(%rip), %rsi     # 0x84b88
leaq 0x47330(%rip), %rdx     # 0x84bc2
leaq 0x1d0(%rsp), %rdi
callq 0x44728
leaq 0xf0(%rsp), %rdi
callq 0x41267
movapd 0xf0(%rsp), %xmm0
movapd %xmm0, 0x5e0(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xf0(%rsp)
leaq 0x988(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x47abd(%rip), %rdx     # 0x8539b
leaq 0x978(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x998(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0x5e0(%rsp), %rcx
leaq 0x978(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq %rax, %rbx
leaq 0x968(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x47297(%rip), %rsi     # 0x84bc3
leaq 0x47297(%rip), %rdx     # 0x84bca
leaq 0x958(%rsp), %rdi
callq 0x44728
leaq 0x948(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x47277(%rip), %rsi     # 0x84bcb
leaq 0x4729a(%rip), %rdx     # 0x84bf5
leaq 0x938(%rsp), %rdi
callq 0x44728
leaq 0xe0(%rsp), %rdi
callq 0x41267
movapd 0xe0(%rsp), %xmm0
movapd %xmm0, 0x5d0(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xe0(%rsp)
leaq 0x928(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x479f4(%rip), %rdx     # 0x8539b
leaq 0x918(%rsp), %rdi
movq %rdx, %rsi
callq 0x44728
leaq 0x958(%rsp), %rsi
leaq 0x938(%rsp), %rdx
leaq 0x5d0(%rsp), %rcx
leaq 0x918(%rsp), %r8
movq %rbx, %rdi
callq 0x40e36
movq 0x918(%rsp), %rdi
cmpq %r13, %rdi
je 0x3d9fc
movq 0x928(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x5d8(%rsp), %rdi
testq %rdi, %rdi
leaq 0xa8(%rsp), %rbx
leaq 0x6c8(%rsp), %r13
je 0x3da1e
callq 0x41b46
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x3da30
callq 0x41b46
movq 0x938(%rsp), %rdi
cmpq %r12, %rdi
je 0x3da4d
movq 0x948(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x958(%rsp), %rdi
cmpq %rbp, %rdi
je 0x3da6a
movq 0x968(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x978(%rsp), %rdi
cmpq %r15, %rdi
je 0x3da87
movq 0x988(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x5e8(%rsp), %rdi
testq %rdi, %rdi
je 0x3da99
callq 0x41b46
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x3daab
callq 0x41b46
movq 0x1d0(%rsp), %rdi
leaq 0x1e0(%rsp), %rax
cmpq %rax, %rdi
je 0x3dad0
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x998(%rsp), %rdi
cmpq %r14, %rdi
je 0x3daed
movq 0x9a8(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0x3db12
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x5f8(%rsp), %rdi
testq %rdi, %rdi
je 0x3db24
callq 0x41b46
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x3db36
callq 0x41b46
movq 0x210(%rsp), %rdi
leaq 0x220(%rsp), %rax
cmpq %rax, %rdi
je 0x3db5b
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0x3db80
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x3dba5
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x608(%rsp), %rdi
testq %rdi, %rdi
je 0x3dbb7
callq 0x41b46
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
je 0x3dbc9
callq 0x41b46
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x3dbee
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x3dc13
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x3dc38
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x618(%rsp), %rdi
testq %rdi, %rdi
je 0x3dc4a
callq 0x41b46
movq 0x128(%rsp), %rdi
testq %rdi, %rdi
je 0x3dc5c
callq 0x41b46
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x3dc81
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x3dca6
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x3dccb
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x628(%rsp), %rdi
testq %rdi, %rdi
je 0x3dcdd
callq 0x41b46
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x3dcef
callq 0x41b46
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x3dd14
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x3dd39
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x3dd5e
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x638(%rsp), %rdi
testq %rdi, %rdi
je 0x3dd70
callq 0x41b46
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0x3dd82
callq 0x41b46
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x3dda7
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x3ddcc
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x3d0(%rsp), %rdi
leaq 0x3e0(%rsp), %rax
cmpq %rax, %rdi
je 0x3ddf1
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x648(%rsp), %rdi
testq %rdi, %rdi
je 0x3de03
callq 0x41b46
movq 0x158(%rsp), %rdi
testq %rdi, %rdi
je 0x3de15
callq 0x41b46
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x3de3a
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x410(%rsp), %rdi
leaq 0x420(%rsp), %rax
cmpq %rax, %rdi
je 0x3de5f
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0x3de84
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x658(%rsp), %rdi
testq %rdi, %rdi
je 0x3de96
callq 0x41b46
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0x3dea8
callq 0x41b46
movq 0x450(%rsp), %rdi
leaq 0x460(%rsp), %rax
cmpq %rax, %rdi
je 0x3decd
movq 0x460(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
je 0x3def2
movq 0x480(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x490(%rsp), %rdi
leaq 0x4a0(%rsp), %rax
cmpq %rax, %rdi
je 0x3df17
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x668(%rsp), %rdi
testq %rdi, %rdi
je 0x3df29
callq 0x41b46
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x3df3b
callq 0x41b46
movq 0x4b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rax
cmpq %rax, %rdi
je 0x3df60
movq 0x4c0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x4d0(%rsp), %rdi
leaq 0x4e0(%rsp), %rax
cmpq %rax, %rdi
je 0x3df85
movq 0x4e0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x4f0(%rsp), %rdi
leaq 0x500(%rsp), %rax
cmpq %rax, %rdi
je 0x3dfaa
movq 0x500(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x678(%rsp), %rdi
testq %rdi, %rdi
je 0x3dfbc
callq 0x41b46
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x3dfce
callq 0x41b46
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x3dff3
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x530(%rsp), %rdi
leaq 0x540(%rsp), %rax
cmpq %rax, %rdi
je 0x3e018
movq 0x540(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x550(%rsp), %rdi
leaq 0x560(%rsp), %rax
cmpq %rax, %rdi
je 0x3e03d
movq 0x560(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x688(%rsp), %rdi
testq %rdi, %rdi
je 0x3e04f
callq 0x41b46
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x3e061
callq 0x41b46
movq 0x570(%rsp), %rdi
leaq 0x580(%rsp), %rax
cmpq %rax, %rdi
je 0x3e086
movq 0x580(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x590(%rsp), %rdi
leaq 0x5a0(%rsp), %rax
cmpq %rax, %rdi
je 0x3e0ab
movq 0x5a0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x5b0(%rsp), %rdi
leaq 0x5c0(%rsp), %rax
cmpq %rax, %rdi
je 0x3e0d0
movq 0x5c0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x698(%rsp), %rdi
testq %rdi, %rdi
je 0x3e0e2
callq 0x41b46
movq 0x1a8(%rsp), %rdi
testq %rdi, %rdi
je 0x3e0f4
callq 0x41b46
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x3e110
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x9f8(%rsp), %rdi
leaq 0xa08(%rsp), %rax
cmpq %rax, %rdi
je 0x3e135
movq 0xa08(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x6b8(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e152
movq 0x6c8(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x98(%rsp), %rdi
cmpq %rbx, %rdi
je 0x3e16f
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0xb40(%rsp), %rcx
movq 0xb48(%rsp), %rax
movq %rcx, 0x20(%rsp)
movq %rax, 0x28(%rsp)
testq %rax, %rax
je 0x3e1a3
movq 0x66deb(%rip), %rcx     # 0xa4f80
cmpb $0x0, (%rcx)
je 0x3e19f
incl 0x8(%rax)
jmp 0x3e1a3
lock
incl 0x8(%rax)
leaq 0xb50(%rsp), %rsi
leaq 0x6b0(%rsp), %rdi
callq 0x45ad0
movzbl 0xb39(%rsp), %ecx
leaq 0x9f8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x6b0(%rsp), %rdx
leaq 0x94(%rsp), %r8
leaq 0x6a8(%rsp), %r9
callq 0x45b5a
leaq 0x6b0(%rsp), %rdi
callq 0x45c72
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x3e206
callq 0x41b46
leaq 0x6c0(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x46642(%rip), %rsi     # 0x8485b
leaq 0x46643(%rip), %rdx     # 0x84863
leaq 0x6b0(%rsp), %rdi
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412b8
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e262
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
testq %rbx, %rbx
je 0x3e2ce
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x465e2(%rip), %rsi     # 0x8485b
leaq 0x465e3(%rip), %rdx     # 0x84863
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x41352
leaq 0x50(%rsp), %rdi
movq %rax, %rsi
callq 0x3a250
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e2eb
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3e2eb
leaq 0x50(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x46918(%rip), %rcx     # 0x84bf6
movl $0xc, %r8d
xorl %esi, %esi
callq 0x3a690
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x465e5(%rip), %rsi     # 0x848e2
leaq 0x465e3(%rip), %rdx     # 0x848e7
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412b8
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e33e
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
testq %rbx, %rbx
je 0x3e3aa
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x4658d(%rip), %rsi     # 0x848e2
leaq 0x4658b(%rip), %rdx     # 0x848e7
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x41352
leaq 0x70(%rsp), %rdi
movq %rax, %rsi
callq 0x3a250
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e3c4
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3e3c4
leaq 0x70(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x46fe1(%rip), %rcx     # 0x8539b
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x3a690
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x46554(%rip), %rsi     # 0x8492a
leaq 0x46555(%rip), %rdx     # 0x84932
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412b8
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e417
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
testq %rbx, %rbx
je 0x3e486
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x464fc(%rip), %rsi     # 0x8492a
leaq 0x464fd(%rip), %rdx     # 0x84932
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x41352
leaq 0xb8(%rsp), %rdi
movq %rax, %rsi
callq 0x3a250
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e4a6
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3e4a6
leaq 0xb8(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x4676a(%rip), %rcx     # 0x84c03
movl $0x10, %r8d
xorl %esi, %esi
callq 0x3a690
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x464c9(%rip), %rsi     # 0x84981
leaq 0x464c7(%rip), %rdx     # 0x84986
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x41402
movl (%rax), %eax
movl %eax, 0x18(%rsp)
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e504
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x4649d(%rip), %rsi     # 0x849b3
leaq 0x4649c(%rip), %rdx     # 0x849b9
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x41402
movl (%rax), %eax
movl %eax, 0x14(%rsp)
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e562
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x46473(%rip), %rsi     # 0x849e7
leaq 0x46470(%rip), %rdx     # 0x849eb
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x41402
movl (%rax), %eax
movl %eax, 0x10(%rsp)
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e5c0
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x4643e(%rip), %rsi     # 0x84a10
leaq 0x4643b(%rip), %rdx     # 0x84a14
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x41402
movl (%rax), %ebp
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e61a
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x464d3(%rip), %rsi     # 0x84aff
leaq 0x464d5(%rip), %rdx     # 0x84b08
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x41402
movl (%rax), %eax
movl %eax, 0x44(%rsp)
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e678
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x4640a(%rip), %rsi     # 0x84a94
leaq 0x4640b(%rip), %rdx     # 0x84a9c
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x41402
movl (%rax), %r14d
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e6d3
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x4d045(%rip), %rsi     # 0x8b72a
leaq 0x4d046(%rip), %rdx     # 0x8b732
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412fc
movq %rax, %rdi
callq 0x414bc
movsd (%rax), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e735
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x46435(%rip), %rsi     # 0x84b7c
leaq 0x46439(%rip), %rdx     # 0x84b87
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412b8
movq %rax, 0x6a0(%rsp)
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e78d
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x46426(%rip), %rsi     # 0x84bc5
leaq 0x46424(%rip), %rdx     # 0x84bca
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412b8
movq %rax, %r12
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e7e0
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x4633c(%rip), %rsi     # 0x84b2e
leaq 0x46342(%rip), %rdx     # 0x84b3b
callq 0x44728
leaq 0x9f8(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x412b8
movq %rax, 0xd8(%rsp)
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3e838
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rcx
cmpb $0x2e, -0x1(%rax,%rcx)
jne 0x3e869
cmpl $0x1, %r14d
leaq 0x4a8d4(%rip), %rax     # 0x89128
leaq 0x46120(%rip), %rsi     # 0x8497b
cmoveq %rax, %rsi
leaq 0x50(%rsp), %rdi
callq 0x3a800
movq 0x66718(%rip), %rdi     # 0xa4f88
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x666fd(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq %rax, %rbx
leaq 0x4644a(%rip), %rsi     # 0x84cec
movl $0x1a, %edx
movq %rax, %rdi
callq 0x3a4f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x66681(%rip), %rbx     # 0xa4f88
leaq 0x463f9(%rip), %rsi     # 0x84d07
movl $0xe, %edx
movq %rbx, %rdi
callq 0x3a4f0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x6664f(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x6663b(%rip), %rdi     # 0xa4f88
leaq 0x463c2(%rip), %rsi     # 0x84d16
movl $0x18, %edx
callq 0x3a4f0
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq 0x66619(%rip), %rdi     # 0xa4f88
callq 0x3a4f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
leaq 0x469f6(%rip), %rsi     # 0x8539b
leaq 0x70(%rsp), %rdi
callq 0x3a110
testl %eax, %eax
je 0x3ea0b
movq 0x665ce(%rip), %rdi     # 0xa4f88
leaq 0x4636e(%rip), %rsi     # 0x84d2f
movl $0x18, %edx
callq 0x3a4f0
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
movq 0x665ac(%rip), %rdi     # 0xa4f88
callq 0x3a4f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
cmpl $0x2, %r14d
jb 0x3ea6f
movq 0x66570(%rip), %rdi     # 0xa4f88
leaq 0x46329(%rip), %rsi     # 0x84d48
movl $0x18, %edx
callq 0x3a4f0
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
movq 0x66548(%rip), %rdi     # 0xa4f88
callq 0x3a4f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x66512(%rip), %rdi     # 0xa4f88
leaq 0x462e4(%rip), %rsi     # 0x84d61
movl $0x18, %edx
callq 0x3a4f0
movl 0x18(%rsp), %esi
movq 0x664f6(%rip), %rdi     # 0xa4f88
callq 0x3a2f0
movq %rax, %rbx
leaq 0x46657(%rip), %rsi     # 0x850f8
movl $0x1, %edx
movq %rax, %rdi
callq 0x3a4f0
movl 0x14(%rsp), %esi
movq %rbx, %rdi
callq 0x3a2f0
movq %rax, %rbx
leaq 0x462b6(%rip), %rsi     # 0x84d7a
movl $0x2, %edx
movq %rax, %rdi
callq 0x3a4f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x66489(%rip), %rdi     # 0xa4f88
leaq 0x46277(%rip), %rsi     # 0x84d7d
movl $0x18, %edx
callq 0x3a4f0
movl %r14d, %esi
movq 0x6646e(%rip), %rdi     # 0xa4f88
callq 0x3a2f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
cmpl $0x2, %r14d
jb 0x3eba1
movq 0x66432(%rip), %rdi     # 0xa4f88
leaq 0x46239(%rip), %rsi     # 0x84d96
movl $0x18, %edx
callq 0x3a4f0
movl 0x44(%rsp), %esi
movq 0x66416(%rip), %rdi     # 0xa4f88
callq 0x3a2f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x663e0(%rip), %rdi     # 0xa4f88
leaq 0x46200(%rip), %rsi     # 0x84daf
movl $0x18, %edx
callq 0x3a4f0
movl 0x10(%rsp), %esi
movq 0x663c4(%rip), %rdi     # 0xa4f88
callq 0x3a2f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x6638e(%rip), %rdi     # 0xa4f88
leaq 0x461c7(%rip), %rsi     # 0x84dc8
movl $0x18, %edx
callq 0x3a4f0
movl %ebp, %r15d
movq 0x66373(%rip), %rdi     # 0xa4f88
movq %r15, %rsi
callq 0x3a2f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x6633a(%rip), %rdi     # 0xa4f88
leaq 0x4618c(%rip), %rsi     # 0x84de1
movl $0x18, %edx
callq 0x3a4f0
movq 0x66322(%rip), %rdi     # 0xa4f88
movsd 0x48(%rsp), %xmm0
callq 0x3a6d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x662e6(%rip), %rdi     # 0xa4f88
leaq 0x46151(%rip), %rsi     # 0x84dfa
movl $0x18, %edx
callq 0x3a4f0
xorl %edx, %edx
testq %r12, %r12
setne %dl
leaq 0x46151(%rip), %rbp     # 0x84e13
leaq 0x4614e(%rip), %r13     # 0x84e17
movq %r13, %rsi
cmovneq %rbp, %rsi
orq $0x2, %rdx
movq 0x662ad(%rip), %rbx     # 0xa4f88
movq %rbx, %rdi
callq 0x3a4f0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x66287(%rip), %rbx     # 0xa4f88
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
cmpl $0x2, %r14d
jb 0x3ed83
movq 0x6626a(%rip), %rdi     # 0xa4f88
leaq 0x460f5(%rip), %rsi     # 0x84e1a
movl $0x18, %edx
callq 0x3a4f0
xorl %edx, %edx
cmpq $0x0, 0xd8(%rsp)
setne %dl
cmovneq %rbp, %r13
orq $0x2, %rdx
movq 0x6623c(%rip), %rbp     # 0xa4f88
movq %rbp, %rdi
movq %r13, %rsi
callq 0x3a4f0
movq (%rbp), %rax
addq -0x18(%rax), %rbp
movq %rbp, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x66212(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
cmpq $0x0, 0x78(%rsp)
je 0x3ef24
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x661db(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq %rax, %r13
leaq 0x460d8(%rip), %rsi     # 0x84e9c
movl $0xf, %edx
movq %rax, %rdi
callq 0x3a4f0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %r13, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
leaq 0x6b0(%rsp), %rdi
leaq 0x70(%rsp), %rsi
movl $0x8, %edx
callq 0x3a6e0
leaq 0x728(%rsp), %rdi
callq 0x3a0e0
testb %al, %al
je 0x3f96e
leaq 0x20(%rsp), %r13
movb $0x0, (%r13)
movq $0x0, 0x8(%r13)
movq %r13, %rdi
callq 0x48a06
movq %r13, %rdi
callq 0x48a06
leaq 0x6b0(%rsp), %rdi
movq %r13, %rsi
callq 0x4156b
leaq 0x6b0(%rsp), %rdi
callq 0x3a0d0
cmpb $0x1, 0x20(%rsp)
jne 0x3f9c4
leaq 0x46072(%rip), %rsi     # 0x84ee8
leaq 0x20(%rsp), %rdi
callq 0x416d6
cmpb $0x0, (%rax)
je 0x3f140
movq 0x660f8(%rip), %r13     # 0xa4f88
leaq 0x46057(%rip), %rsi     # 0x84eee
movl $0x12, %edx
movq %r13, %rdi
callq 0x3a4f0
movq (%r13), %rax
addq -0x18(%rax), %r13
movq %r13, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x660c5(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
leaq 0x46011(%rip), %rsi     # 0x84ee8
leaq 0x20(%rsp), %rdi
callq 0x416d6
leaq 0x1c0(%rsp), %rdi
movq %rax, %rsi
callq 0x41894
leaq 0x1c0(%rsp), %rdi
callq 0x7b41e
movq %rax, %rbp
leaq 0x1c0(%rsp), %rdi
callq 0x48a06
leaq 0x1c8(%rsp), %rdi
movzbl -0x8(%rdi), %esi
callq 0x48aa8
jmp 0x3f18f
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x66050(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq %rax, %r13
leaq 0x45ee4(%rip), %rsi     # 0x84e33
movl $0x19, %edx
movq %rax, %rdi
callq 0x3a4f0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %r13, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x65ffd(%rip), %r13     # 0xa4f88
leaq 0x45ebb(%rip), %rsi     # 0x84e4d
movl $0x15, %edx
movq %r13, %rdi
callq 0x3a4f0
movq (%r13), %rax
addq -0x18(%rax), %r13
movq %r13, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65fca(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
callq 0x3ca1c
movq %rax, %rbp
movq 0x65fae(%rip), %rdi     # 0xa4f88
leaq 0x45e82(%rip), %rsi     # 0x84e63
movl $0x11, %edx
callq 0x3a4f0
movq %rbp, %rdi
callq 0x7af34
movq 0x65f8e(%rip), %rdi     # 0xa4f88
movq %rax, %rsi
callq 0x3a2f0
movq %rax, %r13
leaq 0x45e69(%rip), %rsi     # 0x84e75
movl $0x8, %edx
movq %rax, %rdi
callq 0x3a4f0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %r13, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x65f40(%rip), %r13     # 0xa4f88
leaq 0x45e2f(%rip), %rsi     # 0x84e7e
movl $0x16, %edx
movq %r13, %rdi
callq 0x3a4f0
movq (%r13), %rax
addq -0x18(%rax), %r13
movq %r13, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65f0d(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
xorl %ecx, %ecx
testq %r12, %r12
setne %cl
cvtsi2sd %r15, %xmm0
movsd 0x48(%rsp), %xmm1
movl 0x18(%rsp), %edi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x3cd19
movq %rax, %r13
movq 0x65ed2(%rip), %r15     # 0xa4f88
leaq 0x45dd8(%rip), %rsi     # 0x84e95
movl $0x6, %edx
movq %r15, %rdi
callq 0x3a4f0
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65ea0(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x65e8c(%rip), %r15     # 0xa4f88
leaq 0x45d94(%rip), %rsi     # 0x84e97
movl $0x4, %edx
movq %r15, %rdi
callq 0x3a4f0
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65e5a(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
jmp 0x3f491
movq 0x65e41(%rip), %r13     # 0xa4f88
leaq 0x45cff(%rip), %rsi     # 0x84e4d
movl $0x15, %edx
movq %r13, %rdi
callq 0x3a4f0
movq (%r13), %rax
addq -0x18(%rax), %r13
movq %r13, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65e0e(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
callq 0x3ca1c
movq %rax, %rbp
movq 0x65df2(%rip), %rdi     # 0xa4f88
leaq 0x45cc6(%rip), %rsi     # 0x84e63
movl $0x11, %edx
callq 0x3a4f0
movq %rbp, %rdi
callq 0x7af34
movq 0x65dd2(%rip), %rdi     # 0xa4f88
movq %rax, %rsi
callq 0x3a2f0
movq %rax, %r13
leaq 0x45cad(%rip), %rsi     # 0x84e75
movl $0x8, %edx
movq %rax, %rdi
callq 0x3a4f0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %r13, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
leaq 0x45cfd(%rip), %rsi     # 0x84f01
leaq 0x20(%rsp), %rdi
callq 0x416d6
cmpb $0x0, (%rax)
je 0x3f3b2
movq 0x65d6a(%rip), %r13     # 0xa4f88
leaq 0x45ce3(%rip), %rsi     # 0x84f08
movl $0x13, %edx
movq %r13, %rdi
callq 0x3a4f0
movq (%r13), %rax
addq -0x18(%rax), %r13
movq %r13, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65d37(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
leaq 0x45c9c(%rip), %rsi     # 0x84f01
leaq 0x20(%rsp), %rdi
callq 0x416d6
leaq 0x1b0(%rsp), %rdi
movq %rax, %rsi
callq 0x41894
leaq 0x1b0(%rsp), %rdi
callq 0x7a32e
movq %rax, %r13
leaq 0x1b0(%rsp), %rdi
callq 0x48a06
leaq 0x1b8(%rsp), %rdi
movzbl -0x8(%rdi), %esi
callq 0x48aa8
testq %r12, %r12
movl 0x18(%rsp), %eax
movl %eax, 0x8(%r13)
movl 0x14(%rsp), %eax
movl %eax, 0xc(%r13)
movl 0x10(%rsp), %eax
movl %eax, 0x10(%r13)
setne 0x14(%r13)
movq %r13, %rdi
callq 0x79a6a
movsd 0x80(%r13), %xmm0
cvtsi2sd %r15, %xmm1
ucomisd %xmm1, %xmm0
jne 0x3f2eb
jnp 0x3f342
movq 0x65c96(%rip), %rdi     # 0xa4f88
leaq 0x45c23(%rip), %rsi     # 0x84f1c
movl $0x28, %edx
callq 0x3a4f0
movsd 0x80(%r13), %xmm0
movq 0x65c75(%rip), %rdi     # 0xa4f88
callq 0x3a6d0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %r15, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movsd 0x88(%r13), %xmm0
ucomisd 0x48(%rsp), %xmm0
jne 0x3f359
jnp 0x3f3d9
movq 0x65c28(%rip), %rdi     # 0xa4f88
leaq 0x45bde(%rip), %rsi     # 0x84f45
movl $0x23, %edx
callq 0x3a4f0
movsd 0x88(%r13), %xmm0
movq 0x65c07(%rip), %rdi     # 0xa4f88
callq 0x3a6d0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %r15, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
jmp 0x3f3d9
xorl %ecx, %ecx
testq %r12, %r12
setne %cl
cvtsi2sd %r15, %xmm0
movsd 0x48(%rsp), %xmm1
movl 0x18(%rsp), %edi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x3cd19
movq %rax, %r13
movq 0x65ba8(%rip), %r15     # 0xa4f88
leaq 0x45aae(%rip), %rsi     # 0x84e95
movl $0x6, %edx
movq %r15, %rdi
callq 0x3a4f0
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65b76(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq 0x65b62(%rip), %r15     # 0xa4f88
leaq 0x45a6a(%rip), %rsi     # 0x84e97
movl $0x4, %edx
movq %r15, %rdi
callq 0x3a4f0
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65b30(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
leaq 0x28(%rsp), %r15
leaq 0x20(%rsp), %r12
movq %r12, %rdi
callq 0x48a06
movzbl (%r12), %esi
movq %r15, %rdi
callq 0x48aa8
leaq 0x6b0(%rsp), %rdi
callq 0x3a0f0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65ad9(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq %rax, %rbx
leaq 0x45aa3(%rip), %rsi     # 0x84f69
movl $0xc, %edx
movq %rax, %rdi
callq 0x3a4f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
xorl %ecx, %ecx
cmpq $0x0, 0x6a0(%rsp)
setne %cl
leaq 0x20(%rsp), %rdi
movl $0x10, %esi
movl $0x3e8, %edx            # imm = 0x3E8
callq 0x61d44
callq 0x3a080
movq %rax, %rbx
cmpl $0x1, %r14d
jne 0x3f5fe
leaq 0x6b0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
movq %rbp, %rdx
movq %r13, %rcx
callq 0x61d4e
callq 0x3a080
movq %rax, %r14
movq 0x65a33(%rip), %r15     # 0xa4f88
leaq 0x45a1a(%rip), %rsi     # 0x84f76
movl $0x11, %edx
movq %r15, %rdi
callq 0x3a4f0
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65a01(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
leaq 0x908(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8f8(%rsp), %rdi
callq 0x48976
leaq 0x6b0(%rsp), %rdi
leaq 0x8f8(%rsp), %rsi
callq 0x645ce
movq 0x8f8(%rsp), %rdi
cmpq %r15, %rdi
je 0x3f5ec
movq 0x908(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
callq 0x63f0c
jmp 0x3f76b
movq %r13, %rax
movq %rbx, %r13
movq %rbp, %rbx
movl %r14d, %ebp
movl 0x8(%rax), %r15d
movq %rax, 0x18(%rsp)
movl 0xc(%rax), %r12d
leaq 0x8e8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8d8(%rsp), %rdi
callq 0x48976
xorl %eax, %eax
cmpq $0x0, 0xd8(%rsp)
setne %al
movl %eax, (%rsp)
leaq 0x6b0(%rsp), %rdi
leaq 0x8d8(%rsp), %r9
movl %r15d, %esi
movl %r12d, %edx
movl %ebp, %ecx
movl 0x44(%rsp), %r8d
callq 0x626c0
movq 0x8d8(%rsp), %rdi
cmpq %r14, %rdi
movq %rbx, %rbp
je 0x3f696
movq 0x8e8(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x20(%rsp), %rdi
leaq 0x6b0(%rsp), %rcx
movq %rbp, %rsi
movq 0x18(%rsp), %rdx
callq 0x61e96
movq %r13, %rbx
callq 0x3a080
movq %rax, %r14
movq 0x658c6(%rip), %r15     # 0xa4f88
leaq 0x458bf(%rip), %rsi     # 0x84f88
movl $0x10, %edx
movq %r15, %rdi
callq 0x3a4f0
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65894(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
leaq 0x8c8(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8b8(%rsp), %rdi
callq 0x48976
leaq 0x6b0(%rsp), %rdi
leaq 0x8b8(%rsp), %rsi
callq 0x62f40
movq 0x8b8(%rsp), %rdi
cmpq %r15, %rdi
movq 0x18(%rsp), %r13
je 0x3f75e
movq 0x8c8(%rsp), %rsi
incq %rsi
callq 0x3a470
leaq 0x6b0(%rsp), %rdi
callq 0x62b7c
movq 0x65816(%rip), %rdi     # 0xa4f88
leaq 0x45820(%rip), %rsi     # 0x84f99
movl $0x15, %edx
callq 0x3a4f0
subq %rbx, %r14
movabsq $0x431bde82d7b634db, %rcx # imm = 0x431BDE82D7B634DB
movq %r14, %rax
imulq %rcx
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x12, %rdx
addq %rax, %rdx
cvtsi2sd %rdx, %xmm0
divsd 0x448b7(%rip), %xmm0    # 0x84068
movq 0x657d0(%rip), %rbx     # 0xa4f88
movq %rbx, %rdi
callq 0x3a6d0
movq %rax, %r14
leaq 0x457e5(%rip), %rsi     # 0x84faf
movl $0x8, %edx
movq %rax, %rdi
callq 0x3a4f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %r14, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq (%rbp), %rax
movq %rbp, %rdi
callq *0x8(%rax)
movq (%r13), %rax
movq %r13, %rdi
callq *0x8(%rax)
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq 0x65758(%rip), %rdi     # 0xa4f88
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq %rax, %rbx
leaq 0x45771(%rip), %rsi     # 0x84fb8
movl $0x5, %edx
movq %rax, %rdi
callq 0x3a4f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3a430
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3a050
movq %rax, %rdi
callq 0x3a300
leaq 0xaa0(%rsp), %rdi
callq 0x46b24
leaq 0xa60(%rsp), %rdi
callq 0x48518
leaq 0xa28(%rsp), %rdi
callq 0x485b6
leaq 0xa08(%rsp), %rbx
movq %rbx, %rdi
callq 0x45c72
movq -0x8(%rbx), %rdi
testq %rdi, %rdi
je 0x3f8ea
callq 0x41b46
leaq 0xab8(%rsp), %rdi
callq 0x41972
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x3f91c
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x3f93e
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x3f95a
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x3a470
xorl %eax, %eax
addq $0xbd8, %rsp            # imm = 0xBD8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x6566b(%rip), %rdi     # 0xa4fe0
leaq 0x45530(%rip), %rsi     # 0x84eac
movl $0x15, %edx
callq 0x3a4f0
callq 0x3a070
movl (%rax), %esi
leaq 0x20(%rsp), %rdi
callq 0x81138
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x65638(%rip), %rdi     # 0xa4fe0
callq 0x3a4f0
movq %rax, %rdi
callq 0x3a200
leaq 0x20(%rsp), %rdi
callq 0x3a858
jmp 0x3fb3e
movq 0x65615(%rip), %rdi     # 0xa4fe0
leaq 0x454f0(%rip), %rsi     # 0x84ec2
movl $0xe, %edx
callq 0x3a4f0
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
movq 0x655f3(%rip), %rdi     # 0xa4fe0
callq 0x3a4f0
movq %rax, %rbx
leaq 0x454d5(%rip), %rsi     # 0x84ed1
movl $0x16, %edx
movq %rax, %rdi
callq 0x3a4f0
movq %rbx, %rdi
callq 0x3a200
jmp 0x3fb3e
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x40a8f
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x40a8f
jmp 0x3fa40
movq %rax, %rbx
jmp 0x40a8f
movq %rax, %rbx
leaq 0x1b0(%rsp), %rdi
callq 0x4191c
jmp 0x40a85
movq %rdx, %r14
movq %rax, %rbx
leaq 0x1c0(%rsp), %rdi
callq 0x4191c
jmp 0x3fb0c
movq %rax, %rbx
movq 0x8b8(%rsp), %rdi
cmpq %r15, %rdi
je 0x40a71
movq 0x8c8(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x40a71
movq %rax, %rbx
movq 0x8f8(%rsp), %rdi
cmpq %r15, %rdi
je 0x40a5f
movq 0x908(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x40a5f
movq %rax, %rbx
movq 0x8d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x40aa3
movq 0x8e8(%rsp), %rsi
jmp 0x405bb
jmp 0x40aa0
jmp 0x40aa0
jmp 0x40aa0
jmp 0x40aa0
jmp 0x40aa0
jmp 0x40aa0
movq %rdx, %r14
movq %rax, %rbx
cmpl $0x3, %r14d
jne 0x40a85
movq %rbx, %rdi
callq 0x3a1c0
movq (%rax), %rcx
movq %rax, %rdi
callq *0x10(%rcx)
movq 0x654b2(%rip), %rdi     # 0xa4fe0
movq %rax, %rsi
callq 0x3a440
movq %rax, %rdi
callq 0x3a200
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3a550
movq %rax, %rbx
callq 0x3a710
jmp 0x40a85
jmp 0x40aa0
jmp 0x4059f
jmp 0x40aa0
jmp 0x4059f
jmp 0x40aa0
jmp 0x4059f
jmp 0x40aa0
movq %rdx, %r15
movq %rax, %rbx
jmp 0x405eb
movq %rdx, %r14
movq %rax, %rbx
jmp 0x40698
movq %rdx, %r14
movq %rax, %rbx
jmp 0x4073d
movq %rdx, %r14
movq %rax, %rbx
jmp 0x407e4
movq %rdx, %r14
movq %rax, %rbx
jmp 0x40888
movq %rdx, %r14
movq %rax, %rbx
jmp 0x4092f
movq %rdx, %r14
movq %rax, %rbx
jmp 0x409d6
jmp 0x4059f
jmp 0x40aa0
jmp 0x4059f
jmp 0x40aa0
jmp 0x4059f
jmp 0x40aa0
movq %rax, %rbx
leaq 0x6b0(%rsp), %rdi
callq 0x45c72
jmp 0x3fbf8
movq %rax, %rbx
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x40ab0
callq 0x41b46
jmp 0x40ab0
movq %rax, %rbx
movq 0x918(%rsp), %rdi
cmpq %r13, %rdi
je 0x3fc35
movq 0x928(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3fc35
movq %rax, %rbx
movq 0x5d8(%rsp), %rdi
testq %rdi, %rdi
je 0x3fc47
callq 0x41b46
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x3fc5e
callq 0x41b46
jmp 0x3fc5e
movq %rax, %rbx
movq 0x938(%rsp), %rdi
cmpq %r12, %rdi
je 0x3fc80
movq 0x948(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3fc80
movq %rax, %rbx
movq 0x958(%rsp), %rdi
cmpq %rbp, %rdi
je 0x3fca4
movq 0x968(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3fca4
jmp 0x3fca1
movq %rax, %rbx
movq 0x978(%rsp), %rdi
cmpq %r15, %rdi
je 0x3fcc6
movq 0x988(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3fcc6
movq %rax, %rbx
movq 0x5e8(%rsp), %rdi
testq %rdi, %rdi
je 0x3fcd8
callq 0x41b46
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x3fcef
callq 0x41b46
jmp 0x3fcef
movq %rax, %rbx
movq 0x1d0(%rsp), %rdi
leaq 0x1e0(%rsp), %rax
cmpq %rax, %rdi
je 0x3fd19
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3fd19
movq %rax, %rbx
movq 0x998(%rsp), %rdi
cmpq %r14, %rdi
je 0x3fd3d
movq 0x9a8(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3fd3d
jmp 0x3fd3a
movq %rax, %rbx
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0x3fd62
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x5f8(%rsp), %rdi
testq %rdi, %rdi
je 0x3fd74
callq 0x41b46
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x3fd86
callq 0x41b46
movq 0x210(%rsp), %rdi
leaq 0x220(%rsp), %rax
cmpq %rax, %rdi
je 0x3fdab
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0x3fde6
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x3fde6
movq %rax, %rbx
jmp 0x3fd62
movq %rax, %rbx
jmp 0x3fd86
movq %rax, %rbx
jmp 0x3fdab
jmp 0x3fde3
movq %rax, %rbx
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x3fe0b
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x608(%rsp), %rdi
testq %rdi, %rdi
je 0x3fe1d
callq 0x41b46
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
je 0x3fe2f
callq 0x41b46
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x3fe54
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x3fe79
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x3fe9e
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x618(%rsp), %rdi
testq %rdi, %rdi
je 0x3feb0
callq 0x41b46
movq 0x128(%rsp), %rdi
testq %rdi, %rdi
je 0x3fec2
callq 0x41b46
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x3fee7
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x3ff0c
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x3ff31
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x628(%rsp), %rdi
testq %rdi, %rdi
je 0x3ff43
callq 0x41b46
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x3ff55
callq 0x41b46
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x3ff7a
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x3ff9f
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x3ffc4
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x638(%rsp), %rdi
testq %rdi, %rdi
je 0x3ffd6
callq 0x41b46
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0x3ffe8
callq 0x41b46
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4000d
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x40032
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x3d0(%rsp), %rdi
leaq 0x3e0(%rsp), %rax
cmpq %rax, %rdi
je 0x40057
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x648(%rsp), %rdi
testq %rdi, %rdi
je 0x40069
callq 0x41b46
movq 0x158(%rsp), %rdi
testq %rdi, %rdi
je 0x4007b
callq 0x41b46
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x400a0
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x410(%rsp), %rdi
leaq 0x420(%rsp), %rax
cmpq %rax, %rdi
je 0x400c5
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0x400ea
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x658(%rsp), %rdi
testq %rdi, %rdi
je 0x400fc
callq 0x41b46
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0x4010e
callq 0x41b46
movq 0x450(%rsp), %rdi
leaq 0x460(%rsp), %rax
cmpq %rax, %rdi
je 0x40133
movq 0x460(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
je 0x40158
movq 0x480(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x490(%rsp), %rdi
leaq 0x4a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4017d
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x668(%rsp), %rdi
testq %rdi, %rdi
je 0x4018f
callq 0x41b46
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x401a1
callq 0x41b46
movq 0x4b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rax
cmpq %rax, %rdi
je 0x401c6
movq 0x4c0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x4d0(%rsp), %rdi
leaq 0x4e0(%rsp), %rax
cmpq %rax, %rdi
je 0x401eb
movq 0x4e0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x4f0(%rsp), %rdi
leaq 0x500(%rsp), %rax
cmpq %rax, %rdi
je 0x40210
movq 0x500(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x678(%rsp), %rdi
testq %rdi, %rdi
je 0x40222
callq 0x41b46
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x40234
callq 0x41b46
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x40259
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x530(%rsp), %rdi
leaq 0x540(%rsp), %rax
cmpq %rax, %rdi
je 0x4027e
movq 0x540(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x550(%rsp), %rdi
leaq 0x560(%rsp), %rax
cmpq %rax, %rdi
je 0x402a3
movq 0x560(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x688(%rsp), %rdi
testq %rdi, %rdi
je 0x402b5
callq 0x41b46
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x402c7
callq 0x41b46
movq 0x570(%rsp), %rdi
leaq 0x580(%rsp), %rax
cmpq %rax, %rdi
je 0x402ec
movq 0x580(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x590(%rsp), %rdi
leaq 0x5a0(%rsp), %rax
cmpq %rax, %rdi
je 0x40311
movq 0x5a0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x5b0(%rsp), %rdi
leaq 0x5c0(%rsp), %rax
cmpq %rax, %rdi
je 0x40336
movq 0x5c0(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x698(%rsp), %rdi
testq %rdi, %rdi
je 0x40348
callq 0x41b46
movq 0x1a8(%rsp), %rdi
testq %rdi, %rdi
je 0x4035a
callq 0x41b46
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x40376
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x9f8(%rsp), %rdi
leaq 0xa08(%rsp), %rax
cmpq %rax, %rdi
je 0x4039b
movq 0xa08(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x6b8(%rsp), %rdi
leaq 0x6c8(%rsp), %rax
cmpq %rax, %rdi
je 0x403c0
movq 0x6c8(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x40ab0
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x40ab0
movq %rax, %rbx
jmp 0x3fe0b
movq %rax, %rbx
jmp 0x3fe2f
movq %rax, %rbx
jmp 0x3fe54
jmp 0x40408
movq %rax, %rbx
jmp 0x3fe79
movq %rax, %rbx
jmp 0x3fe9e
movq %rax, %rbx
jmp 0x3fec2
movq %rax, %rbx
jmp 0x3fee7
jmp 0x4042a
movq %rax, %rbx
jmp 0x3ff0c
movq %rax, %rbx
jmp 0x3ff31
movq %rax, %rbx
jmp 0x3ff55
movq %rax, %rbx
jmp 0x3ff7a
jmp 0x4044c
movq %rax, %rbx
jmp 0x3ff9f
movq %rax, %rbx
jmp 0x3ffc4
movq %rax, %rbx
jmp 0x3ffe8
movq %rax, %rbx
jmp 0x4000d
jmp 0x4046e
movq %rax, %rbx
jmp 0x40032
movq %rax, %rbx
jmp 0x40057
movq %rax, %rbx
jmp 0x4007b
movq %rax, %rbx
jmp 0x400a0
jmp 0x40490
movq %rax, %rbx
jmp 0x400c5
movq %rax, %rbx
jmp 0x400ea
movq %rax, %rbx
jmp 0x4010e
movq %rax, %rbx
jmp 0x40133
jmp 0x404b2
movq %rax, %rbx
jmp 0x40158
movq %rax, %rbx
jmp 0x4017d
movq %rax, %rbx
jmp 0x401a1
movq %rax, %rbx
jmp 0x401c6
jmp 0x404d4
movq %rax, %rbx
jmp 0x401eb
movq %rax, %rbx
jmp 0x40210
movq %rax, %rbx
jmp 0x40234
movq %rax, %rbx
jmp 0x40259
jmp 0x404f6
movq %rax, %rbx
jmp 0x4027e
movq %rax, %rbx
jmp 0x402a3
movq %rax, %rbx
jmp 0x402c7
movq %rax, %rbx
jmp 0x402ec
jmp 0x40518
movq %rax, %rbx
jmp 0x40311
movq %rax, %rbx
jmp 0x40336
movq %rax, %rbx
jmp 0x4035a
movq %rax, %rbx
jmp 0x40376
movq %rax, %rbx
jmp 0x4039b
movq %rax, %rbx
jmp 0x40ab0
movq %rax, %rbx
movq 0x9b8(%rsp), %rdi
cmpq %r15, %rdi
je 0x4056d
movq 0x9c8(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x4056d
movq %rax, %rbx
movq 0x9d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x40abd
movq 0x9e8(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x40abd
movq %rax, %rbx
jmp 0x40abd
jmp 0x4059f
jmp 0x4059f
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x40aa3
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
jmp 0x40aa3
movq %rdx, %r15
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x405eb
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
cmpl $0x2, %r15d
jne 0x40611
movq %rbx, %rdi
callq 0x3a1c0
callq 0x3a710
movsd 0x43a0a(%rip), %xmm0    # 0x84010
movsd %xmm0, 0x48(%rsp)
jmp 0x3e735
cmpl $0x1, %r15d
jne 0x40aa3
movq %rbx, %rdi
callq 0x3a1c0
movq %rax, %rbx
movq 0x649b3(%rip), %rdi     # 0xa4fe0
leaq 0x4469d(%rip), %rsi     # 0x84cd1
movl $0x1a, %edx
callq 0x3a4f0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x64992(%rip), %rdi     # 0xa4fe0
movq %rax, %rsi
callq 0x3a440
movq %rax, %rdi
callq 0x3a200
jmp 0x3fb3e
movq %rax, %rbx
callq 0x3a710
jmp 0x40aa3
jmp 0x40aa0
movq %rdx, %r14
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x40698
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
cmpl $0x2, %r14d
jne 0x406b6
movq %rbx, %rdi
callq 0x3a1c0
movl $0x1, %r14d
callq 0x3a710
jmp 0x3e6d3
cmpl $0x1, %r14d
jne 0x40aa3
movq %rbx, %rdi
callq 0x3a1c0
movq %rax, %rbx
movq 0x6490e(%rip), %rdi     # 0xa4fe0
leaq 0x445d5(%rip), %rsi     # 0x84cae
movl $0x22, %edx
callq 0x3a4f0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x648ed(%rip), %rdi     # 0xa4fe0
movq %rax, %rsi
callq 0x3a440
movq %rax, %rdi
callq 0x3a200
jmp 0x3fb3e
movq %rax, %rbx
callq 0x3a710
jmp 0x40aa3
jmp 0x40aa0
movq %rdx, %r14
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x4073d
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
cmpl $0x2, %r14d
jne 0x4075d
movq %rbx, %rdi
callq 0x3a1c0
movl $0x1e, 0x44(%rsp)
callq 0x3a710
jmp 0x3e678
cmpl $0x1, %r14d
jne 0x40aa3
movq %rbx, %rdi
callq 0x3a1c0
movq %rax, %rbx
movq 0x64867(%rip), %rdi     # 0xa4fe0
leaq 0x44512(%rip), %rsi     # 0x84c92
movl $0x1b, %edx
callq 0x3a4f0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x64846(%rip), %rdi     # 0xa4fe0
movq %rax, %rsi
callq 0x3a440
movq %rax, %rdi
callq 0x3a200
jmp 0x3fb3e
movq %rax, %rbx
callq 0x3a710
jmp 0x40aa3
jmp 0x40aa0
movq %rdx, %r14
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x407e4
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
cmpl $0x2, %r14d
jne 0x40801
movq %rbx, %rdi
callq 0x3a1c0
movl $0x5a, %ebp
callq 0x3a710
jmp 0x3e61a
cmpl $0x1, %r14d
jne 0x40aa3
movq %rbx, %rdi
callq 0x3a1c0
movq %rax, %rbx
movq 0x647c3(%rip), %rdi     # 0xa4fe0
leaq 0x4444e(%rip), %rsi     # 0x84c72
movl $0x1f, %edx
callq 0x3a4f0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x647a2(%rip), %rdi     # 0xa4fe0
movq %rax, %rsi
callq 0x3a440
movq %rax, %rdi
callq 0x3a200
jmp 0x3fb3e
movq %rax, %rbx
callq 0x3a710
jmp 0x40aa3
jmp 0x40aa0
movq %rdx, %r14
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x40888
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
cmpl $0x2, %r14d
jne 0x408a8
movq %rbx, %rdi
callq 0x3a1c0
movl $0x1f4, 0x10(%rsp)      # imm = 0x1F4
callq 0x3a710
jmp 0x3e5c0
cmpl $0x1, %r14d
jne 0x40aa3
movq %rbx, %rdi
callq 0x3a1c0
movq %rax, %rbx
movq 0x6471c(%rip), %rdi     # 0xa4fe0
leaq 0x44386(%rip), %rsi     # 0x84c51
movl $0x20, %edx
callq 0x3a4f0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x646fb(%rip), %rdi     # 0xa4fe0
movq %rax, %rsi
callq 0x3a440
movq %rax, %rdi
callq 0x3a200
jmp 0x3fb3e
movq %rax, %rbx
callq 0x3a710
jmp 0x40aa3
jmp 0x40aa0
movq %rdx, %r14
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x4092f
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
cmpl $0x2, %r14d
jne 0x4094f
movq %rbx, %rdi
callq 0x3a1c0
movl $0x1f4, 0x14(%rsp)      # imm = 0x1F4
callq 0x3a710
jmp 0x3e562
cmpl $0x1, %r14d
jne 0x40aa3
movq %rbx, %rdi
callq 0x3a1c0
movq %rax, %rbx
movq 0x64675(%rip), %rdi     # 0xa4fe0
leaq 0x442c0(%rip), %rsi     # 0x84c32
movl $0x1e, %edx
callq 0x3a4f0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x64654(%rip), %rdi     # 0xa4fe0
movq %rax, %rsi
callq 0x3a440
movq %rax, %rdi
callq 0x3a200
jmp 0x3fb3e
movq %rax, %rbx
callq 0x3a710
jmp 0x40aa3
jmp 0x40aa0
movq %rdx, %r14
movq %rax, %rbx
movq 0x6b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x409d6
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3a470
cmpl $0x2, %r14d
jne 0x409f6
movq %rbx, %rdi
callq 0x3a1c0
movl $0x3e8, 0x18(%rsp)      # imm = 0x3E8
callq 0x3a710
jmp 0x3e504
cmpl $0x1, %r14d
jne 0x40aa3
movq %rbx, %rdi
callq 0x3a1c0
movq %rax, %rbx
movq 0x645ce(%rip), %rdi     # 0xa4fe0
leaq 0x441fb(%rip), %rsi     # 0x84c14
movl $0x1d, %edx
callq 0x3a4f0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x645ad(%rip), %rdi     # 0xa4fe0
movq %rax, %rsi
callq 0x3a440
movq %rax, %rdi
callq 0x3a200
jmp 0x3fb3e
movq %rax, %rbx
callq 0x3a710
jmp 0x40aa3
jmp 0x40aa0
movq %rax, %rdi
callq 0x414b1
movq %rax, %rbx
leaq 0x6b0(%rsp), %rdi
callq 0x63f0c
jmp 0x40aa3
movq %rax, %rbx
leaq 0x6b0(%rsp), %rdi
callq 0x62b7c
jmp 0x40aa3
jmp 0x40aa0
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x4191c
leaq 0x6b0(%rsp), %rdi
callq 0x3a0f0
jmp 0x40aa3
jmp 0x40aa0
movq %rax, %rbx
leaq 0x9f8(%rsp), %rdi
callq 0x41936
leaq 0xab8(%rsp), %rdi
callq 0x41972
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x40ae2
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x40b04
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x3a470
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x40b20
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x3a470
movq %rbx, %rdi
callq 0x3a780