UINT64 __stdcall RtlUdiv128(INT64 a1, UINT64 a2, UINT64 a3, INT64 *a4){
__int64 v7;
UINT64 v8;
INT64 v9;
INT64 v10;
UINT64 v11;
v7 = 64i64;
do
{
v8 = 2 * a2;
v9 = (2 * a1) | (a2 >> 63);
v10 = a1 >> 63;
a1 = v9 - a3;
v11 = 2 * a2;
if( (v10 | (unsigned __int64)v9) < a3 )
a1 = v9;
a2 = v11 | 1;
if( (v10 | (unsigned __int64)v9) < a3 )
a2 = v8;
--v7;
}
while( v7 );
if( a4 )
*a4 = a1;
return a2;
}