Newer
Older
AMI-Aptio-BIOS-Reversed / SiInitPreMem / decompiled / ffd821b8.c
@Ajax Dong Ajax Dong 2 days ago 4 KB Init
// 0xffd821b8
{"addr":"0xffd821b8","code":"int __fastcall sub_FFD821B8(int a1, char a2, int a3, unsigned __int8 n2)\n{\n  unsigned __int8 n2_1; // bh\n  char v5; // bl\n  int v7; // edi\n  int v8; // eax\n  __int16 v9; // si\n  int v10; // edx\n  unsigned __int8 v11; // bl\n  char v12; // al\n  char v13; // al\n  char n2_2; // [esp+11h] [ebp-3h] BYREF\n  char v16; // [esp+12h] [ebp-2h]\n  char v17; // [esp+13h] [ebp-1h] BYREF\n\n  n2_1 = n2; /*0xffd821ba*/\n  v5 = 0; /*0xffd821be*/\n  v16 = a2; /*0xffd821c0*/\n  if ( n2 == 1 )\n  {\n    sub_FFD7F9AF(64, (int)\"EarlyConfigurePchHSata() - First Controller - Start\\n\"); /*0xffd821d5*/\n    v7 = sub_FFD8CBBA(0, 23, 0); /*0xffd821e9*/\n    sub_FFD8C019(); /*0xffd821eb*/\n  }\n  else\n  {\n    if ( n2 != 2 )\n    {\n      sub_FFD7F9AF(0x80000000, (int)\"Error: Invalid SATA controller!\\n\");\n      return -2147483646; /*0xffd8244e*/\n    }\n    sub_FFD7F9AF(64, (int)\"EarlyConfigurePchHSata() - Second Controller - Start\\n\"); /*0xffd82202*/\n    v7 = sub_FFD8CBBA(0, 17, 5); /*0xffd82216*/\n  }\n  v8 = sub_FFD8CBBA(0, 31, 0); /*0xffd8221f*/\n  v9 = sub_FFD8CCA5((unsigned __int16 *)(v8 + 2)); /*0xffd8222d*/\n  if ( !(unsigned __int8)sub_FFD8D58A() ) /*0xffd82230*/\n  {\n    if ( n2_1 == 1 ) /*0xffd8223c*/\n      v5 = sub_FFD81814(); /*0xffd82243*/\n    if ( n2_1 != 2 ) /*0xffd82248*/\n      goto LABEL_14; /*0xffd82248*/\n    v11 = 0; /*0xffd8224a*/\n    while ( 1 ) /*0xffd82253*/\n    {\n      sub_FFD8E7BA(v11, &n2); /*0xffd82253*/\n      sub_FFD8E062(n2, &v17, &n2_2); /*0xffd82266*/\n      if ( n2_2 == 2 ) /*0xffd82271*/\n        break; /*0xffd82271*/\n      if ( ++v11 >= 6u ) /*0xffd82278*/\n      {\n        v5 = 0; /*0xffd8227a*/\n        goto LABEL_14; /*0xffd8227c*/\n      }\n    }\n  }\n  v5 = 1; /*0xffd8227e*/\nLABEL_14:\n  if ( (*(_BYTE *)a1 & 1) != 0 && (v5 || *(_DWORD *)(a1 + 4)) ) /*0xffd8228e*/\n  {\n    *(_BYTE *)(v7 + 160) = -104; /*0xffd82298*/\n    *(_DWORD *)(v7 + 164) = *(_DWORD *)(v7 + 164) & 0xFFFFFE00 | 0x183; /*0xffd822ad*/\n    *(_BYTE *)(v7 + 160) = -104; /*0xffd822b3*/\n    *(_DWORD *)(v7 + 164) |= 0x8000u; /*0xffd822c5*/\n    *(_BYTE *)(v7 + 160) = -92; /*0xffd822cb*/\n    *(_DWORD *)(v7 + 164) |= 0x40u; /*0xffd822db*/\n    if ( v9 == -24254 /*0xffd8237d*/\n      || v9 == -24253\n      || v9 == -24252\n      || v9 == -24251\n      || v9 == -24250\n      || v9 == -24249\n      || v9 == -24248\n      || v9 == -24256\n      || v9 == -24255\n      || v9 == -24243\n      || v9 == -24242\n      || v9 == -24241\n      || v9 == -25280\n      || v9 == -25279\n      || v9 == -25278\n      || v9 == -25277\n      || v9 == -25274\n      || v9 == -25272 )\n    {\n      *(_BYTE *)(v7 + 160) = -100; /*0xffd8237f*/\n      *(_DWORD *)(v7 + 164) |= 0x400000u; /*0xffd82391*/\n    }\n    *(_BYTE *)(v7 + 160) = -100; /*0xffd82397*/\n    *(_DWORD *)(v7 + 164) = *(_DWORD *)(v7 + 164) & 0xDF63E013 | 0x209C0224; /*0xffd823ae*/\n    if ( n2_1 == 1 ) /*0xffd823b7*/\n    {\n      *(_BYTE *)(v7 + 160) = -100; /*0xffd823b9*/\n      *(_DWORD *)(v7 + 164) |= 0x40000000u; /*0xffd823cb*/\n    }\n    v12 = *(_BYTE *)(v7 + 156) | 0x20; /*0xffd823d7*/\n    if ( *(_DWORD *)(a1 + 4) == 1 ) /*0xffd823dd*/\n    {\n      if ( (*(_BYTE *)(a1 + 76) & 1) != 0 ) /*0xffd823e5*/\n        v12 = *(_BYTE *)(v7 + 156) & 0x1F | 0xA0; /*0xffd823e7*/\n      else\n        v12 = *(_BYTE *)(v7 + 156) & 0x1F | 0x60; /*0xffd823eb*/\n    }\n    if ( v16 ) /*0xffd823f2*/\n      v13 = v12 & 0xE1 | 6; /*0xffd823f6*/\n    else\n      v13 = v12 & 0xE8 | 0x10; /*0xffd823fc*/\n    *(_BYTE *)(v7 + 156) = v13 & 0xF8 | 6; /*0xffd8240d*/\n    sub_FFD8CC4F(v7 + 148, 255); /*0xffd82413*/\n    sub_FFD7FA46(2u); /*0xffd8241b*/\n    sub_FFD7F9AF(64, (int)\"EarlyConfigurePchHSata() End\\n\"); /*0xffd82427*/\n    return 0; /*0xffd8242c*/\n  }\n  else\n  {\n    LOBYTE(v10) = n2_1; /*0xffd82434*/\n    sub_FFD81FF5(a3, v10); /*0xffd82436*/\n    return 0; /*0xffd8243b*/\n  }\n}","refs":[{"addr":"0xffd7f9af","name":"sub_FFD7F9AF"},{"addr":"0xffd93020","name":"aEarlyconfigure","string":"EarlyConfigurePchHSata() - First Controller - Start\n"},{"addr":"0xffd8cbba","name":"sub_FFD8CBBA"},{"addr":"0xffd8c019","name":"sub_FFD8C019"},{"addr":"0xffd92d9c","name":"aErrorInvalidSa","string":"Error: Invalid SATA controller!\n"},{"addr":"0xffd93058","name":"aEarlyconfigure_0","string":"EarlyConfigurePchHSata() - Second Controller - Start\n"},{"addr":"0xffd8cca5","name":"sub_FFD8CCA5"},{"addr":"0xffd81814","name":"sub_FFD81814"},{"addr":"0xffd8e7ba","name":"sub_FFD8E7BA"},{"addr":"0xffd8e062","name":"sub_FFD8E062"},{"addr":"0xffd8d58a","name":"sub_FFD8D58A"},{"addr":"0xffd8cc4f","name":"sub_FFD8CC4F"},{"addr":"0xffd7fa46","name":"sub_FFD7FA46"},{"addr":"0xffd93090","name":"aEarlyconfigure_1","string":"EarlyConfigurePchHSata() End\n"},{"addr":"0xffd81ff5","name":"sub_FFD81FF5"}]}