blob: 87b40356a6ba1a6130d97880aed374e0a8fa865e (
plain) (
blame)
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
|
int __fastcall gcp_cmd03_ActivateDRMCertAuthSession(struct gcp_ctx *ctx, struct ta_params *params)
{
unsigned __int64 *p_arg10; // r4
unsigned int arg10; // r6
int v5; // r4
struct gcp_drm_session *v6; // r6
unsigned int *p_state; // r7
struct gcp_ctx *v8; // r4
unsigned __int8 *body; // r0
int v10; // r2
int v11; // r3
int v12; // r6
_DWORD dst[65]; // [sp+8h] [bp-108h] BYREF
int v15; // [sp+10Ch] [bp-4h]
v15 = dword_405CE4;
p_arg10 = ¶ms->arg10;
arg10 = params->arg10;
gcp_log(level: 0, fmt: aAmdTaGcpActiva);
if ( arg10 < 0x20 )
{
v6 = &ctx->drm[arg10];
p_state = &v6->state;
if ( v6->state == 1 )
{
gcp_lib_zero_fill_words(dst, len: 0x100u);
v8 = (struct gcp_ctx *)((char *)p_arg10 + 4);
sub_402820(a1: (int)v8, a2: (int)v8, a3: 256);
v5 = gcp_cmdFE08_KeyExchangeAuthenticatedSession__h1(ctx: v8, params: (struct ta_params *)0x100);
sub_402820(a1: (int)dst, a2: (int)dst, a3: 256);
if ( v5 == 0 )
{
body = v6->body;
v10 = dst[1];
v11 = dst[2];
v12 = dst[3];
*(_DWORD *)body = dst[0];
*((_DWORD *)body + 1) = v10;
*((_DWORD *)body + 2) = v11;
*((_DWORD *)body + 3) = v12;
*p_state = 2;
}
}
else
{
v5 = 1046;
}
gcp_log(level: 0, fmt: aAmdTaGcpActiva_0);
}
else
{
gcp_log(level: 0, fmt: (const char *)off_402714);
v5 = 1043;
}
if ( dword_405CE4 != v15 )
{
((void (__fastcall *)(int))loc_405CE8)(a1: dword_405CE4 - v15);
JUMPOUT(0x4026B0);
}
return v5;
}
|