Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- __int64 __fastcall SocketControl(__int64 *a1, int a2, __int64 a3, unsigned int a4)
- {
- unsigned int v4; // er10
- unsigned int v5; // er11
- __int64 v6; // r9
- __int64 *v7; // rbx
- __int64 result; // rax
- __int64 v9; // rax
- int v10; // er11
- int v11; // er8
- __int64 v12; // rdx
- int v13; // eax
- __int64 v14; // rax
- __int64 v15; // rcx
- __int64 v16; // rax
- __int64 v17; // rax
- __int64 v18; // rax
- __int64 v19; // rax
- signed int v20; // eax
- __int64 v21; // rax
- __int64 v22; // rcx
- __int64 v23; // rax
- int v24; // eax
- signed int v25; // edi
- int v26; // eax
- __int64 v27; // r8
- signed int v28; // eax
- int v29; // [rsp+30h] [rbp-18h]
- __int64 v30; // [rsp+38h] [rbp-10h]
- v4 = -1;
- v5 = a4;
- v6 = a3;
- v7 = a1;
- if ( !a1 )
- return sub_14105C390(0);
- switch ( a2 )
- {
- case 'addr':
- if ( a3 )
- {
- if ( v5 == 16 )
- sub_14103BDE0(a3, a1 + 37, 16i64);
- }
- return *((unsigned __int8 *)v7 + 303) | ((*((unsigned __int8 *)v7 + 302) | ((*((unsigned __int8 *)v7 + 301) | ((unsigned int)*((unsigned __int8 *)v7 + 300) << 8)) << 8)) << 8);
- case 'alpn':
- v9 = a1[45];
- if ( v9 )
- {
- if ( a3 )
- {
- sub_14103C0D0(a3, v9 + 38408, v5);
- return 0i64;
- }
- return 0i64;
- }
- goto LABEL_101;
- case 'alrt':
- if ( a3 && v5 == 16 )
- {
- v10 = *((unsigned __int8 *)a1 + 894);
- v29 = *((unsigned __int8 *)a1 + 894);
- v4 = 0;
- v30 = 5416861360i64;
- if ( *((_BYTE *)a1 + 893) )
- {
- v11 = 0;
- v12 = 0i64;
- v13 = 0;
- while ( v13 != v10 )
- {
- ++v12;
- ++v11;
- v13 = *(_DWORD *)&_ImageBase[8 * v12 + 25477976];
- if ( v13 == -1 )
- goto LABEL_21;
- }
- v4 = 1;
- v30 = *(_QWORD *)&_ImageBase[8 * v11 + 25477980];
- }
- LABEL_21:
- if ( v4 )
- {
- sub_14103BDE0(v6, &v29, 16i64);
- return (unsigned int)(*((_BYTE *)v7 + 895) != 0) + 1;
- }
- }
- return v4;
- case 'cert':
- if ( a3 && v5 == 452 )
- {
- sub_14103BDE0(a3, a1 + 47, 452i64);
- return 0i64;
- }
- goto LABEL_101;
- case 'cfip':
- return *((_DWORD *)a1 + 88) == 4;
- case 'ciph':
- v14 = a1[45];
- if ( v14 )
- {
- v15 = *(_QWORD *)(v14 + 48);
- if ( v15 )
- {
- if ( a3 )
- sub_14103C0D0(a3, v15 + 16, v5);
- return *(unsigned int *)(*(_QWORD *)(v7[45] + 48) + 12i64);
- }
- }
- LABEL_101:
- if ( *v7 )
- {
- if ( a2 != 1937006964 )
- return sub_14105C390(*v7);
- v28 = *((_DWORD *)v7 + 88);
- if ( v28 < 4096 )
- {
- if ( v28 >= 34 )
- return sub_14105C390(*v7);
- return 0i64;
- }
- }
- return v4;
- case 'crpt':
- case 'rsao':
- switch ( *((_DWORD *)a1 + 88) )
- {
- case 0x14:
- case 0x17:
- case 0x1A:
- case 0x1C:
- case 0x1D:
- case 0x1F:
- case 0x21:
- result = 1i64;
- break;
- default:
- return 0;
- }
- break;
- case 'htim':
- v16 = a1[45];
- if ( v16 )
- return *(unsigned int *)(v16 + 16);
- goto LABEL_101;
- case 'ladd':
- if ( a3 && (signed int)v5 >= 16 )
- {
- sub_14103BDE0(a3, a1 + 39, 16i64);
- return 0i64;
- }
- return v4;
- case 'maxr':
- return *((unsigned int *)a1 + 219);
- case 'maxs':
- return *((unsigned int *)a1 + 218);
- case 'recv':
- v17 = a1[45];
- if ( v17 )
- return (unsigned int)(*(_DWORD *)(v17 + 36) - *(_DWORD *)(v17 + 32));
- return 0i64;
- case 'resu':
- v18 = a1[45];
- if ( v18 )
- return *(unsigned __int8 *)(v18 + 924);
- goto LABEL_101;
- case 'salg':
- v19 = a1[45];
- if ( v19 )
- {
- if ( a3 )
- {
- v20 = *(_DWORD *)(v19 + 14000);
- if ( v20 >= 16 )
- {
- sub_14103C0D0(a3, qword_143AB0720[v20 - 16], v5);
- return 1i64;
- }
- }
- }
- goto LABEL_101;
- case 'send':
- v21 = a1[45];
- if ( v21 )
- return (unsigned int)(*(_DWORD *)(v21 + 24) - *(_DWORD *)(v21 + 20));
- return 0i64;
- case 'serr':
- v22 = *a1;
- if ( v22 )
- result = sub_14105C390(v22);
- else
- result = *((unsigned int *)v7 + 216);
- return result;
- case 'sock':
- if ( a3 && v5 == 8 )
- {
- sub_14103BDE0(a3, a1, 8i64);
- return 0i64;
- }
- return v4;
- case 'vers':
- v23 = a1[45];
- if ( !v23 )
- goto LABEL_101;
- if ( a3 )
- sub_14103C0D0(a3, qword_143AB06F8[(unsigned __int8)*(_WORD *)(v23 + 920)], v5);
- result = *(unsigned __int16 *)(v7[45] + 920);
- break;
- case 'fail':
- v24 = *((_DWORD *)a1 + 88);
- if ( !_bittest(&v24, 0xCu) )
- return 0;
- switch ( v24 )
- {
- case 4097:
- return v4;
- case 4098:
- result = 0xFFFFFFF6i64;
- break;
- case 4099:
- result = 0xFFFFFFF5i64;
- break;
- case 4100:
- result = 0xFFFFFFF4i64;
- break;
- case 4101:
- result = 4294967283i64;
- break;
- case 4102:
- result = 4294967282i64;
- break;
- case 4103:
- result = 4294967281i64;
- break;
- case 4104:
- result = 4294967273i64;
- break;
- case 4105:
- result = 4294967276i64;
- break;
- case 4106:
- result = 4294967275i64;
- break;
- case 4107:
- result = 4294967274i64;
- break;
- case 4108:
- result = 4294967272i64;
- break;
- case 4109:
- result = 4294967266i64;
- break;
- case 4110:
- result = 4294967265i64;
- break;
- case 4111:
- result = 4294967271i64;
- break;
- default:
- result = 4294967264i64;
- break;
- }
- break;
- case 'hres':
- v25 = SocketControl(a1, 1936028274, 0i64, 0);
- v26 = SocketControl(v7, 1717660012, 0i64, 0);
- if ( v25 >= -1 )
- {
- if ( v26 )
- {
- LOBYTE(v27) = 1;
- result = sub_14105FFE0(130i64, (unsigned __int16)v26, v27);
- }
- else
- {
- result = sub_14105FFE0(130i64, 0i64, 0i64);
- }
- }
- else
- {
- LOBYTE(v27) = 1;
- result = sub_14105FFE0(128i64, (unsigned __int16)v25, v27);
- }
- return result;
- default:
- goto LABEL_101;
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement