C++ Programming/Exercises/Functions
char *__fastcall AnoSDKIoctl_0(int a1, int a2) {
char *v3; // r4 char *v4; // r0 char *v5; // r6 int v6; // r4 int v7; // r0 int v8; // r6 char *v9; // r0 char *v10; // r5 int v11; // r0 char *v12; // r0 int v13; // r0 void *v14; // r0 char v16[1024]; // [sp+8h] [bp-450h] BYREF int v17[20]; // [sp+408h] [bp-50h] BYREF
v3 = 0; switch ( a1 ) { case 45: v8 = ((int (__fastcall *)(int, int, _DWORD, _DWORD, _DWORD))AnoSDKIoctlOld_0)(45, a2, 0, 0, 0); memset(v16, 0, 16); v9 = (char *)malloc(6u); if ( !v9 ) return v3; v10 = v9; sub_1099E4(v16, 16, "%d", v8); v11 = sub_10915E(v16); *(_DWORD *)(v10 + 2) = v11; if ( v11 ) { v3 = v10; *(_WORD *)v10 = sub_1090B2(v16) + 1; return v3; } v14 = v10; goto LABEL_19; case 18: memset(v16, 0, sizeof(v16)); v17[0] = 0; if ( ((int (__fastcall *)(int, int, char *, int, int *))AnoSDKIoctlOld_0)(18, a2, v16, 1024, v17) ) return 0; v12 = (char *)malloc(6u); if ( !v12 ) return 0; v3 = v12; v13 = sub_10915E(v16); *(_DWORD *)(v3 + 2) = v13; if ( v13 ) { *(_WORD *)v3 = sub_1090B2(v16) + 1; return v3; } v14 = v3;
LABEL_19:
free(v14); return 0; case 10: memset(v17, 0, 64); memset(v16, 0, 0xFFu); v4 = (char *)malloc(6u); v3 = 0; if ( v4 ) { v5 = v4; *((_WORD *)v4 + 2) = 0; *(_DWORD *)v4 = 0; v6 = ((int (__fastcall *)(int, int, int *, int, _DWORD))AnoSDKIoctlOld_0)(10, a2, v17, 64, 0); sub_1099E4(v16, 255, "retval=%d", v6); if ( v6 == 1 ) { sub_109140(v16, "|emulator_name="); sub_109140(v16, v17); } v7 = sub_10915E(v16); *(_DWORD *)(v5 + 2) = v7; if ( v7 ) { *(_WORD *)v5 = sub_1090B2(v16) + 1; return v5; } v14 = v5; goto LABEL_19; } break; } return v3;
}