char __fastcall sub_2FD4(__int64 a1, __int64 *a2) { const char *XMC_25QH_Series; // rdx __int64 n15; // r8 int n0x40000; // r8d bool v7; // zf __int64 v8; // rcx if ( !(unsigned __int8)sub_216C(a1, &n24608) ) /*0x2fe8*/ return 0; /*0x2fef*/ if ( (unsigned __int16)n24608 > 0x40C8u ) /*0x3008*/ { if ( (unsigned __int16)n24608 <= 0x7020u ) /*0x336b*/ { if ( (unsigned __int16)n24608 != 28704 ) /*0x3371*/ { if ( (unsigned __int16)n24608 <= 0x6020u ) /*0x337e*/ { if ( (unsigned __int16)n24608 == 24608 ) /*0x3384*/ { n4096 = 4096; /*0x3424*/ n32 = 32; /*0x342e*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x343a*/ XMC_25QH_Series = "XMC 25QH Series"; /*0x3440*/ n15 = 15; /*0x3447*/ goto LABEL_92; /*0x344d*/ } if ( (unsigned __int16)n24608 == 16623 ) /*0x3390*/ goto LABEL_75; /*0x3390*/ if ( (unsigned __int16)n24608 != 16780 ) /*0x339c*/ { if ( (unsigned __int16)n24608 != 20719 ) /*0x33a4*/ { if ( (unsigned __int16)n24608 == 24258 ) /*0x33b0*/ goto LABEL_14; /*0x33b0*/ if ( (unsigned __int16)n24608 == 24577 ) /*0x33bc*/ { n4096 = 4096; /*0x33c4*/ n32 = 32; /*0x33ce*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x33da*/ XMC_25QH_Series = "Spansion 25FL(L) Series"; /*0x33e0*/ n15 = 23; /*0x33e7*/ goto LABEL_92; /*0x33ed*/ } return 0; /*0x2ff3*/ } goto LABEL_75; /*0x33a4*/ } goto LABEL_56; /*0x339c*/ } if ( (unsigned __int16)n24608 == 24733 ) /*0x3458*/ { n4096 = 4096; /*0x34d6*/ n32 = 32; /*0x34e0*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x34ec*/ XMC_25QH_Series = "ISSI 25LP Series"; /*0x34f2*/ n15 = 16; /*0x34f9*/ goto LABEL_92; /*0x34ff*/ } if ( (unsigned __int16)n24608 != 24776 ) /*0x345d*/ { if ( (unsigned __int16)n24608 != 24815 ) /*0x3462*/ { if ( (unsigned __int16)n24608 != 28700 ) /*0x346e*/ return 0; /*0x346e*/ LABEL_62: n4096 = 4096; /*0x3474*/ n32 = 32; /*0x3480*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x348c*/ XMC_25QH_Series = "EON 25F/Q/S/QH Series"; /*0x3492*/ n15 = 21; /*0x3499*/ goto LABEL_92; /*0x349f*/ } goto LABEL_75; /*0x3462*/ } LABEL_63: n4096 = 4096; /*0x34a4*/ n32 = 32; /*0x34b0*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x34bc*/ XMC_25QH_Series = "GigaDevice 25Q Series"; /*0x34c2*/ n15 = 21; /*0x34c9*/ goto LABEL_92; /*0x34cf*/ } LABEL_73: n4096 = 4096; /*0x3579*/ n32 = 32; /*0x3585*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x3591*/ XMC_25QH_Series = "STM/Micron/Numonyx 25PF/PX Series"; /*0x3597*/ n15 = 33; /*0x359e*/ goto LABEL_92; /*0x35a4*/ } if ( (unsigned __int16)n24608 <= 0x80EFu ) /*0x350b*/ { switch ( (unsigned __int16)n24608 ) /*0x3511*/ { case 0x80EFu: /*0x3511*/ goto LABEL_75; /*0x3511*/ case 0x709Du: /*0x3511*/ n4096 = 4096; /*0x35ab*/ n32 = 32; /*0x35b5*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x35c1*/ XMC_25QH_Series = "ISSI 25WP Series"; /*0x35c7*/ n15 = 16; /*0x35ce*/ goto LABEL_92; /*0x35d4*/ case 0x70EFu: /*0x3511*/ goto LABEL_75; /*0x3526*/ } if ( (unsigned __int16)n24608 != 28960 ) /*0x352f*/ { if ( (unsigned __int16)n24608 != 29167 ) /*0x3537*/ { if ( (unsigned __int16)n24608 == 32800 ) /*0x3543*/ { n4096 = 256; /*0x354b*/ n32 = -37; /*0x3555*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x3561*/ XMC_25QH_Series = "STM/Numonyx 25PE Series"; /*0x3567*/ n15 = 23; /*0x356e*/ goto LABEL_92; /*0x3574*/ } return 0; /*0x3543*/ } goto LABEL_75; /*0x3537*/ } goto LABEL_73; /*0x352f*/ } if ( (unsigned __int16)n24608 != 35209 ) /*0x360f*/ { if ( (unsigned __int16)n24608 == 40319 ) /*0x3617*/ { n4096 = 4096; /*0x365c*/ n32 = -41; /*0x3666*/ n0x1000000 = sub_2F24((unsigned int)n24608); /*0x3672*/ XMC_25QH_Series = "PMC 25LV/LQ Series"; /*0x3678*/ n15 = 18; /*0x367f*/ goto LABEL_92; /*0x3685*/ } if ( (((unsigned __int16)n24608 - 47648) & 0xFFFFFEFF) == 0 ) /*0x3624*/ { n4096 = 4096; /*0x362c*/ n32 = 32; /*0x3636*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x3642*/ XMC_25QH_Series = "Micron/Numonyx 25Q Series"; /*0x3648*/ n15 = 25; /*0x364f*/ goto LABEL_92; /*0x3655*/ } return 0; /*0x3624*/ } n4096 = 0x10000; /*0x3694*/ if ( BYTE2(n24608) != 17 ) /*0x369e*/ { if ( BYTE2(n24608) == 18 ) /*0x36a3*/ goto LABEL_89; /*0x36a3*/ if ( BYTE2(n24608) == 19 ) /*0x36a8*/ goto LABEL_88; /*0x36a8*/ if ( BYTE2(n24608) != 21 ) /*0x36ad*/ { if ( BYTE2(n24608) != 22 ) /*0x36b2*/ { if ( BYTE2(n24608) != 23 ) /*0x36b7*/ { n0x1000000 = 0x1000000; /*0x36b9*/ LABEL_91: n15 = 24; /*0x36e7*/ XMC_25QH_Series = "Intel/Numonyx 25F160/320"; /*0x36ed*/ goto LABEL_92; /*0x36ed*/ } LABEL_88: n0x1000000 = 0x800000; /*0x36c5*/ goto LABEL_91; /*0x36cf*/ } LABEL_89: n0x1000000 = 0x400000; /*0x36d1*/ goto LABEL_91; /*0x36db*/ } } n0x1000000 = 0x200000; /*0x36dd*/ goto LABEL_91; /*0x36dd*/ } if ( (unsigned __int16)n24608 == 16584 ) /*0x300e*/ goto LABEL_63; /*0x300e*/ if ( (unsigned __int16)n24608 > 0x3037u ) /*0x301b*/ { if ( (unsigned __int16)n24608 <= 0x3820u ) /*0x31f0*/ { if ( (unsigned __int16)n24608 == 14368 ) /*0x31f6*/ { n4096 = 4096; /*0x3287*/ n32 = 32; /*0x3291*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x329d*/ XMC_25QH_Series = "XMC 25QU Series"; /*0x32a3*/ n15 = 15; /*0x32aa*/ goto LABEL_92; /*0x32b0*/ } if ( (unsigned __int16)n24608 != 12527 ) /*0x3202*/ { switch ( (unsigned __int16)n24608 ) /*0x320b*/ { case 0x311Cu: /*0x320b*/ goto LABEL_62; /*0x320b*/ case 0x32F8u: /*0x320b*/ n4096 = 4096; /*0x3257*/ n32 = 32; /*0x3261*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x326d*/ XMC_25QH_Series = "FIDELIX 25Q Series"; /*0x3273*/ n15 = 18; /*0x327a*/ goto LABEL_92; /*0x3280*/ case 0x377Fu: /*0x320b*/ n4096 = 4096; /*0x322e*/ n0x1000000 = sub_2F24((unsigned int)n24608); /*0x323d*/ XMC_25QH_Series = "AMIC 25L Series"; /*0x3243*/ n15 = 15; /*0x324a*/ goto LABEL_92; /*0x3250*/ } v7 = (unsigned __int16)n24608 == 14364; /*0x3221*/ goto LABEL_25; /*0x3227*/ } LABEL_75: n4096 = 4096; /*0x35d9*/ n32 = 32; /*0x35e5*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x35f1*/ XMC_25QH_Series = "Winbond 25X/Q Series"; /*0x35f7*/ n15 = 20; /*0x35fe*/ goto LABEL_92; /*0x3604*/ } if ( (unsigned __int16)n24608 == 16385 ) /*0x32bb*/ { n4096 = 4096; /*0x3336*/ n32 = 32; /*0x3340*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x334c*/ XMC_25QH_Series = "Spansion 25FL(K) Series"; /*0x3352*/ n15 = 23; /*0x3359*/ goto LABEL_92; /*0x335f*/ } if ( (unsigned __int16)n24608 == 16439 ) /*0x32c0*/ goto LABEL_44; /*0x32c0*/ if ( (unsigned __int16)n24608 != 16524 ) /*0x32c5*/ { if ( (unsigned __int16)n24608 == 16545 ) /*0x32ce*/ { n4096 = 4096; /*0x32d6*/ n32 = 32; /*0x32e0*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x32ec*/ XMC_25QH_Series = "Fudan FM25Q Series"; /*0x32f2*/ n15 = 18; /*0x32f9*/ goto LABEL_92; /*0x32ff*/ } return 0; /*0x32ce*/ } LABEL_56: n4096 = 4096; /*0x33f2*/ n32 = 32; /*0x33fe*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x340a*/ XMC_25QH_Series = "ESMT 25L QA/PA Series"; /*0x3410*/ n15 = 21; /*0x3417*/ goto LABEL_92; /*0x341d*/ } if ( (unsigned __int16)n24608 == 12343 ) /*0x3021*/ { LABEL_44: n4096 = 4096; /*0x3304*/ n32 = 32; /*0x3310*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x331c*/ XMC_25QH_Series = "AMIC 25L/LQ Series"; /*0x3322*/ n15 = 18; /*0x3329*/ goto LABEL_92; /*0x332f*/ } if ( (unsigned __int16)n24608 > 0x24C2u ) /*0x302e*/ { switch ( (unsigned __int16)n24608 ) /*0x3162*/ { case 0x25C2u: /*0x3162*/ goto LABEL_14; /*0x3162*/ case 0x26BFu: /*0x3162*/ n4096 = 4096; /*0x31bb*/ byte_4AA9 = 1; /*0x31c5*/ n0x1000000 = sub_2F74((unsigned int)n24608); /*0x31d1*/ XMC_25QH_Series = "SST 26VF Series"; /*0x31d7*/ n15 = 15; /*0x31de*/ goto LABEL_92; /*0x31e4*/ case 0x28C2u: /*0x3162*/ n4096 = 4096; /*0x318b*/ n32 = 32; /*0x3195*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x31a1*/ XMC_25QH_Series = "MXIC 25R Series"; /*0x31a7*/ n15 = 15; /*0x31ae*/ goto LABEL_92; /*0x31b4*/ } v7 = (unsigned __int16)n24608 == 12316; /*0x3178*/ LABEL_25: if ( !v7 ) /*0x317e*/ return 0; /*0x317e*/ goto LABEL_62; /*0x317e*/ } if ( (unsigned __int16)n24608 != 9410 ) /*0x3034*/ { switch ( (unsigned __int16)n24608 ) /*0x303c*/ { case 0x201u: /*0x303c*/ n4096 = 0x10000; /*0x3138*/ n0x1000000 = sub_2F24((unsigned int)n24608); /*0x3144*/ XMC_25QH_Series = "Spansion 25FL Series"; /*0x314a*/ n15 = 19; /*0x3151*/ goto LABEL_92; /*0x3157*/ case 0x2001u: /*0x303c*/ n4096 = 0x10000; /*0x310c*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x3118*/ XMC_25QH_Series = "Spansion 25FL(P) Series"; /*0x311e*/ n15 = 23; /*0x3125*/ goto LABEL_92; /*0x312b*/ case 0x201Cu: /*0x303c*/ n32 = -40; /*0x30d7*/ n4096 = 0x10000; /*0x30e0*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x30ec*/ XMC_25QH_Series = "EON 25P Series"; /*0x30f2*/ n15 = 14; /*0x30f9*/ goto LABEL_92; /*0x30ff*/ case 0x2020u: /*0x303c*/ n32 = -40; /*0x3092*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x30a9*/ XMC_25QH_Series = "STM/Micron/Numonyx 25P Series"; /*0x30b4*/ if ( n0x1000000 == 0x1000000 ) /*0x30bb*/ n0x40000 = 0x40000; /*0x30bb*/ n4096 = n0x40000; /*0x30bf*/ n15 = 29; /*0x30c6*/ goto LABEL_92; /*0x30cc*/ } if ( (unsigned __int16)n24608 != 8386 ) /*0x305e*/ return 0; /*0x305e*/ } LABEL_14: n4096 = 4096; /*0x3060*/ n32 = 32; /*0x306c*/ n0x1000000 = sub_2E7C((unsigned int)n24608); /*0x3078*/ XMC_25QH_Series = "MXIC 25L/U Series"; /*0x307e*/ n15 = 17; /*0x3085*/ LABEL_92: sub_3A00(&unk_4C40, XMC_25QH_Series, n15); /*0x36f4*/ *a2 = (__int64)off_4A30; /*0x3717*/ sub_3A00(&unk_4A88, &unk_4B08, 24); /*0x3721*/ n24608_0 = n24608; /*0x372c*/ v8 = *a2; /*0x3732*/ n24608_1 = n24608; /*0x3735*/ *(_DWORD *)(v8 + 72) = dword_4B18; /*0x3742*/ *(_DWORD *)(*a2 + 76) = n4096; /*0x374e*/ *(_QWORD *)(*a2 + 80) = &unk_4C40; /*0x3754*/ qword_4A20 = *(unsigned int *)sub_1CAC(1036304); /*0x3764*/ sub_20C8(); /*0x376b*/ sub_2638(4278190080LL); /*0x3775*/ return 1; /*0x3781*/ }