/
/
/
/
The middle source was generated by the Retargetable Decompiler
/
/
Website: https:
/
/
retdec.com
/
/
/
/
The final source was generated by the UraniumVCPU Sampler Framework
/
/
Website: http:
/
/
yunyoo.cn
/
/
/
/
Address
range
:
0xfd98
-
0x100c8
/
/
Demangled: MD5::getDigest()
int64_t _ZN3MD59getDigestEv(void) {
/
/
0xfd98
int64_t v1;
/
/
0xfd98
uint64_t v2
=
v1;
int64_t v3
=
__asm_mrs(v1, v1);
/
/
0xfda8
int64_t v4
=
v2
%
256
;
/
/
0xfdc8
if
(v2
%
2
=
=
0
) {
/
/
0xfdd0
*
(char
*
)v2
=
1
;
int64_t v5
=
v2
+
4
;
/
/
0xfdd8
int64_t
*
v6
=
(int64_t
*
)v5;
/
/
0xfe20
int64_t v7;
/
/
bp
-
64
,
0xfd98
__memcpy_chk(&v7, v6,
16
,
16
);
int64_t v8
=
v2
+
20
;
/
/
0xfe54
int64_t
*
v9
=
(int64_t
*
)v8;
/
/
0xfe9c
int64_t v10;
/
/
bp
-
72
,
0xfd98
__memcpy_chk(&v10, v9,
8
,
8
);
int64_t v11;
/
/
bp
-
48
,
0xfd98
_ZN3MD56encodeEPKjPhm(v2, v8, &v11,
8
);
int32_t v12
=
*
(int32_t
*
)v8;
/
/
0xfeec
uint32_t v13
=
__asm_ubfx(v12, v12,
3
,
6
);
/
/
0xfef0
_ZN3MD54initEPKhm(v2, g1, (int64_t)((v13 >
=
55
=
=
(v13 !
=
55
) ?
120
:
56
)
-
v13));
_ZN3MD54initEPKhm(v2, (int64_t)&v11,
8
);
_ZN3MD56encodeEPKjPhm(v2, v5, (int64_t
*
)(v2
+
92
),
16
);
memcpy(v6, &v7,
16
);
memcpy(v9, &v10,
8
);
v4
=
8
;
}
/
/
0x1008c
if
(
*
(int64_t
*
)(__asm_mrs(v4, v3)
+
40
)
=
=
*
(int64_t
*
)(v3
+
40
)) {
/
/
0x100b0
return
v2
+
92
;
}
/
/
0x100c4
__stack_chk_fail();
return
&g2;
}