Untitled

 avatar
unknown
plain_text
a year ago
13 kB
5
Indexable
char __cdecl EPC_GetShakataJoho(_DWORD *a1, char *a2, int a3, char *a4, int a5, int *a6, int a7) {
    // Variable declarations
    int v7, v8, v9, v10, v11, result, v13, v15, v16, v17, v18, v19, v22;
    char v14, v28, v44, JOHOKT;
    const char *v20;
    size_t v21;
    _DWORD *v23;
    int *v30, ErrorStatus, v24, v25, v26, v29;
    unsigned int i, j, k;
    void *v64;
    char v89, v91, v93, Buf2[24], Src[24], v82, v83, v84, v94[4], v95, v96[4], v97[4], v98[4], v99[4], v103[4], v104[4];
    char v76[40], v77[4], v80[4];
    int v88, v90, v100, v101, v102, v72, v71, v74, v105, v69, v70, v73, v78[10], v81[10], v75[3];

    // Initialize memory
    memset(&byte;_10012CE0, 0, 9);  // 9 byte
    memset(&byte;_10012C10, 0, 6);  // 6 byte
    memset(&unk;_10012C3C, 0, 7);   // 7 byte
    sub_10008645(v76);  // v76 is char[40] 
    v89 = v82 = v90 = v91 = v83 = v84 = 0;
    sub_10008B42(&v88;); // int
    sub_10004495(&v95;);  // char
    qt_mt312_819(v99, v75[0]);  // v75 is int[3]
    qt_mt312_819(v97, v75[0]);
    qt_mt312_819(v103, v75[0]);
    qt_mt312_819(v104, v75[0]);
    
    v74 = v7;
    ((void (__thiscall *)(int *, char *))CreateQString)(&v74;, Source);
    v74 = v8;
    ((void (__thiscall *)(int *, char *))CreateQString)(&v74;, Source);
    v74 = v9;
    ((void (__thiscall *)(int *, char *))CreateQString)(&v74;, aF002);
    file_settings_getmstfilename(&v102;);
    ((void (__thiscall *)(_DWORD *, char *))CreateQString)(v75, Source);
    v74 = v10;
    ((void (__thiscall *)(int *, char *))CreateQString)(&v74;, Source);
    v72 = v11;
    ((void (__thiscall *)(int *, char *))CreateQString)(&v72;, aF002);
    file_settings_getIDXfilename(&v100;);

    result = *(_DWORD *)(*(_DWORD *)qt_mt312_11848(&v102;, &v105;) + 12) & 0x3FFFFFFF;
    qt_mt312_1453(&v105;);
    if (!result) {
        v74 = v13;
        ((void (__thiscall *)(int *, char *))CreateQString)(&v74;, Source);
        EPC_SetErrorStatus(1000, 0);
        v14 = 0;
        goto cleanup;
    }

    sub_10004495(&v101;);
    qt_mt312_819(v98, v75[0]);
    CreateQString(v96, Source, v75[0]);
    memset(Src, 0, 0x15u);
    memset(Buf2, 0, 0x15u);
    v74 = 0;
    v73 = 0;
    v72 = v15;
    ((void (__thiscall *)(int *, int))qt_mt312_163)(&v72;, 35);
    v16 = a3;
    
    if (qt_mt312_5492(a3) == -1) {
        handle_error_case();
    } else {
        handle_success_case();
    }

    handle_final_cases();

cleanup:
    cleanup_memory();
    return 0;
}

void handle_error_case() {
    v74 = 1;
    v73 = 0;
    v19 = qt_mt312_5750(&a3;, &unk;_10010034, -1);
    v105 = qt_mt312_5488(v16, v19, v73, v74);
    qt_mt312_1453(&a3;);
    
    if (v105 < 0) {
        if ((*(_DWORD *)(*(_DWORD *)v16 + 12) & 0x3FFFFFFF) != 0) {
            v22 = 20;
            do {
                qt_mt312_2476(v16, &unk;_10010030);
                --v22;
            } while (v22);
            sub_10001B45(v16, Src, 20);
            sub_10001B45(v16, Buf2, 20);
        }
    } else {
        CreateQString(&v105;, Source, v75[0]);
        CreateQString(&a3;, &unk;_10010034, v75[0]);
        qt_mt312_9711(v16, &a3;, &v105;);
        qt_mt312_1453(&a3;);
        qt_mt312_1453(&v105;);
        
        v20 = (const char *)qt_mt312_3380(v16);
        if (v20) {
           v21 = strlen(v20);
        } else {
            v21 = 0;
        }
        memset(Src, 1, 0x15u);      // it's 21 in decimal
        sub_10001B45(v16, Src, v21);
        memset(Buf2, 255, 0x15u);
        sub_10001B45(v16, Buf2, v21);
    }
}

void handle_success_case() {
    qt_mt312_1880(v97, v16);
    qt_mt312_1880(v99, v97);
    CreateQString(&v105;, asc_10010054, v75[0]);
    CreateQString(&a3;, asc_10010050, v75[0]);
    
    v17 = qt_mt312_732(&v92;, &a3;, 1, 0, &v105;);
    qt_mt312_9712(v16, v17);
    qt_mt312_1424(&v92;);
    qt_mt312_1453(&a3;);
    qt_mt312_1453(&v105;);
    
    CreateQString(&v105;, aZzzzzzzzzzzzzz, v75[0]);
    CreateQString(&a3;, asc_10010050, v75[0]);
    
    v18 = qt_mt312_732(&v92;, &a3;, 1, 0, &v105;);
    qt_mt312_9712(v99, v18);
    qt_mt312_1424(&v92;);
    qt_mt312_1453(&a3;);
    qt_mt312_1453(&v105;);
    
    sub_10001B45(v16, Src, 20);
    sub_10001B45(v99, Buf2, 20);
}

bool check_condition(void* ptr) {
    return (*(unsigned int*)(*(unsigned int*)ptr + 12) & 0x3FFFFFFF) != 0;
}

void handle_final_cases() {
    v23 = a1;
    
    if (check_condition(v16) || !check_condition(a1)) {
        if (check_condition(v16)) {
            if (check_condition(a1)) {
                process_a1();
            } else {
                process_else_a1();
            }
        } else {
            process_final_else();
        }
    } else {
        sub_1000905C(&v92;);
        sub_10001B45(v23, &v89;, 6);
        sub_10002F73(&v89;, a2, &v92;);
        if (EPC_GetErrorStatus(v94, v103, v104) != ERROR_STATUS_OK) {
            if (*(_DWORD *)(v92 + 12)) {
                process_v92();
            }
        }
    }
}

void process_a1() {
    // Copy 6 bytes from a1 to v89
    sub_10001B45(a1, &v89;, 6);
    
    // Set up some parameters
    v74 = a7;
    v73 = v50;
    
    // Call a function (likely for file or data processing)
    ((void (__thiscall *)(char **, int *))qt_mt312_814)(&v73;, &v100;);
    
    // Set up more parameters
    v73 = v51;
    
    // Call the same function again with different parameters
    ((void (__thiscall *)(char **, int *))qt_mt312_814)(&v73;, &v102;);
    
    // Get some kind of information or status
    JOHOKT = EPC_GetJOHOKT(Src, Buf2, (unsigned int)v23, (int)a2, a4, a5, v72, (char)v73);
    
    // Get an error status
    ErrorStatus = EPC_GetErrorStatus(v94, v103, v104);
    
    // Check for errors or invalid status
    if (!JOHOKT || ErrorStatus == 1000) {
        v14 = 0;
        goto cleanup;
    }
}

void process_else_a1() {
    sub_10004528(&a1;);
    v74 = (int)&a1;
    v73 = v54;
    ((void (__thiscall *)(char **, int *))qt_mt312_814)(&v73;, &v100;);
    v73 = v55;
    ((void (__thiscall *)(char **, int *))qt_mt312_814)(&v73;, &v102;);
    
    v56 = EPC_GetJOHOKT(Src, Buf2, (unsigned int)v23, (int)a2, a4, a5, v72, (char)v73);
    v57 = EPC_GetErrorStatus(v94, v103, v104);
    
    if (!v56 || v57 == 1000) {
        sub_10004691(a1);
        goto cleanup;
    }

    process_a1_else_for_loop();
}

void process_a1_else_for_loop() {
    sub_10004495(&a3;);
    sub_10004495(&v105;);
    for (i = 0; i < a1[3]; ++i) {
        a4 = 0;
        if (*(_DWORD *)(a3 + 12)) {
            while (1) {
                sub_10004648(&a3;);
                v59 = sub_10004947(a4) + 12;
                sub_10004675(&a1;);
                v60 = sub_10004947(i);
                v74 = v59;
                if ((unsigned __int8)qt_mt312_2185(v60 + 12))
                    break;
                if ((unsigned int)++a4 >= *(_DWORD *)(a3 + 12))
                    goto LABEL_59;
            }
            sub_10004675(&a1;);
            v67 = sub_10004947(i);
            sub_10004548(&a2;, v67 + 12);
        } else {
            process_a1_else_for_loop_inner();
        }
    }
    sub_10004691(v105);
    sub_10004691(a3);
    sub_10004691(a1);
}

void process_a1_else_for_loop_inner() {
    v61 = 0;
    if (*(_DWORD *)(v105 + 12)) {
        while (1) {
            v74 = sub_10004506(v61);
            v62 = sub_10004578(i);
            if ((unsigned __int8)qt_mt312_2185(v62))
                break;
            if ((unsigned int)++v61 >= *(_DWORD *)(v105 + 12))
                goto LABEL_62;
        }
    } else {
    LABEL_62:
        qt_mt312_819(&a5;, v75[0]);
        v74 = (int)&a5;
        v63 = sub_10004578(i);
        v64 = (void *)qt_mt312_3380(v63);
        EPC_GetCdNo(v64, v74);
        if (EPC_GetErrorStatus(v94, v103, v104) == 1000) {
            qt_mt312_1453(&a5;);
            sub_10004691(v105);
            sub_10004691(a3);
            goto cleanup;
        }
        v65 = sub_10004858(&a5;);
        v74 = i;
        if (v65) {
            v66 = sub_10004578(v74);
            sub_10004548(v85, v66);
            v74 = sub_10004578(i);
            v73 = &v79;
        } else {
            v74 = sub_10004578(v74);
            v73 = &v93;
        }
        sub_100044D6(v73, v74);
        qt_mt312_1453(&a5;);
    }
}

void process_final_else() {
    sub_10001B45(a2, &v82;, 9);
    sub_10008F90(v77);
    sub_1000326F(&v82;, v77);
    sub_10008F90(v80);
    if (EPC_GetErrorStatus(v94, v103, v104) == 1000) {
    LABEL_48:
        sub_100045BC(v80);
        sub_100045BC(v77);
        goto cleanup;
    }
    a2 = 0;
    if ((*(int (__thiscall **)(int *))v78[0])(v78) > 0) {
        v33 = a6;
        do {
            v34 = qt_mt312_3436(v78, a2);
            qt_mt312_814(&a3;, v34, v75[0]);
            sub_10001B45(&a3;, &v89;, 6);
            qt_mt312_1453(&a3;);
            qt_mt312_819(&a6;, v75[0]);
            EPC_GetCdNo(&v89;, &a6;);
            v35 = *v33;
            a1 = 0;
            if (*(_DWORD *)(v35 + 12)) {
                while (1) {
                    sub_10004648(v33);
                    v36 = sub_10004947(a1);
                    v74 = (int)&a6;
                    if ((unsigned __int8)qt_mt312_2185(v36 + 12))
                        break;
                    a1 = (_DWORD *)((char *)a1 + 1);
                    if ((unsigned int)a1 >= *(_DWORD *)(*v33 + 12))
                        goto LABEL_38;
                }
                ((void (__thiscall *)(int *, int))qt_mt312_814)(&v74;, v34 + 8);
                v73 = v37;
                sub_10001BA8(&v73;);
                v72 = v38;
                sub_10003C4E(&v72;);
                sub_10008FBE(v72, (char)v73, v74);
            }
        LABEL_38:
            qt_mt312_1453(&a6;);
            ++a2;
            v39 = (*(int (__thiscall **)(int *))v78[0])(v78);
        } while ((int)a2 < v39);
    }
    if ((*(int (__thiscall **)(int *))v81[0])(v81)) {
        a2 = 0;
        if ((*(int (__thiscall **)(int *))v81[0])(v81) > 0) {
            while (1) {
                v40 = qt_mt312_3436(v81, a2);
                qt_mt312_814(&a6;, v40 + 8, v75[0]);
                sub_10001B45(&a6;, Src, 20);
                qt_mt312_1453(&a6;);
                memcpy(Buf2, Src, 0x14u);
                sub_10004528(&a1;);
                v74 = (int)&a1;
                v73 = v41;
                ((void (__thiscall *)(char **, int *))qt_mt312_814)(&v73;, &v100;);
                v71 = v42;
                ((void (__thiscall *)(int *, int *))qt_mt312_814)(&v71;, &v102;);
                v71 = a5;
                v70 = a4;
                v69 = sub_10001BA8(&v105;);
                v43 = sub_10003C4E(&a3;);
                v44 = EPC_GetJOHOKT(Src, Buf2, v43, v69, v70, v71, v72, (char)v73);
                qt_mt312_1453(&a3;);
                qt_mt312_1453(&v105;);
                v45 = EPC_GetErrorStatus(v94, v103, v104);
                if (!v44 || v45 == 1000)
                    break;
                v46 = a1;
                for (j = 0; j < a1[3]; ++j) {
                    sub_10004675(&a1;);
                    v48 = sub_10004947(j);
                    sub_10004548(v85, v48 + 12);
                    v46 = a1;
                }
                sub_10004691(v46);
                ++a2;
                v49 = (*(int (__thiscall **)(int *))v81[0])(v81);
                if ((int)a2 >= v49)
                    goto LABEL_46;
            }
            sub_10004691(a1);
            goto LABEL_48;
        }
    }
LABEL_46:
    sub_100045BC(v80);
    sub_100045BC(v77);
}

void process_v92() {
    v24 = sub_10004338(&a2;, &v92;);
    sub_100044B5(v24);
    sub_10004691(a2);
    a2 = 0;
    if (*(_DWORD *)(v101 + 12)) {
        while (1) {
            sub_10004648(&v101;);
            v25 = sub_10004947(a2);
            qt_mt312_1880(v98, v25 + 12);
            sub_10001B45(v98, Src, 20);
            memcpy(Buf2, Src, 0x14u);
            sub_10004528(&a6;);
            v75[1] = &a6;
            v75[0] = v26;
            ((void (__thiscall *)(_DWORD *, int *))qt_mt312_814)(v75, &v100;);
            v73 = v27;
            ((void (__thiscall *)(char **, int *))qt_mt312_814)(&v73;, &v102;);
            v28 = EPC_GetJOHOKT(Src, Buf2, (unsigned int)v23, (int)v96, a4, a5, v72, (char)v73);
            v29 = EPC_GetErrorStatus(v94, v103, v104);
            if (!v28 || v29 == 1000)
                break;
            v30 = a6;
            for (k = 0; k < a6[3]; ++k) {
                sub_10004675(&a6;);
                v32 = sub_10004947(k);
                sub_10004548(&a3;, v32 + 12);
                v30 = a6;
            }
            sub_10004691(v30);
            if ((unsigned int)++a2 >= *(_DWORD *)(v101 + 12))
                goto LABEL_26;
            v23 = a1;
        }
        sub_10004691(a6);
        goto LABEL_28;
    }
LABEL_26:
    sub_10004691(v92);
    goto cleanup;
}

void cleanup_memory() {
    qt_mt312_1453(v96);
    qt_mt312_1453(v98);
    sub_10004691(v101);
    qt_mt312_1453(&v100;);
    qt_mt312_1453(&v102;);
    qt_mt312_1453(v104);
    qt_mt312_1453(v103);
    qt_mt312_1453(v97);
    qt_mt312_1453(v99);
    sub_10004691(v95);
    sub_10004691(v88);
    sub_10001BBD(v76);
}
Editor is loading...
Leave a Comment