// File: logicx24[P]RayTracer/raytracer.cpp
// Function: parseSceneFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, float, int, int)
Scene* parseSceneFile(string fileName, float eps, int width, int height) {
    float sp;
    vec3 eye, ll, lr, ul, ur, ka, kd, ks, kr;

    mat4 currTrans = identity3D();

    Film film = Film(width, height);
    Camera pcam;
    Scene *scene;

    Material curMat;
    vector<Polygon*> sceneObjects;
    vector<Light*> sceneLights;
    vector<vec3> vertices;
    vector<mat4> transforms;
    transforms.push_back(identity3D());

    int index = 0;
    string argument;
    string curline;
    ifstream myfile (fileName);
    if (myfile.is_open()){
        while (getline (myfile, curline)) {
            istringstream iss;
            iss.str(curline);
            iss >> argument;

            if (curline.empty()){
                continue;
            } else if (argumentMatches(argument, "cam")) {
                float args[15];
                parseArgs(args, &iss, 15, "Incorrect number of arguments for camera");
                eye = vec3(args[0], args[1], args[2]);
                ll = vec3(args[3], args[4], args[5]);
                lr = vec3(args[6], args[7], args[8]);
                ul = vec3(args[9], args[10], args[11]);
                ur = vec3(args[12], args[13], args[14]);

                pcam = Camera(eye, ul, ur, ll, lr, width, height);
                scene = new Scene(pcam, film, eps, width, height);

            } else if (argumentMatches(argument, "mat")) {
                float args[13];
                parseArgs(args, &iss, 13, "Incorrect number of arguments for material.");
                ka = vec3(args[0],args[1],args[2]);
                kd = vec3(args[3],args[4],args[5]);
                ks = vec3(args[6],args[7],args[8]);
                sp = args[9];
                kr = vec3(args[10],args[11],args[12]);
                curMat = Material(ka,kd,ks, kr,sp);

            } else if (argumentMatches(argument, "sph")) {
                float args[4];
                parseArgs(args, &iss, 4, "Incorrect number of arguments for sphere.");
                vec3 sphereCenter = vec3(args[0],args[1],args[2]);
                mat4 currentTransform = reduceTransforms(&transforms);
                sceneObjects.push_back(new Sphere(sphereCenter, args[3], curMat, currentTransform));
            } else if (argumentMatches(argument, "tri")) {
                float args[9];
                parseArgs(args, &iss, 9, "Incorrect number of arguments for triangle.");
                vec3 v1 = vec3(args[0],args[1],args[2]);
                vec3 v2 = vec3(args[3],args[4],args[5]);
                vec3 v3 = vec3(args[6],args[7],args[8]);
                mat4 currentTransform = reduceTransforms(&transforms);
                sceneObjects.push_back(new Triangle(v1, v2, v3, curMat, currentTransform));
            } else if (argumentMatches(argument, "ltp")) {
                float args[6];
                int falloff = 0;
                string temp;
                int index = 0;
                while (iss >> temp){
                    if (index == 6){
                        falloff = atoi(temp.c_str());
                    } else {
                        args[index] = atof(temp.c_str());
                    }
                    index++;
                }
                if (index > 7 || index < 6){
                    cerr << "Incorrect number of arguments for point light." << endl;
                }
                vec3 color = vec3(args[3],args[4],args[5]);
                vec3 pos = vec3(args[0],args[1],args[2]);
                sceneLights.push_back(new Light(color, pos, falloff, true));

            } else if (argumentMatches(argument, "ltd")) {
                float args[6];
                parseArgs(args, &iss, 6, "Incorrect number of arguments for direct light.");
                vec3 color = vec3(args[3],args[4],args[5]);
                vec3 pos = vec3(args[0],args[1],args[2]);
                sceneLights.push_back(new Light(color, pos, 0, false));
            } else if (argumentMatches(argument, "lta")) {
                float args[3];
                parseArgs(args, &iss, 3, "Incorrect number of arguments for ambient light.");
                vec3 ambientColor = vec3(args[0], args[1], args[2]);
                Light ambientLight = Light(ambientColor);
                scene->addAmbientLight(ambientLight);
            } else if (argumentMatches(argument, "obj")) {
                string temp;
                iss >> temp;
                parseObj(temp.c_str(), &sceneObjects, &transforms, curMat);
            } else if (argumentMatches(argument, "xfs")) {
                float args[3];
                parseArgs(args, &iss, 3, "Incorrect number of arguments for scaling transformation.");
                vec3 transformation = vec3(args[0], args[1], args[2]);
                transforms.push_back(scaling3D(transformation));
            } else if (argumentMatches(argument, "xft")) {
                float args[3];
                parseArgs(args, &iss, 3, "Incorrect number of arguments for translation transformation.");
                vec3 transformation = vec3(args[0], args[1], args[2]);
                transforms.push_back(translation3D(transformation));
            } else if (argumentMatches(argument, "xfr")) {
                float args[3];
                parseArgs(args, &iss, 3, "Incorrect number of arguments for rotation transformation.");
                vec3 transformation = vec3(args[0], args[1], args[2]);
                transforms.push_back(rotation3D(transformation, magnitude(transformation)));
            } else if (argumentMatches(argument, "xfz")) {
                transforms.clear();
                transforms.push_back(identity3D());
            }
        }

        for (int i = 0; i < sceneObjects.size(); i++){
            scene->addObject(sceneObjects[i]);
        }
        for (int i = 0; i < sceneLights.size(); i++) {
            scene->addLight(sceneLights[i]);
        }

        myfile.close();

    } else {
        cerr << "No scene file found." << endl;
        exit(0);
    }
    return scene;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x14f0, %rsp           # imm = 0x14F0
movq %rdi, -0x1350(%rbp)
movq %rdi, -0x8(%rbp)
movss %xmm0, -0xc(%rbp)
movl %esi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x8300
leaq -0x48(%rbp), %rdi
callq 0x8300
leaq -0x60(%rbp), %rdi
callq 0x8300
leaq -0x78(%rbp), %rdi
callq 0x8300
leaq -0x90(%rbp), %rdi
callq 0x8300
leaq -0xa8(%rbp), %rdi
callq 0x8300
leaq -0xc0(%rbp), %rdi
callq 0x8300
leaq -0xd8(%rbp), %rdi
callq 0x8300
leaq -0xf0(%rbp), %rdi
callq 0x8300
leaq -0x170(%rbp), %rdi
callq 0x6a00
movl -0x10(%rbp), %esi
movl -0x14(%rbp), %edx
leaq -0x190(%rbp), %rdi
callq 0x8310
leaq -0x210(%rbp), %rdi
callq 0x83c0
jmp 0x4a6d
leaq -0x290(%rbp), %rdi
callq 0x8420
jmp 0x4a7b
leaq -0x2a8(%rbp), %rdi
callq 0x8500
leaq -0x2c0(%rbp), %rdi
callq 0x8520
leaq -0x2d8(%rbp), %rdi
callq 0x7c70
leaq -0x2f0(%rbp), %rdi
callq 0x8540
leaq -0x370(%rbp), %rdi
callq 0x6a00
jmp 0x4ab9
leaq -0x2f0(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x8560
jmp 0x4ace
movl $0x0, -0x374(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x33b0
leaq -0x3b8(%rbp), %rdi
callq 0x33b0
movq -0x1350(%rbp), %rsi
leaq -0x5c0(%rbp), %rdi
movl $0x8, %edx
callq 0x3460
jmp 0x4b0a
leaq -0x5c0(%rbp), %rdi
callq 0x3450
movb %al, -0x1351(%rbp)
jmp 0x4b1e
movb -0x1351(%rbp), %al
testb $0x1, %al
jne 0x4b2d
jmp 0x6388
jmp 0x4b2f
leaq -0x5c0(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
callq 0x3070
movq %rax, -0x1360(%rbp)
jmp 0x4b4b
movq -0x1360(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3340
movb %al, -0x1361(%rbp)
jmp 0x4b69
movb -0x1361(%rbp), %al
testb $0x1, %al
jne 0x4b78
jmp 0x6288
leaq -0x740(%rbp), %rdi
callq 0x31a0
jmp 0x4b86
leaq -0x740(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
callq 0x32e0
jmp 0x4b9b
leaq -0x740(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3360
jmp 0x4bb0
leaq -0x3b8(%rbp), %rdi
callq 0x34a0
testb $0x1, %al
jne 0x4bc5
jmp 0x4c47
movl $0x2, -0x744(%rbp)
jmp 0x6255
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x649c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x646c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x6454
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x6448
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x6277
leaq -0x768(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x4c5c
leaq -0x768(%rbp), %rdi
leaq 0x204c6(%rip), %rsi     # 0x25130
callq 0x3d50
movb %al, -0x1362(%rbp)
leaq -0x768(%rbp), %rdi
callq 0x3160
movb -0x1362(%rbp), %al
testb $0x1, %al
jne 0x4c90
jmp 0x4f5e
leaq -0x7b0(%rbp), %rax
movq %rax, -0x1378(%rbp)
leaq -0x7d1(%rbp), %rdi
movq %rdi, -0x1370(%rbp)
callq 0x3500
movq -0x1370(%rbp), %rdx
leaq 0x20475(%rip), %rsi     # 0x25134
leaq -0x7d0(%rbp), %rdi
callq 0x7cc0
jmp 0x4ccd
movq -0x1378(%rbp), %rdi
leaq -0x740(%rbp), %rsi
movl $0xf, %edx
leaq -0x7d0(%rbp), %rcx
callq 0x3b60
jmp 0x4cee
leaq -0x7d0(%rbp), %rdi
callq 0x3160
leaq -0x7d1(%rbp), %rdi
callq 0x3290
movss -0x7b0(%rbp), %xmm0
movss -0x7ac(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x7a8(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x7f0(%rbp), %rdi
callq 0x6860
jmp 0x4d38
leaq -0x30(%rbp), %rdi
leaq -0x7f0(%rbp), %rsi
callq 0x8590
jmp 0x4d4a
movss -0x7a4(%rbp), %xmm0
movss -0x7a0(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x79c(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x808(%rbp), %rdi
callq 0x6860
jmp 0x4d7c
leaq -0x48(%rbp), %rdi
leaq -0x808(%rbp), %rsi
callq 0x8590
jmp 0x4d8e
movss -0x798(%rbp), %xmm0
movss -0x794(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x790(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x820(%rbp), %rdi
callq 0x6860
jmp 0x4dc0
leaq -0x60(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0x8590
jmp 0x4dd2
movss -0x78c(%rbp), %xmm0
movss -0x788(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x784(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x838(%rbp), %rdi
callq 0x6860
jmp 0x4e04
leaq -0x78(%rbp), %rdi
leaq -0x838(%rbp), %rsi
callq 0x8590
jmp 0x4e16
movss -0x780(%rbp), %xmm0
movss -0x77c(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x778(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x850(%rbp), %rdi
callq 0x6860
jmp 0x4e48
leaq -0x90(%rbp), %rdi
leaq -0x850(%rbp), %rsi
callq 0x8590
jmp 0x4e5d
movl -0x10(%rbp), %ecx
movl -0x14(%rbp), %edx
movq %rsp, %rax
movl %edx, 0x8(%rax)
movl %ecx, (%rax)
leaq -0x8d0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x78(%rbp), %rdx
leaq -0x90(%rbp), %rcx
leaq -0x48(%rbp), %r8
leaq -0x60(%rbp), %r9
callq 0x85d0
jmp 0x4e90
leaq -0x210(%rbp), %rdi
leaq -0x8d0(%rbp), %rsi
callq 0x86a0
jmp 0x4ea5
movl $0x118, %edi            # imm = 0x118
callq 0x3240
movq %rax, -0x1380(%rbp)
jmp 0x4eb8
movq -0x1380(%rbp), %rdi
movss -0xc(%rbp), %xmm0
movl -0x10(%rbp), %ecx
movl -0x14(%rbp), %r8d
leaq -0x210(%rbp), %rsi
leaq -0x190(%rbp), %rdx
callq 0x8730
jmp 0x4ee0
movq -0x1380(%rbp), %rax
movq %rax, -0x228(%rbp)
jmp 0x6249
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x4f25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0x7d0(%rbp), %rdi
callq 0x3160
leaq -0x7d1(%rbp), %rdi
callq 0x3290
jmp 0x6277
movq -0x1380(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
movl $0x118, %esi            # imm = 0x118
callq 0x3250
jmp 0x6277
leaq -0x8f0(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x4f73
leaq -0x8f0(%rbp), %rdi
leaq 0x201dc(%rip), %rsi     # 0x2515d
callq 0x3d50
movb %al, -0x1381(%rbp)
leaq -0x8f0(%rbp), %rdi
callq 0x3160
movb -0x1381(%rbp), %al
testb $0x1, %al
jne 0x4fa7
jmp 0x51d2
leaq -0x930(%rbp), %rax
movq %rax, -0x1398(%rbp)
leaq -0x951(%rbp), %rdi
movq %rdi, -0x1390(%rbp)
callq 0x3500
movq -0x1390(%rbp), %rdx
leaq 0x2018b(%rip), %rsi     # 0x25161
leaq -0x950(%rbp), %rdi
callq 0x7cc0
jmp 0x4fe4
movq -0x1398(%rbp), %rdi
leaq -0x740(%rbp), %rsi
movl $0xd, %edx
leaq -0x950(%rbp), %rcx
callq 0x3b60
jmp 0x5005
leaq -0x950(%rbp), %rdi
callq 0x3160
leaq -0x951(%rbp), %rdi
callq 0x3290
movss -0x930(%rbp), %xmm0
movss -0x92c(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x928(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x970(%rbp), %rdi
callq 0x6860
jmp 0x504f
leaq -0xa8(%rbp), %rdi
leaq -0x970(%rbp), %rsi
callq 0x8590
jmp 0x5064
movss -0x924(%rbp), %xmm0
movss -0x920(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x91c(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x988(%rbp), %rdi
callq 0x6860
jmp 0x5096
leaq -0xc0(%rbp), %rdi
leaq -0x988(%rbp), %rsi
callq 0x8590
jmp 0x50ab
movss -0x918(%rbp), %xmm0
movss -0x914(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x910(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x9a0(%rbp), %rdi
callq 0x6860
jmp 0x50dd
leaq -0xd8(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
callq 0x8590
jmp 0x50f2
movss -0x90c(%rbp), %xmm0
movss %xmm0, -0x18(%rbp)
movss -0x908(%rbp), %xmm0
movss -0x904(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x900(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x9b8(%rbp), %rdi
callq 0x6860
jmp 0x5131
leaq -0xf0(%rbp), %rdi
leaq -0x9b8(%rbp), %rsi
callq 0x8590
jmp 0x5146
movss -0x18(%rbp), %xmm0
leaq -0xa20(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
leaq -0xd8(%rbp), %rcx
leaq -0xf0(%rbp), %r8
callq 0x8890
jmp 0x5175
leaq -0x290(%rbp), %rdi
leaq -0xa20(%rbp), %rsi
callq 0x8940
jmp 0x518a
jmp 0x6247
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x51c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0x950(%rbp), %rdi
callq 0x3160
leaq -0x951(%rbp), %rdi
callq 0x3290
jmp 0x6277
leaq -0xa40(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x51e7
leaq -0xa40(%rbp), %rdi
leaq 0x1ff98(%rip), %rsi     # 0x2518d
callq 0x3d50
movb %al, -0x1399(%rbp)
leaq -0xa40(%rbp), %rdi
callq 0x3160
movb -0x1399(%rbp), %al
testb $0x1, %al
jne 0x521b
jmp 0x53ce
leaq -0xa50(%rbp), %rax
movq %rax, -0x13b0(%rbp)
leaq -0xa71(%rbp), %rdi
movq %rdi, -0x13a8(%rbp)
callq 0x3500
movq -0x13a8(%rbp), %rdx
leaq 0x1ff47(%rip), %rsi     # 0x25191
leaq -0xa70(%rbp), %rdi
callq 0x7cc0
jmp 0x5258
movq -0x13b0(%rbp), %rdi
leaq -0x740(%rbp), %rsi
movl $0x4, %edx
leaq -0xa70(%rbp), %rcx
callq 0x3b60
jmp 0x5279
leaq -0xa70(%rbp), %rdi
callq 0x3160
leaq -0xa71(%rbp), %rdi
callq 0x3290
movss -0xa50(%rbp), %xmm0
movss -0xa4c(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xa48(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0xa90(%rbp), %rdi
callq 0x6860
jmp 0x52c3
leaq -0xb10(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x3d80
jmp 0x52d8
movl $0x210, %edi            # imm = 0x210
callq 0x3240
movq %rax, -0x13b8(%rbp)
jmp 0x52eb
movss -0xa44(%rbp), %xmm0
movss %xmm0, -0x13bc(%rbp)
leaq -0xb98(%rbp), %rdi
leaq -0xb10(%rbp), %rsi
callq 0x7e80
jmp 0x5310
movss -0x13bc(%rbp), %xmm0
movq -0x13b8(%rbp), %rdi
leaq -0xa90(%rbp), %rsi
leaq -0x290(%rbp), %rdx
leaq -0xb98(%rbp), %rcx
callq 0x89c0
jmp 0x533b
movq -0x13b8(%rbp), %rax
movq %rax, -0xb18(%rbp)
leaq -0x2a8(%rbp), %rdi
leaq -0xb18(%rbp), %rsi
callq 0x8270
jmp 0x535e
jmp 0x6245
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x5395
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0xa70(%rbp), %rdi
callq 0x3160
leaq -0xa71(%rbp), %rdi
callq 0x3290
jmp 0x6277
movq -0x13b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
movl $0x210, %esi            # imm = 0x210
callq 0x3250
jmp 0x6277
leaq -0xbb8(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x53e3
leaq -0xbb8(%rbp), %rdi
leaq 0x1fdca(%rip), %rsi     # 0x251bb
callq 0x3d50
movb %al, -0x13bd(%rbp)
leaq -0xbb8(%rbp), %rdi
callq 0x3160
movb -0x13bd(%rbp), %al
testb $0x1, %al
jne 0x5417
jmp 0x5624
leaq -0xbe0(%rbp), %rax
movq %rax, -0x13d0(%rbp)
leaq -0xc01(%rbp), %rdi
movq %rdi, -0x13c8(%rbp)
callq 0x3500
movq -0x13c8(%rbp), %rdx
leaq 0x1fd79(%rip), %rsi     # 0x251bf
leaq -0xc00(%rbp), %rdi
callq 0x7cc0
jmp 0x5454
movq -0x13d0(%rbp), %rdi
leaq -0x740(%rbp), %rsi
movl $0x9, %edx
leaq -0xc00(%rbp), %rcx
callq 0x3b60
jmp 0x5475
leaq -0xc00(%rbp), %rdi
callq 0x3160
leaq -0xc01(%rbp), %rdi
callq 0x3290
movss -0xbe0(%rbp), %xmm0
movss -0xbdc(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xbd8(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0xc20(%rbp), %rdi
callq 0x6860
jmp 0x54bf
movss -0xbd4(%rbp), %xmm0
movss -0xbd0(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xbcc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0xc38(%rbp), %rdi
callq 0x6860
jmp 0x54f1
movss -0xbc8(%rbp), %xmm0
movss -0xbc4(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xbc0(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0xc50(%rbp), %rdi
callq 0x6860
jmp 0x5523
leaq -0xcd0(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x3d80
jmp 0x5538
movl $0x2b8, %edi            # imm = 0x2B8
callq 0x3240
movq %rax, -0x13d8(%rbp)
jmp 0x554b
leaq -0xd58(%rbp), %rdi
leaq -0xcd0(%rbp), %rsi
callq 0x7e80
jmp 0x5560
movq -0x13d8(%rbp), %rdi
leaq -0xc20(%rbp), %rsi
leaq -0xc38(%rbp), %rdx
leaq -0xc50(%rbp), %rcx
leaq -0x290(%rbp), %r8
leaq -0xd58(%rbp), %r9
callq 0x80f0
jmp 0x5591
movq -0x13d8(%rbp), %rax
movq %rax, -0xcd8(%rbp)
leaq -0x2a8(%rbp), %rdi
leaq -0xcd8(%rbp), %rsi
callq 0x8270
jmp 0x55b4
jmp 0x6243
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x55eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0xc00(%rbp), %rdi
callq 0x3160
leaq -0xc01(%rbp), %rdi
callq 0x3290
jmp 0x6277
movq -0x13d8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
movl $0x2b8, %esi            # imm = 0x2B8
callq 0x3250
jmp 0x6277
leaq -0xd78(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x5639
leaq -0xd78(%rbp), %rdi
leaq 0x1fba4(%rip), %rsi     # 0x251eb
callq 0x3d50
movb %al, -0x13d9(%rbp)
leaq -0xd78(%rbp), %rdi
callq 0x3160
movb -0x13d9(%rbp), %al
testb $0x1, %al
jne 0x566d
jmp 0x5897
movl $0x0, -0xd94(%rbp)
leaq -0xdb8(%rbp), %rdi
callq 0x33b0
movl $0x0, -0xdbc(%rbp)
leaq -0x740(%rbp), %rdi
leaq -0xdb8(%rbp), %rsi
callq 0x3360
movq %rax, -0x13e8(%rbp)
jmp 0x56a9
movq -0x13e8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3340
movb %al, -0x13e9(%rbp)
jmp 0x56c7
movb -0x13e9(%rbp), %al
testb $0x1, %al
jne 0x56d3
jmp 0x574b
cmpl $0x6, -0xdbc(%rbp)
jne 0x570f
leaq -0xdb8(%rbp), %rdi
callq 0x30f0
movq %rax, %rdi
callq 0x3440
movl %eax, -0xd94(%rbp)
jmp 0x5737
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x5886
leaq -0xdb8(%rbp), %rdi
callq 0x30f0
movq %rax, %rdi
callq 0x3330
cvtsd2ss %xmm0, %xmm0
movslq -0xdbc(%rbp), %rax
movss %xmm0, -0xd90(%rbp,%rax,4)
movl -0xdbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xdbc(%rbp)
jmp 0x568d
cmpl $0x7, -0xdbc(%rbp)
jg 0x575d
cmpl $0x6, -0xdbc(%rbp)
jge 0x5790
movq 0x2a88c(%rip), %rdi     # 0x2fff0
leaq 0x1fa84(%rip), %rsi     # 0x251ef
callq 0x3220
movq %rax, -0x13f8(%rbp)
jmp 0x5779
movq -0x13f8(%rbp), %rdi
movq 0x2a831(%rip), %rsi     # 0x2ffb8
callq 0x3270
jmp 0x578e
jmp 0x5790
movss -0xd84(%rbp), %xmm0
movss -0xd80(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xd7c(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0xdd8(%rbp), %rdi
callq 0x6860
jmp 0x57c2
movss -0xd90(%rbp), %xmm0
movss -0xd8c(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xd88(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0xdf0(%rbp), %rdi
callq 0x6860
jmp 0x57f4
movl $0x38, %edi
callq 0x3240
movq %rax, -0x1400(%rbp)
jmp 0x5807
movq -0x1400(%rbp), %rdi
movl -0xd94(%rbp), %ecx
leaq -0xdd8(%rbp), %rsi
leaq -0xdf0(%rbp), %rdx
movl $0x1, %r8d
callq 0x8a80
jmp 0x582f
movq -0x1400(%rbp), %rax
movq %rax, -0xdf8(%rbp)
leaq -0x2c0(%rbp), %rdi
leaq -0xdf8(%rbp), %rsi
callq 0x8a50
jmp 0x5852
leaq -0xdb8(%rbp), %rdi
callq 0x3160
jmp 0x6241
movq -0x1400(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
movl $0x38, %esi
callq 0x3250
leaq -0xdb8(%rbp), %rdi
callq 0x3160
jmp 0x6277
leaq -0xe18(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x58ac
leaq -0xe18(%rbp), %rdi
leaq 0x1f964(%rip), %rsi     # 0x2521e
callq 0x3d50
movb %al, -0x1401(%rbp)
leaq -0xe18(%rbp), %rdi
callq 0x3160
movb -0x1401(%rbp), %al
testb $0x1, %al
jne 0x58e0
jmp 0x5a82
leaq -0xe30(%rbp), %rax
movq %rax, -0x1418(%rbp)
leaq -0xe51(%rbp), %rdi
movq %rdi, -0x1410(%rbp)
callq 0x3500
movq -0x1410(%rbp), %rdx
leaq 0x1f913(%rip), %rsi     # 0x25222
leaq -0xe50(%rbp), %rdi
callq 0x7cc0
jmp 0x591d
movq -0x1418(%rbp), %rdi
leaq -0x740(%rbp), %rsi
movl $0x6, %edx
leaq -0xe50(%rbp), %rcx
callq 0x3b60
jmp 0x593e
leaq -0xe50(%rbp), %rdi
callq 0x3160
leaq -0xe51(%rbp), %rdi
callq 0x3290
movss -0xe24(%rbp), %xmm0
movss -0xe20(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xe1c(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0xe70(%rbp), %rdi
callq 0x6860
jmp 0x5988
movss -0xe30(%rbp), %xmm0
movss -0xe2c(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xe28(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0xe88(%rbp), %rdi
callq 0x6860
jmp 0x59ba
movl $0x38, %edi
callq 0x3240
movq %rax, -0x1420(%rbp)
jmp 0x59cd
movq -0x1420(%rbp), %rdi
leaq -0xe70(%rbp), %rsi
leaq -0xe88(%rbp), %rdx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x8a80
jmp 0x59ef
movq -0x1420(%rbp), %rax
movq %rax, -0xe90(%rbp)
leaq -0x2c0(%rbp), %rdi
leaq -0xe90(%rbp), %rsi
callq 0x8a50
jmp 0x5a12
jmp 0x623f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x5a49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0xe50(%rbp), %rdi
callq 0x3160
leaq -0xe51(%rbp), %rdi
callq 0x3290
jmp 0x6277
movq -0x1420(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
movl $0x38, %esi
callq 0x3250
jmp 0x6277
leaq -0xeb0(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x5a97
leaq -0xeb0(%rbp), %rdi
leaq 0x1f7ad(%rip), %rsi     # 0x25252
callq 0x3d50
movb %al, -0x1421(%rbp)
leaq -0xeb0(%rbp), %rdi
callq 0x3160
movb -0x1421(%rbp), %al
testb $0x1, %al
jne 0x5acb
jmp 0x5be5
leaq -0xebc(%rbp), %rax
movq %rax, -0x1438(%rbp)
leaq -0xee1(%rbp), %rdi
movq %rdi, -0x1430(%rbp)
callq 0x3500
movq -0x1430(%rbp), %rdx
leaq 0x1f75c(%rip), %rsi     # 0x25256
leaq -0xee0(%rbp), %rdi
callq 0x7cc0
jmp 0x5b08
movq -0x1438(%rbp), %rdi
leaq -0x740(%rbp), %rsi
movl $0x3, %edx
leaq -0xee0(%rbp), %rcx
callq 0x3b60
jmp 0x5b29
leaq -0xee0(%rbp), %rdi
callq 0x3160
leaq -0xee1(%rbp), %rdi
callq 0x3290
movss -0xebc(%rbp), %xmm0
movss -0xeb8(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xeb4(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0xf00(%rbp), %rdi
callq 0x6860
jmp 0x5b73
leaq -0xf38(%rbp), %rdi
leaq -0xf00(%rbp), %rsi
callq 0x8af0
jmp 0x5b88
movq -0x228(%rbp), %rdi
leaq -0xf38(%rbp), %rsi
callq 0x8b60
jmp 0x5b9d
jmp 0x623d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x5bd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0xee0(%rbp), %rdi
callq 0x3160
leaq -0xee1(%rbp), %rdi
callq 0x3290
jmp 0x6277
leaq -0xf58(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x5bfa
leaq -0xf58(%rbp), %rdi
leaq 0x1f67f(%rip), %rsi     # 0x25287
callq 0x3d50
movb %al, -0x1439(%rbp)
leaq -0xf58(%rbp), %rdi
callq 0x3160
movb -0x1439(%rbp), %al
testb $0x1, %al
jne 0x5c2e
jmp 0x5d47
leaq -0xf78(%rbp), %rdi
movq %rdi, -0x1448(%rbp)
callq 0x33b0
movq -0x1448(%rbp), %rsi
leaq -0x740(%rbp), %rdi
callq 0x3360
jmp 0x5c56
leaq -0xf78(%rbp), %rdi
callq 0x30f0
movq %rax, -0x1458(%rbp)
leaq -0xf99(%rbp), %rdi
movq %rdi, -0x1450(%rbp)
callq 0x3500
movq -0x1458(%rbp), %rsi
movq -0x1450(%rbp), %rdx
leaq -0xf98(%rbp), %rdi
callq 0x7cc0
jmp 0x5c98
leaq -0xf98(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
leaq -0x2f0(%rbp), %rdx
leaq -0x290(%rbp), %rcx
callq 0x3e30
jmp 0x5cbb
leaq -0xf98(%rbp), %rdi
callq 0x3160
leaq -0xf99(%rbp), %rdi
callq 0x3290
leaq -0xf78(%rbp), %rdi
callq 0x3160
jmp 0x623b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x5d36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x5d2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0xf98(%rbp), %rdi
callq 0x3160
leaq -0xf99(%rbp), %rdi
callq 0x3290
leaq -0xf78(%rbp), %rdi
callq 0x3160
jmp 0x6277
leaq -0xfc0(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x5d5c
leaq -0xfc0(%rbp), %rdi
leaq 0x1f521(%rip), %rsi     # 0x2528b
callq 0x3d50
movb %al, -0x1459(%rbp)
leaq -0xfc0(%rbp), %rdi
callq 0x3160
movb -0x1459(%rbp), %al
testb $0x1, %al
jne 0x5d90
jmp 0x5eaa
leaq -0xfcc(%rbp), %rax
movq %rax, -0x1470(%rbp)
leaq -0xff1(%rbp), %rdi
movq %rdi, -0x1468(%rbp)
callq 0x3500
movq -0x1468(%rbp), %rdx
leaq 0x1f4d0(%rip), %rsi     # 0x2528f
leaq -0xff0(%rbp), %rdi
callq 0x7cc0
jmp 0x5dcd
movq -0x1470(%rbp), %rdi
leaq -0x740(%rbp), %rsi
movl $0x3, %edx
leaq -0xff0(%rbp), %rcx
callq 0x3b60
jmp 0x5dee
leaq -0xff0(%rbp), %rdi
callq 0x3160
leaq -0xff1(%rbp), %rdi
callq 0x3290
movss -0xfcc(%rbp), %xmm0
movss -0xfc8(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0xfc4(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x1010(%rbp), %rdi
callq 0x6860
jmp 0x5e38
leaq -0x1090(%rbp), %rdi
leaq -0x1010(%rbp), %rsi
callq 0x8b90
jmp 0x5e4d
leaq -0x2f0(%rbp), %rdi
leaq -0x1090(%rbp), %rsi
callq 0x8560
jmp 0x5e62
jmp 0x6239
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x5e99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0xff0(%rbp), %rdi
callq 0x3160
leaq -0xff1(%rbp), %rdi
callq 0x3290
jmp 0x6277
leaq -0x10b0(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x5ebf
leaq -0x10b0(%rbp), %rdi
leaq 0x1f3fc(%rip), %rsi     # 0x252c9
callq 0x3d50
movb %al, -0x1471(%rbp)
leaq -0x10b0(%rbp), %rdi
callq 0x3160
movb -0x1471(%rbp), %al
testb $0x1, %al
jne 0x5ef3
jmp 0x600d
leaq -0x10bc(%rbp), %rax
movq %rax, -0x1488(%rbp)
leaq -0x10e1(%rbp), %rdi
movq %rdi, -0x1480(%rbp)
callq 0x3500
movq -0x1480(%rbp), %rdx
leaq 0x1f3ab(%rip), %rsi     # 0x252cd
leaq -0x10e0(%rbp), %rdi
callq 0x7cc0
jmp 0x5f30
movq -0x1488(%rbp), %rdi
leaq -0x740(%rbp), %rsi
movl $0x3, %edx
leaq -0x10e0(%rbp), %rcx
callq 0x3b60
jmp 0x5f51
leaq -0x10e0(%rbp), %rdi
callq 0x3160
leaq -0x10e1(%rbp), %rdi
callq 0x3290
movss -0x10bc(%rbp), %xmm0
movss -0x10b8(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x10b4(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x1100(%rbp), %rdi
callq 0x6860
jmp 0x5f9b
leaq -0x1180(%rbp), %rdi
leaq -0x1100(%rbp), %rsi
callq 0x8c70
jmp 0x5fb0
leaq -0x2f0(%rbp), %rdi
leaq -0x1180(%rbp), %rsi
callq 0x8560
jmp 0x5fc5
jmp 0x6237
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x5ffc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0x10e0(%rbp), %rdi
callq 0x3160
leaq -0x10e1(%rbp), %rdi
callq 0x3290
jmp 0x6277
leaq -0x11a0(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x6022
leaq -0x11a0(%rbp), %rdi
leaq 0x1f2db(%rip), %rsi     # 0x2530b
callq 0x3d50
movb %al, -0x1489(%rbp)
leaq -0x11a0(%rbp), %rdi
callq 0x3160
movb -0x1489(%rbp), %al
testb $0x1, %al
jne 0x6056
jmp 0x61bc
leaq -0x11ac(%rbp), %rax
movq %rax, -0x14a0(%rbp)
leaq -0x11d1(%rbp), %rdi
movq %rdi, -0x1498(%rbp)
callq 0x3500
movq -0x1498(%rbp), %rdx
leaq 0x1f28a(%rip), %rsi     # 0x2530f
leaq -0x11d0(%rbp), %rdi
callq 0x7cc0
jmp 0x6093
movq -0x14a0(%rbp), %rdi
leaq -0x740(%rbp), %rsi
movl $0x3, %edx
leaq -0x11d0(%rbp), %rcx
callq 0x3b60
jmp 0x60b4
leaq -0x11d0(%rbp), %rdi
callq 0x3160
leaq -0x11d1(%rbp), %rdi
callq 0x3290
movss -0x11ac(%rbp), %xmm0
movss -0x11a8(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movss -0x11a4(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x11f0(%rbp), %rdi
callq 0x6860
jmp 0x60fe
leaq -0x1288(%rbp), %rdi
leaq -0x11f0(%rbp), %rsi
callq 0x7e40
jmp 0x6113
leaq -0x12a0(%rbp), %rdi
leaq -0x11f0(%rbp), %rsi
callq 0x7e40
jmp 0x6128
leaq -0x12a0(%rbp), %rdi
callq 0x3970
movss %xmm0, -0x14a4(%rbp)
jmp 0x613e
movss -0x14a4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
leaq -0x1270(%rbp), %rdi
leaq -0x1288(%rbp), %rsi
callq 0x8d60
jmp 0x615f
leaq -0x2f0(%rbp), %rdi
leaq -0x1270(%rbp), %rsi
callq 0x8560
jmp 0x6174
jmp 0x6235
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0x61ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0x11d0(%rbp), %rdi
callq 0x3160
leaq -0x11d1(%rbp), %rdi
callq 0x3290
jmp 0x6277
leaq -0x12c0(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x3100
jmp 0x61d1
leaq -0x12c0(%rbp), %rdi
leaq 0x1f16b(%rip), %rsi     # 0x2534a
callq 0x3d50
movb %al, -0x14a5(%rbp)
leaq -0x12c0(%rbp), %rdi
callq 0x3160
movb -0x14a5(%rbp), %al
testb $0x1, %al
jne 0x6202
jmp 0x6233
leaq -0x2f0(%rbp), %rdi
callq 0x9370
leaq -0x1340(%rbp), %rdi
callq 0x6a00
jmp 0x621c
leaq -0x2f0(%rbp), %rdi
leaq -0x1340(%rbp), %rsi
callq 0x8560
jmp 0x6231
jmp 0x6233
jmp 0x6235
jmp 0x6237
jmp 0x6239
jmp 0x623b
jmp 0x623d
jmp 0x623f
jmp 0x6241
jmp 0x6243
jmp 0x6245
jmp 0x6247
jmp 0x6249
jmp 0x624b
movl $0x0, -0x744(%rbp)
leaq -0x740(%rbp), %rdi
callq 0x3120
movl -0x744(%rbp), %eax
testl %eax, %eax
je 0x6272
jmp 0x626d
jmp 0x4b2f
jmp 0x4b2f
leaq -0x740(%rbp), %rdi
callq 0x3120
jmp 0x6448
movl $0x0, -0x1344(%rbp)
movslq -0x1344(%rbp), %rax
movq %rax, -0x14b0(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x9390
movq %rax, %rcx
movq -0x14b0(%rbp), %rax
cmpq %rcx, %rax
jae 0x6300
movq -0x228(%rbp), %rax
movq %rax, -0x14b8(%rbp)
movslq -0x1344(%rbp), %rsi
leaq -0x2a8(%rbp), %rdi
callq 0x93e0
movq -0x14b8(%rbp), %rdi
movq (%rax), %rsi
callq 0x93b0
jmp 0x62ed
jmp 0x62ef
movl -0x1344(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1344(%rbp)
jmp 0x6292
movl $0x0, -0x1348(%rbp)
movslq -0x1348(%rbp), %rax
movq %rax, -0x14c0(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x9400
movq %rax, %rcx
movq -0x14c0(%rbp), %rax
cmpq %rcx, %rax
jae 0x6378
movq -0x228(%rbp), %rax
movq %rax, -0x14c8(%rbp)
movslq -0x1348(%rbp), %rsi
leaq -0x2c0(%rbp), %rdi
callq 0x9450
movq -0x14c8(%rbp), %rdi
movq (%rax), %rsi
callq 0x9420
jmp 0x6365
jmp 0x6367
movl -0x1348(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1348(%rbp)
jmp 0x630a
leaq -0x5c0(%rbp), %rdi
callq 0x3080
jmp 0x6386
jmp 0x63c0
movq 0x29c61(%rip), %rdi     # 0x2fff0
leaq 0x1efb8(%rip), %rsi     # 0x2534e
callq 0x3220
movq %rax, -0x14d0(%rbp)
jmp 0x63a4
movq -0x14d0(%rbp), %rdi
movq 0x29c06(%rip), %rsi     # 0x2ffb8
callq 0x3270
jmp 0x63b9
xorl %edi, %edi
callq 0x3310
movq -0x228(%rbp), %rax
movq %rax, -0x14d8(%rbp)
movl $0x1, -0x744(%rbp)
leaq -0x5c0(%rbp), %rdi
callq 0x30b0
leaq -0x3b8(%rbp), %rdi
callq 0x3160
leaq -0x398(%rbp), %rdi
callq 0x3160
leaq -0x2f0(%rbp), %rdi
callq 0x9470
leaq -0x2d8(%rbp), %rdi
callq 0x82a0
leaq -0x2c0(%rbp), %rdi
callq 0x94d0
leaq -0x2a8(%rbp), %rdi
callq 0x9530
leaq -0x190(%rbp), %rdi
callq 0x9590
movq -0x14d8(%rbp), %rax
addq $0x14f0, %rsp           # imm = 0x14F0
popq %rbp
retq
leaq -0x5c0(%rbp), %rdi
callq 0x30b0
leaq -0x3b8(%rbp), %rdi
callq 0x3160
leaq -0x398(%rbp), %rdi
callq 0x3160
leaq -0x2f0(%rbp), %rdi
callq 0x9470
leaq -0x2d8(%rbp), %rdi
callq 0x82a0
leaq -0x2c0(%rbp), %rdi
callq 0x94d0
leaq -0x2a8(%rbp), %rdi
callq 0x9530
leaq -0x190(%rbp), %rdi
callq 0x9590
movq -0x218(%rbp), %rdi
callq 0x34f0
nopw %cs:(%rax,%rax)