aboutsummaryrefslogtreecommitdiffstats
path: root/fw/pseudo/oc.oc_cmd01.after.c
blob: 98cc84eaecda5a5916a5314019241557ecb04691 (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
int __fastcall oc_cmd01(void *ctx, struct ta_params *params)
{
  int v3; // r6
  int v4; // r0
  _DWORD *v5; // r5
  int v6; // r0
  int v7; // r2
  struct ta_params *v8; // r1
  char v10; // [sp+17h] [bp-1h] BYREF

  v3 = oc_cmd01__h1(ctx: (void *)0x20, params: (struct ta_params *)1);
  if ( v3 == 0 )
  {
    v4 = oc_cmd01__h3(ctx: (void *)0xE, params: nullptr);
    if ( v4 != 0 )
    {
      v5 = (_DWORD *)v4;
      v7 = off_401824[1];
      v6 = *off_401824;
      *(_BYTE *)v5 = *(_QWORD *)off_401824;
      v5[1] = v7;
      *((_BYTE *)v5 + 3) = HIBYTE(v6);
      *((_BYTE *)v5 + 2) = BYTE2(v6);
      *((_BYTE *)v5 + 1) = BYTE1(v6);
      oc_lib_thunk_tailjump(a1: (int)(v5 + 2));
      ((void (__fastcall *)(_DWORD *, int, int *, int, char *, int, int, int))loc_40133C)(
        a1: v5,
        a2: 14,
        a3: (int *)off_40181C,
        a4: 48,
        a5: (char *)ctx + 8,
        a6: 48,
        a7: 48,
        a8: 1);
      v10 = 1;
      if ( *((_BYTE *)ctx + 6) == 0 || (v3 = 5, oc_sysdrv_rpc_3158(a1: (int)&v10) == 0) && v10 != 1 )
        v3 = 0;
      oc_cmd01__h2(ctx: v5, params: v8);
    }
    else
    {
      return 2;
    }
  }
  return v3;
}