_BYTE *__fastcall DivU64x32Remainder(_BYTE *_r_n, unsigned int n16, int a3, unsigned int a4)
{
_BYTE *_r_n_1; // esi
int v6; // eax
int v7; // eax
int v8; // edx
unsigned __int64 v9; // rtt
unsigned int v11; // [esp-4h] [ebp-1Ch]
int v12; // [esp+Ch] [ebp-Ch] BYREF
int *v13; // [esp+10h] [ebp-8h]
unsigned int n16_1; // [esp+14h] [ebp-4h]
_r_n_1 = _r_n;
v13 = &v12;
n16_1 = n16;
*_r_n = 0;
do
{
if ( !n16 )
{
v6 = GetDebugService();
if ( v6 )
(*(void (__cdecl **)(const char *, int, const char *))(v6 + 4))(
"e:\\hs\\MdePkg\\Library\\BaseLib\\DivU64x32Remainder.c",
47,
"Divisor != 0");
}
v11 = a4 / n16_1;
LODWORD(v9) = a3;
HIDWORD(v9) = a4 % n16_1;
v7 = v9 / n16_1;
v8 = v9 % n16_1;
if ( v13 )
*v13 = v8;
++_r_n_1;
a3 = v7;
a4 = v11;
*_r_n_1 = byte_FFE3E094[v12];
}
while ( v11 | v7 );
return _r_n_1;
}