int __fastcall auc_cmd02__h6(void *ctx, struct ta_params *params) { struct ta_params **v2; // r3 struct ta_params **v5; // r7 int result; // r0 int *v7; // r1 char *v8; // r7 int i; // r0 char v10; // t1 char *v11; // r6 int j; // r0 char v13; // t1 struct ta_params **v14; // [sp+Ch] [bp-338h] char v15[4]; // [sp+10h] [bp-334h] BYREF int v16; // [sp+14h] [bp-330h] int v17; // [sp+18h] [bp-32Ch] struct ta_params *v18; // [sp+30h] [bp-314h] int v19; // [sp+34h] [bp-310h] BYREF int a1; // [sp+38h] [bp-30Ch] BYREF int v21; // [sp+3Ch] [bp-308h] BYREF _BYTE v22[256]; // [sp+40h] [bp-304h] BYREF _BYTE dst[256]; // [sp+140h] [bp-204h] BYREF _DWORD v24[64]; // [sp+240h] [bp-104h] BYREF int v25; // [sp+340h] [bp-4h] v25 = dword_401954; v21 = 0; v19 = 0; a1 = 0; v5 = v2; auc_lib_zero_fill_words(dst, len: 0x100u); auc_lib_zero_fill_words(dst: v22, len: 0x100u); v18 = params; auc_lib_zero_fill_words(dst: v15, len: 0x20u); if ( auc_lib_c17598fe_22(a1: (int)v15) == 0 ) { result = 7; switch ( v16 ) { case 1: goto LABEL_6; case 4: if ( v17 == 1 ) LABEL_6: v7 = dword_4038D8; else v7 = (int *)sub_403D98; goto LABEL_11; case 5: v7 = dword_404258; goto LABEL_11; case 6: v7 = dword_401C58; goto LABEL_11; case 8: v7 = dword_4025D8; LABEL_11: auc_lib_db5482d6_100(a1: 4220928, a2: (int)v7, a3: 1216); if ( auc_lib_137f0289_22(a1: 4220928) != 0 ) { result = 8; goto LABEL_24; } if ( MEMORY[0x406824] != 2048 ) { result = 5; goto LABEL_24; } v14 = v5; v8 = (char *)v24; auc_lib_zero_fill_bytes(dst: (char *)v24 + 3, len: 0xFDu); LOWORD(v24[0]) = MEMORY[0x406830]; LOBYTE(v19) = MEMORY[0x406832]; BYTE1(v19) = MEMORY[0x406831]; BYTE2(v19) = MEMORY[0x406830]; auc_lib_db5482d6_100(a1: (int)v24, a2: 4220980, a3: 256); for ( i = 255; i != -1; --i ) { v10 = *v8++; v22[i] = v10; } v11 = (char *)v24; auc_lib_db5482d6_100(a1: (int)v24, a2: 4221236, a3: 256); v5 = v14; for ( j = 255; j != -1; --j ) { v13 = *v11++; dst[j] = v13; } if ( auc_sysdrv_rpc_30(a1: -1593835472, a2: 2048, a3: (int)&a1) == 0 ) { v24[1] = &v19; v24[4] = dst; v24[5] = 256; v24[7] = v22; v24[8] = 256; v24[6] = -1073741008; v24[3] = -805306064; v24[0] = -805305808; v24[2] = 3; if ( auc_sysdrv_rpc_33(a1, a2: (int)v24, a3: 3) == 0 && auc_sysdrv_rpc_1(a1: (int)&v21, a2: 1616970288, a3: 1, a4: 2048) == 0 && auc_sysdrv_rpc_3(a1: v21, a2: a1) == 0 ) { break; } } result = 9; goto LABEL_24; case 11: case 12: case 13: case 14: case 15: case 16: case 17: abort(); default: goto LABEL_24; } goto LABEL_26; } result = 6; LABEL_24: while ( dword_401954 != v25 ) { ((void (__fastcall *)(int, int))loc_401958)(a1: result, a2: dword_401954 - v25); LABEL_26: if ( auc_sysdrv_rpc_9(a1: v21, a2: 0, a3: 0, a4: (int)ctx) != 0 ) { if ( a1 != 0 ) auc_sysdrv_rpc_31(a1); if ( v21 != 0 ) auc_sysdrv_rpc_2(a1: v21); result = 10; } else { *v5 = v18; if ( a1 != 0 ) auc_sysdrv_rpc_31(a1); if ( v21 != 0 ) auc_sysdrv_rpc_2(a1: v21); result = 0; } } return result; }