v7 = GetStringUTFChars(a1, a3, v38);
v8 = (*a1)->GetStringUTFChars;
v34 = a4
v9 = v8(a1, a4, v38);
v10 = strlen(v9);
v35 = v30;
v11 = &v30[-(((unsigned int)(v10 + 33) + 15LL) & 0x1FFFFFFF0LL)];
strcpy(v11, "zG#V&A2*YO7pUmHsAo55j#1mOC@jAtYi");
v31 = v9;
strcat(v11, v9);
v11[(__int64)((v10 << 32) + 0x2000000000LL) >> 32] = 0;
v12 = strlen(v11);
v13 = &v30[-((v12 + 15) & 0xFFFFFFFFFFFFFFF0LL)];
CharToUnChar(v11, v13, v12);
MD5Init(v43);
strlen(v11);
MD5Update((int)v43, v13);
MD5Final(v43, v44);
*(_QWORD *)v37 = *(_QWORD *)&v44[4];
convertUnCharToStr(v37, v42, 8);
CharToUnChar(v42, v41, 16);
v14 = strlen(v7);
v15 = v14;
v16 = v14 + 15;
if ( v14 >= 0 )
v16 = v14;
v17 = v14 - (v16 & 0xFFFFFFF0);
v18 = (v16 & 0xFFFFFFF0) + 16;
v19 = (v16 & 0xFFFFFFF0) + 17;
v20 = (v19 + 15) & 0x1FFFFFFF0LL;
v21 = &v30[-v20];
v32 = v7;
strcpy(&v30[-v20], v7);
if ( (int)(16 - v17) >= 1 )
memset(&v21[v15], 16 - v17, 15 - v17 + 1LL);
v21[v18] = 0;
CharToUnChar(&v30[-v20], &v30[-v20], v19);
CharToUnChar("zG#V&A2*YO7pUmHsAo55j#1mOC@jAtYi", v40, 32);
aes256_init(v39, v40);
aes256_encrypt_cbc((int)v39, &v30[-v20]);
aes256_done(v39);
v22 = (const char *)b64_encode(&v30[-((v18 + 15LL) & 0x1FFFFFFF0LL)], v18);