1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
int __fastcall sub_401A90(_DWORD *a1)
{
_DWORD *v1; // r8
int v3; // r4
int *v4; // r7
int v5; // r6
unsigned __int8 *v6; // r9
int result; // r0
int v8; // r7
int *v9; // r11
int v10; // r0
int v11; // r10
bool v12; // zf
int v13; // r3
int v14; // r6
int v15; // r7
_OWORD *v16; // r5
int v17; // r0
__int128 v18; // [sp+8h] [bp-14h] BYREF
int v19; // [sp+18h] [bp-4h]
v1 = (_DWORD *)off_401BD8;
v19 = *(_DWORD *)off_401BD8;
v3 = a1[4];
if ( (unsigned int)(v3 - 1) <= 0x3F && (v4 = (int *)off_401CE0, v5 = 257 * v3, *((_BYTE *)off_401CE0 + 257 * v3) != 0) )
{
if ( sub_401338(a1: v3, a2: (int)(a1 + 5), a3: 0x1010u, a4: (int)(a1 + 5)) == nullptr )
goto LABEL_10;
v6 = (unsigned __int8 *)v4 + v5 + 33;
if ( a1[17] == (*v6
| (*((unsigned __int8 *)v4 + v5 + 34) << 8)
| ((*((unsigned __int8 *)v4 + v5 + 35) | (*((unsigned __int8 *)v4 + v5 + 36) << 8)) << 16)) )
{
if ( sub_401000(a1: (int *)off_401BDC, a2: a1 + 13, a3: 16) == 0 )
{
v8 = a1[19];
v9 = (int *)off_401BE0;
v10 = 0;
while ( 1 )
{
v11 = v10 + 16;
if ( v10 == 128 )
break;
v12 = sub_401000(a1: (char *)v9 + v10, a2: a1 + 20, a3: v8) == 0;
v10 = v11;
if ( v12 )
{
v13 = a1[10];
v14 = a1[11];
v15 = a1[12];
a1[1038] = a1[9];
a1[1039] = v13;
a1[1040] = v14;
a1[1041] = v15;
a1[1042] = dword_401BE4;
a1[1037] = 20;
sub_401124(a1: a1 + 1043, a2: 4056);
v16 = a1 + 1033;
if ( ((int (__fastcall *)(_OWORD *, int, __int128 *, int))loc_4012FC)(a1: v16, a2: 4096, a3: &v18, a4: v3) != 0 )
{
result = 266;
}
else
{
*v16 = v18;
v17 = ((*v6)++ | (v6[1] << 8) | ((v6[2] | (v6[3] << 8)) << 16)) + 1;
v6[2] = BYTE2(v17);
v6[3] = HIBYTE(v17);
v6[1] = BYTE1(v17);
result = 0;
}
goto LABEL_8;
}
}
}
result = 262;
}
else
{
result = 260;
}
}
else
{
result = 259;
}
LABEL_8:
while ( *v1 != v19 )
{
((void (__fastcall *)(int, int))loc_40202C)(a1: result, a2: *v1 - v19);
LABEL_10:
result = 261;
}
return result;
}
|