C++ TODO __fastcall

C++ TODO __fastcall

int __fastcall init_keys2(char *a1, char *a2) {
    char *v2; // r6
    char *v3; // r5
    int v4; // r1
    signed int v5; // r2
    char v6; // r6
    int result; // r0
    char *v8; // [sp+8h] [bp-10h]

    v8 = a2;
    v2 = a1;
    v3 = (char*) malloc(0x11u);
    int k = (int) v3;
    int k2 = (int) malloc(0x31u);
    v4 = 0;
    do {
        v3[v4] = v2[v4 + 4];
        if (!v4)
            ++*(char*) k;
        *(char*) (k2 + v4) = *(char*) (k + v4);
        ++v4;
        v3 = (char*) k;
    } while (v4 != 16);
    *(char*) (k + 16) = 0;
    v5 = 16;
    do {
        *(char*) (k2 + v5) = v8[v5 - 12];
        v6 = 2;
        if (v5 != 19) {
            if (v5 != 17)
                goto LABEL_10;
            v6 = -1;
        }
        *(char*) (k2 + v5) += v6;
        LABEL_10: ++v5;
    } while (v5 != 48);
    result = k2;
    *(char*) (k2 + 48) = 0;
    return result;
}
    char c1[] = "bpim5486ed42c86ecc09i8";
    char c2[] = "a0xwf91c3e12314dd2953c3e95c524ac6a3abb";
    cout << "son.init_keys2():" << init_keys2(c1, c2) << endl;