
void fun_400efc();

void fun_400b6c();

void fun_404140();

void fun_400b5c() {
    fun_400efc();
    fun_400b6c();
    fun_404140();
    return;
}

void fun_400b6c() {
    fun_404140();
    return;
}

int32_t gp;

void fun_400d6c() {
    int32_t a0_1;
    int32_t a3_2;
    int32_t v3;

    gp = 0x20000;
    gp = gp - 0x36cc;
    gp = gp + reinterpret_cast<int32_t>(__return_address());
    a0_1 = *reinterpret_cast<int32_t*>(gp - 0x7fe8);
    a3_2 = *reinterpret_cast<int32_t*>(gp - 0x7fe4);
    *reinterpret_cast<int32_t*>(gp - 0x7fdc)(a0_1, v3, reinterpret_cast<int32_t>(__zero_stack_offset()) + 4, a3_2);
    while (1) {
    }
}

void fun_400e4c();

void fun_4041d4() {
    fun_400e4c();
    return;
}

struct s0 {
    struct s0* f0;
    struct s0* f4;
};

int32_t strcpy = 0x405300;

void fun_405320(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = strcpy;
    goto t9_5;
}

int32_t g4155d4 = 0;

void free(int32_t a0);

void fun_400efc() {
    int32_t t8_1;

    t8_1 = g4155d4;
    if (t8_1) {
        if (!1) {
            free(0x4155d4);
        }
    }
    if (!1) {
        if (!1) {
            goto 0;
        }
    }
    return;
}

int32_t g4155c4 = -1;

void fun_404140() {
    int32_t* s0_1;
    int32_t t9_2;

    s0_1 = reinterpret_cast<int32_t*>(0x4155c4);
    t9_2 = g4155c4;
    while (t9_2 != -1) {
        --s0_1;
        t9_2();
        t9_2 = *s0_1;
    }
    return;
}

int32_t puts = 0x405300;

void fun_4053b0(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3, ...) {
    int32_t t9_5;

    t9_5 = puts;
    goto t9_5;
}

int32_t atoi = 0x405300;

uint32_t fun_405520(struct s0* a0, struct s0* a1, struct s0* a2) {
    int32_t t9_4;

    t9_4 = atoi;
    goto t9_4;
}

int32_t getopt = 0x405300;

int32_t fun_405490(int32_t a0, struct s0* a1, struct s0* a2) {
    int32_t t9_4;

    t9_4 = getopt;
    goto t9_4;
}

int32_t strncpy = 0x405300;

void fun_405440(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = strncpy;
    goto t9_5;
}

int32_t fun_403664(struct s0* a0);

int32_t fun_40109c(void* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t v0_5;
    int32_t t8_6;

    v0_5 = fun_403664(0x404204);
    if (!v0_5) {
        t8_6 = 0;
    } else {
        fun_4053b0("save data failed!", a1, a2, a3);
        t8_6 = -1;
    }
    return t8_6;
}

void fun_400dc0() {
    if (!1) {
        if (!1) {
            goto 0;
        }
    }
    return;
}

struct s0* fun_403308(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_403408(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_403558(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    struct s0* s0_5;
    struct s0* v0_6;
    int32_t a0_7;
    int32_t t8_8;
    int32_t v0_9;

    if (a0) {
        if (a1) {
            s0_5 = a1;
            a1 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 40 + 24);
            v0_6 = fun_403308(a0, a1, a2, a3);
            if (!v0_6) 
                goto label_8; else 
                goto addr_40358c_9;
        }
    }
    a0_7 = reinterpret_cast<int32_t>("NULL == srcEncryptFileName || NULL == dstDirPathName");
    addr_4035c0_13:
    fun_4053b0(a0_7, a1, a2, a3);
    t8_8 = -1;
    addr_4035cc_16:
    return t8_8;
    label_8:
    addr_403598_18:
    a0_7 = reinterpret_cast<int32_t>("getUcfactoryData failed!");
    goto addr_4035c0_13;
    addr_40358c_9:
    if (0) {
        a1 = s0_5;
        v0_9 = fun_403408(v0_6, a1, a2, a3);
        if (v0_9) 
            goto addr_4035b4_24;
    } else {
        goto addr_403598_18;
    }
    t8_8 = 0;
    goto addr_4035cc_16;
    addr_4035b4_24:
    a0_7 = reinterpret_cast<int32_t>("release config data failed!");
    goto addr_4035c0_13;
}

struct s0* fun_403150(int32_t* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_4035e0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    struct s0* v0_5;
    int32_t a0_6;
    int32_t t8_7;
    int32_t v0_8;

    if (a0) {
        v0_5 = fun_403150(reinterpret_cast<int32_t>(__zero_stack_offset()) - 40 + 24, a1, a2, a3);
        if (v0_5) 
            goto addr_403610_6;
    } else {
        a0_6 = reinterpret_cast<int32_t>("NULL == dstDirPathName");
        goto addr_403644_9;
    }
    addr_40361c_11:
    a0_6 = reinterpret_cast<int32_t>("get user config data from uc failed!");
    addr_403644_9:
    fun_4053b0(a0_6, a1, a2, a3);
    t8_7 = -1;
    addr_403650_15:
    return t8_7;
    addr_403610_6:
    if (0) {
        a1 = a0;
        v0_8 = fun_403408(v0_5, a1, a2, a3);
        if (v0_8) 
            goto addr_403638_21;
    } else {
        goto addr_40361c_11;
    }
    t8_7 = 0;
    goto addr_403650_15;
    addr_403638_21:
    a0_6 = reinterpret_cast<int32_t>("release config data failed!");
    goto addr_403644_9;
}

int32_t fun_403048(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

struct s0* fun_404108(struct s0* a0, struct s0* a1, struct s0* a2);

struct s0* fun_4030e8() {
    struct s0* a3_1;
    int32_t v0_2;
    struct s0* v0_3;
    struct s0* t8_4;
    struct s0* a3_5;

    v0_2 = fun_403048(reinterpret_cast<int32_t>(__zero_stack_offset()) - 40 + 24, 4, 0x40000, a3_1);
    if (!v0_2) {
        v0_3 = fun_404108(0xaabbccdd, 4, 0x40000);
        t8_4 = reinterpret_cast<struct s0*>(0xffffffff);
        if (!(reinterpret_cast<uint32_t>(v0_3) ^ 0xaabbccdd)) 
            goto label_8;
    } else {
        fun_4053b0("read update flag from flash failed!", 4, 0x40000, a3_5);
        t8_4 = reinterpret_cast<struct s0*>(0xffffffff);
    }
    addr_40313c_13:
    return t8_4;
    label_8:
    t8_4 = v0_3;
    goto addr_40313c_13;
}

int32_t fun_400f40() {
    struct s0* a2_1;
    struct s0* a3_2;
    int32_t v0_3;
    struct s0* a2_4;
    struct s0* a3_5;
    int32_t v0_6;
    int32_t a0_7;
    int32_t t8_8;
    struct s0* a2_9;
    struct s0* a3_10;

    v0_3 = fun_403558(0x4041f0, 0x404204, a2_1, a3_2);
    if (!v0_3) {
        v0_6 = fun_4035e0(0x40423c, 0x404204, a2_4, a3_5);
        if (v0_6) 
            goto addr_400f80_8;
    } else {
        a0_7 = reinterpret_cast<int32_t>("get usr data from squash_fs failed!");
        goto addr_400f8c_11;
    }
    t8_8 = 0;
    addr_400f98_13:
    return t8_8;
    addr_400f80_8:
    a0_7 = reinterpret_cast<int32_t>("read uc data from uc flash failed!");
    addr_400f8c_11:
    fun_4053b0(a0_7, 0x404204, a2_9, a3_10);
    t8_8 = -1;
    goto addr_400f98_13;
}

int32_t fun_400fa8() {
    struct s0* a1_1;
    struct s0* a2_2;
    struct s0* a3_3;
    int32_t v0_4;
    int32_t v0_5;
    struct s0* a1_6;
    struct s0* a2_7;
    struct s0* a3_8;
    struct s0* a2_9;
    struct s0* a3_10;
    int32_t v0_11;
    struct s0* a2_12;
    struct s0* a3_13;

    v0_4 = fun_4035e0(0x404204, a1_1, a2_2, a3_3);
    if (!v0_4) {
        v0_5 = 0;
    } else {
        fun_4053b0("read uc error, try to read factory config data!", a1_6, a2_7, a3_8);
        v0_11 = fun_403558(0x4041f0, 0x404204, a2_9, a3_10);
        if (!v0_11) 
            goto label_10; else 
            goto addr_400fe8_11;
    }
    addr_400ffc_12:
    return v0_5;
    label_10:
    v0_5 = 0;
    goto addr_400ffc_12;
    addr_400fe8_11:
    fun_4053b0("get uc data from squash_fs failed!", 0x404204, a2_12, a3_13);
    v0_5 = -1;
    goto addr_400ffc_12;
}

uint32_t fun_405500(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_405420(struct s0* a0, int32_t a1, struct s0* a2, struct s0* a3);

void fun_405350(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_401568(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    uint32_t v0_5;
    int32_t v0_6;
    int32_t v0_7;

    if (a0) {
        v0_5 = fun_405500(a0, reinterpret_cast<int32_t>(__zero_stack_offset()) - 0xb8 + 24, a2, a3);
        if (v0_5) 
            goto addr_40159c_6;
    } else {
        fun_4053b0("NULL == dirPath", a1, a2, a3);
        v0_6 = -1;
        goto addr_4015d8_11;
    }
    v0_7 = fun_405420(a0, 0x401360, 0x200, 9);
    if (v0_7) 
        goto addr_4015c0_16;
    v0_6 = 0;
    addr_4015d8_11:
    return v0_6;
    addr_4015c0_16:
    fun_405350("nftw, remove dir:%s failed!\n", a0, 0x200, 9);
    v0_6 = -1;
    goto addr_4015d8_11;
    addr_40159c_6:
    v0_6 = 0;
    goto addr_4015d8_11;
}

int32_t printf = 0x405300;

void fun_405350(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = printf;
    goto t9_5;
}

struct s0* fun_40227c(struct s0* a0, struct s0* a1);

struct s0* fun_401680(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

void fun_4055b0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

struct s0* fun_402a88(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

struct s0* fun_402eb8(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_402f90(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_403664(struct s0* a0) {
    void* sp2;
    struct s0* a1_3;
    struct s0* v0_4;
    int32_t a0_5;
    struct s0* a2_6;
    struct s0* a3_7;
    int32_t v0_8;
    struct s0* s1_9;
    struct s0* a2_10;
    struct s0* a3_11;
    struct s0* v0_12;
    int32_t a0_13;
    struct s0* a3_14;
    struct s0* a0_15;
    struct s0* a3_16;
    struct s0* s0_17;
    struct s0* a3_18;
    struct s0* a3_19;
    struct s0* v0_20;
    int32_t a0_21;
    struct s0* a3_22;
    struct s0* a3_23;
    struct s0* a3_24;
    struct s0* v0_25;
    struct s0* a3_26;
    struct s0* a3_27;
    int32_t v0_28;
    struct s0* a3_29;

    sp2 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 56);
    if (a0) {
        a1_3 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp2) + 28);
        v0_4 = fun_40227c(a0, a1_3);
        if (v0_4) 
            goto addr_4036a0_6;
    } else {
        a0_5 = reinterpret_cast<int32_t>("userConfDirName is NULL!");
        goto addr_4036b8_9;
    }
    addr_4036b0_11:
    a0_5 = reinterpret_cast<int32_t>("make uci config package failed!");
    addr_4036b8_9:
    fun_4053b0(a0_5, a1_3, a2_6, a3_7);
    addr_4036c0_13:
    v0_8 = -1;
    addr_4037d8_15:
    return v0_8;
    addr_4036a0_6:
    s1_9 = v0_4;
    a1_3 = reinterpret_cast<struct s0*>(0);
    if (0) {
        a2_10 = reinterpret_cast<struct s0*>(sp2) + 3;
        v0_12 = fun_401680(v0_4, 0, a2_10, a3_11);
        if (v0_12) 
            goto addr_4036d8_21;
    } else {
        goto addr_4036b0_11;
    }
    addr_4036e8_24:
    a0_13 = reinterpret_cast<int32_t>("compress buf failed!");
    addr_403760_26:
    fun_4053b0(a0_13, 0, a2_10, a3_14);
    a0_15 = s1_9;
    addr_4037bc_30:
    fun_4055b0(a0_15, a1_3, a2_10, a3_16);
    goto addr_4036c0_13;
    addr_4036d8_21:
    s0_17 = v0_12;
    if (0) {
        fun_4055b0(s1_9, 0, a2_10, a3_18);
        a1_3 = reinterpret_cast<struct s0*>(0);
        a2_10 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp2) + 36);
        v0_20 = fun_402a88(s0_17, 0, a2_10, a3_19);
        if (v0_20) 
            goto addr_403710_40;
    } else {
        goto addr_4036e8_24;
    }
    addr_403720_43:
    a0_21 = reinterpret_cast<int32_t>("encrypt buf failed!");
    addr_4037b0_45:
    fun_4053b0(a0_21, a1_3, a2_10, a3_22);
    a0_15 = s0_17;
    goto addr_4037bc_30;
    addr_403710_40:
    s1_9 = v0_20;
    if (0) {
        fun_4055b0(s0_17, 0, a2_10, a3_23);
        a1_3 = reinterpret_cast<struct s0*>(0);
        a2_10 = reinterpret_cast<struct s0*>(sp2) + 4;
        v0_25 = fun_402eb8(s1_9, 0, a2_10, a3_24);
        if (v0_25) 
            goto addr_403748_54;
    } else {
        goto addr_403720_43;
    }
    addr_403758_57:
    a0_13 = reinterpret_cast<int32_t>("fill header failed!");
    goto addr_403760_26;
    addr_403748_54:
    s0_17 = v0_25;
    if (0) {
        fun_4055b0(s1_9, 0, a2_10, a3_26);
        if (!1) 
            goto addr_403788_62;
    } else {
        goto addr_403758_57;
    }
    a1_3 = reinterpret_cast<struct s0*>(0x10000);
    a2_10 = reinterpret_cast<struct s0*>(0x40000);
    v0_28 = fun_402f90(s0_17, 0x10000, 0x40000, a3_27);
    if (v0_28) 
        goto addr_4037a8_68;
    fun_4055b0(s0_17, 0x10000, 0x40000, a3_29);
    v0_8 = 0;
    goto addr_4037d8_15;
    addr_4037a8_68:
    a0_21 = reinterpret_cast<int32_t>("write flash failed!");
    goto addr_4037b0_45;
    addr_403788_62:
    a1_3 = reinterpret_cast<struct s0*>(0x10000);
    a0_21 = reinterpret_cast<int32_t>("flash msg is too big, can not write to uc zone!");
    goto addr_4037b0_45;
}

void fun_4053a0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3, ...);

int32_t fun_4054d0(struct s0* a0, struct s0* a1, struct s0* a2);

void fun_4053c0(void* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_403da0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

void fun_405370(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

void fun_405570(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_404000() {
    void* sp1;
    struct s0* a2_2;
    struct s0* a3_3;
    int32_t v0_4;
    int32_t v0_5;
    int32_t s0_6;
    struct s0* a3_7;
    struct s0* a3_8;
    int32_t v0_9;
    struct s0* a3_10;
    struct s0* v11;
    struct s0* a3_12;
    struct s0* a3_13;
    struct s0* a3_14;

    sp1 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 0x148);
    a2_2 = reinterpret_cast<struct s0*>(32);
    fun_4053a0(reinterpret_cast<int32_t>(sp1) + 0x118, 0x4052d0, 32, a3_3);
    v0_4 = fun_4054d0(0x40423c, 0x4052d0, 32);
    if (!v0_4) {
        v0_5 = -1;
    } else {
        s0_6 = v0_4;
        fun_4053c0("[ -e /tmp/.ucisys ] && mv /tmp/.ucisys /tmp/.ucisys_cp", 0x4052d0, 32, a3_7);
        v0_9 = fun_403da0(0x40423c, 0, 32, a3_8);
        if (!v0_9) 
            goto label_13; else 
            goto addr_40405c_14;
    }
    addr_4040e0_15:
    return v0_5;
    label_13:
    fun_4053c0("[ -e /tmp/.ucisys_cp ] && mv /tmp/.ucisys_cp /tmp/.ucisys", 0, 32, a3_10);
    while (v11) {
        a2_2 = reinterpret_cast<struct s0*>(0x4050f8);
        fun_405370(reinterpret_cast<int32_t>(sp1) + 24, 0x100, 0x4050f8, v11);
        fun_4053c0(reinterpret_cast<int32_t>(sp1) + 24, 0x100, 0x4050f8, v11);
    }
    fun_4053c0("uci commit", 0x100, a2_2, v11);
    fun_405570(s0_6, 0x100, a2_2, v11);
    v0_5 = 0;
    goto addr_4040e0_15;
    addr_40405c_14:
    fun_4053b0("cache usr config data failed!", 0, 32, a3_12);
    fun_4053c0("[ -e /tmp/.ucisys_cp ] && mv /tmp/.ucisys_cp /tmp/.ucisys", 0, 32, a3_13);
    fun_405570(s0_6, 0, 32, a3_14);
    v0_5 = -1;
    goto addr_4040e0_15;
}

void fun_4054a0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3, ...);

struct s1 {
    signed char[11] pad11;
    struct s0* f11;
};

struct s1* fun_4053f0(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_4054e0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

struct s0* fun_405480(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_405380(void* a0, struct s0* a1, struct s0* a2, struct s0* a3);

struct s0* fun_405560(void* a0, struct s0* a1, struct s0* a2, struct s0* a3);

struct s0* fun_405540(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

void fun_405360(void* a0, uint32_t a1, struct s0* a2, struct s0* a3);

void fun_405450(void* a0, int32_t a1, void* a2, struct s0* a3);

int32_t fun_405430(void* a0, void* a1, int32_t a2, struct s0* a3);

struct s0* fun_405510(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

void fun_4054c0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_4037f0(struct s0* a0, struct s0* a1) {
    void* sp3;
    struct s0* a3_4;
    struct s0* a1_5;
    struct s0* a2_6;
    struct s0* a3_7;
    int32_t v0_8;
    struct s0* a3_9;
    int32_t v0_10;
    struct s0* a3_11;
    int32_t s0_12;
    struct s0* a3_13;
    struct s1* v0_14;
    struct s0* s1_15;
    int32_t v0_16;
    int32_t v0_17;
    uint32_t v0_18;
    uint32_t v19;
    struct s0* s3_20;
    struct s0* v0_21;
    struct s0* s2_22;
    struct s0* v0_23;
    struct s0* s1_24;
    void* a0_25;
    int32_t v0_26;
    signed char v27;
    struct s0* v0_28;
    struct s0* v0_29;
    struct s0* v0_30;
    struct s0* v0_31;
    struct s0* v0_32;
    struct s0* v0_33;
    struct s0* a1_34;
    struct s0* a2_35;
    struct s0* v0_36;
    struct s0* a2_37;
    struct s0* a1_38;
    struct s0* v0_39;
    struct s0* a1_40;
    struct s0* v0_41;
    struct s0* v0_42;
    struct s0* v0_43;
    signed char v44;
    void* a0_45;
    void* a1_46;
    signed char v47;
    signed char v48;
    int32_t v0_49;
    signed char v50;
    struct s0* v0_51;
    struct s0* v0_52;
    struct s0* a2_53;
    struct s0* a0_54;
    struct s0* a1_55;
    struct s0* v0_56;
    int32_t a0_57;

    sp3 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 0xbe8);
    fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x920, 0, 0x100, a3_4);
    a1_5 = reinterpret_cast<struct s0*>(0);
    a2_6 = reinterpret_cast<struct s0*>(0x100);
    fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x820, 0, 0x100, a3_7);
    if (a0) {
        if (a1) {
            v0_8 = fun_4054d0(a0, 0, 0x100);
            if (!v0_8) 
                goto label_12; else 
                goto addr_403870_13;
        }
    }
    fun_4053b0("sysDir or usrDir is NULL!", 0, 0x100, a3_9);
    addr_40389c_19:
    v0_10 = -1;
    addr_403d64_21:
    return v0_10;
    label_12:
    fun_405350("open dir %s failed!\n", a0, 0x100, a3_11);
    goto addr_40389c_19;
    addr_403870_13:
    s0_12 = v0_8;
    while (1) {
        v0_14 = fun_4053f0(s0_12, a1_5, a2_6, a3_13);
        if (!v0_14) 
            break;
        s1_15 = reinterpret_cast<struct s0*>(&v0_14->f11);
        a1_5 = s1_15;
        v0_16 = fun_4054e0(0x404c78, a1_5, a2_6, a3_13);
        if (!v0_16) {
            continue;
        }
        a1_5 = s1_15;
        v0_17 = fun_4054e0(0x404850, a1_5, a2_6, a3_13);
        if (v0_17) 
            goto addr_4038e0_38;
        continue;
        addr_4038e0_38:
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x920, 0, 0x100, a3_13);
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x820, 0, 0x100, a3_13);
        fun_405370(reinterpret_cast<int32_t>(sp3) + 0x920, 0x100, 0x404f74, 0x404340);
        a2_6 = reinterpret_cast<struct s0*>(0x404f74);
        a3_13 = reinterpret_cast<struct s0*>(0x404350);
        fun_405370(reinterpret_cast<int32_t>(sp3) + 0x820, 0x100, 0x404f74, 0x404350);
        a1_5 = reinterpret_cast<struct s0*>(sp3) + 0x144;
        v0_18 = fun_405500(reinterpret_cast<int32_t>(sp3) + 0x920, a1_5, 0x404f74, 0x404350);
        if (v0_18) 
            goto addr_40394c_50;
        if ((v19 & 0xf000) == 0x8000) 
            goto addr_403968_53;
        continue;
        addr_403968_53:
        s3_20 = reinterpret_cast<struct s0*>(sp3) + 0x15f;
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x420, 0, 0x200, 0x404350);
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x220, 0, 0x200, 0x404350);
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 32, 0, 0x200, 0x404350);
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x720, 0, 0x100, 0x404350);
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0xb78, 0, 64, 0x404350);
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0xb38, 0, 64, 0x404350);
        fun_4054a0(s3_20, 0, 64, 0x404350);
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x620, 0, 0x100, 0x404350);
        a2_6 = reinterpret_cast<struct s0*>(64);
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0xab8, 0, 64, 0x404350);
        v0_21 = fun_405480(reinterpret_cast<int32_t>(sp3) + 0x920, 0x404a0c, 64, 0x404350);
        if (!v0_21) 
            goto addr_403a10_75;
        s2_22 = v0_21;
        v0_23 = fun_405480(reinterpret_cast<int32_t>(sp3) + 0x820, 0x404f94, 64, 0x404350);
        if (!v0_23) 
            goto addr_403a40_80;
        s1_24 = v0_23;
        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0xab8, 0, 64, 0x404350);
        while (1) {
            a0_25 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(sp3) + 0x420);
            while (1) {
                a1_5 = reinterpret_cast<struct s0*>(0x200);
                a2_6 = s2_22;
                v0_26 = fun_405380(a0_25, 0x200, a2_6, a3_13);
                if (!v0_26) 
                    goto label_88;
                if (!v27) 
                    break;
                fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x220, 0, 0x200, a3_13);
                fun_4054a0(reinterpret_cast<int32_t>(sp3) + 32, 0, 0x200, a3_13);
                fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x720, 0, 0x100, a3_13);
                fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0x620, 0, 0x100, a3_13);
                fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0xb78, 0, 64, a3_13);
                fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0xb38, 0, 64, a3_13);
                fun_4054a0(s3_20, 0, 64, a3_13);
                fun_4053a0(reinterpret_cast<int32_t>(sp3) + 32, reinterpret_cast<int32_t>(sp3) + 0x420, 0x200, a3_13);
                v0_28 = fun_405560(reinterpret_cast<int32_t>(sp3) + 32, 61, 0x200, a3_13);
                v0_29 = fun_405540(v0_28, 61, 0x200, a3_13);
                fun_4053a0(reinterpret_cast<int32_t>(sp3) + 0x620, v0_28, v0_29, a3_13);
                v0_30 = fun_405540(v0_28, v0_28, v0_29, a3_13);
                fun_4053a0(v0_28, 0x404fe0, v0_30, a3_13);
                v0_31 = fun_405560(reinterpret_cast<int32_t>(sp3) + 32, 46, v0_30, a3_13);
                v0_32 = fun_405540(reinterpret_cast<int32_t>(sp3) + 32, 46, v0_30, a3_13);
                v0_33 = fun_405540(v0_31, 46, v0_30, a3_13);
                a1_34 = reinterpret_cast<struct s0*>(sp3) + 4;
                a2_35 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(v0_32) - reinterpret_cast<uint32_t>(v0_33));
                fun_4053a0(reinterpret_cast<int32_t>(sp3) + 0xb78, a1_34, a2_35, a3_13);
                v0_36 = fun_405540(v0_31, a1_34, a2_35, a3_13);
                a2_37 = v0_36;
                fun_405360(reinterpret_cast<int32_t>(sp3) + 32, reinterpret_cast<uint32_t>(v0_31) + 1, a2_37, a3_13);
                a1_38 = reinterpret_cast<struct s0*>(46);
                v0_39 = fun_405560(reinterpret_cast<int32_t>(sp3) + 32, 46, a2_37, a3_13);
                if (v0_39) {
                    a1_40 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(v0_39) + 1);
                    v0_41 = fun_405540(a1_40, a1_40, a2_37, a3_13);
                    fun_4053a0(s3_20, a1_40, v0_41, a3_13);
                    v0_42 = fun_405540(v0_39, a1_40, v0_41, a3_13);
                    a1_38 = reinterpret_cast<struct s0*>(0x404fe0);
                    a2_37 = v0_42;
                    fun_4053a0(v0_39, 0x404fe0, a2_37, a3_13);
                }
                v0_43 = fun_405540(reinterpret_cast<int32_t>(sp3) + 32, a1_38, a2_37, a3_13);
                fun_4053a0(reinterpret_cast<int32_t>(sp3) + 0xb38, reinterpret_cast<int32_t>(sp3) + 32, v0_43, a3_13);
                a3_13 = reinterpret_cast<struct s0*>(sp3) + 0x167;
                fun_405450(reinterpret_cast<int32_t>(sp3) + 0x720, "%s.%s.%s", reinterpret_cast<int32_t>(sp3) + 0xb78, a3_13);
                if (v44) {
                    a0_45 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(sp3) + 0xb38);
                    a1_46 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(sp3) + 0xab8);
                } else {
                    a0_45 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(sp3) + 0xb38);
                    if (!v47) {
                        a1_46 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(sp3) + 0xab8);
                    } else {
                        fun_4054a0(reinterpret_cast<int32_t>(sp3) + 0xab8, 0, 64, a3_13);
                        if (static_cast<int32_t>(v48) != 43) 
                            goto label_154; else 
                            goto addr_403c58_155;
                    }
                }
                v0_49 = fun_405430(a0_45, a1_46, 64, a3_13);
                if (!v0_49) 
                    goto label_159;
                if (static_cast<int32_t>(v50) != 0x7c) {
                    fun_4053a0(reinterpret_cast<int32_t>(sp3) + 0x221, reinterpret_cast<int32_t>(sp3) + 0x420, 0x1ff, a3_13);
                    v0_51 = fun_405560(reinterpret_cast<int32_t>(sp3) + 0x220, 61, 0x1ff, a3_13);
                    v0_52 = fun_405540(v0_51, 61, 0x1ff, a3_13);
                    a2_53 = v0_52;
                    a0_54 = v0_51;
                    a1_55 = reinterpret_cast<struct s0*>(0x404fe4);
                } else {
                    a0_54 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp3) + 0x221);
                    a1_55 = reinterpret_cast<struct s0*>(sp3) + 0x84;
                    a2_53 = reinterpret_cast<struct s0*>(0x1ff);
                }
                addr_403cf0_171:
                fun_4053a0(a0_54, a1_55, a2_53, a3_13);
                v0_56 = fun_405540(reinterpret_cast<int32_t>(sp3) + 0x220, a1_55, a2_53, a3_13);
                a3_13 = s1_24;
                fun_405510(reinterpret_cast<int32_t>(sp3) + 0x220, 1, v0_56, a3_13);
                addr_403d14_177:
                a0_25 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(sp3) + 0x420);
                continue;
                label_154:
                a1_55 = reinterpret_cast<struct s0*>(sp3) + 0x84;
                a0_54 = reinterpret_cast<struct s0*>(sp3) + 68;
                a2_53 = reinterpret_cast<struct s0*>(0x200);
                goto addr_403cf0_171;
                addr_403c58_155:
                fun_405440(reinterpret_cast<int32_t>(sp3) + 0xab8, reinterpret_cast<int32_t>(sp3) + 0xb38, 64, a3_13);
                goto addr_403d14_177;
            }
            continue;
            label_159:
        }
        label_88:
        fun_4054c0(s2_22, 0x200, a2_6, a3_13);
        fun_4054c0(s1_24, 0x200, a2_6, a3_13);
    }
    fun_405570(s0_12, a1_5, a2_6, a3_13);
    fun_4053c0("uci commit", a1_5, a2_6, a3_13);
    v0_10 = 0;
    goto addr_403d64_21;
    addr_40394c_50:
    a0_57 = reinterpret_cast<int32_t>("stat error!");
    addr_403d34_199:
    fun_4053b0(a0_57, a1_5, a2_6, 0x404350);
    fun_405570(s0_12, a1_5, a2_6, 0x404350);
    goto addr_40389c_19;
    addr_403a10_75:
    a1_5 = reinterpret_cast<struct s0*>(sp3) + 0x124;
    fun_405350("open file %s failed\n", a1_5, 64, 0x404350);
    addr_403a60_208:
    a0_57 = reinterpret_cast<int32_t>("change system config data failed!");
    goto addr_403d34_199;
    addr_403a40_80:
    a1_5 = reinterpret_cast<struct s0*>(sp3) + 0x104;
    fun_405350("open file %s failed\n", a1_5, 64, 0x404350);
    fun_4054c0(s2_22, a1_5, 64, 0x404350);
    goto addr_403a60_208;
}

int32_t fun_405550(void* a0, struct s0* a1, struct s0* a2, struct s0* a3);

void fun_405590(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_4013ec(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3);

int32_t fun_403da0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* s3_6;
    int32_t a0_7;
    struct s0* s1_8;
    int32_t v0_9;
    int32_t s2_10;
    struct s1* v0_11;
    struct s0* s0_12;
    int32_t v0_13;
    int32_t v0_14;
    uint32_t v0_15;
    uint32_t v16;
    struct s0* v0_17;
    struct s0* a0_18;
    int32_t v0_19;
    int32_t v0_20;
    struct s0* a1_21;
    int32_t a0_22;
    struct s0* a0_23;
    int32_t v0_24;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 0x3d8);
    if (a0) {
        s3_6 = a0;
        if (a1) 
            goto addr_403ddc_4;
    } else {
        a0_7 = reinterpret_cast<int32_t>("source dir is NULL!");
        goto addr_403e3c_7;
    }
    s1_8 = a1;
    addr_403e0c_9:
    v0_9 = fun_4054d0(s3_6, a1, a2);
    if (!v0_9) {
        a0_7 = reinterpret_cast<int32_t>("open dir failed!");
    } else {
        s2_10 = v0_9;
        while (1) {
            v0_11 = fun_4053f0(s2_10, a1, a2, a3);
            if (!v0_11) 
                goto addr_403e6c_19;
            s0_12 = reinterpret_cast<struct s0*>(&v0_11->f11);
            a1 = s0_12;
            v0_13 = fun_4054e0(0x404c78, a1, a2, a3);
            if (!v0_13) {
                continue;
            }
            a1 = s0_12;
            v0_14 = fun_4054e0(0x404850, a1, a2, a3);
            if (v0_14) 
                goto addr_403e84_29;
            continue;
            addr_403e84_29:
            fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x220, 0, 0x100, a3);
            a2 = reinterpret_cast<struct s0*>(0x4047d8);
            a3 = s3_6;
            fun_405370(reinterpret_cast<int32_t>(sp5) + 0x220, 0x100, 0x4047d8, a3);
            a1 = reinterpret_cast<struct s0*>(sp5) + 100;
            v0_15 = fun_405500(reinterpret_cast<int32_t>(sp5) + 0x220, a1, 0x4047d8, a3);
            if (v0_15) 
                goto addr_403ebc_37;
            if ((v16 & 0xf000) == 0x8000) 
                goto addr_403ee8_40;
            continue;
            addr_403ee8_40:
            fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x120, 0, 0x100, a3);
            a3 = reinterpret_cast<struct s0*>(0x405004);
            fun_405370(reinterpret_cast<int32_t>(sp5) + 0x120, 0x100, 0x4047d8, 0x405004);
            v0_17 = fun_405480(reinterpret_cast<int32_t>(sp5) + 0x120, 0x404a0c, 0x4047d8, 0x405004);
            if (!v0_17) 
                goto addr_403f28_48;
            fun_4054c0(v0_17, 0x404a0c, 0x4047d8, 0x405004);
            a0_18 = reinterpret_cast<struct s0*>(sp5) + 4;
            addr_403f68_53:
            fun_4054a0(a0_18, 0, 0x100, 0x405004);
            if (s1_8) {
                a1 = reinterpret_cast<struct s0*>(0x100);
                a2 = reinterpret_cast<struct s0*>(0x405044);
                a3 = s0_12;
                fun_405370(reinterpret_cast<int32_t>(sp5) + 32, 0x100, 0x405044, a3);
            } else {
                a1 = reinterpret_cast<struct s0*>(0x100);
                a2 = reinterpret_cast<struct s0*>(0x40502c);
                a3 = s0_12;
                fun_405370(reinterpret_cast<int32_t>(sp5) + 32, 0x100, 0x40502c, a3);
            }
            fun_4053c0(reinterpret_cast<int32_t>(sp5) + 32, 0x100, a2, a3);
            continue;
            addr_403f28_48:
            a2 = reinterpret_cast<struct s0*>(0x1a4);
            v0_19 = fun_405550(reinterpret_cast<int32_t>(sp5) + 0x120, 0x102, 0x1a4, 0x405004);
            if (0 > v0_19) 
                goto addr_403f3c_69;
            fun_405590(v0_19, reinterpret_cast<int32_t>(sp5) + 0x120, 0x1a4, 0x405004);
            a0_18 = reinterpret_cast<struct s0*>(sp5) + 4;
            goto addr_403f68_53;
        }
    }
    addr_403e3c_7:
    fun_4053b0(a0_7, a1, a2, a3);
    addr_403e04_78:
    v0_20 = -1;
    addr_403fd8_80:
    return v0_20;
    addr_403e6c_19:
    fun_405570(s2_10, a1, a2, a3);
    v0_20 = 0;
    goto addr_403fd8_80;
    addr_403ebc_37:
    fun_4053b0("stat error!", a1, 0x4047d8, a3);
    fun_405570(s2_10, a1, 0x4047d8, a3);
    goto addr_403e04_78;
    addr_403f3c_69:
    a1_21 = reinterpret_cast<struct s0*>(sp5) + 36;
    a0_22 = reinterpret_cast<int32_t>("create file %s failed.\n");
    addr_403dfc_92:
    fun_405350(a0_22, a1_21, a2, a3);
    goto addr_403e04_78;
    addr_403ddc_4:
    s1_8 = a1;
    a0_23 = a1;
    a1 = reinterpret_cast<struct s0*>(0x1c0);
    v0_24 = fun_4013ec(a0_23, 0x1c0, a2, a3);
    if (v0_24) 
        goto addr_403df0_96;
    goto addr_403e0c_9;
    addr_403df0_96:
    a1_21 = s1_8;
    a0_22 = reinterpret_cast<int32_t>("make directory %s failed!\n");
    goto addr_403dfc_92;
}

int32_t system = 0x405300;

void fun_4053c0(void* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = system;
    goto t9_5;
}

int32_t fun_40100c() {
    struct s0* v0_1;
    int32_t v0_2;
    struct s0* a1_3;
    struct s0* a2_4;
    struct s0* a3_5;
    int32_t v0_6;
    struct s0* a1_7;
    struct s0* a2_8;
    struct s0* a3_9;
    int32_t t8_10;
    struct s0* a2_11;
    struct s0* a3_12;

    v0_1 = fun_4030e8();
    if (!reinterpret_cast<int1_t>(v0_1 == 0xaabbccdd)) {
        v0_2 = fun_400fa8();
    } else {
        v0_2 = fun_400f40();
    }
    if (!v0_2) {
        v0_6 = fun_401568(0x4042e4, a1_3, a2_4, a3_5);
        if (v0_6) 
            goto addr_401070_16;
    } else {
        fun_4053b0("read user config data failed!", a1_7, a2_8, a3_9);
        t8_10 = -1;
        goto addr_401088_21;
    }
    t8_10 = 0;
    addr_401088_21:
    return t8_10;
    addr_401070_16:
    fun_405350("remove %s failed!\n", 0x4042e4, a2_11, a3_12);
    t8_10 = -1;
    goto addr_401088_21;
}

int32_t fun_401180(int32_t a0) {
    struct s0* a2_2;
    struct s0* a3_3;
    int32_t v0_4;
    struct s0* a1_5;
    struct s0* a2_6;
    struct s0* a3_7;
    int32_t v0_8;
    int32_t a0_9;
    int32_t t8_10;
    struct s0* a2_11;
    struct s0* a3_12;

    v0_4 = fun_403558(0x4043a8, 0x4043bc, a2_2, a3_3);
    if (!v0_4) {
        a1_5 = reinterpret_cast<struct s0*>(0x404340);
        v0_8 = fun_403da0(0x4043bc, 0x404340, a2_6, a3_7);
        if (v0_8) 
            goto addr_4011c4_8;
    } else {
        a1_5 = reinterpret_cast<struct s0*>(0x400000);
        a0_9 = reinterpret_cast<int32_t>("get sys data from squash_fs failed!");
        goto addr_4011d0_11;
    }
    t8_10 = 0;
    addr_4011dc_13:
    return t8_10;
    addr_4011c4_8:
    a0_9 = reinterpret_cast<int32_t>("cache system config data failed!");
    addr_4011d0_11:
    fun_4053b0(a0_9, a1_5, a2_11, a3_12);
    t8_10 = -1;
    goto addr_4011dc_13;
}

int32_t remove = 0x405300;

void fun_4053e0() {
    int32_t t9_1;

    t9_1 = remove;
    goto t9_1;
}

int32_t stat = 0x405300;

uint32_t fun_405500(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = stat;
    goto t9_5;
}

int32_t memset = 0x405300;

void fun_4054a0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3, ...) {
    int32_t t9_5;

    t9_5 = memset;
    goto t9_5;
}

int32_t strlen = 0x405300;

struct s0* fun_405540(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = strlen;
    goto t9_5;
}

uint32_t fun_4013ac(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    uint32_t v0_5;
    uint32_t v0_6;

    if (a0) {
        v0_5 = fun_405500(a0, reinterpret_cast<int32_t>(__zero_stack_offset()) - 0xb8 + 24, a2, a3);
        v0_6 = -static_cast<uint32_t>(0 < v0_5);
    } else {
        fun_4053b0("dname is NULL!", a1, a2, a3);
        v0_6 = 0xffffffff;
    }
    return v0_6;
}

int32_t strrchr = 0x405300;

void* fun_405400(struct s0* a0, int32_t a1, struct s0* a2) {
    int32_t t9_4;

    t9_4 = strrchr;
    goto t9_4;
}

int32_t fun_405580(struct s0* a0, struct s0* a1, struct s0* a2);

int32_t fun_4013ec(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* s0_6;
    struct s0* v0_7;
    int32_t v0_8;
    uint32_t v0_9;
    struct s0* v0_10;
    struct s0* a2_11;
    struct s0* v0_12;
    signed char* v0_13;
    struct s0* a0_14;
    void* v0_15;
    uint32_t v0_16;
    int32_t a0_17;
    struct s0* a0_18;
    int32_t v0_19;
    struct s0* a1_20;
    int32_t v0_21;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 0x228);
    s0_6 = reinterpret_cast<struct s0*>(sp5) + 3;
    fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x118, 0, 0x100, a3);
    fun_4054a0(s0_6, 0, 0x100, a3);
    if (a0) {
        v0_7 = fun_405540(a0, 0, 0x100, a3);
        if (reinterpret_cast<uint32_t>(v0_7) < 0x101) 
            goto label_10; else 
            goto addr_401444_11;
    }
    addr_401448_12:
    fun_4053b0("NULL == dstDir || MAX_FILENAME_LEN  < strlen(dstDir)", 0, 0x100, a3);
    v0_8 = -1;
    addr_401550_16:
    return v0_8;
    label_10:
    v0_9 = fun_4013ac(a0, 0, 0x100, a3);
    if (!v0_9) 
        goto addr_401464_21;
    fun_4054a0(s0_6, 0, 0x100, a3);
    v0_10 = fun_405540(a0, 0, 0x100, a3);
    a2_11 = v0_10;
    fun_405440(s0_6, a0, a2_11, a3);
    v0_12 = fun_405540(s0_6, a0, a2_11, a3);
    v0_13 = reinterpret_cast<signed char*>(reinterpret_cast<uint32_t>(s0_6) + (reinterpret_cast<uint32_t>(v0_12) + 0xffffffff));
    if (static_cast<int32_t>(*v0_13) == 47) 
        goto addr_4014b0_32;
    a0_14 = s0_6;
    addr_4014b8_34:
    v0_15 = fun_405400(a0_14, 47, a2_11);
    if (v0_15) {
        fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x118, 0, 0x100, a3);
        a2_11 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(v0_15) - reinterpret_cast<uint32_t>(s0_6));
        fun_405440(reinterpret_cast<int32_t>(sp5) + 0x118, s0_6, a2_11, a3);
        v0_16 = fun_4013ac(reinterpret_cast<int32_t>(sp5) + 0x118, s0_6, a2_11, a3);
        if (v0_16) 
            goto addr_401500_45;
    } else {
        a0_17 = reinterpret_cast<int32_t>("[ERROR]: invalid path with no '/': %s\n");
        goto addr_401540_48;
    }
    a0_18 = s0_6;
    addr_401528_50:
    v0_19 = fun_405580(a0_18, a1, a2_11);
    if (!v0_19) {
        v0_8 = 0;
        goto addr_401550_16;
    } else {
        a0_17 = reinterpret_cast<int32_t>("mkdir %s failed!\n");
    }
    addr_401540_48:
    a1_20 = s0_6;
    addr_401544_55:
    fun_405350(a0_17, a1_20, a2_11, a3);
    v0_8 = -1;
    goto addr_401550_16;
    addr_401500_45:
    v0_21 = fun_4013ec(reinterpret_cast<int32_t>(sp5) + 0x118, a1, a2_11, a3);
    if (v0_21) 
        goto addr_401514_60;
    a0_18 = s0_6;
    goto addr_401528_50;
    addr_401514_60:
    a1_20 = reinterpret_cast<struct s0*>(sp5) + 35;
    a0_17 = reinterpret_cast<int32_t>("mkdir %s failed!\n");
    goto addr_401544_55;
    addr_4014b0_32:
    a0_14 = s0_6;
    *v0_13 = 0;
    goto addr_4014b8_34;
    addr_401464_21:
    v0_8 = 0;
    goto addr_401550_16;
    addr_401444_11:
    goto addr_401448_12;
}

int32_t mkdir = 0x405300;

int32_t fun_405580(struct s0* a0, struct s0* a1, struct s0* a2) {
    int32_t t9_4;

    t9_4 = mkdir;
    goto t9_4;
}

int32_t nftw = 0x405300;

int32_t fun_405420(struct s0* a0, int32_t a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = nftw;
    goto t9_5;
}

int32_t symlink = 0x405300;

int32_t fun_405470(int32_t a0, int32_t a1) {
    int32_t t9_3;

    t9_3 = symlink;
    goto t9_3;
}

int32_t compressBound = 0x405300;

struct s0* fun_4054f0(struct s0* a0) {
    int32_t t9_2;

    t9_2 = compressBound;
    goto t9_2;
}

int32_t malloc = 0x405300;

struct s0* fun_4053d0(struct s0* a0, struct s0* a1, struct s0* a2, ...) {
    int32_t t9_4;

    t9_4 = malloc;
    goto t9_4;
}

int32_t free = 0x405300;

void fun_4055b0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = free;
    goto t9_5;
}

struct s0* fun_404108(struct s0* a0, struct s0* a1, struct s0* a2) {
    return reinterpret_cast<uint32_t>(a0) << 24 | reinterpret_cast<uint32_t>(a0) >> 24 | reinterpret_cast<uint32_t>(a0) >> 8 & 0xff00 | (reinterpret_cast<uint32_t>(a0) & 0xff00) << 8;
}

int32_t compress = 0x405300;

int32_t fun_405530(uint32_t a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = compress;
    goto t9_5;
}

int32_t memcpy = 0x405300;

void fun_4053a0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3, ...) {
    int32_t t9_5;

    t9_5 = memcpy;
    goto t9_5;
}

int32_t uncompress = 0x405300;

int32_t fun_405330(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = uncompress;
    goto t9_5;
}

int32_t fopen = 0x405300;

struct s0* fun_405480(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = fopen;
    goto t9_5;
}

int32_t fread = 0x405300;

uint32_t fun_405460(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = fread;
    goto t9_5;
}

int32_t fclose = 0x405300;

void fun_4054c0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = fclose;
    goto t9_5;
}

struct s2 {
    signed char[4] pad4;
    unsigned char f4;
    signed char[3] pad8;
    struct s0* f8;
};

int32_t fun_401978(struct s0** a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* s1_6;
    struct s0* a1_7;
    struct s0* a2_8;
    void* s3_9;
    void* s2_10;
    struct s2* t8_11;
    int32_t a0_12;
    int32_t v0_13;
    struct s0* a0_14;
    struct s0* a1_15;
    int32_t t8_16;
    signed char v17;
    int32_t v0_18;
    signed char v19;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 0x238);
    s1_6 = a3;
    fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x120, 0, 0x100, a3);
    a1_7 = reinterpret_cast<struct s0*>(0);
    a2_8 = reinterpret_cast<struct s0*>(0x100);
    fun_4054a0(reinterpret_cast<int32_t>(sp5) + 32, 0, 0x100, a3);
    if (a0) {
        if (s1_6) {
            s3_9 = reinterpret_cast<void*>(reinterpret_cast<uint32_t>(a2) << 4);
            fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x120, 0, 0x100, a3);
            s2_10 = reinterpret_cast<void*>(reinterpret_cast<uint32_t>(a2) << 6);
            a2_8 = reinterpret_cast<struct s0*>(0x100);
            fun_4054a0(reinterpret_cast<int32_t>(sp5) + 32, 0, 0x100, a3);
            t8_11 = reinterpret_cast<struct s2*>(reinterpret_cast<int32_t>(a0) + (reinterpret_cast<uint32_t>(s3_9) + reinterpret_cast<uint32_t>(s2_10)));
            if (static_cast<uint32_t>(t8_11->f4) != 1) 
                goto label_14; else 
                goto addr_401a18_15;
        } else {
            a1_7 = reinterpret_cast<struct s0*>(0);
        }
    }
    a0_12 = reinterpret_cast<int32_t>("input paras invalid!");
    addr_401a70_19:
    fun_4053b0(a0_12, a1_7, a2_8, a3);
    v0_13 = -1;
    addr_401ae8_23:
    return v0_13;
    label_14:
    a0_14 = s1_6;
    if (a1 != 1) 
        goto addr_401a28_26;
    addr_401a1c_28:
    a1_15 = reinterpret_cast<struct s0*>(sp5) + 36;
    addr_401adc_30:
    fun_405320(a0_14, a1_15, a2_8, a3);
    v0_13 = 0;
    goto addr_401ae8_23;
    addr_401a28_26:
    a2_8 = t8_11->f8;
    if (reinterpret_cast<uint32_t>(a2_8) >= reinterpret_cast<uint32_t>(*a0)) {
        t8_16 = v17;
    } else {
        a3 = reinterpret_cast<struct s0*>(sp5) + 36;
        a1_7 = *reinterpret_cast<struct s0**>(reinterpret_cast<int32_t>(a0) + ((reinterpret_cast<uint32_t>(a2_8) << 4) + (reinterpret_cast<uint32_t>(a2_8) << 6)) + 76);
        v0_18 = fun_401978(a0, a1_7, a2_8, a3);
        if (!v0_18) 
            goto label_37; else 
            goto addr_401a64_38;
    }
    addr_401a80_39:
    if (!t8_16) {
        fun_405320(reinterpret_cast<int32_t>(sp5) + 32, reinterpret_cast<int32_t>(a0) + (reinterpret_cast<uint32_t>(s3_9) + reinterpret_cast<uint32_t>(s2_10)) + 12, a2_8, a3);
        a0_14 = s1_6;
    } else {
        a2_8 = reinterpret_cast<struct s0*>(0x404744);
        a3 = reinterpret_cast<struct s0*>(sp5) + 36;
        fun_405370(reinterpret_cast<int32_t>(sp5) + 32, 0x100, 0x404744, a3);
        a0_14 = s1_6;
    }
    a1_15 = reinterpret_cast<struct s0*>(sp5) + 4;
    goto addr_401adc_30;
    label_37:
    t8_16 = v19;
    goto addr_401a80_39;
    addr_401a64_38:
    a0_12 = reinterpret_cast<int32_t>("getFolderEntryPath failed");
    goto addr_401a70_19;
    addr_401a18_15:
    a0_14 = s1_6;
    goto addr_401a1c_28;
}

int32_t snprintf = 0x405300;

void fun_405370(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = snprintf;
    goto t9_5;
}

struct s3 {
    signed char[4] pad4;
    unsigned char f4;
    signed char[3] pad8;
    struct s0* f8;
};

uint32_t fun_401b08(struct s0** a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* a1_6;
    struct s0* a2_7;
    int32_t a0_8;
    uint32_t v0_9;
    void* s3_10;
    void* s2_11;
    struct s3* t8_12;
    struct s0* a0_13;
    struct s0* a1_14;
    int32_t t8_15;
    signed char v16;
    int32_t v0_17;
    signed char v18;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 0x238);
    fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x120, 0, 0x100, a3);
    a1_6 = reinterpret_cast<struct s0*>(0);
    a2_7 = reinterpret_cast<struct s0*>(0x100);
    fun_4054a0(reinterpret_cast<int32_t>(sp5) + 32, 0, 0x100, a3);
    if (a0) {
        if (a2) {
            fun_4054a0(reinterpret_cast<int32_t>(sp5) + 32, 0, 0x100, a3);
            a2_7 = reinterpret_cast<struct s0*>(0x100);
            fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x120, 0, 0x100, a3);
            if (reinterpret_cast<uint32_t>(a1) < reinterpret_cast<uint32_t>(*a0)) 
                goto label_14; else 
                goto addr_401b90_15;
        } else {
            a1_6 = reinterpret_cast<struct s0*>(0);
        }
    }
    a0_8 = reinterpret_cast<int32_t>("Invalid paras: NULL == efsHeader || NULL == filePath!");
    addr_401bfc_19:
    fun_4053b0(a0_8, a1_6, a2_7, a3);
    v0_9 = 0xffffffff;
    addr_401c70_23:
    return v0_9;
    label_14:
    s3_10 = reinterpret_cast<void*>(reinterpret_cast<uint32_t>(a1) << 4);
    s2_11 = reinterpret_cast<void*>(reinterpret_cast<uint32_t>(a1) << 6);
    t8_12 = reinterpret_cast<struct s3*>(reinterpret_cast<int32_t>(a0) + (reinterpret_cast<uint32_t>(s3_10) + reinterpret_cast<uint32_t>(s2_11)));
    if (static_cast<uint32_t>(t8_12->f4) == 1) 
        goto addr_401bb8_26;
    a0_13 = a2;
    addr_401c60_28:
    a1_14 = reinterpret_cast<struct s0*>(sp5) + 4;
    addr_401c64_29:
    fun_405320(a0_13, a1_14, a2_7, a3);
    v0_9 = 0;
    goto addr_401c70_23;
    addr_401bb8_26:
    a2_7 = t8_12->f8;
    if (reinterpret_cast<uint32_t>(a2_7) >= reinterpret_cast<uint32_t>(*a0)) {
        t8_15 = v16;
    } else {
        a3 = reinterpret_cast<struct s0*>(sp5) + 36;
        a1_6 = *reinterpret_cast<struct s0**>(reinterpret_cast<int32_t>(a0) + ((reinterpret_cast<uint32_t>(a2_7) << 4) + (reinterpret_cast<uint32_t>(a2_7) << 6)) + 76);
        v0_17 = fun_401978(a0, a1_6, a2_7, a3);
        if (!v0_17) 
            goto label_36; else 
            goto addr_401bf0_37;
    }
    addr_401c0c_38:
    if (!t8_15) {
        fun_405320(reinterpret_cast<int32_t>(sp5) + 32, reinterpret_cast<int32_t>(a0) + (reinterpret_cast<uint32_t>(s3_10) + reinterpret_cast<uint32_t>(s2_11)) + 12, a2_7, a3);
    } else {
        a2_7 = reinterpret_cast<struct s0*>(0x404744);
        a3 = reinterpret_cast<struct s0*>(sp5) + 36;
        fun_405370(reinterpret_cast<int32_t>(sp5) + 32, 0x100, 0x404744, a3);
    }
    a0_13 = a2;
    goto addr_401c60_28;
    label_36:
    t8_15 = v18;
    goto addr_401c0c_38;
    addr_401bf0_37:
    a0_8 = reinterpret_cast<int32_t>("getFolderEntryPath failed!");
    goto addr_401bfc_19;
    addr_401b90_15:
    a0_13 = a2;
    a1_14 = reinterpret_cast<struct s0*>(sp5) + 36;
    goto addr_401c64_29;
}

uint32_t fun_4018d0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    uint32_t v0_5;
    struct s0* v0_6;
    uint32_t v0_7;

    if (a0) {
        if (a1) {
            if (reinterpret_cast<int32_t>(0) <= reinterpret_cast<int32_t>(a2)) {
                if (!a2) 
                    goto label_8; else 
                    goto addr_401914_9;
            }
        }
    }
    fun_4053b0("input paras invalid!", a1, a2, a3);
    v0_5 = 0xffffffff;
    addr_401960_15:
    return v0_5;
    label_8:
    v0_5 = 0;
    goto addr_401960_15;
    addr_401914_9:
    v0_6 = fun_405480(a0, 0x404724, a2, a3);
    if (v0_6) 
        goto addr_401928_19;
    v0_5 = 0xffffffff;
    goto addr_401960_15;
    addr_401928_19:
    v0_7 = fun_405460(a1, 1, a2, v0_6);
    fun_4054c0(v0_6, 1, a2, v0_6);
    v0_5 = -static_cast<uint32_t>(0 < (v0_7 ^ reinterpret_cast<uint32_t>(a2)));
    goto addr_401960_15;
}

int32_t opendir = 0x405300;

int32_t fun_4054d0(struct s0* a0, struct s0* a1, struct s0* a2) {
    int32_t t9_4;

    t9_4 = opendir;
    goto t9_4;
}

int32_t strcmp = 0x405300;

int32_t fun_4054e0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = strcmp;
    goto t9_5;
}

int32_t readdir = 0x405300;

struct s1* fun_4053f0(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = readdir;
    goto t9_5;
}

int32_t closedir = 0x405300;

void fun_405570(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = closedir;
    goto t9_5;
}

struct s0* g419904 = reinterpret_cast<struct s0*>(0);

struct s4 {
    signed char[4] pad4;
    signed char f4;
    signed char[3] pad8;
    int32_t f8;
    struct s0* f12;
    signed char[60] pad76;
    struct s0* f76;
    void* f80;
};

struct s5 {
    signed char[4] pad4;
    signed char f4;
    signed char[3] pad8;
    int32_t f8;
    struct s0* f12;
    signed char[60] pad76;
    int32_t f76;
};

int32_t g415700 = 0;

struct s6 {
    signed char[4] pad4;
    struct s0* f4;
    signed char[252] pad260;
    int32_t f260;
    struct s0* f264;
};

struct s7 {
    signed char[260] pad260;
    int32_t f260;
    int32_t f264;
};

int32_t fun_401f58(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* a2_6;
    struct s0* s3_7;
    struct s0* s5_8;
    int32_t v0_9;
    int32_t a0_10;
    int32_t s0_11;
    struct s0* a1_12;
    int32_t v0_13;
    int32_t s7_14;
    int32_t s8_15;
    struct s1* v0_16;
    struct s0* s2_17;
    struct s0* s4_18;
    int32_t v0_19;
    int32_t v0_20;
    uint32_t v0_21;
    uint32_t v0_22;
    uint32_t v23;
    struct s4* s2_24;
    void* v25;
    struct s0* t8_26;
    struct s0* a0_27;
    struct s5* t8_28;
    int32_t v1_29;
    int32_t v0_30;
    struct s6* t8_31;
    int32_t t8_32;
    struct s0* t8_33;
    int32_t v0_34;
    int32_t a0_35;
    int32_t s4_36;
    struct s0* s2_37;
    int32_t s1_38;
    int32_t v0_39;
    int32_t s1_40;
    struct s7* s1_41;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 0x1e8);
    a2_6 = reinterpret_cast<struct s0*>(0x100);
    s3_7 = a0;
    s5_8 = a1;
    fun_4054a0(reinterpret_cast<int32_t>(sp5) + 32, 0, 0x100, a3);
    if (s3_7) {
        v0_9 = fun_4054d0(s3_7, 0, 0x100);
        if (!v0_9) 
            goto addr_401fb8_8;
    } else {
        a0_10 = reinterpret_cast<int32_t>("container is NULL!");
        goto addr_401fc4_11;
    }
    s0_11 = v0_9;
    a1_12 = reinterpret_cast<struct s0*>(0x404204);
    v0_13 = fun_4054e0(s3_7, 0x404204, 0x100, a3);
    if (v0_13) 
        goto addr_401fe8_16;
    s7_14 = 0x200;
    s8_15 = 1;
    addr_40200c_19:
    while (1) {
        v0_16 = fun_4053f0(s0_11, a1_12, a2_6, a3);
        if (!v0_16) 
            break;
        s2_17 = g419904;
        if (reinterpret_cast<uint32_t>(s2_17) >= 0x200) 
            goto addr_402094_25;
        s4_18 = reinterpret_cast<struct s0*>(&v0_16->f11);
        a1_12 = s4_18;
        v0_19 = fun_4054e0(0x404c78, a1_12, a2_6, a3);
        if (!v0_19) {
            continue;
        }
        a1_12 = s4_18;
        v0_20 = fun_4054e0(0x404850, a1_12, a2_6, a3);
        if (v0_20) 
            goto addr_4020c8_35;
        continue;
        addr_4020c8_35:
        a2_6 = reinterpret_cast<struct s0*>(0x4047d8);
        a3 = s3_7;
        fun_405370(reinterpret_cast<int32_t>(sp5) + 32, 0x100, 0x4047d8, a3);
        a1_12 = reinterpret_cast<struct s0*>(sp5) + 36;
        v0_21 = fun_405500(reinterpret_cast<int32_t>(sp5) + 32, a1_12, 0x4047d8, a3);
        if (v0_21) 
            goto addr_4020f8_41;
        v0_22 = v23 & 0xf000;
        if (v0_22 == 0x4000) 
            goto addr_402118_44;
        if (v0_22 == 0x8000) 
            goto addr_4021ec_47;
        continue;
        addr_4021ec_47:
        a1_12 = s4_18;
        s2_24 = reinterpret_cast<struct s4*>((reinterpret_cast<uint32_t>(s2_17) << 4) + (reinterpret_cast<uint32_t>(s2_17) << 6) + 0x419904);
        s2_24->f4 = 1;
        fun_405320(&s2_24->f12, a1_12, 0x4047d8, a3);
        s2_24->f8 = s7_14;
        s2_24->f76 = s5_8->f0;
        s2_24->f80 = v25;
        s5_8->f0 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(s5_8->f0) + reinterpret_cast<uint32_t>(v25));
        t8_26 = g419904;
        g419904 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(t8_26) + 1);
        continue;
        addr_402118_44:
        a0_27 = reinterpret_cast<struct s0*>(sp5) + 4;
        a3 = a0_27;
        fun_405370(a0_27, 0x100, 0x4047d8, a3);
        t8_28 = reinterpret_cast<struct s5*>((reinterpret_cast<uint32_t>(s2_17) << 4) + (reinterpret_cast<uint32_t>(s2_17) << 6) + 0x419904);
        t8_28->f4 = 0;
        fun_405320(&t8_28->f12, s4_18, 0x4047d8, a3);
        v1_29 = s8_15 + 1;
        v0_30 = g415700;
        a2_6 = reinterpret_cast<struct s0*>(0x100);
        t8_28->f76 = v1_29;
        t8_28->f8 = s7_14;
        t8_31 = reinterpret_cast<struct s6*>(0x415700 + ((v0_30 << 3) + (v0_30 << 8)));
        fun_405440(&t8_31->f4, reinterpret_cast<int32_t>(sp5) + 32, 0x100, a3);
        a1_12 = s5_8;
        t8_31->f264 = s2_17;
        t8_31->f260 = v1_29;
        t8_32 = g415700;
        g415700 = t8_32 + 1;
        t8_33 = g419904;
        g419904 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(t8_33) + 1);
        v0_34 = fun_401f58(reinterpret_cast<int32_t>(sp5) + 32, a1_12, 0x100, a3);
        if (v0_34) 
            goto addr_4021d8_60;
    }
    fun_405570(s0_11, a1_12, a2_6, a3);
    v0_34 = 0;
    addr_40224c_66:
    addr_402254_67:
    return v0_34;
    addr_402094_25:
    a0_35 = reinterpret_cast<int32_t>("too many entry!");
    addr_4020a0_69:
    fun_4053b0(a0_35, a1_12, a2_6, a3);
    fun_405570(s0_11, a1_12, a2_6, a3);
    addr_4020b0_73:
    v0_34 = -1;
    goto addr_40224c_66;
    addr_4020f8_41:
    a0_35 = reinterpret_cast<int32_t>("stat error!");
    goto addr_4020a0_69;
    addr_4021d8_60:
    goto addr_402254_67;
    addr_401fe8_16:
    s4_36 = g415700;
    s2_37 = reinterpret_cast<struct s0*>(0x415704);
    s1_38 = 0;
    while (s1_38 != s4_36) {
        a1_12 = s2_37;
        s2_37 = s2_37 + 33;
        v0_39 = fun_4054e0(s3_7, a1_12, 0x100, a3);
        if (!v0_39) 
            goto addr_402030_82;
        ++s1_38;
    }
    a1_12 = s2_37;
    a0_35 = reinterpret_cast<int32_t>("Not found parent path!");
    goto addr_4020a0_69;
    addr_402030_82:
    s1_40 = s1_38 + 1 - 1;
    s1_41 = reinterpret_cast<struct s7*>(0x415700 + ((s1_40 << 3) + (s1_40 << 8)));
    s8_15 = s1_41->f260;
    s7_14 = s1_41->f264;
    goto addr_40200c_19;
    addr_401fb8_8:
    a0_10 = reinterpret_cast<int32_t>("open dir failed!");
    addr_401fc4_11:
    fun_4053b0(a0_10, 0, 0x100, a3);
    goto addr_4020b0_73;
}

uint32_t fun_401c8c(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* s2_6;
    struct s0* s5_7;
    int32_t s7_8;
    int32_t v9;
    struct s0** s1_10;
    int32_t s3_11;
    unsigned char v12;
    struct s0* a0_13;
    struct s0* a0_14;
    struct s0* a0_15;
    struct s0* s1_16;
    struct s0* a0_17;
    struct s0* a1_18;
    struct s0* s2_19;
    struct s0** s0_20;
    struct s0* t8_21;
    struct s0* s6_22;
    struct s0* a2_23;
    struct s0* a1_24;
    uint32_t v0_25;
    uint32_t s6_26;
    struct s0* s6_27;
    uint32_t v0_28;
    uint32_t v0_29;
    int32_t a0_30;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 0x7ff0 - 0x2268);
    s2_6 = a0;
    s5_7 = a1;
    fun_4054a0(0x10020 + reinterpret_cast<int32_t>(sp5) + 0xffffa104, 0, 0x100, a3);
    fun_4054a0(0x10020 + reinterpret_cast<int32_t>(sp5) + 0xffffa004, 0, 0x100, a3);
    if (s2_6) {
        if (s5_7) {
            fun_4054a0(reinterpret_cast<int32_t>(sp5) + 32, 0, 0xa004, a3);
            fun_4053a0(reinterpret_cast<int32_t>(sp5) + 32, 0x419904, 0xa004, a3);
            s7_8 = v9;
            s1_10 = reinterpret_cast<struct s0**>(0x419954);
            s3_11 = 0;
            while (s3_11 != s7_8) {
                if (static_cast<uint32_t>(v12) != 1) {
                    fun_404108(*(s1_10 - 18), 0x419904, 0xa004);
                } else {
                    fun_404108(*(s1_10 - 18), 0x419904, 0xa004);
                    a0_13 = *s1_10;
                    fun_404108(a0_13, 0x419904, 0xa004);
                }
                ++s3_11;
                s1_10 = s1_10 + 20;
                fun_404108(*(s1_10 - 1), 0x419904, 0xa004);
            }
            a0_14 = g419904;
            fun_404108(a0_14, 0x419904, 0xa004);
            a0_15 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp5) + 32 + 0xa104);
            s1_16 = reinterpret_cast<struct s0*>(0);
            fun_4054a0(a0_15, 0, 0x100, a3, a0_15, 0, 0x100, a3);
            a0_17 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp5) + 32 + 0xa004);
            fun_4054a0(a0_17, 0, 0x100, a3, a0_17, 0, 0x100, a3);
            a1_18 = reinterpret_cast<struct s0*>(sp5) + 4;
            s2_19 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(s2_6) + 0xa004);
            s0_20 = reinterpret_cast<struct s0**>(0x419954);
            fun_4053a0(s2_6, a1_18, 0xa004, a3, s2_6, a1_18, 0xa004, a3);
            while (t8_21 = g419904, reinterpret_cast<uint32_t>(s1_16) < reinterpret_cast<uint32_t>(t8_21)) {
                if (static_cast<uint32_t>(*reinterpret_cast<unsigned char*>(s0_20 - 19)) != 1) {
                    s6_22 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp5) + 32 + 0xa104);
                    a3 = s6_22;
                    fun_401978(0x419904, *(s0_20 - 1), s1_16, a3);
                    fun_405440(reinterpret_cast<int32_t>(sp5) + 32 + 0xa004, s6_22, 0x100, a3);
                } else {
                    a2_23 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp5) + 32 + 0xa104);
                    a1_24 = s1_16;
                    v0_25 = fun_401b08(0x419904, a1_24, a2_23, a3);
                    s6_26 = v0_25;
                    if (s6_26) 
                        goto addr_401e74_49;
                    s6_27 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp5) + 32 + 0xa004);
                    a3 = s5_7;
                    fun_405370(s6_27, 0x100, 0x4047d8, a3);
                    a2_23 = *s0_20;
                    a1_24 = s2_19;
                    v0_28 = fun_4018d0(s6_27, a1_24, a2_23, a3);
                    if (v0_28) 
                        goto addr_401ebc_56;
                    s2_19 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(s2_19) + reinterpret_cast<uint32_t>(*s0_20));
                }
                s1_16 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(s1_16) + 1);
                s0_20 = s0_20 + 20;
            }
            goto label_62;
        }
    }
    fun_4053b0("buf or srcDirPath is NULL!", 0, 0x100, a3);
    v0_29 = 0xffffffff;
    addr_401f24_68:
    return v0_29;
    label_62:
    v0_29 = 0;
    goto addr_401f24_68;
    addr_401e74_49:
    a0_30 = reinterpret_cast<int32_t>("getFileEntryPath failed!");
    addr_401ec8_71:
    fun_4053b0(a0_30, a1_24, a2_23, a3, a0_30, a1_24, a2_23, a3);
    v0_29 = s6_26;
    goto addr_401f24_68;
    addr_401ebc_56:
    s6_26 = v0_28;
    a0_30 = reinterpret_cast<int32_t>("write file data to buf failed!");
    goto addr_401ec8_71;
}

int32_t fwrite = 0x405300;

struct s0* fun_405510(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = fwrite;
    goto t9_5;
}

uint32_t fun_4023e0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    struct s0* s0_5;
    struct s0* v0_6;
    uint32_t v0_7;
    struct s0* v0_8;
    struct s0* a1_9;
    int32_t a0_10;

    if (a0) {
        if (a1) {
            s0_5 = a2;
            v0_6 = fun_405480(a0, 0x404904, a2, a3);
            if (v0_6) 
                goto label_8; else 
                goto addr_402430_9;
        }
    }
    fun_4053b0("Invalid paras:NULL == filePath || NULL == buf", a1, a2, a3);
    v0_7 = 0xffffffff;
    addr_402484_15:
    return v0_7;
    label_8:
    a2 = s0_5;
    a3 = v0_6;
    v0_8 = fun_405510(a1, 1, a2, a3);
    fun_4054c0(v0_6, 1, a2, a3);
    if (v0_8 != s0_5) 
        goto addr_402468_22;
    v0_7 = 0;
    goto addr_402484_15;
    addr_402468_22:
    a1_9 = s0_5;
    a0_10 = reinterpret_cast<int32_t>("write files failed! len = %d\n");
    addr_402478_24:
    fun_405350(a0_10, a1_9, a2, a3);
    v0_7 = 0xffffffff;
    goto addr_402484_15;
    addr_402430_9:
    a1_9 = a0;
    a0_10 = reinterpret_cast<int32_t>("open %s failed!\n");
    goto addr_402478_24;
}

uint32_t fun_4024a0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* s3_6;
    struct s0* a1_7;
    struct s0* a0_8;
    struct s0* s2_9;
    struct s0* v0_10;
    struct s0** s0_11;
    struct s0* s7_12;
    struct s0* s4_13;
    struct s0* v0_14;
    struct s0* v0_15;
    struct s0* a0_16;
    struct s0* v0_17;
    struct s0* v0_18;
    struct s0** s0_19;
    struct s0* s1_20;
    struct s0* t8_21;
    struct s0* a1_22;
    struct s0* a2_23;
    uint32_t v0_24;
    uint32_t v0_25;
    int32_t v0_26;
    uint32_t v0_27;
    uint32_t s7_28;
    int32_t a0_29;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 0x248);
    s3_6 = a1;
    fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x120, 0, 0x100, a3);
    fun_4054a0(reinterpret_cast<int32_t>(sp5) + 32, 0, 0x100, a3);
    if (a0) {
        if (s3_6) {
            fun_4054a0(reinterpret_cast<int32_t>(sp5) + 0x120, 0, 0x100, a3);
            fun_4054a0(reinterpret_cast<int32_t>(sp5) + 32, 0, 0x100, a3);
            fun_4054a0(0x419904, 0, 0xa004, a3);
            a1_7 = a0;
            fun_4053a0(0x419904, a1_7, 0xa004, a3);
            a0_8 = g419904;
            s2_9 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(a0) + 0xa004);
            v0_10 = fun_404108(a0_8, a1_7, 0xa004);
            s0_11 = reinterpret_cast<struct s0**>(0x419954);
            g419904 = v0_10;
            s7_12 = v0_10;
            s4_13 = reinterpret_cast<struct s0*>(0);
            while (s4_13 != s7_12) {
                if (static_cast<uint32_t>(*reinterpret_cast<unsigned char*>(s0_11 - 19)) != 1) {
                    v0_14 = fun_404108(*(s0_11 - 18), a1_7, 0xa004);
                    *(s0_11 - 18) = v0_14;
                } else {
                    v0_15 = fun_404108(*(s0_11 - 18), a1_7, 0xa004);
                    a0_16 = *s0_11;
                    *(s0_11 - 18) = v0_15;
                    v0_17 = fun_404108(a0_16, a1_7, 0xa004);
                    *s0_11 = v0_17;
                }
                s4_13 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(s4_13) + 1);
                s0_11 = s0_11 + 20;
                v0_18 = fun_404108(*(s0_11 - 1), a1_7, 0xa004);
                *(s0_11 - 21) = v0_18;
            }
            s0_19 = reinterpret_cast<struct s0**>(0x419954);
            s1_20 = reinterpret_cast<struct s0*>(0);
            while (t8_21 = g419904, reinterpret_cast<uint32_t>(s1_20) < reinterpret_cast<uint32_t>(t8_21)) {
                if (static_cast<uint32_t>(*reinterpret_cast<unsigned char*>(s0_19 - 19)) == 1) {
                    a1_22 = s1_20;
                    a2_23 = reinterpret_cast<struct s0*>(sp5) + 36;
                    v0_24 = fun_401b08(0x419904, a1_22, a2_23, a3);
                    if (v0_24) 
                        goto addr_402690_45;
                    a3 = s3_6;
                    fun_405370(reinterpret_cast<int32_t>(sp5) + 32, 0x100, 0x4047d8, a3);
                    a2_23 = *s0_19;
                    a1_22 = s2_9;
                    v0_25 = fun_4023e0(reinterpret_cast<int32_t>(sp5) + 32, a1_22, a2_23, a3);
                    if (v0_25) 
                        goto addr_4026d0_52;
                    s2_9 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(s2_9) + reinterpret_cast<uint32_t>(*s0_19));
                    s1_20 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(s1_20) + 1);
                } else {
                    fun_401978(0x419904, *(s0_19 - 1), s1_20, reinterpret_cast<int32_t>(sp5) + 0x120);
                    a3 = s3_6;
                    fun_405370(reinterpret_cast<int32_t>(sp5) + 32, 0x100, 0x4047d8, a3);
                    v0_26 = fun_4013ec(reinterpret_cast<int32_t>(sp5) + 32, 0x1c0, 0x4047d8, a3);
                    if (v0_26) 
                        goto addr_402664_62;
                    s1_20 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(s1_20) + 1);
                }
                s0_19 = s0_19 + 20;
            }
            goto label_65;
        }
    }
    fun_4053b0("buf or dstDirPath is NULL!", 0, 0x100, a3);
    addr_402678_71:
    v0_27 = 0xffffffff;
    addr_4026e8_73:
    return v0_27;
    label_65:
    v0_27 = 0;
    goto addr_4026e8_73;
    addr_402690_45:
    s7_28 = v0_24;
    a0_29 = reinterpret_cast<int32_t>("getFileEntryPath failed!");
    addr_4026dc_76:
    fun_4053b0(a0_29, a1_22, a2_23, a3);
    v0_27 = s7_28;
    goto addr_4026e8_73;
    addr_4026d0_52:
    s7_28 = v0_25;
    a0_29 = reinterpret_cast<int32_t>("write file data to buf failed!");
    goto addr_4026dc_76;
    addr_402664_62:
    fun_405350("make directory %s failed!\n", reinterpret_cast<int32_t>(sp5) + 32, 0x4047d8, a3);
    goto addr_402678_71;
}

struct s0* fun_402810(void* a0) {
    struct s0* a2_2;
    struct s0* a3_3;
    struct s0* v0_4;
    void* a0_5;
    uint32_t t8_6;
    int32_t v1_7;
    uint32_t v0_8;
    struct s0* hi9;

    if (!a0) {
        fun_4053b0("str is null ptr", 0x7fff0000, a2_2, a3_3);
        v0_4 = reinterpret_cast<struct s0*>(0);
    } else {
        a0_5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(a0) + 1);
        v0_4 = reinterpret_cast<struct s0*>(0);
        t8_6 = 0;
        while (v1_7 = *reinterpret_cast<signed char*>(reinterpret_cast<int32_t>(a0_5) - 1), !!v1_7) {
            if (t8_6 >= 12) 
                goto label_12;
            if (v1_7 != 34) {
                ++t8_6;
                v0_8 = v1_7 + ((reinterpret_cast<uint32_t>(v0_4) << 5) - reinterpret_cast<uint32_t>(v0_4));
                if (1) {
                    hi9 = reinterpret_cast<struct s0*>(v0_8 % 0x7fffffff);
                } else {
                    hi9 = reinterpret_cast<struct s0*>(v0_8 % 0x7fffffff);
                }
                v0_4 = hi9;
            }
            if (!a0_5) 
                goto label_20;
            a0_5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(a0_5) + 1);
        }
        goto addr_402894_22;
    }
    addr_4028a8_23:
    return v0_4;
    addr_402894_22:
    goto addr_4028a8_23;
    label_12:
    return v0_4;
    label_20:
    goto addr_4028a8_23;
}

int32_t fun_405340(int32_t a0, struct s0* a1, struct s0* a2);

int32_t fun_403048(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t v0_5;
    struct s0* a2_6;
    int32_t v0_7;
    int32_t v0_8;

    v0_5 = fun_405550("/dev/slp_flash_chrdev", 0, a2, a3);
    if (v0_5 != -1) {
        a2_6 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 56 + 24);
        v0_7 = fun_405340(v0_5, 0x4001df00, a2_6);
        if (v0_7 == -1) 
            goto addr_4030ac_8;
    } else {
        fun_4053b0("UC: open device failed.", 0, a2, a3, "UC: open device failed.", 0, a2, a3);
        goto addr_4030c0_13;
    }
    fun_405590(v0_5, 0x4001df00, a2_6, a3);
    v0_8 = 0;
    addr_4030d4_18:
    return v0_8;
    addr_4030ac_8:
    fun_4053b0("UC: ioctl failed.", 0x4001df00, a2_6, a3, "UC: ioctl failed.", 0x4001df00, a2_6, a3);
    fun_405590(v0_5, 0x4001df00, a2_6, a3);
    addr_4030c0_13:
    v0_8 = -1;
    goto addr_4030d4_18;
}

int32_t fun_4028b0(void* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    struct s0* v0_5;
    int32_t a0_6;
    int32_t v0_7;

    if (a0) {
        if (a1) {
            v0_5 = fun_402810(a0);
            if (v0_5) 
                goto label_8; else 
                goto addr_4028e8_9;
        }
    }
    a0_6 = reinterpret_cast<int32_t>("NULL == srcStr || NULL == hashStr");
    addr_4028f4_13:
    fun_4053b0(a0_6, a1, a2, a3);
    v0_7 = -1;
    addr_402930_17:
    return v0_7;
    label_8:
    fun_4054a0(a1, 0, 8, a3);
    fun_405370(a1, 9, 0x404a30, v0_5);
    v0_7 = 0;
    goto addr_402930_17;
    addr_4028e8_9:
    a0_6 = reinterpret_cast<int32_t>("calculate hash value failed!");
    goto addr_4028f4_13;
}

int32_t md5_make_digest = 0x405300;

void fun_405390(void* a0, struct s0* a1, struct s0* a2, ...) {
    int32_t t9_4;

    t9_4 = md5_make_digest;
    goto t9_4;
}

signed char g4156f0 = 0;

int32_t fun_402944(struct s0* a0) {
    void* sp2;
    int32_t t8_3;
    struct s0* a0_4;
    struct s0* a1_5;
    struct s0* a2_6;
    struct s0* a3_7;
    int32_t v0_8;
    struct s0* a3_9;
    int32_t v0_10;
    struct s0* a3_11;
    int32_t v0_12;
    struct s0* a1_13;
    struct s0* a3_14;
    int32_t a3_15;
    int32_t a0_16;
    struct s0* a3_17;
    int32_t a3_18;

    sp2 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 56);
    t8_3 = g4156f0;
    a0_4 = reinterpret_cast<struct s0*>(sp2) + 3;
    if (!t8_3) {
        a1_5 = reinterpret_cast<struct s0*>(12);
        a2_6 = reinterpret_cast<struct s0*>(0x600c0);
        v0_8 = fun_403048(a0_4, 12, 0x600c0, a3_7);
        if (v0_8) 
            goto addr_4029a4_6;
    } else {
        a2_6 = reinterpret_cast<struct s0*>(12);
        fun_405440(a0_4, 0x4156f0, 12, a3_9);
        goto addr_4029b4_11;
    }
    addr_4029b4_11:
    if (1) {
        v0_10 = -1;
    } else {
        a1_5 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp2) + 36);
        v0_12 = fun_4028b0(reinterpret_cast<int32_t>(sp2) + 24, a1_5, a2_6, a3_11);
        if (!v0_12) 
            goto label_18; else 
            goto addr_4029c8_19;
    }
    addr_4029fc_20:
    return v0_10;
    label_18:
    a1_13 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp2) + 36);
    fun_4053a0(a0, a1_13, 8, a3_14, a0, a1_13, 8, a3_15);
    v0_10 = 0;
    goto addr_4029fc_20;
    addr_4029c8_19:
    a0_16 = reinterpret_cast<int32_t>("make hash string failed!");
    addr_4029d4_26:
    fun_4053b0(a0_16, a1_5, a2_6, a3_17, a0_16, a1_5, a2_6, a3_18);
    v0_10 = -1;
    goto addr_4029fc_20;
    addr_4029a4_6:
    a0_16 = reinterpret_cast<int32_t>("read flash failed!");
    goto addr_4029d4_26;
}

int32_t des_min_do = 0x405300;

struct s0* fun_4055a0(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = des_min_do;
    goto t9_5;
}

int32_t fun_402a0c(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    void* a0_6;
    int32_t v0_7;
    int32_t a0_8;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 56);
    if (a0) {
        if (a1) {
            a0_6 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(sp5) + 24);
            fun_405390(a0_6, a1, a2, a0_6, a1, a2);
            a1 = reinterpret_cast<struct s0*>(sp5) + 3;
            v0_7 = fun_4054e0(a0, a1, a2, a3);
            if (!v0_7) 
                goto label_10; else 
                goto addr_402a60_11;
        }
    }
    a0_8 = reinterpret_cast<int32_t>("digest or srcBuf is NULL!");
    addr_402a6c_15:
    fun_4053b0(a0_8, a1, a2, a3, a0_8, a1, a2, a3);
    v0_7 = -1;
    addr_402a7c_18:
    return v0_7;
    label_10:
    goto addr_402a7c_18;
    addr_402a60_11:
    a0_8 = reinterpret_cast<int32_t>("file has been destroyed!");
    goto addr_402a6c_15;
}

struct s8 {
    int32_t f0;
    int32_t f4;
    int16_t f8;
    signed char[2] pad12;
    struct s0* f12;
};

int32_t fun_402e50(struct s8* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    struct s0* v0_5;
    int32_t v0_6;

    if (a0) {
        if (reinterpret_cast<int32_t>(0) < reinterpret_cast<int32_t>(a1)) {
            a0->f0 = -1;
            v0_5 = fun_404108(a1, a1, a2);
            a0->f4 = 0x23cd01ab;
            a0->f12 = v0_5;
            v0_6 = 0;
            a0->f8 = 0xab01;
            goto addr_402ea8_8;
        }
    }
    fun_4053b0("flashMsgHeaderStr is NULL or flashMsgBufLen is invalid!", a1, a2, a3);
    v0_6 = -1;
    addr_402ea8_8:
    return v0_6;
}

int32_t open = 0x405300;

int32_t fun_405550(void* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = open;
    goto t9_5;
}

int32_t ioctl = 0x405300;

int32_t fun_405340(int32_t a0, struct s0* a1, struct s0* a2) {
    int32_t t9_4;

    t9_4 = ioctl;
    goto t9_4;
}

int32_t close = 0x405300;

void fun_405590(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = close;
    goto t9_5;
}

int32_t fseek = 0x405300;

void fun_405410(struct s0* a0, struct s0* a1, struct s0* a2) {
    int32_t t9_4;

    t9_4 = fseek;
    goto t9_4;
}

int32_t ftell = 0x405300;

struct s0* fun_4054b0(struct s0* a0, struct s0* a1, struct s0* a2) {
    int32_t t9_4;

    t9_4 = ftell;
    goto t9_4;
}

struct s0* fun_4031ec(struct s0* a0, struct s0* a1) {
    struct s0* s0_3;
    struct s0* a3_4;
    struct s0* v0_5;
    struct s0* v0_6;
    int32_t a0_7;
    struct s0* a3_8;
    int32_t a3_9;
    struct s0* v0_10;
    struct s0* a0_11;
    struct s0* v0_12;
    struct s0* a3_13;
    int32_t a3_14;
    struct s0* a1_15;
    struct s0* a3_16;
    int32_t a3_17;

    if (a0) {
        if (a1) {
            s0_3 = a1;
            a1 = a0;
            fun_4053a0(reinterpret_cast<int32_t>(__zero_stack_offset()) - 56 + 24, a1, 16, a3_4);
            fun_404108(0, a1, 16);
            v0_5 = fun_404108(0, a1, 16);
            v0_6 = fun_404108(0, a1, 16);
            if (!reinterpret_cast<int1_t>(v0_6 == 0xab01cd23)) 
                goto label_14; else 
                goto addr_403288_15;
        }
    }
    a0_7 = reinterpret_cast<int32_t>("NULL == flashMsgBuf || NULL == srcDecryptBufLen!");
    addr_4032a0_19:
    fun_4053b0(a0_7, a1, 16, a3_8, a0_7, a1, 16, a3_9);
    v0_10 = reinterpret_cast<struct s0*>(0);
    addr_4032f0_23:
    return v0_10;
    label_14:
    addr_403298_25:
    a0_7 = reinterpret_cast<int32_t>("flash data is wrong!");
    goto addr_4032a0_19;
    addr_403288_15:
    if (0) {
        a0_11 = v0_5 + 0xfffffffe;
        s0_3->f0 = a0_11;
        v0_12 = fun_4053d0(a0_11, a1, 16, a0_11, a1, 16);
        if (!v0_12) 
            goto addr_4032bc_30;
    } else {
        goto addr_403298_25;
    }
    fun_4054a0(v0_12, 0, s0_3->f0, a3_13, v0_12, 0, s0_3->f0, a3_14);
    a1_15 = a0 + 2;
    fun_4053a0(v0_12, a1_15, s0_3->f0, a3_16, v0_12, a1_15, s0_3->f0, a3_17);
    v0_10 = v0_12;
    goto addr_4032f0_23;
    addr_4032bc_30:
    a0_7 = reinterpret_cast<int32_t>("malloc srcDecryptBuf failed!");
    goto addr_4032a0_19;
}

struct s0* fun_402c54(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    int32_t v0_6;
    int32_t a0_7;
    struct s0* v0_8;
    void* t8_9;
    uint32_t hi10;
    struct s0* v0_11;
    struct s0* s2_12;
    struct s0* s4_13;
    struct s0* s1_14;
    struct s0* a0_15;
    struct s0* a1_16;
    struct s0* a2_17;
    struct s0* v0_18;
    struct s0* v0_19;
    int32_t v0_20;
    struct s0* a0_21;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 96);
    if (a0) {
        if (reinterpret_cast<int32_t>(a1) > reinterpret_cast<int32_t>(0)) {
            if (a2) {
                v0_6 = fun_402944(reinterpret_cast<int32_t>(sp5) + 52);
                if (!v0_6) 
                    goto label_10; else 
                    goto addr_402cc4_11;
            }
        }
    }
    a0_7 = reinterpret_cast<int32_t>("NULL == srcDecryptBuf || 0 >= srcDecryptBufLen || NULL == desMd5Len!");
    addr_402cd0_15:
    fun_4053b0(a0_7, a1, a2, a3, a0_7, a1, a2, a3);
    addr_402cd8_17:
    v0_8 = reinterpret_cast<struct s0*>(0);
    addr_402e2c_19:
    return v0_8;
    label_10:
    t8_9 = reinterpret_cast<void*>(reinterpret_cast<uint32_t>(a1) + 0xfffffff7);
    if (!1) 
        goto addr_402ce8_22;
    hi10 = reinterpret_cast<uint32_t>(reinterpret_cast<int32_t>(t8_9) % 8);
    addr_402cf0_24:
    v0_11 = fun_4053d0(a1, a1, a2, a1, a1, a2);
    s2_12 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(t8_9) - hi10 + 8);
    if (v0_11) {
        fun_4054a0(v0_11, 0, a1, a3, v0_11, 0, a1, a3);
        s4_13 = a1 + 0xfffffffe;
        s1_14 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(v0_11) + reinterpret_cast<uint32_t>(s4_13));
        fun_4053a0(v0_11, a0, a1, a3, v0_11, a0, a1, a3);
        a0_15 = reinterpret_cast<struct s0*>(sp5) + 4;
        fun_4053a0(a0_15, s1_14, 16, a3, a0_15, s1_14, 16, a3);
        a1_16 = reinterpret_cast<struct s0*>(0);
        a2_17 = reinterpret_cast<struct s0*>(16);
        fun_4054a0(s1_14, 0, 16, a3, s1_14, 0, 16, a3);
        v0_18 = fun_4053d0(s2_12, 0, 16, s2_12, 0, 16);
        if (!v0_18) 
            goto addr_402d80_39;
    } else {
        a0_7 = reinterpret_cast<int32_t>("malloc srcBuf failed!");
        goto addr_402cd0_15;
    }
    fun_4054a0(v0_18, 0, s2_12, a3, v0_18, 0, s2_12, a3);
    a3 = s2_12;
    a1_16 = s4_13;
    a2_17 = v0_18;
    v0_19 = fun_4055a0(v0_11, a1_16, a2_17, a3);
    if (reinterpret_cast<int32_t>(0) >= reinterpret_cast<int32_t>(v0_19)) 
        goto addr_402dc8_48;
    fun_4055b0(v0_11, a1_16, a2_17, a3);
    a1_16 = v0_18;
    a2_17 = v0_19;
    v0_20 = fun_402a0c(reinterpret_cast<int32_t>(sp5) + 32, a1_16, a2_17, a3);
    if (v0_20) 
        goto addr_402e04_55;
    a2->f0 = v0_19;
    v0_8 = v0_18;
    goto addr_402e2c_19;
    addr_402e04_55:
    fun_4053b0("md5_check failed!", a1_16, a2_17, a3, "md5_check failed!", a1_16, a2_17, a3);
    a0_21 = v0_18;
    addr_402e14_60:
    fun_4055b0(a0_21, a1_16, a2_17, a3);
    goto addr_402cd8_17;
    addr_402dc8_48:
    fun_4053b0("des_min_do failed!", a1_16, a2_17, a3, "des_min_do failed!", a1_16, a2_17, a3);
    fun_4055b0(v0_11, a1_16, a2_17, a3);
    a0_21 = v0_18;
    goto addr_402e14_60;
    addr_402d80_39:
    fun_4053b0("malloc dstBuf failed!", 0, 16, a3, "malloc dstBuf failed!", 0, 16, a3);
    a0_21 = v0_11;
    goto addr_402e14_60;
    addr_402ce8_22:
    hi10 = reinterpret_cast<uint32_t>(reinterpret_cast<int32_t>(t8_9) % 8);
    goto addr_402cf0_24;
    addr_402cc4_11:
    a0_7 = reinterpret_cast<int32_t>("get encrpt key failed!");
    goto addr_402cd0_15;
}

struct s0* fun_4017a8(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* s3_6;
    struct s0* a0_7;
    struct s0* a0_8;
    struct s0* v0_9;
    struct s0* v0_10;
    struct s0* v0_11;
    int32_t a0_12;
    struct s0* v0_13;
    struct s0* a1_14;
    struct s0* a2_15;
    int32_t v0_16;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 64);
    if (a0) {
        if (a1) {
            s3_6 = a1;
            a0_7 = reinterpret_cast<struct s0*>(sp5) + 3;
            fun_4053a0(a0_7, a0, 4, a3, a0_7, a0, 4, a3);
            a1 = reinterpret_cast<struct s0*>(&a0->f4);
            a2 = reinterpret_cast<struct s0*>(4);
            a0_8 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp5) + 28);
            fun_4053a0(a0_8, a1, 4, a3, a0_8, a1, 4, a3);
            v0_9 = fun_404108(0, a1, 4);
            v0_10 = fun_404108(0, a1, 4);
            v0_11 = fun_4053d0(v0_9, a1, 4);
            if (v0_11) 
                goto label_16; else 
                goto addr_401838_17;
        }
    }
    a0_12 = reinterpret_cast<int32_t>("ucCmpBuf is NULL, or ucCmpLen is NULL!");
    addr_401844_21:
    fun_4053b0(a0_12, a1, a2, a3, a0_12, a1, a2, a3);
    addr_40184c_23:
    v0_13 = reinterpret_cast<struct s0*>(0);
    addr_4018a4_25:
    return v0_13;
    label_16:
    fun_4054a0(v0_11, 0, v0_9, a3);
    a1_14 = reinterpret_cast<struct s0*>(sp5) + 4;
    a2_15 = a0 + 1;
    v0_16 = fun_405330(v0_11, a1_14, a2_15, v0_10);
    if (v0_16) 
        goto addr_40187c_32;
    v0_13 = v0_11;
    s3_6->f0 = v0_9;
    goto addr_4018a4_25;
    addr_40187c_32:
    fun_4053b0("Uncompress buf failed!", a1_14, a2_15, v0_10);
    fun_4055b0(v0_11, a1_14, a2_15, v0_10);
    goto addr_40184c_23;
    addr_401838_17:
    a0_12 = reinterpret_cast<int32_t>("No enough memory!");
    goto addr_401844_21;
}

struct s0* g423908 = reinterpret_cast<struct s0*>(0);

int32_t g42390c = 0;

int32_t g423910 = 0;

int32_t g423914 = 0;

int32_t fun_402718(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    struct s0* s0_5;
    int32_t v0_6;
    int32_t a0_7;
    int32_t t8_8;
    struct s0* a0_9;
    struct s0* v0_10;
    uint32_t v0_11;
    int32_t v0_12;

    if (a0) {
        if (reinterpret_cast<int32_t>(a1) > reinterpret_cast<int32_t>(0)) {
            if (a2) {
                s0_5 = a2;
                v0_6 = fun_4054d0(a2, a1, a2);
                if (v0_6) 
                    goto label_10; else 
                    goto addr_40275c_11;
            }
        }
    }
    a0_7 = reinterpret_cast<int32_t>("NULL == unpackSrcDataBuf || 0 >= unpackSrcDataLen || NULL == dstDirPath!");
    addr_4027e0_15:
    fun_4053b0(a0_7, a1, a2, a3);
    t8_8 = -1;
    addr_4027ec_18:
    return t8_8;
    label_10:
    fun_405570(v0_6, a1, a2, a3);
    addr_402798_23:
    a2 = reinterpret_cast<struct s0*>(16);
    g423908 = reinterpret_cast<struct s0*>(0);
    g42390c = 0;
    g423910 = 0;
    g423914 = 0;
    fun_4053a0(0x423908, a0, 16, a3);
    a0_9 = g423908;
    v0_10 = fun_404108(a0_9, a0, 16);
    a1 = s0_5;
    g423908 = v0_10;
    v0_11 = fun_4024a0(a0 + 2, a1, 16, a3);
    if (!v0_11) {
        t8_8 = 0;
        goto addr_4027ec_18;
    } else {
        a0_7 = reinterpret_cast<int32_t>("write buf to files failed!");
        goto addr_4027e0_15;
    }
    addr_40275c_11:
    v0_12 = fun_4013ec(s0_5, 0x1c0, a2, a3);
    if (v0_12) 
        goto addr_402770_34;
    goto addr_402798_23;
    addr_402770_34:
    fun_405350("make directory %s failed!\n", s0_5, a2, a3);
    t8_8 = -1;
    goto addr_4027ec_18;
}

struct s0* fun_403308(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    struct s0* v0_5;
    struct s0* v0_6;
    struct s0* v0_7;
    struct s0* v0_8;

    if (a0) {
        if (a1) {
            v0_5 = fun_405480(a0, 0x404724, a2, a3);
            if (v0_5) 
                goto label_8; else 
                goto addr_403354_9;
        }
    }
    fun_4053b0("srcFileName or msgLen is NULL!", a1, a2, a3);
    addr_403368_15:
    v0_6 = reinterpret_cast<struct s0*>(0);
    addr_4033ec_17:
    return v0_6;
    label_8:
    fun_405410(v0_5, 0, 2);
    v0_7 = fun_4054b0(v0_5, 0, 2);
    fun_405410(v0_5, 0, 0);
    v0_8 = fun_4053d0(v0_7, 0, 0);
    if (!v0_8) 
        goto addr_4033a8_28;
    fun_405460(v0_8, 1, v0_7, v0_5);
    fun_4054c0(v0_5, 1, v0_7, v0_5);
    v0_6 = v0_8;
    a1->f0 = v0_7;
    goto addr_4033ec_17;
    addr_4033a8_28:
    fun_4053b0("No enough memory!", 0, 0, a3);
    fun_4054c0(v0_5, 0, 0, a3);
    goto addr_403368_15;
    addr_403354_9:
    fun_405350("Can not open %s!\n", a0, a2, a3);
    goto addr_403368_15;
}

int32_t fun_403408(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* s1_6;
    struct s0* a1_7;
    struct s0* v0_8;
    int32_t v0_9;
    int32_t a0_10;
    struct s0* a0_11;
    struct s0* s0_12;
    struct s0* v0_13;
    int32_t a0_14;
    struct s0* v0_15;
    int32_t v0_16;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 64);
    s1_6 = a0;
    if (a0) {
        if (a1) {
            a1_7 = reinterpret_cast<struct s0*>(sp5) + 3;
            v0_8 = fun_4031ec(a0, a1_7);
            if (!v0_8) 
                goto label_8; else 
                goto addr_40345c_9;
        }
    }
    fun_4053b0("NULL == flashMsgBuf || NULL == dstDirPathName", a1, a2, a3);
    addr_403488_15:
    v0_9 = -1;
    addr_40353c_17:
    return v0_9;
    label_8:
    addr_40346c_19:
    a0_10 = reinterpret_cast<int32_t>("delHeaderForMsg failed!");
    addr_403474_20:
    fun_4053b0(a0_10, a1_7, a2, a3);
    a0_11 = s1_6;
    addr_403480_23:
    fun_4055b0(a0_11, a1_7, a2, a3);
    goto addr_403488_15;
    addr_40345c_9:
    s0_12 = v0_8;
    if (0) {
        fun_4055b0(s1_6, a1_7, a2, a3);
        a1_7 = reinterpret_cast<struct s0*>(0);
        a2 = reinterpret_cast<struct s0*>(sp5) + 4;
        v0_13 = fun_402c54(s0_12, 0, a2, a3);
        if (v0_13) 
            goto addr_4034ac_31;
    } else {
        goto addr_40346c_19;
    }
    addr_4034bc_34:
    a0_14 = reinterpret_cast<int32_t>("encrypt buf failed!");
    addr_403520_36:
    fun_4053b0(a0_14, 0, a2, a3);
    a0_11 = s0_12;
    goto addr_403480_23;
    addr_4034ac_31:
    s1_6 = v0_13;
    if (0) {
        fun_4055b0(s0_12, 0, a2, a3);
        a1_7 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(sp5) + 28);
        v0_15 = fun_4017a8(s1_6, a1_7, a2, a3);
        if (v0_15) 
            goto addr_4034e0_46;
    } else {
        goto addr_4034bc_34;
    }
    addr_4034f0_49:
    a0_10 = reinterpret_cast<int32_t>("uncompress buf failed!");
    goto addr_403474_20;
    addr_4034e0_46:
    s0_12 = v0_15;
    if (0) {
        fun_4055b0(s1_6, a1_7, a2, a3);
        a1_7 = reinterpret_cast<struct s0*>(0);
        a2 = a1;
        v0_16 = fun_402718(s0_12, 0, a2, a3);
        if (v0_16) 
            goto addr_403518_57;
    } else {
        goto addr_4034f0_49;
    }
    fun_4055b0(s0_12, 0, a2, a3);
    v0_9 = 0;
    goto addr_40353c_17;
    addr_403518_57:
    a0_14 = reinterpret_cast<int32_t>("unpack uc data failed!");
    goto addr_403520_36;
}

struct s0* fun_403150(int32_t* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    struct s0* v0_5;
    int32_t a0_6;
    int32_t v0_7;
    struct s0* v0_8;

    if (a0) {
        v0_5 = fun_4053d0(0x10000, a1, a2);
        if (!v0_5) 
            goto addr_403180_6;
    } else {
        a0_6 = reinterpret_cast<int32_t>("flashMsgBufLen is NULL");
        goto addr_40318c_9;
    }
    fun_4054a0(v0_5, 0, 0x10000, a3);
    a1 = reinterpret_cast<struct s0*>(0x10000);
    a2 = reinterpret_cast<struct s0*>(0x40000);
    v0_7 = fun_403048(v0_5, 0x10000, 0x40000, a3);
    if (v0_7) 
        goto addr_4031c0_16;
    v0_8 = v0_5;
    *a0 = 0x10000;
    addr_4031d8_19:
    return v0_8;
    addr_4031c0_16:
    a0_6 = reinterpret_cast<int32_t>("read flash failed!");
    addr_40318c_9:
    fun_4053b0(a0_6, a1, a2, a3);
    v0_8 = reinterpret_cast<struct s0*>(0);
    goto addr_4031d8_19;
    addr_403180_6:
    a0_6 = reinterpret_cast<int32_t>("malloc flashMsgBuf failed!");
    goto addr_40318c_9;
}

struct s0* fun_40227c(struct s0* a0, struct s0* a1) {
    struct s0* s5_3;
    struct s0* a3_4;
    struct s0* a3_5;
    int32_t v0_6;
    int32_t a0_7;
    struct s0* a3_8;
    struct s0* v0_9;
    struct s0* v0_10;
    struct s0* a3_11;
    struct s0* v0_12;
    struct s0* a3_13;
    struct s0* a3_14;
    uint32_t v0_15;
    struct s0* a3_16;
    struct s0* a3_17;

    if (a0) {
        if (a1) {
            s5_3 = a1;
            g423908 = reinterpret_cast<struct s0*>(0);
            g42390c = 0;
            g423910 = 0;
            g423914 = 0;
            fun_4054a0(0x419904, 0, 0xa004, a3_4);
            a1 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 64 + 24);
            g415700 = 0;
            v0_6 = fun_401f58(a0, a1, 0xa004, a3_5);
            if (!v0_6) 
                goto label_10; else 
                goto addr_402300_11;
        }
    }
    a0_7 = reinterpret_cast<int32_t>("srcDirPath or srcCompressBufLen is NULL!");
    addr_40230c_15:
    fun_4053b0(a0_7, a1, 0xa004, a3_8);
    addr_402314_17:
    v0_9 = reinterpret_cast<struct s0*>(0);
    addr_4023bc_19:
    return v0_9;
    label_10:
    g423910 = 16;
    g42390c = 0;
    g423914 = 0xa004;
    g423908 = reinterpret_cast<struct s0*>(0xa014);
    v0_10 = fun_4053d0(0xa014, a1, 0xa004);
    if (!v0_10) 
        goto addr_40234c_24;
    fun_4054a0(v0_10, 0, 0xa014, a3_11);
    v0_12 = fun_404108(0xa014, 0, 0xa014);
    g423908 = v0_12;
    fun_4053a0(v0_10, 0x423908, 16, a3_13);
    v0_15 = fun_401c8c(v0_10 + 2, a0, 16, a3_14);
    if (v0_15) 
        goto addr_402398_35;
    s5_3->f0 = reinterpret_cast<struct s0*>(0xa014);
    v0_9 = v0_10;
    goto addr_4023bc_19;
    addr_402398_35:
    fun_4053b0("write EFS ERROR!", a0, 16, a3_16);
    fun_4055b0(v0_10, a0, 16, a3_17);
    goto addr_402314_17;
    addr_40234c_24:
    a0_7 = reinterpret_cast<int32_t>("malloc imgBufPtr failed!");
    goto addr_40230c_15;
    addr_402300_11:
    a0_7 = reinterpret_cast<int32_t>("create dir tree failed!");
    goto addr_40230c_15;
}

struct s0* fun_401680(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    struct s0* s4_5;
    struct s0* s2_6;
    struct s0* v0_7;
    struct s0* s5_8;
    struct s0* v0_9;
    struct s0* v0_10;
    struct s0* v0_11;
    struct s0* v0_12;
    int32_t v0_13;
    struct s0* a0_14;

    s4_5 = a2;
    if (a2) {
        if (a0) {
            if (a1) {
                s2_6 = a1;
                v0_7 = fun_4054f0(a1);
                s5_8 = v0_7 + 1;
                v0_9 = fun_4053d0(s5_8, a1, a2);
                if (v0_9) 
                    goto label_12; else 
                    goto addr_4016f0_13;
            }
        }
    }
    fun_4053b0("NULL == ucCmpLen || NULL == srcCompressBuf || 0 >= srcCompressBufLen!", a1, a2, a3);
    addr_40170c_19:
    v0_10 = reinterpret_cast<struct s0*>(0);
    addr_401784_21:
    return v0_10;
    label_12:
    fun_4054a0(v0_9, 0, s5_8, a3);
    v0_11 = fun_404108(s2_6, 0, s5_8);
    v0_12 = fun_404108(v0_7, 0, s5_8);
    a1 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 64 + 24);
    a2 = a0;
    v0_9->f0 = v0_11;
    a3 = s2_6;
    v0_9->f4 = v0_12;
    v0_13 = fun_405530(v0_9 + 1, a1, a2, a3);
    if (v0_13) 
        goto addr_401758_32;
    v0_10 = v0_9;
    s4_5->f0 = v0_7 + 1;
    goto addr_401784_21;
    addr_401758_32:
    fun_4053b0("Compress buf failed!", a1, a2, a3);
    fun_4055b0(a0, a1, a2, a3);
    a0_14 = v0_9;
    addr_401704_40:
    fun_4055b0(a0_14, a1, a2, a3);
    goto addr_40170c_19;
    addr_4016f0_13:
    fun_4053b0("No enough memory!", a1, a2, a3);
    a0_14 = a0;
    goto addr_401704_40;
}

struct s9 {
    signed char[8] pad8;
    struct s0* f8;
};

struct s0* fun_402a88(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    int32_t v0_6;
    int32_t a0_7;
    struct s0* v0_8;
    void* t8_9;
    struct s9* s1_10;
    struct s0* s3_11;
    struct s0* s1_12;
    struct s0* v0_13;
    struct s0* a2_14;
    void* a0_15;
    struct s0* a1_16;
    struct s0* v0_17;
    struct s0* v0_18;
    struct s0* a0_19;
    struct s0* a1_20;
    struct s0* a0_21;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 96);
    if (a0) {
        if (reinterpret_cast<int32_t>(0) < reinterpret_cast<int32_t>(a1)) {
            v0_6 = fun_402944(reinterpret_cast<int32_t>(sp5) + 52);
            if (!v0_6) 
                goto label_8; else 
                goto addr_402af8_9;
        }
    }
    a0_7 = reinterpret_cast<int32_t>("src buf is NULL or src len is invalid!");
    addr_402b04_13:
    fun_4053b0(a0_7, a1, a2, a3, a0_7, a1, a2, a3);
    addr_402b0c_15:
    v0_8 = reinterpret_cast<struct s0*>(0);
    addr_402c2c_17:
    return v0_8;
    label_8:
    t8_9 = reinterpret_cast<void*>(reinterpret_cast<uint32_t>(a1) + 23);
    s1_10 = reinterpret_cast<struct s9*>(reinterpret_cast<uint32_t>(t8_9) - (reinterpret_cast<uint32_t>(t8_9) & 7));
    s3_11 = reinterpret_cast<struct s0*>(&s1_10->f8);
    s1_12 = reinterpret_cast<struct s0*>(s1_10) + 0x1ffffffe;
    v0_13 = fun_4053d0(s1_12, a1, a2, s1_12, a1, a2);
    if (!v0_13) 
        goto addr_402b30_22;
    fun_4054a0(v0_13, 0, s1_12, a3, v0_13, 0, s1_12, a3);
    fun_4053a0(v0_13, a0, a1, a3, v0_13, a0, a1, a3);
    a2_14 = s1_12;
    a0_15 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(sp5) + 32);
    a1_16 = v0_13;
    fun_405390(a0_15, a1_16, a2_14, a0_15, a1_16, a2_14);
    v0_17 = fun_4053d0(s3_11, a1_16, a2_14, s3_11, a1_16, a2_14);
    if (!v0_17) 
        goto addr_402b90_33;
    fun_4054a0(v0_17, 0, s3_11, a3, v0_17, 0, s3_11, a3);
    a1_16 = a1;
    a2_14 = v0_17;
    a3 = s3_11;
    v0_18 = fun_4055a0(v0_13, a1_16, a2_14, a3);
    if (reinterpret_cast<int32_t>(0) >= reinterpret_cast<int32_t>(v0_18)) 
        goto addr_402bdc_40;
    fun_4055b0(v0_13, a1_16, a2_14, a3);
    a0_19 = reinterpret_cast<struct s0*>(reinterpret_cast<uint32_t>(v0_17) + reinterpret_cast<uint32_t>(v0_18));
    a1_20 = reinterpret_cast<struct s0*>(sp5) + 4;
    fun_4053a0(a0_19, a1_20, 16, a3, a0_19, a1_20, 16, a3);
    v0_8 = v0_17;
    a2->f0 = v0_18 + 2;
    goto addr_402c2c_17;
    addr_402bdc_40:
    fun_4053b0("des_min_do failed!", a1_16, a2_14, a3, "des_min_do failed!", a1_16, a2_14, a3);
    fun_4055b0(v0_13, a1_16, a2_14, a3);
    a0_21 = v0_17;
    addr_402bf8_51:
    fun_4055b0(a0_21, a1_16, a2_14, a3);
    goto addr_402b0c_15;
    addr_402b90_33:
    fun_4053b0("malloc dstBuf failed!", a1_16, a2_14, a3, "malloc dstBuf failed!", a1_16, a2_14, a3);
    a0_21 = v0_13;
    goto addr_402bf8_51;
    addr_402b30_22:
    a0_7 = reinterpret_cast<int32_t>("malloc srcBuf failed!");
    goto addr_402b04_13;
    addr_402af8_9:
    a0_7 = reinterpret_cast<int32_t>("get encrpt key failed!");
    goto addr_402b04_13;
}

struct s0* fun_402eb8(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    void* sp5;
    struct s0* s1_6;
    int32_t v0_7;
    int32_t a0_8;
    struct s0* v0_9;
    struct s0* v0_10;
    struct s0* a1_11;
    struct s0* a0_12;

    sp5 = reinterpret_cast<void*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 56);
    if (a0) {
        if (reinterpret_cast<int32_t>(a1) > reinterpret_cast<int32_t>(0)) {
            s1_6 = a1;
            if (a2) {
                a1 = a1 + 2;
                a2->f0 = a1;
                v0_7 = fun_402e50(reinterpret_cast<int32_t>(sp5) + 24, a1, a2, a3);
                if (!v0_7) 
                    goto label_10; else 
                    goto addr_402f10_11;
            } else {
                a1 = a1 + 2;
            }
        }
    }
    a0_8 = reinterpret_cast<int32_t>("desMd5Buf is NULL or desMd5Len is invalid!");
    addr_402f18_15:
    fun_4053b0(a0_8, a1, a2, a3, a0_8, a1, a2, a3);
    v0_9 = reinterpret_cast<struct s0*>(0);
    addr_402f78_19:
    return v0_9;
    label_10:
    v0_10 = fun_4053d0(0x10000, a1, a2, 0x10000, a1, a2);
    if (!v0_10) 
        goto addr_402f34_24;
    fun_4054a0(v0_10, 0, 0x10000, a3, v0_10, 0, 0x10000, a3);
    a1_11 = reinterpret_cast<struct s0*>(sp5) + 3;
    fun_4053a0(v0_10, a1_11, 16, a3, v0_10, a1_11, 16, a3);
    a0_12 = v0_10 + 2;
    fun_4053a0(a0_12, a0, s1_6, a3, a0_12, a0, s1_6, a3);
    v0_9 = v0_10;
    goto addr_402f78_19;
    addr_402f34_24:
    a0_8 = reinterpret_cast<int32_t>("malloc flashMsgBuf failed!");
    goto addr_402f18_15;
    addr_402f10_11:
    a0_8 = reinterpret_cast<int32_t>("set flash msg header failed!");
    goto addr_402f18_15;
}

int32_t fun_402f90(struct s0* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t v0_5;
    int32_t a0_6;
    int32_t v0_7;
    struct s0* a2_8;
    int32_t v0_9;

    if (a0) {
        if (a1) {
            a1 = reinterpret_cast<struct s0*>(0);
            v0_5 = fun_405550("/dev/slp_flash_chrdev", 0, a2, a3);
            if (v0_5 != -1) 
                goto label_8; else 
                goto addr_402fdc_9;
        }
    }
    a0_6 = reinterpret_cast<int32_t>("buf or buflen invalid!");
    addr_402fe8_13:
    fun_4053b0(a0_6, a1, a2, a3, a0_6, a1, a2, a3);
    addr_402ff0_15:
    v0_7 = -1;
    addr_403038_17:
    return v0_7;
    label_8:
    a2_8 = reinterpret_cast<struct s0*>(reinterpret_cast<int32_t>(__zero_stack_offset()) - 48 + 24);
    v0_9 = fun_405340(v0_5, 0x8001df01, a2_8);
    if (v0_9) 
        goto addr_403010_22;
    fun_405590(v0_5, 0x8001df01, a2_8, a3);
    v0_7 = 0;
    goto addr_403038_17;
    addr_403010_22:
    fun_4053b0("UC: ioctl failed.", 0x8001df01, a2_8, a3, "UC: ioctl failed.", 0x8001df01, a2_8, a3);
    fun_405590(v0_5, 0x8001df01, a2_8, a3);
    goto addr_402ff0_15;
    addr_402fdc_9:
    a0_6 = reinterpret_cast<int32_t>("UC: open device failed.");
    goto addr_402fe8_13;
}

int32_t fgets = 0x405300;

int32_t fun_405380(void* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = fgets;
    goto t9_5;
}

int32_t strchr = 0x405300;

struct s0* fun_405560(void* a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = strchr;
    goto t9_5;
}

int32_t memmove = 0x405300;

void fun_405360(void* a0, uint32_t a1, struct s0* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = memmove;
    goto t9_5;
}

int32_t sscanf = 0x405300;

void fun_405450(void* a0, int32_t a1, void* a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = sscanf;
    goto t9_5;
}

int32_t strncmp = 0x405300;

int32_t fun_405430(void* a0, void* a1, int32_t a2, struct s0* a3) {
    int32_t t9_5;

    t9_5 = strncmp;
    goto t9_5;
}

unsigned char g4156e0 = 0;

uint32_t g4156e4 = 0;

void fun_400e4c() {
    uint32_t v0_1;
    uint32_t v0_2;
    uint32_t v0_3;

    v0_1 = g4156e0;
    if (!v0_1) {
        v0_2 = g4156e4;
        while (v0_2 < 0) {
            v0_3 = v0_2 + 1;
            g4156e4 = v0_3;
            *reinterpret_cast<int32_t*>(0x4155cc + (v0_3 << 2))();
            v0_2 = g4156e4;
        }
        fun_400dc0();
        g4156e0 = 1;
    }
    return;
}

void _init() {
    int32_t t9_1;

    gp = 0x20000;
    gp = gp - 0x3498;
    gp = gp + t9_1;
    fun_400b5c();
}

void _fini() {
    int32_t t9_1;

    gp = 0x20000;
    gp = gp - 0x6b10;
    gp = gp + t9_1;
    fun_4041d4();
}

void fun_405300() {
    gp = 0x410000;
    gp = gp + 0x55d8;
    *reinterpret_cast<int32_t*>(gp + 0x55d8)();
}

void fun_400b58() {
}

void fun_400b60() {
}

void fun_400b68() {
}

void fun_400b70() {
}

struct s0* optarg = reinterpret_cast<struct s0*>(0);

int32_t fun_400b7c(int32_t a0, struct s0* a1) {
    int32_t s1_3;
    struct s0* s5_4;
    uint32_t s0_5;
    int32_t a0_6;
    int32_t v0_7;
    struct s0* a1_8;
    struct s0* a3_9;
    struct s0* a0_10;
    uint32_t v0_11;
    struct s0* a3_12;
    struct s0* a3_13;

    if (a0 >= 3) {
        s1_3 = a0;
        s5_4 = a1;
        s0_5 = 0xffffffff;
        while (1) {
            a0_6 = s1_3;
            while (1) {
                a1 = s5_4;
                v0_7 = fun_405490(a0_6, a1, 0x404514);
                if (v0_7 == -1) 
                    goto addr_400c1c_10;
                if (v0_7 != 100) 
                    break;
                a1_8 = optarg;
                fun_405440(0x4156f0, a1_8, 12, a3_9);
                a0_6 = s1_3;
            }
            if (v0_7 != 0x74) 
                goto label_19;
            a0_10 = optarg;
            v0_11 = fun_405520(a0_10, a1, 0x404514);
            s0_5 = v0_11 & 0xffff;
        }
    }
    addr_400bd8_23:
    fun_4053b0("\t-t <type>\t type is the type of operation.", a1, 0x404514, a3_12);
    addr_400d2c_27:
    fun_4053b0("error: input para invalid!", a1, 0x404514, a3_13);
    return -1;
    addr_400c1c_10:
    if (s0_5 >= 8) {
        goto addr_400d2c_27;
    } else {
        goto *reinterpret_cast<int32_t*>(0x404540 + (s0_5 << 2));
    }
    label_19:
    goto addr_400bd8_23;
}

void fun_400bd0() {
}

void fun_400be4() {
}

void fun_400c00() {
}

void fun_400c24() {
}

void fun_400c3c() {
}

int32_t fun_400c5c() {
    int32_t v0_1;
    int32_t v0_2;
    int32_t a0_3;
    int32_t t8_4;
    struct s0* a1_5;
    struct s0* a2_6;
    struct s0* a3_7;

    v0_1 = fun_40100c();
    if (!v0_1) {
        v0_2 = fun_401180(0x400000);
        if (v0_2) 
            goto addr_4012c0_10;
    } else {
        a0_3 = reinterpret_cast<int32_t>("read user config data failed!");
        goto addr_4012cc_13;
    }
    t8_4 = 0;
    addr_4012d8_15:
    return t8_4;
    addr_4012c0_10:
    a0_3 = reinterpret_cast<int32_t>("read system config data failed!");
    addr_4012cc_13:
    fun_4053b0(a0_3, a1_5, a2_6, a3_7);
    t8_4 = -1;
    goto addr_4012d8_15;
}

void fun_400d5c() {
    fun_400d6c();
}

void fun_400db0() {
}

void fun_400db8() {
}

void fun_400df4() {
}

void fun_400e40() {
}

void fun_400ec0() {
}

void fun_400ec8() {
}

void fun_400f24(int32_t a0) {
}

void fun_400f6c(int32_t a0) {
}

void fun_400fd0(int32_t a0) {
}

void fun_400fe0() {
}

void fun_400ff4(int32_t a0) {
}

void fun_401034() {
}

void fun_40103c() {
}

void fun_401058(int32_t a0) {
}

void fun_401060() {
}

void fun_401080(int32_t a0) {
}

void fun_4010c0(int32_t a0) {
}

struct s10 {
    signed char[17232] pad17232;
    struct s0* f17232;
};

int32_t fun_4010fc(int32_t a0, struct s10* a1, struct s0* a2, struct s0* a3) {
    struct s0* a1_5;
    int32_t v0_6;
    int32_t v0_7;
    int32_t a0_8;
    int32_t v0_9;
    int32_t t8_10;

    a1_5 = reinterpret_cast<struct s0*>(&a1->f17232);
    v0_6 = fun_4037f0(0x404340, a1_5);
    if (!v0_6) {
        v0_7 = fun_401568(0x40437c, a1_5, a2, a3);
        if (v0_7) 
            goto addr_401130_9;
    } else {
        a0_8 = reinterpret_cast<int32_t>("clean repeatitive data failed!");
        goto addr_401160_12;
    }
    v0_9 = fun_40109c(0x400000, a1_5, a2, a3);
    if (v0_9) 
        goto addr_401154_17;
    t8_10 = 0;
    addr_40116c_19:
    return t8_10;
    addr_401154_17:
    a0_8 = reinterpret_cast<int32_t>("save user config data failed!");
    addr_401160_12:
    fun_4053b0(a0_8, a1_5, a2, a3);
    t8_10 = -1;
    goto addr_40116c_19;
    addr_401130_9:
    fun_405350("remove %s failed!\n", 0x40437c, a2, a3);
    t8_10 = -1;
    goto addr_40116c_19;
}

void fun_401120(int32_t a0) {
}

void fun_40113c(int32_t a0) {
}

void fun_401144() {
}

void fun_4011b0(int32_t a0) {
}

struct s11 {
    signed char[16900] pad16900;
    struct s0* f16900;
};

struct s12 {
    signed char[16900] pad16900;
    struct s0* f16900;
};

int32_t fun_401210() {
    int32_t v0_1;
    struct s0* a1_2;
    struct s11* s0_3;
    struct s0* a2_4;
    struct s0* a3_5;
    int32_t v0_6;
    struct s12* s0_7;
    struct s0* a2_8;
    struct s0* a3_9;
    int32_t t8_10;
    struct s0* a2_11;
    struct s0* a3_12;
    struct s0* a2_13;
    struct s0* a3_14;
    int32_t v0_15;
    int32_t a0_16;
    struct s0* a2_17;
    struct s0* a3_18;

    if (!v0_1) {
        a1_2 = reinterpret_cast<struct s0*>(&s0_3->f16900);
        v0_6 = fun_403558(0x4041f0, a1_2, a2_4, a3_5);
        if (v0_6) 
            goto addr_401240_7;
    } else {
        fun_405350("remove %s failed!\n", &s0_7->f16900, a2_8, a3_9);
        t8_10 = -1;
        goto addr_401280_12;
    }
    fun_4053c0("cp -af /tmp/etc/_debug_* /tmp/etc/uc_conf/ 2>/dev/null", a1_2, a2_11, a3_12);
    v0_15 = fun_40109c("cp -af /tmp/etc/_debug_* /tmp/etc/uc_conf/ 2>/dev/null", a1_2, a2_13, a3_14);
    if (v0_15) 
        goto addr_401268_19;
    t8_10 = 0;
    addr_401280_12:
    return t8_10;
    addr_401268_19:
    a0_16 = reinterpret_cast<int32_t>("save user config data to UC zone failed!");
    addr_401274_22:
    fun_4053b0(a0_16, a1_2, a2_17, a3_18);
    t8_10 = -1;
    goto addr_401280_12;
    addr_401240_7:
    a0_16 = reinterpret_cast<int32_t>("get usr data from squash_fs failed!");
    goto addr_401274_22;
}

void fun_401224(int32_t a0) {
}

void fun_40122c() {
}

void fun_40124c(int32_t a0) {
}

void fun_401260() {
}

void fun_4012b0(int32_t a0) {
}

int32_t fun_401310(int32_t a0) {
    return -1;
}

void fun_401318() {
    struct s0* a1_1;
    struct s0* a2_2;
    struct s0* a3_3;
    int32_t v0_4;
    struct s0* a1_5;
    struct s0* a2_6;
    struct s0* a3_7;

    v0_4 = fun_403558(0x4041f0, a1_1, a2_2, a3_3);
    if (!v0_4) {
        goto 0x401340;
    } else {
        fun_4053b0("get usr data from squash_fs failed!", a1_5, a2_6, a3_7);
    }
}

void fun_401338(int32_t a0) {
}

int32_t fun_401378() {
    int32_t v0_1;
    int32_t t8_2;
    struct s0* s0_3;
    struct s0* a2_4;
    struct s0* a3_5;

    if (!v0_1) {
        t8_2 = 0;
    } else {
        fun_405350("remove %s failed!\n", s0_3, a2_4, a3_5);
        t8_2 = -1;
    }
    return t8_2;
}

void fun_401390(int32_t a0) {
}

void fun_4013c4(int32_t a0) {
}

void fun_4013cc() {
}

void fun_401428() {
}

void fun_401438() {
}

void fun_401454() {
}

void fun_40146c() {
}

void fun_401480() {
}

void fun_401490() {
}

void fun_401498() {
}

void fun_4014d0(int32_t a0) {
}

void fun_4014f0() {
}

void fun_4014f8() {
}

void fun_40150c() {
}

void fun_401520(int32_t a0) {
}

void fun_401584(int32_t a0) {
}

void fun_40158c() {
}

void fun_4015a4() {
}

void fun_4015d0(int32_t a0) {
}

int32_t fun_401618() {
    struct s0* a1_1;
    struct s0* a1_2;
    struct s0* a2_3;
    struct s0* a3_4;
    uint32_t v0_5;
    int32_t a0_6;
    int32_t s1_7;
    struct s0* s0_8;
    struct s0* a2_9;
    struct s0* a3_10;
    int32_t s1_11;
    int32_t s0_12;
    int32_t v0_13;
    int32_t t8_14;
    struct s0* s0_15;
    struct s0* s1_16;
    struct s0* a3_17;

    a1_1 = reinterpret_cast<struct s0*>(__zero_stack_offset()) + 3;
    v0_5 = fun_405500(a1_2, a1_1, a2_3, a3_4);
    if (v0_5) {
        a0_6 = s1_7;
    } else {
        fun_401568(s0_8, a1_1, a2_9, a3_10);
        a0_6 = s1_11;
    }
    v0_13 = fun_405470(a0_6, s0_12);
    if (!v0_13) {
        t8_14 = 0;
    } else {
        fun_405350("make symlink %s --> %s failed!\n", s0_15, s1_16, a3_17);
        t8_14 = -1;
    }
    return t8_14;
}

void fun_401634() {
}

void fun_40165c() {
}

void fun_4016cc() {
}

void fun_4016e8() {
}

void fun_4016fc(int32_t a0) {
}

void fun_401708() {
}

void fun_401710() {
}

void fun_401728() {
}

void fun_401734() {
}

struct s13 {
    signed char[4] pad4;
    int32_t f4;
};

void fun_401750() {
    struct s13* s0_1;
    int32_t v0_2;

    s0_1->f4 = v0_2;
}

void fun_401764(int32_t a0) {
}

void fun_40176c() {
}

void fun_401774() {
}

void fun_401808() {
}

void fun_401814() {
}

void fun_401824() {
}

void fun_401830() {
}

void fun_401850() {
}

void fun_401874() {
}

void fun_401888(int32_t a0) {
}

void fun_401890() {
}

void fun_401898() {
}

void fun_40190c() {
}

void fun_401920() {
}

void fun_40193c() {
}

void fun_401948() {
}

void fun_401958() {
}

void fun_4019c0() {
}

void fun_401a00() {
}

void fun_401a20() {
}

void fun_401a5c() {
}

void fun_401a7c() {
}

void fun_401ab4() {
}

void fun_401abc() {
}

void fun_401b48() {
}

void fun_401b80() {
}

void fun_401b9c() {
}

void fun_401be8() {
}

void fun_401c08() {
}

void fun_401c40() {
}

void fun_401c48() {
}

void fun_401cf8() {
}

void fun_401d1c() {
}

void fun_401d44() {
}

void fun_401d74() {
}

struct s14 {
    signed char[8] pad8;
    int32_t f8;
};

void fun_401d80() {
    struct s14* s0_1;
    int32_t v0_2;

    s0_1->f8 = v0_2;
}

struct s15 {
    signed char[80] pad80;
    int32_t f80;
};

void fun_401d88() {
    struct s15* s0_1;
    int32_t v0_2;

    s0_1->f80 = v0_2;
}

void fun_401db0() {
    int32_t s0_1;
    int32_t v0_2;

    *reinterpret_cast<int32_t*>(s0_1 - 4) = v0_2;
}

void fun_401de4() {
}

void fun_401dfc() {
}

void fun_401e1c() {
}

void fun_401e60() {
}

void fun_401e80(int32_t a0) {
}

void fun_401eb4() {
}

void fun_401ed4() {
}

void fun_401f14() {
}

void fun_401f20() {
}

void fun_401fa8(int32_t a0) {
}

void fun_401fd0() {
}

void fun_402004() {
}

void fun_402028() {
}

void fun_402054() {
}

void fun_4020ac() {
}

void fun_4020b4() {
}

void fun_4020e4() {
}

void fun_4020f0() {
}

void fun_402104(int32_t a0) {
}

void fun_402134() {
}

void fun_40215c() {
}

void fun_40219c() {
}

void fun_4021d0() {
    int32_t s1_1;
    int32_t t8_2;

    *reinterpret_cast<int32_t*>(s1_1 - 0x66fc) = t8_2;
}

void fun_4021e0() {
}

void fun_40220c() {
}

void fun_40223c() {
    int32_t s1_1;
    int32_t t8_2;

    *reinterpret_cast<int32_t*>(s1_1 - 0x66fc) = t8_2;
}

void fun_4022f8() {
    int32_t t8_1;

    *reinterpret_cast<int32_t*>(t8_1 + 0x5700) = 0;
}

void fun_402318() {
}

void fun_402358(int32_t a0) {
}

void fun_402370() {
}

void fun_402384() {
    int32_t s3_1;
    int32_t v0_2;

    *reinterpret_cast<int32_t*>(s3_1 + 0x3908) = v0_2;
}

void fun_402390() {
}

void fun_4023a0(int32_t a0) {
}

void fun_4023a8() {
}

void fun_4023b0() {
}

void fun_402418() {
}

void fun_402440(int32_t a0) {
}

void fun_402460() {
}

void fun_4024f0() {
}

void fun_402514() {
}

void fun_40253c() {
}

void fun_40254c() {
}

void fun_40255c() {
}

void fun_402574() {
}

void fun_4025a4() {
}

void fun_4025b0() {
    int32_t s0_1;
    int32_t v0_2;

    *reinterpret_cast<int32_t*>(s0_1 - 72) = v0_2;
}

void fun_4025b8() {
    int32_t* s0_1;
    int32_t v0_2;

    *s0_1 = v0_2;
}

void fun_4025dc() {
    int32_t s0_1;
    int32_t v0_2;

    *reinterpret_cast<int32_t*>(s0_1 - 84) = v0_2;
}

void fun_402634() {
}

void fun_402650() {
}

void fun_40265c() {
}

void fun_402674(int32_t a0) {
}

void fun_40267c() {
}

void fun_40269c(int32_t a0) {
}

void fun_4026c8() {
}

void fun_402768() {
}

void fun_402780(int32_t a0) {
}

void fun_402788() {
}

void fun_4027bc() {
}

void fun_4027cc() {
    int32_t s1_1;
    int32_t v0_2;

    *reinterpret_cast<int32_t*>(s1_1 + 0x3908) = v0_2;
}

void fun_40282c() {
}

void fun_402850() {
}

void fun_40289c() {
}

void fun_402900() {
}

void fun_402928() {
}

void fun_402984() {
}

void fun_40298c() {
}

void fun_4029b0(int32_t a0) {
}

void fun_4029c0() {
}

void fun_4029e0() {
}

void fun_4029f4() {
}

void fun_402a58() {
}

void fun_402b10() {
}

void fun_402b3c(int32_t a0) {
}

void fun_402b5c() {
}

void fun_402b80() {
}

void fun_402b88() {
}

void fun_402b9c(int32_t a0) {
}

void fun_402ba4() {
}

void fun_402bd4() {
}

void fun_402be8(int32_t a0) {
}

void fun_402bf0() {
}

void fun_402c04() {
}

void fun_402c20() {
}

void fun_402cdc() {
}

void fun_402d14(int32_t a0) {
}

void fun_402d3c() {
}

void fun_402d60() {
}

void fun_402d70() {
}

void fun_402d78() {
}

void fun_402d8c(int32_t a0) {
}

void fun_402d94() {
}

void fun_402dc0() {
}

void fun_402dd4(int32_t a0) {
}

void fun_402ddc() {
}

void fun_402de4() {
}

void fun_402dfc() {
}

void fun_402e0c(int32_t a0) {
}

void fun_402e20() {
}

void fun_402e7c() {
}

void fun_402f24() {
}

void fun_402f40(int32_t a0) {
}

void fun_402f60() {
}

void fun_402f70() {
}

void fun_402ff4() {
}

void fun_403018(int32_t a0) {
}

void fun_403020() {
}

void fun_403028() {
}

void fun_403088(int32_t a0) {
}

void fun_403090() {
}

void fun_4030b4(int32_t a0) {
}

void fun_4030bc() {
}

void fun_4030c4() {
}

void fun_40311c(int32_t a0) {
}

void fun_403124() {
}

void fun_40314c() {
}

void fun_403170(int32_t a0) {
}

void fun_403198() {
}

void fun_4031b8() {
}

void fun_4031cc(int32_t a0) {
}

void fun_403240() {
}

void fun_40324c() {
}

void fun_40325c() {
}

void fun_4032ac() {
}

void fun_4032c8(int32_t a0) {
}

void fun_4032e8() {
}

void fun_403340() {
}

void fun_403364(int32_t a0) {
}

void fun_40336c() {
}

void fun_403384() {
}

void fun_403398() {
}

void fun_4033a0() {
}

void fun_4033b4(int32_t a0) {
}

void fun_4033bc() {
}

void fun_4033c4() {
}

void fun_4033e0() {
}

void fun_40344c() {
}

void fun_403484() {
}

void fun_40348c() {
}

void fun_4034a4() {
}

void fun_4034d8() {
}

void fun_403510() {
}

void fun_40352c() {
}

void fun_403600(int32_t a0) {
}

void fun_403690(int32_t a0) {
}

void fun_4036c4() {
}

void fun_403708() {
}

void fun_403740() {
}

void fun_40376c() {
}

void fun_403794(int32_t a0) {
}

void fun_4037c8() {
}

void fun_403840() {
}

void fun_403860() {
}

void fun_403888() {
}

void fun_4038a0() {
}

void fun_4038cc() {
}

void fun_4038f0() {
}

void fun_403900() {
}

void fun_40391c() {
}

void fun_403938() {
}

void fun_403944() {
}

void fun_403958(int32_t a0) {
}

void fun_403978() {
}

void fun_403988() {
}

void fun_403998() {
}

void fun_4039a8() {
}

void fun_4039b8() {
}

void fun_4039c8() {
}

void fun_4039d8() {
}

void fun_4039e8() {
}

void fun_4039f8() {
}

void fun_403a08() {
}

void fun_403a20(int32_t a0) {
}

void fun_403a28() {
}

void fun_403a50(int32_t a0) {
}

void fun_403a58() {
}

void fun_403a88() {
}

void fun_403aa4() {
}

void fun_403ab4() {
}

void fun_403ac4() {
}

void fun_403ad4() {
}

void fun_403ae4() {
}

void fun_403af4() {
}

void fun_403b04() {
}

void fun_403b14() {
}

void fun_403b20() {
}

void fun_403b2c() {
}

void fun_403b3c() {
}

void fun_403b44() {
}

void fun_403b54() {
}

void fun_403b60() {
}

void fun_403b6c() {
}

void fun_403b78() {
}

void fun_403b8c() {
}

void fun_403b94() {
}

void fun_403ba4() {
}

void fun_403bb0() {
}

void fun_403bc8() {
}

void fun_403bd8() {
}

void fun_403be0() {
}

void fun_403bf0() {
}

void fun_403bf8() {
}

void fun_403c08() {
}

void fun_403c20() {
}

void fun_403c48() {
}

void fun_403c68() {
}

void fun_403c70() {
}

void fun_403cb4() {
}

void fun_403cd4() {
}

void fun_403ce0() {
}

void fun_403cfc() {
}

void fun_403d10() {
}

void fun_403d18() {
}

void fun_403d28() {
}

void fun_403d30() {
}

void fun_403d40() {
}

void fun_403d48() {
}

void fun_403d5c(int32_t a0) {
}

void fun_403dd4(int32_t a0) {
}

void fun_403de8() {
}

void fun_403e00() {
}

void fun_403e08() {
}

void fun_403e30() {
}

void fun_403e48() {
}

void fun_403e74() {
}

void fun_403e90() {
}

void fun_403ea8() {
}

void fun_403eb4() {
}

void fun_403ec8(int32_t a0) {
}

void fun_403ed0() {
}

void fun_403ed8() {
}

void fun_403ef4() {
}

void fun_403f10() {
}

void fun_403f20() {
}

void fun_403f34() {
}

void fun_403f48(int32_t a0) {
}

void fun_403f58() {
}

void fun_403f94() {
}

void fun_403f9c() {
}

void fun_403fc0() {
}

void fun_403fc8() {
}

void fun_404030() {
}

void fun_404044(int32_t a0) {
}

void fun_404054() {
}

void fun_404068(int32_t a0) {
}

void fun_404070() {
}

void fun_404078() {
}

void fun_404080() {
}

void fun_4040ac() {
}

void fun_4040b4() {
}

void fun_4040bc() {
}

void fun_4040d0() {
}

void fun_4040d8() {
}

void fun_40416c() {
}

void fun_404174() {
}

void fun_4041d0() {
}

void fun_4041d8() {
}

void fun_4041e4() {
}

void fun_40531c() {
}

void fun_400d30(int32_t a0) {
}

void fun_400c34() {
}

void fun_400bdc(int32_t a0) {
}

void fun_400c14() {
}

void fun_400c84() {
    goto fun_40109c;
}

void fun_4012a0() {
}

void fun_4010ac(int32_t a0) {
}

void fun_4010e8() {
    int32_t v0_1;

    if (!v0_1) {
        goto "@";
    } else {
        goto 0x401160;
    }
}

void fun_401208() {
    struct s0* a1_1;
    struct s0* a2_2;
    struct s0* a3_3;

    fun_401568(0x404204, a1_1, a2_2, a3_3);
}

struct s16 {
    signed char[17620] pad17620;
    struct s0* f17620;
};

void fun_4012fc() {
    int32_t v0_1;
    struct s16* s0_2;
    struct s0* a2_3;
    struct s0* a3_4;

    if (!v0_1) {
        goto "@";
    } else {
        fun_405350("remove %s failed!\n", &s0_2->f17620, a2_3, a3_4);
    }
}

void fun_400d68() {
}

void fun_400dfc() {
}

void fun_400e48() {
}

void fun_400ef8() {
}

void fun_400ed0() {
}

void fun_400f34() {
}

void fun_400f78(int32_t a0) {
}

void fun_400f90() {
}

void fun_400fa4() {
}

void fun_401008() {
}

void fun_40310c() {
}

void fun_401044() {
}

void fun_400f58() {
}

void fun_400fbc() {
}

void fun_401068() {
}

void fun_401098() {
}

void fun_4010d4() {
    fun_404000();
}

void fun_404028() {
}

void fun_40110c() {
}

void fun_401164() {
}

void fun_403830() {
}

void fun_401128() {
}

void fun_40114c() {
}

void fun_40117c() {
}

void fun_4011bc() {
}

void fun_4011d4() {
}

void fun_4011ec() {
    struct s0* a1_1;
    struct s0* a2_2;
    struct s0* a3_3;

    fun_4053c0("cp -af /tmp/etc/uc_conf/_debug_* /tmp/etc/ 2>/dev/null", a1_1, a2_2, a3_3);
}

void fun_401238(int32_t a0) {
}

void fun_401290() {
}

void fun_401258(int32_t a0) {
}

void fun_401278() {
}

void fun_40101c() {
}

void fun_4012b8() {
}

void fun_4012d0() {
}

void fun_40119c() {
}

void fun_4012e4() {
    struct s0* a1_1;
    struct s0* a2_2;
    struct s0* a3_3;

    fun_401568(0x4044d4, a1_1, a2_2, a3_3);
}

void fun_401324(int32_t a0) {
}

void fun_401350(int32_t a0) {
    if (!a0) {
        goto 0x401394;
    } else {
        fun_4053e0();
    }
}

void fun_4013a8() {
}

void fun_4013d4() {
}

void fun_4013e8() {
}

void fun_40144c(int32_t a0) {
}

void fun_40145c() {
}

void fun_401564() {
}

void fun_401478() {
}

void fun_4014bc() {
}

void fun_4014e0() {
}

void fun_40152c() {
}

void fun_401418() {
}

void fun_401548() {
}

void fun_401594() {
}

void fun_4015e4(int32_t a0, struct s0* a1, struct s0* a2, struct s0* a3) {
    if (a0) {
        if (a1) {
            goto 0x40161c;
        }
    }
    fun_4053b0("NULL == oldPath || NULL == newPath", a1, a2, a3);
    goto 0x401664;
}

void fun_4015b8() {
}

void fun_401610(int32_t a0) {
}

void fun_401624() {
}

void fun_401678() {
}

void fun_401640() {
}

void fun_4016c4(int32_t a0) {
}

void fun_4016d4() {
}

void fun_401720() {
}

void fun_4055c0() {
}

void fun_4017a4() {
}

void fun_404134(int32_t a0) {
}

void fun_4017e8(int32_t a0) {
}

void fun_4017f8() {
}

void fun_401848() {
}

void fun_401860() {
}

void fun_4018c0() {
}

void fun_401904(int32_t a0) {
}

void fun_401974() {
}

void fun_4019dc(int32_t a0) {
}

void fun_4019ec() {
}

void fun_401a74() {
}

void fun_401ae0() {
}

void fun_4019b0() {
}

void fun_401b04() {
}

void fun_401ad0() {
}

void fun_401b64(int32_t a0) {
}

void fun_401b70() {
}

void fun_401c00() {
}

void fun_401c68() {
}

void fun_401c88() {
}

void fun_401c58() {
}

void fun_401d14(int32_t a0) {
}

void fun_401d2c() {
}

void fun_401f54() {
}

void fun_401dc4() {
}

void fun_401d90() {
}

void fun_401da8() {
}

void fun_401efc() {
}

void fun_401b38() {
}

void fun_401ea4() {
}

void fun_401ecc() {
}

void fun_401ee0() {
}

void fun_401fb0() {
}

void fun_401fc8() {
}

void fun_401fe0() {
}

void fun_402080() {
}

void fun_402060(int32_t a0) {
}

void fun_402014() {
}

void fun_4020a4() {
}

void fun_4020c0(int32_t a0) {
}

void fun_402244() {
}

void fun_402070() {
}

void fun_401f98() {
}

void fun_402278() {
}

void fun_4022b8(int32_t a0) {
}

struct s17 {
    signed char[12] pad12;
    int32_t f12;
};

void fun_4022e4() {
    struct s17* s0_1;

    s0_1->f12 = 0;
}

void fun_402310() {
}

void fun_402344() {
    int32_t s3_1;
    int32_t s2_2;

    *reinterpret_cast<int32_t*>(s3_1 + 0x3908) = s2_2;
}

void fun_4023dc() {
}

void fun_402368() {
}

void fun_401cdc() {
}

void fun_402410(int32_t a0) {
}

void fun_402428() {
}

void fun_40249c() {
}

void fun_402454() {
}

void fun_40247c() {
}

void fun_40250c(int32_t a0) {
}

void fun_402524() {
}

void fun_4025f8() {
}

void fun_4025c0() {
}

void fun_4025d4() {
}

void fun_402714() {
}

void fun_402688() {
}

void fun_4026b8() {
}

void fun_4026e0() {
}

void fun_40274c(int32_t a0) {
}

void fun_402754() {
}

void fun_4027e4() {
}

void fun_402790() {
}

struct s18 {
    signed char[12] pad12;
    int32_t f12;
};

void fun_4027b4(struct s18* a0) {
    a0->f12 = 0;
}

void fun_402804() {
}

void fun_4024e0() {
}

void fun_402840(int32_t a0) {
}

void fun_4028ac() {
}

void fun_4028a4() {
}

void fun_4028d8(int32_t a0) {
}

void fun_4028e0() {
}

void fun_4028f8() {
}

void fun_402910() {
}

void fun_402940() {
}

void fun_40299c() {
}

void fun_403074() {
}

void fun_4029d8() {
}

void fun_4029ec() {
}

void fun_402a08() {
}

void fun_402a30(int32_t a0) {
}

void fun_402a4c() {
}

void fun_402a70() {
}

void fun_402a84() {
}

void fun_402ae0(int32_t a0) {
}

void fun_402af0() {
}

void fun_402b08() {
}

void fun_402b28() {
}

void fun_402c50() {
}

void fun_402b4c() {
}

void fun_402bb4() {
}

void fun_402bfc() {
}

void fun_402c0c() {
}

void fun_402cb0(int32_t a0) {
}

void fun_402cbc() {
}

void fun_402cd4() {
}

void fun_402e4c() {
}

void fun_402cfc() {
}

void fun_402d24() {
}

void fun_402da4() {
}

void fun_402e18() {
}

void fun_402dec() {
}

void fun_402e74(int32_t a0) {
}

void fun_402e88() {
    int32_t* s0_1;
    int32_t t8_2;

    *s0_1 = t8_2;
}

void fun_402eb4() {
}

void fun_402eec(int32_t a0) {
}

void fun_402f08() {
}

void fun_402f1c() {
}

void fun_402f2c() {
}

void fun_402f8c() {
}

void fun_402f50() {
}

void fun_402fb4(int32_t a0) {
}

void fun_402fd0() {
}

void fun_402fec() {
}

void fun_403008() {
}

void fun_403044() {
}

void fun_403030() {
}

void fun_4030a4() {
}

void fun_4030cc() {
}

void fun_4030e4() {
}

void fun_40312c() {
}

void fun_403178() {
}

void fun_403190() {
}

void fun_4031a8() {
}

void fun_4031e8() {
}

void fun_403218(int32_t a0) {
}

void fun_403238() {
}

void fun_4032a4() {
}

void fun_4032b4(int32_t a0) {
    int32_t* s0_2;

    *s0_2 = a0;
}

void fun_403304() {
}

void fun_4032d8() {
}

void fun_403338(int32_t a0) {
}

void fun_40334c() {
}

void fun_40337c() {
}

void fun_403404() {
}

void fun_4033d8() {
}

void fun_403444(int32_t a0) {
}

void fun_403454() {
}

void fun_403494() {
}

void fun_403554() {
}

void fun_4034c4(int32_t a0) {
}

void fun_4034cc() {
}

void fun_403524() {
}

void fun_4034f8(int32_t a0) {
}

void fun_403500() {
}

void fun_403478() {
}

void fun_403534() {
}

void fun_40357c(int32_t a0) {
}

void fun_403584() {
}

void fun_4035c4() {
}

void fun_4035a0(int32_t a0) {
}

void fun_4035ac() {
}

void fun_4035dc() {
}

void fun_403608() {
}

void fun_403648() {
}

void fun_403624(int32_t a0) {
}

void fun_403630() {
}

void fun_403660() {
}

void fun_403698() {
}

void fun_4036bc() {
}

void fun_4036d0() {
}

void fun_4037e8() {
}

void fun_4036f0(int32_t a0) {
}

void fun_4036f8() {
}

void fun_403764() {
}

void fun_403728(int32_t a0) {
}

void fun_403730() {
}

void fun_4037b4() {
}

void fun_403774() {
}

void fun_4037c0() {
}

void fun_4037a0() {
}

void fun_4037d0() {
}

void fun_403858(int32_t a0) {
}

void fun_403868() {
}

void fun_403898(int32_t a0) {
}

void fun_4038bc() {
}

void fun_403d90() {
}

void fun_4038d8(int32_t a0) {
}

void fun_4038ac() {
}

void fun_403d50() {
}

void fun_403d38() {
}

void fun_403a38() {
}

void fun_403a64(int32_t a0) {
}

void fun_403a78() {
}

void fun_403d20() {
}

void fun_403c88() {
}

void fun_403c7c() {
}

void fun_403cf4() {
}

void fun_403cc8() {
}

void fun_403e40() {
}

void fun_403e10() {
}

void fun_403ffc() {
}

void fun_403e64() {
}

void fun_403e7c() {
}

void fun_403e54() {
}

void fun_403fd0() {
}

void fun_403f60() {
}

void fun_403f50() {
}

void fun_403f70() {
}

void fun_403fb8() {
}

void fun_404090() {
}

void fun_4040f4() {
}

void fun_4040c8(int32_t a0) {
}

void fun_404184() {
}

void fun_400cac() {
    goto 0x4010d8;
}

void fun_400cd4() {
    goto 0x4011f0;
}

void fun_400cfc() {
    goto 0x4012e8;
}

void fun_400d24() {
}
