#include "117828F1-DA7D-4BC1-8B58-9A954FED5121.h"
// MigrRecord.c - Extracted from 117828F1-DA7D-4BC1-8B58-9A954FED5121.c
// Total functions: 4
// Function: MigrCheckMembers @ 0x1be0c (0x65 bytes)
// Index: 764/906
char __fastcall MigrCheckMembers(_DWORD *a1, __int64 a2)
{
unsigned __int8 n23_1; // r9
int n23; // r8d
__int64 v4; // r8
n23_1 = 0; /*0x1be0f*/
if ( *(_BYTE *)(a2 + 42) ) /*0x1be12*/
{
while ( 1 ) /*0x1be1c*/
{
n23 = 23; /*0x1be1c*/
if ( n23_1 < 0x18u ) /*0x1be26*/
n23 = n23_1; /*0x1be26*/
v4 = *(_QWORD *)(a2 + 16 * (n23 + 7LL)); /*0x1be34*/
if ( (*(_DWORD *)(v4 + 136) & 0x10) != 0 && (*(_QWORD *)(v4 + 88) & 0xFFFFFFFF00000000uLL) != 0 ) /*0x1be54*/
return 0; /*0x1be6e*/
if ( ++n23_1 >= *(_BYTE *)(a2 + 42) ) /*0x1be5d*/
goto LABEL_7; /*0x1be5d*/
}
}
else
{
LABEL_7:
a1[13] = 0; /*0x1be5f*/
a1[14] = 0; /*0x1be63*/
a1[12] = 0; /*0x1be67*/
return 1; /*0x1be6b*/
}
}
// Function: Assert_13 @ 0x1be74 (0x1d0 bytes)
// Index: 765/906
__int64 __fastcall Assert_13(_DWORD *a1, __int64 a2)
{
_DWORD *v2; // rdi
int v4; // eax
int v5; // r12d
__int64 v6; // r15
__int64 v7; // rsi
int v8; // r14d
__int64 v9; // rbp
unsigned __int8 n23_1; // di
__int16 v11; // r13
int n23; // ecx
__int64 v13; // rbx
int v14; // eax
bool v15; // zf
__int64 v17; // [rsp+30h] [rbp-48h] BYREF
char v18; // [rsp+38h] [rbp-40h]
__int16 v19; // [rsp+3Ah] [rbp-3Eh]
int v21; // [rsp+88h] [rbp+10h]
unsigned int v22; // [rsp+90h] [rbp+18h]
v2 = a1; /*0x1be91*/
v17 = 0; /*0x1be9b*/
v18 = 0; /*0x1be9f*/
v19 = 1; /*0x1bea9*/
sub_17B58((__int64)&v17, 0); /*0x1beae*/
if ( RstDebugEnabled() && !v17 ) /*0x1bec2*/
DebugAssert("MigrRecord.cpp", 0x5Fu, "sbuf.ptr()"); /*0x1bed6*/
v22 = v17; /*0x1bee4*/
v4 = HiiLibReturnZero(*(_QWORD *)(a2 + 32)); /*0x1beec*/
v5 = v4 * v2[5]; /*0x1befe*/
v6 = *(_QWORD *)(a2 + 16); /*0x1bf02*/
v7 = (unsigned int)v2[6] + ((unsigned __int64)(unsigned int)v2[13] << 32); /*0x1bf0e*/
v8 = v4; /*0x1bf14*/
v9 = (unsigned int)v2[7] + ((unsigned __int64)(unsigned int)v2[14] << 32); /*0x1bf17*/
v21 = v5; /*0x1bf1a*/
if ( v5 ) /*0x1bf25*/
{
do /*0x1bff4*/
{
n23_1 = 0; /*0x1bf2b*/
v11 = *(unsigned __int8 *)(v6 + 42); /*0x1bf2e*/
if ( *(_BYTE *)(v6 + 42) ) /*0x1bf2e*/
{
do /*0x1bfcc*/
{
n23 = 23; /*0x1bf4b*/
if ( n23_1 < 0x18u ) /*0x1bf54*/
n23 = n23_1; /*0x1bf54*/
v13 = *(_QWORD *)(v6 + 16 * (n23 + 7LL)); /*0x1bf78*/
Assert_89(Source_16, v13, 40, v7, v8, v22); /*0x1bf7f*/
sub_DC68(v6, n23_1); /*0x1bf8a*/
Assert_89(Source_16, v13, 42, v9, v8, v22); /*0x1bfa9*/
sub_DC68(v6, n23_1); /*0x1bfb4*/
--v11; /*0x1bfc1*/
++n23_1; /*0x1bfc5*/
}
while ( v11 ); /*0x1bfcc*/
v5 = v21; /*0x1bfd2*/
}
v14 = 1; /*0x1bfda*/
++v7; /*0x1bfdf*/
++v9; /*0x1bfe2*/
v5 -= v8; /*0x1bfe5*/
v21 = v5; /*0x1bfe8*/
}
while ( v5 ); /*0x1bff4*/
v2 = a1; /*0x1bffa*/
}
else
{
v14 = 1; /*0x1c004*/
}
if ( v2[3] ) /*0x1c009*/
{
v15 = v2[1]++ == -1; /*0x1c00f*/
}
else
{
v14 = -1; /*0x1c014*/
v15 = --v2[1] == -1; /*0x1c01a*/
}
if ( v15 ) /*0x1c01d*/
v2[12] += v14; /*0x1c01f*/
return sub_17400(v17); /*0x1c034*/
}
// Function: MigrGetOffset @ 0x1c044 (0xd bytes)
// Index: 766/906
unsigned __int64 __fastcall MigrGetOffset(unsigned int *a1)
{
return *a1 + ((unsigned __int64)a1[4] << 32); /*0x1c050*/
}
// Function: MigrGetNextPtr @ 0x1c054 (0x1c bytes)
// Index: 767/906
__int64 __fastcall MigrGetNextPtr(__int64 a1, char a2)
{
__int64 result; // rax
result = a1 + 4LL * *(unsigned __int8 *)(a1 + 48) + 80; /*0x1c058*/
if ( a2 || *(_BYTE *)(a1 + 8) ) /*0x1c061*/
result += 4LL * *(unsigned __int8 *)(a1 + 4LL * *(unsigned __int8 *)(a1 + 48) + 96) + 48; /*0x1c06a*/
return result; /*0x1c06f*/
}