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
|
# gcp 22.0.0.71 -> 22.0.0.73
# branch 22.0.0, consecutive builds
#
# 1 functions resized, 0 new, 0 removed, 5 with body changes
# total named bytes +10
#
# Normalised: tier annotations, off_/loc_/sub_ address tokens,
# long hex literals and vN renumbering. Local declarations are
# dropped. Raw diffs are 6-17% of lines and almost all noise.
## resized functions (byte size from the index sidecar)
gcp_cmdFE08_KeyExchangeAuthenticatedSession__h4 276 -> 286 +10
## body changes, per function
### gcp_call_once_init
- vX = (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))*off_X;
- if ( *off_X == nullptr )
+ vX = *(int (__fastcall **)(_DWORD, _DWORD, _DWORD, _DWORD))off_X;
+ if ( *(_DWORD *)off_X == 0 )
{
vX = a1;
- *off_X = a1;
+ *(_DWORD *)off_X = a1;
}
### gcp_cmdFE08_KeyExchangeAuthenticatedSession__h4
case 0x23:
+ case 0x24:
+ case 0x25:
if ( a2 >= 0x4C0 )
### gcp_sysdrv_rpc_103B
{
vX = off_X;
- result = *off_X;
- if ( *off_X == 0 )
+ result = *(_DWORD *)off_X;
+ if ( *(_DWORD *)off_X == 0 )
{
### gcp_ta_main_loop
{
- loc_X(result: (int)a1);
+ ((void (__fastcall *)(int))gcp_TA_CreateEntryPoint)(result: (int)a1);
}
case 2:
- loc_X(result: (int)a1);
+ ((void (__fastcall *)(int))off_X)(result: (int)a1);
break;
case 3:
- loc_X(result: a1[3]);
+ ((void (__fastcall *)(int))off_X)(result: a1[3]);
break;
case 4:
- loc_X(result: a1[2]);
+ ((void (__fastcall *)(int))off_X)(result: a1[2]);
break;
case 5:
- loc_X(result: a1[2]);
+ ((void (__fastcall *)(int))off_X)(result: a1[2]);
break;
### start
{
vX *= 2;
- *vX = vX;
- *(_DWORD *)(a3 + 8) = vX;
+ vX = *(_DWORD *)(vX + 24);
+ *(_DWORD *)(vX + 8) = vX;
vX = __CFSHL__(vX, 1);
vX *= 2;
- vX = (char *)vX + vX + a3;
+ vX = a3 + vX + vX;
*(_DWORD *)vX = vX;
vX = (__int16)vX >> 15;
- vX[1] = vX;
+ *(_BYTE *)(vX + 1) = vX;
*(_DWORD *)(vX + 20) = vX;
*(_BYTE *)(vX + 1) = 2 * vX;
- vX = ((_DWORD)vX << 16) + vX;
+ vX = (vX << 16) + vX;
*(_BYTE *)(vX + vX) = vX;
a64[9] = 2 * (_BYTE)a64;
+ vX = *(_DWORD *)(2 * (_DWORD)a64 + 0x64);
vX = (vX + 46) >> 28;
*(_BYTE *)(vX + 13) = vX;
- vX = *(_DWORD *)(2 * (_DWORD)a64 + 0x74);
- a64[1] = 2 * vX;
+ vX = 2 * *(_DWORD *)(2 * (_DWORD)a64 + 0x74);
+ a64[1] = vX;
*(_DWORD *)(4 * (_DWORD)a64 + 0x14) = a64;
|