__int64 __fastcall sub_A6C(unsigned __int8 a1) { int v1; // ebx __int64 v2; // rdx __int64 n4; // r8 __int64 v4; // r9 __int64 v5; // rdi __int64 v6; // rsi __int64 v7; // rbx char n2_4; // al __int64 v9; // rax char n2_2; // cl char n2_1; // al __int64 v12; // rax char v13; // cl __int64 v14; // rax char v15; // dl unsigned __int8 v17; // [rsp+30h] [rbp-D0h] BYREF char n8; // [rsp+31h] [rbp-CFh] char n2; // [rsp+32h] [rbp-CEh] BYREF char v20; // [rsp+33h] [rbp-CDh] char v21; // [rsp+34h] [rbp-CCh] char n2_3; // [rsp+35h] [rbp-CBh] char v23; // [rsp+36h] [rbp-CAh] char v24; // [rsp+37h] [rbp-C9h] char v25; // [rsp+38h] [rbp-C8h] char v26; // [rsp+39h] [rbp-C7h] _BYTE v27[72]; // [rsp+140h] [rbp+40h] BYREF char n15; // [rsp+188h] [rbp+88h] _BYTE v29[11]; // [rsp+310h] [rbp+210h] BYREF char n3; // [rsp+31Bh] [rbp+21Bh] _BYTE v31[52]; // [rsp+3F0h] [rbp+2F0h] BYREF char n7; // [rsp+424h] [rbp+324h] char v33; // [rsp+426h] [rbp+326h] char v34; // [rsp+428h] [rbp+328h] char v35; // [rsp+42Ah] [rbp+32Ah] char v36; // [rsp+42Ch] [rbp+32Ch] char v37; // [rsp+42Eh] [rbp+32Eh] char v38; // [rsp+430h] [rbp+330h] char n2_5; // [rsp+477h] [rbp+377h] char v40; // [rsp+50Ah] [rbp+40Ah] _BYTE v41[304]; // [rsp+720h] [rbp+620h] BYREF _BYTE v42[352]; // [rsp+850h] [rbp+750h] BYREF _BYTE v43[528]; // [rsp+9B0h] [rbp+8B0h] BYREF _BYTE v44[1504]; // [rsp+BC0h] [rbp+AC0h] BYREF char v45[6688]; // [rsp+11A0h] [rbp+10A0h] BYREF char v46; // [rsp+2BD0h] [rbp+2AD0h] BYREF __int64 n301; // [rsp+2BD8h] [rbp+2AD8h] BYREF n301 = 0; /*0xa83*/ v1 = a1; /*0xa90*/ v17 = a1; /*0xa98*/ n8 = 0; /*0xa9c*/ sub_5490(&n2, 256); /*0xaa1*/ v5 = 0; /*0xaa6*/ v6 = 0; /*0xaa8*/ if ( !(_BYTE)v1 ) /*0xaae*/ { n8 = 8; /*0xf22*/ n301 = 301; /*0xf48*/ v7 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xf5d*/ L"SocketProcessorCoreConfig", &unk_7410, &v46, &n301, v41); if ( v7 >= 0 ) /*0xf63*/ { n2 = v41[5] == 0; /*0xf72*/ v20 = v41[7]; /*0xf77*/ } n301 = 462; /*0xf7f*/ v6 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xfb5*/ L"SocketPowerManagementConfig", &unk_7430, &v46, &n301, v27); if ( v6 >= 0 ) /*0xfbb*/ { v21 = v27[4]; /*0xfc0*/ n2_3 = v27[24]; /*0xfc7*/ v23 = v27[46]; /*0xfce*/ v24 = v27[49]; /*0xfd5*/ v25 = v27[48]; /*0xfdc*/ v26 = v27[63]; /*0xfe3*/ } goto LABEL_53; /*0xfe3*/ } switch ( v1 ) { case 1: n8 = 5; /*0xde5*/ n301 = 341; /*0xe0b*/ v12 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xe1d*/ L"SocketMpLinkConfig", &unk_74A0, &v46, &n301, v42); v13 = v20; /*0xe20*/ v7 = v12; /*0xe2c*/ n301 = 514; /*0xe2f*/ if ( v12 >= 0 ) /*0xe52*/ v13 = v42[21]; /*0xe52*/ v20 = v13; /*0xe68*/ v14 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xe73*/ L"SocketMemoryConfig", &unk_73E0, &v46, &n301, v43); v15 = v23; /*0xe76*/ v6 = v14; /*0xe9a*/ n301 = 224; /*0xe9d*/ if ( v14 >= 0 ) /*0xea8*/ v15 = v43[168]; /*0xea8*/ v23 = v15; /*0xeb2*/ v5 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xecd*/ L"SocketCommonRcConfig", &unk_74B0, &v46, &n301, v29); if ( v5 >= 0 ) { n2 = v29[9]; /*0xee4*/ if ( n3 == 3 ) v21 = 1; /*0xef2*/ else v21 = n3 != 0 ? v21 : 0; n2_3 = v29[10]; /*0xf07*/ n301 = 224; /*0xf0b*/ } goto LABEL_53; /*0xf16*/ case 2: n8 = 2; /*0xd06*/ n301 = 462; /*0xd2c*/ v5 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xd41*/ L"SocketPowerManagementConfig", &unk_7430, &v46, &n301, v27); if ( v5 >= 0 ) /*0xd47*/ { if ( n15 ) /*0xd51*/ { if ( n15 == 7 ) /*0xd5d*/ { n2 = 1; /*0xd5f*/ } else if ( n15 == 8 ) /*0xd69*/ { n2 = 2; /*0xd6b*/ } else { n2_1 = n2; /*0xd72*/ if ( n15 == 15 ) /*0xd7f*/ n2_1 = 3; /*0xd7f*/ n2 = n2_1; /*0xd82*/ } } else { n2 = 0; /*0xd53*/ } } n301 = 814; /*0xd8d*/ v7 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xdc3*/ L"Setup", &unk_7568, &v46, &n301, v31); if ( v7 < 0 ) /*0xdc9*/ return v5; /*0xdc9*/ v20 = v40; /*0xdd5*/ goto LABEL_53; /*0xdd9*/ case 3: n8 = 5; /*0xc38*/ n301 = 6668; /*0xc5e*/ v9 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, char *))(qword_7940 + 72))( /*0xc70*/ L"SocketIioConfig", &unk_7470, &v46, &n301, v45); n2_2 = n2; /*0xc73*/ v5 = v9; /*0xc7f*/ n301 = 1495; /*0xc82*/ if ( v9 >= 0 ) /*0xca5*/ n2_2 = v45[0]; /*0xca5*/ n2 = n2_2; /*0xcbb*/ v7 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xcc9*/ L"PchRcConfiguration", &unk_73B0, &v46, &n301, v44); if ( v7 < 0 ) /*0xccf*/ return v5; /*0xccf*/ v20 = v44[196]; /*0xcdb*/ v21 = v44[197]; /*0xce5*/ n2_3 = v44[82]; /*0xcef*/ v23 = v44[83]; /*0xcf9*/ goto LABEL_53; /*0xcfd*/ case 4: n8 = 0; /*0xc27*/ return sub_9A4((char *)&v17, v2, n4, v4); /*0x1000*/ case 5: n8 = 8; /*0xb49*/ n301 = 814; /*0xb6f*/ v5 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xb84*/ L"Setup", &unk_7568, &v46, &n301, v31); if ( v5 < 0 ) /*0xb8a*/ return v5; /*0xb8a*/ LOBYTE(v2) = n7; /*0xb96*/ v20 = v37; /*0xb9c*/ v21 = v38; /*0xba6*/ v23 = v36; /*0xbb0*/ v24 = v33 - 7; /*0xbbd*/ v25 = v34 - 1; /*0xbc9*/ if ( n7 == 3 ) /*0xbd4*/ { n2_3 = 0; /*0xbd6*/ } else { n4 = 4; /*0xbdd*/ switch ( n7 ) /*0xbe6*/ { case 4: /*0xbe6*/ n2_3 = 1; /*0xbe8*/ break; case 5: /*0xbe6*/ n2_3 = 2; /*0xbf4*/ break; case 6: /*0xbe6*/ n2_3 = 3; /*0xc00*/ break; default: n2_4 = n2_3; /*0xc06*/ if ( n7 == 7 ) /*0xc0e*/ n2_4 = 4; /*0xc0e*/ n2_3 = n2_4; /*0xc12*/ break; } } v26 = v35 != 1; /*0xc1d*/ break; case 6: n8 = 1; /*0xaed*/ n301 = 814; /*0xb12*/ v7 = (*(__int64 (__fastcall **)(const __int16 *, void *, char *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0xb27*/ L"Setup", &unk_7568, &v46, &n301, v31); if ( v7 < 0 ) /*0xb2d*/ return v5; /*0xb2d*/ n2 = n2_5; /*0xb39*/ LABEL_53: if ( v7 < 0 || v6 < 0 ) /*0xfef*/ return v5; /*0xfef*/ break; } if ( v5 >= 0 ) /*0xff4*/ return sub_9A4((char *)&v17, v2, n4, v4); /*0xff4*/ return v5; /*0x100e*/ }