aboutsummaryrefslogtreecommitdiffstats
path: root/fw/pseudo/gcp.gcp_cmdFE07_CreateAuthenticatedSession.before.c
blob: 62ecc02c355f0709d7d1264caaa013215f5b378f (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
int __fastcall sub_402E94(int a1, int a2)
{
  int v4; // r7
  int v5; // r6
  __int64 *v6; // r0
  int v7; // r4
  __int64 v8; // kr00_8
  int v9; // r1
  __int64 v10; // kr08_8
  int v11; // r0
  int v12; // r0

  v4 = 0;
  sub_405084(a1: 0, a2: aAmdTaGcpCreate);
  v5 = a1 + 768;
  v6 = (__int64 *)(a1 + 7680);
  while ( 1 )
  {
    if ( v4 == 0x10000000 )
    {
      v7 = 529;
      goto LABEL_10;
    }
    if ( *(_DWORD *)(v5 + 24) == 0 )
      break;
    v5 += 80;
    v4 += 0x1000000;
  }
  *(_DWORD *)(v5 + 24) = 1;
  *(_DWORD *)(v5 + 4) = *(_DWORD *)(a2 + 24);
  v8 = *v6;
  v9 = *(_DWORD *)(a1 + 7684) + 1;
  v10 = *(_QWORD *)(a2 + 16);
  ++*(_DWORD *)v6;
  *(_DWORD *)(a1 + 7684) = v9;
  v11 = HIDWORD(v8) & 0xFFFFFF | v4;
  *(_QWORD *)(v5 + 16) = v10;
  *(_DWORD *)v5 = v11;
  if ( (_DWORD)v8 == 0 )
  {
    v12 = sub_405428(a1: 1);
    if ( v12 != 0 )
    {
      v7 = v12 | 0x20000000;
      goto LABEL_10;
    }
    v11 = *(_DWORD *)v5;
  }
  v7 = 0;
  *(_DWORD *)(a2 + 6480) = v11;
  sub_405084(a1: 0, a2: aAmdTaGcpCreate_0);
LABEL_10:
  sub_405084(a1: 0, a2: off_402F8C);
  return v7;
}