// OC TA command surface, decompiled with restored names, prototypes and types. // Source: psp_out/versions_win/ta_50-0-0-1_cbd47c59.bin // Handlers resolved from fw/cmdmaps/oc.json; loc_* labels mapped to their // containing function. Generated by fw/ta_surface.py. // ================ cmd 0x2 @ 0x401750 ================ int __fastcall oc_cmd02(void *ctx, struct ta_params *params) { if ( oc_cmd02__h1(ctx, params: (struct ta_params *)((char *)ctx + 1)) != 0 ) { *(_BYTE *)ctx = 0; *((_BYTE *)ctx + 1) = 0; } return 0; } // ================ cmd 0x1 @ 0x401768 ================ 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; }