mount("ext4", "EMMC", "/dev/block/mmcblk0p17", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p21", "/data");
assert(file_getprop("/system/build.prop", "ro.build.fingerprint") == "qcom/Coolpad5890/Coolpad5890:4.1.2/JRO03L/COOLPAD5890_R_2.2.33.99:userdebug/test-keys" ||
       file_getprop("/system/build.prop", "ro.build.fingerprint") == "qcom/Coolpad5890/Coolpad5890:4.1.2/JRO03L/COOLPAD5890_R_2.2.33.99:userdebug/test-keys");
assert(getprop("ro.product.device") == "Coolpad5890" ||
       getprop("ro.build.product") == "Coolpad5890");
ui_print("Verifying current system...");
show_progress(0.100000, 0);
assert(apply_patch_check("/system/app/Phone.apk", "84486788ea6e36740a50098b90cb41e9220b23bf", "1afb8be1c39db15516f1cfa8292bd6325be6f7f4"));
set_progress(0.078394);
assert(apply_patch_check("/system/app/Settings.apk", "f564b21f127dbaf295aa1cafdd8e90e3a15ab126", "7c9c5570b5b2c3d0eb7823d641cabaf8622a876d"));
set_progress(0.256159);
assert(apply_patch_check("/system/app/TelephonyProvider.apk", "fd4ecab85c304d0ac7da4181660757f91c8a0bae", "5f597706ddaf92579df13f5a91626ea69c7acf84"));
set_progress(0.259425);
assert(apply_patch_check("/system/app/Updater.apk", "06525b86a1c4a0ddfcac980cb752f6bc6f4b9c9f", "5469cc8be9e4a2b4fcd6d3a95ab70e658e809516"));
set_progress(0.334336);
assert(apply_patch_check("/system/build.prop", "3008b0814291ca7d4b2b105bc3d1c327852f0c19", "87bc26d70a40d6d1d178db98a01d472152bbaf1b"));
set_progress(0.334701);
assert(apply_patch_check("/system/framework/android.policy.jar", "bae4fd26771b3d5c2171d81a0d1271e01942a8c4", "fcd1eebb65ed61bafd3b69f7387aa2980658e591"));
set_progress(0.355824);
assert(apply_patch_check("/system/framework/framework-res.apk", "2b72473991e265f7f0320ed98c1377ca4409bd4f", "96ab14f4147df06d42584cf4116f2a596eef2e96"));
set_progress(0.728028);
assert(apply_patch_check("/system/framework/framework.jar", "b0b68b7f924c52718251dd87e6bb66d5d6b07124", "459f2d9aee99ab38c8659c70549e1d70361f73d1"));
set_progress(0.891452);
assert(apply_patch_check("/system/framework/secondary_framework.jar", "55bde9132357ee04d4dd498389e6087f4e8b5390", "210203e4d7307278c3a795361e0aac2f9f674a74"));
set_progress(0.952593);
assert(apply_patch_check("/system/framework/services.jar", "33b90c88ae936003a910b53043abf76431344407", "6add0a20610a1e13c180a1f54674406d8282022d"));
set_progress(1.000000);
assert(apply_patch_space(9903736));

# ---- start making changes here ----

ui_print("Removing unneeded files...");
delete("/system/recovery.img");
show_progress(0.800000, 0);
ui_print("Patching system files...");
apply_patch("/system/app/Phone.apk", "-",
            84486788ea6e36740a50098b90cb41e9220b23bf, 2085943,
            1afb8be1c39db15516f1cfa8292bd6325be6f7f4, package_extract_file("patch/system/app/Phone.apk.p"));
set_progress(0.078087);
apply_patch("/system/app/Settings.apk", "-",
            f564b21f127dbaf295aa1cafdd8e90e3a15ab126, 4730024,
            7c9c5570b5b2c3d0eb7823d641cabaf8622a876d, package_extract_file("patch/system/app/Settings.apk.p"));
set_progress(0.255153);
apply_patch("/system/app/TelephonyProvider.apk", "-",
            fd4ecab85c304d0ac7da4181660757f91c8a0bae, 191664,
            5f597706ddaf92579df13f5a91626ea69c7acf84, package_extract_file("patch/system/app/TelephonyProvider.apk.p"));
set_progress(0.262328);
apply_patch("/system/app/Updater.apk", "-",
            06525b86a1c4a0ddfcac980cb752f6bc6f4b9c9f, 1993278,
            5469cc8be9e4a2b4fcd6d3a95ab70e658e809516, package_extract_file("patch/system/app/Updater.apk.p"));
set_progress(0.336946);
apply_patch("/system/framework/android.policy.jar", "-",
            bae4fd26771b3d5c2171d81a0d1271e01942a8c4, 562070,
            fcd1eebb65ed61bafd3b69f7387aa2980658e591, package_extract_file("patch/system/framework/android.policy.jar.p"));
set_progress(0.357987);
apply_patch("/system/framework/framework-res.apk", "-",
            2b72473991e265f7f0320ed98c1377ca4409bd4f, 9903736,
            96ab14f4147df06d42584cf4116f2a596eef2e96, package_extract_file("patch/system/framework/framework-res.apk.p"));
set_progress(0.728729);
apply_patch("/system/framework/framework.jar", "-",
            b0b68b7f924c52718251dd87e6bb66d5d6b07124, 4348543,
            459f2d9aee99ab38c8659c70549e1d70361f73d1, package_extract_file("patch/system/framework/framework.jar.p"));
set_progress(0.891515);
apply_patch("/system/framework/secondary_framework.jar", "-",
            55bde9132357ee04d4dd498389e6087f4e8b5390, 1626860,
            210203e4d7307278c3a795361e0aac2f9f674a74, package_extract_file("patch/system/framework/secondary_framework.jar.p"));
set_progress(0.952416);
apply_patch("/system/framework/services.jar", "-",
            33b90c88ae936003a910b53043abf76431344407, 1261418,
            6add0a20610a1e13c180a1f54674406d8282022d, package_extract_file("patch/system/framework/services.jar.p"));
set_progress(0.999637);
show_progress(0.100000, 10);
ui_print("Symlinks and permissions...");
set_perm_recursive(1000, 1000, 0755, 0644, "/data/preinstall_apps");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(0, 0, 0644, "/system/etc/bluetooth/iop_device_list.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm(0, 1000, 0550, "/system/etc/init.qcom.sdio.sh");
set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm(0, 1000, 06750, "/system/xbin/shelld");
set_perm(0, 0, 06755, "/system/xbin/su");
set_perm(0, 0, 06755, "/system/xbin/busybox");
ui_print("Patching remaining system files...");
apply_patch("/system/build.prop", "-",
            3008b0814291ca7d4b2b105bc3d1c327852f0c19, 9693,
            87bc26d70a40d6d1d178db98a01d472152bbaf1b, package_extract_file("patch/system/build.prop.p"));
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 1000, 0750, "/system/bin/iptables");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm(0, 1000, 0750, "/system/bin/tc");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/librank");
set_perm(0, 0, 06755, "/system/xbin/procmem");
set_perm(0, 0, 06755, "/system/xbin/procrank");
set_perm(0, 1000, 0750, "/system/bin/iptables");
set_perm(0, 0, 06755, "/system/xbin/tcpdump");
set_perm(0, 0, 06755, "/system/xbin/su");
delete_recursive("data/data/com.android.providers.telephony");
set_perm(0, 0, 0644, "/system/build.prop");
unmount("/data");
unmount("/system");
