aboutsummaryrefslogtreecommitdiffstats
path: root/fw/pseudo/rap.rap_cmd02.after.c
blob: 6868eece4b8a567191e3d18e70ed9118f8495e32 (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
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
int __fastcall rap_cmd02(void *ctx, struct ta_params *params)
{
  _DWORD *v2; // r3
  char *v3; // r7
  _DWORD *v5; // r9
  int v6; // r0
  int v7; // r5
  int v8; // r0
  int v9; // r6
  int v10; // r5
  int *v11; // r4
  int v12; // r1
  int v13; // r2
  int v14; // r3
  int v15; // r0
  int v16; // r0
  int v17; // r1
  int v18; // r3
  int v19; // r4
  int v20; // r7
  int v22; // [sp+0h] [bp-34h] BYREF
  _DWORD v23[12]; // [sp+4h] [bp-30h] BYREF
  int *v24; // [sp+50h] [bp+1Ch]
  int v25; // [sp+54h] [bp+20h]
  int *v26; // [sp+58h] [bp+24h]

  v3 = off_4016F4[0];
  if ( *off_4016F4[0] == 0 )
    return *off_4016F8;
  if ( params != (struct ta_params *)1 )
    return 4;
  v5 = v2;
  ((void (__fastcall *)(_DWORD *, int))loc_401000)(a1: v23, a2: 48);
  v22 = 1;
  rap_sysdrv_rpc_1076(a1: (int)&v22);
  v22 = 10;
  v6 = rap_sysdrv_rpc_1076(a1: (int)&v22);
  *v26 = v6;
  if ( v6 == 0 )
  {
    v23[1] = 1;
    v22 = (int)ctx;
    if ( ctx == (void *)5 )
    {
      v8 = rap_sysdrv_rpc_1076(a1: (int)&v22);
      v7 = 11;
      *v26 = v8;
      if ( v8 == 0 )
        v7 = 1;
      v9 = 0;
    }
    else
    {
      v10 = v25;
      if ( v25 == 0 )
      {
        v7 = 9;
        *v26 = dword_4016FC;
LABEL_26:
        v22 = 11;
        rap_sysdrv_rpc_1076(a1: (int)&v22);
        return v7;
      }
      v11 = v24;
      v12 = *((_DWORD *)v3 + 12);
      v13 = *((_DWORD *)v3 + 13);
      v14 = *((_DWORD *)v3 + 14);
      v23[2] = *((_DWORD *)v3 + 6);
      v23[3] = v12;
      v23[4] = v13;
      v23[5] = v14;
      v9 = 0;
      while ( 1 )
      {
        if ( v10 == 0 )
        {
          v7 = 1;
          goto LABEL_20;
        }
        v9 = *v11;
        if ( *v11 != 0 )
        {
          v23[0] = *v11;
          v15 = rap_sysdrv_rpc_1076(a1: (int)&v22);
          *v26 = v15;
          if ( v15 != 0 )
            break;
        }
        --v10;
        ++v11;
      }
      v7 = 11;
    }
LABEL_20:
    rap_sysdrv_rpc_107B(a1: (int)&v22);
    v16 = v23[6];
    v17 = v23[7];
    v18 = v23[8];
    v19 = v23[9];
    v20 = v23[10];
    *v5 = v23[11];
    v5[1] = v16;
    v5[2] = v17;
    v5[3] = v18;
    v5[4] = v19;
    v5[5] = v20;
    if ( *v26 != 0 )
    {
      if ( *v26 == dword_4016FC )
        *v5 = v9;
    }
    else if ( v16 != v17 )
    {
      v7 = 7;
    }
    goto LABEL_26;
  }
  return 11;
}