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; }