__int64 __fastcall main(__int64 a1, char **a2, char **a3) { unsigned __int64 v3; // rax __m128i v4; // xmm1 __m128i v5; // xmm0 unsigned __int64 v7; // [rsp+0h] [rbp-198h] unsigned __int64 v8; // [rsp+8h] [rbp-190h] unsigned __int64 v9; // [rsp+10h] [rbp-188h] unsigned __int64 v10; // [rsp+18h] [rbp-180h] unsigned __int64 v11; // [rsp+20h] [rbp-178h] unsigned __int64 v12; // [rsp+28h] [rbp-170h] unsigned __int64 v13; // [rsp+30h] [rbp-168h] unsigned __int64 v14; // [rsp+38h] [rbp-160h] unsigned __int64 v15; // [rsp+40h] [rbp-158h] unsigned __int64 v16; // [rsp+48h] [rbp-150h] unsigned __int64 v17; // [rsp+50h] [rbp-148h] unsigned __int64 v18; // [rsp+58h] [rbp-140h] unsigned __int64 v19; // [rsp+60h] [rbp-138h] unsigned __int64 v20; // [rsp+68h] [rbp-130h] unsigned __int64 v21; // [rsp+70h] [rbp-128h] unsigned __int64 v22; // [rsp+78h] [rbp-120h] char s[8]; // [rsp+80h] [rbp-118h] unsigned __int64 v24; // [rsp+88h] [rbp-110h] unsigned __int64 v25; // [rsp+90h] [rbp-108h] unsigned __int64 v26; // [rsp+98h] [rbp-100h] unsigned __int64 v27; // [rsp+A0h] [rbp-F8h] unsigned __int64 v28; // [rsp+A8h] [rbp-F0h] unsigned __int64 v29; // [rsp+B0h] [rbp-E8h] unsigned __int64 v30; // [rsp+B8h] [rbp-E0h] unsigned __int64 v31; // [rsp+C0h] [rbp-D8h] unsigned __int64 v32; // [rsp+C8h] [rbp-D0h] unsigned __int64 v33; // [rsp+D0h] [rbp-C8h] unsigned __int64 v34; // [rsp+D8h] [rbp-C0h] unsigned __int64 v35; // [rsp+E0h] [rbp-B8h] unsigned __int64 v36; // [rsp+E8h] [rbp-B0h] unsigned __int64 v37; // [rsp+F0h] [rbp-A8h] unsigned __int64 v38; // [rsp+F8h] [rbp-A0h] __int128 v39; // [rsp+100h] [rbp-98h] __m128i v40; // [rsp+110h] [rbp-88h] __int128 v41; // [rsp+120h] [rbp-78h] __int128 v42; // [rsp+130h] [rbp-68h] __int128 v43; // [rsp+140h] [rbp-58h] __int128 v44; // [rsp+150h] [rbp-48h] __int128 v45; // [rsp+160h] [rbp-38h] __m128i v46; // [rsp+170h] [rbp-28h] unsigned __int64 v47; // [rsp+188h] [rbp-10h]
v47 = __readfsqword(0x28u); v30 = -1LL; v31 = -1LL; v7 = 6148914691236517205LL; v8 = 6148914691236517205LL; v9 = 6148914691236517205LL; v10 = 6148914691236517205LL; v11 = 6148914691236517205LL; v12 = 6148914691236517205LL; v13 = 6148914691236517205LL; v14 = 6148914691236517205LL; v15 = 6148914691236517205LL; v16 = 6148914691236517205LL; v17 = 6148914691236517205LL; v18 = 6148914691236517205LL; v19 = 6148914691236517205LL; v20 = 6148914691236517205LL; v21 = 6148914691236517205LL; v22 = 6148914691236517205LL; strcpy(s, "Welcome to RCTF 2018! Here is a BabyRE challenge for you."); v32 = -1LL; v33 = -1LL; v34 = -1LL; v35 = -1LL; v36 = -1LL; v37 = -1LL; v38 = -1LL; puts(s); __printf_chk(1LL, "Give me your flag: "); __isoc99_scanf("%127s", &v7); *(_QWORD *)&v39 = sub_400BA0(v7 * (unsigned __int128)*(unsigned __int64 *)s, 0xFFFFFFFFFFFFFFC5LL, 0LL); *((_QWORD *)&v39 + 1) = sub_400BA0(v8 * (unsigned __int128)v24, 0xFFFFFFFFFFFFFFC5LL, 0LL); v40.m128i_i64[0] = sub_400BA0(v9 * (unsigned __int128)v25, 0xFFFFFFFFFFFFFFC5LL, 0LL); v40.m128i_i64[1] = sub_400BA0(v10 * (unsigned __int128)v26, 0xFFFFFFFFFFFFFFC5LL, 0LL); *(_QWORD *)&v41 = sub_400BA0(v11 * (unsigned __int128)v27, 0xFFFFFFFFFFFFFFC5LL, 0LL); *((_QWORD *)&v41 + 1) = sub_400BA0(v12 * (unsigned __int128)v28, 0xFFFFFFFFFFFFFFC5LL, 0LL); *(_QWORD *)&v42 = sub_400BA0(v13 * (unsigned __int128)v29, 0xFFFFFFFFFFFFFFC5LL, 0LL); *((_QWORD *)&v42 + 1) = sub_400BA0(v14 * (unsigned __int128)v30, 0xFFFFFFFFFFFFFFC5LL, 0LL); *(_QWORD *)&v43 = sub_400BA0(v15 * (unsigned __int128)v31, 0xFFFFFFFFFFFFFFC5LL, 0LL); *((_QWORD *)&v43 + 1) = sub_400BA0(v16 * (unsigned __int128)v32, 0xFFFFFFFFFFFFFFC5LL, 0LL); *(_QWORD *)&v44 = sub_400BA0(v17 * (unsigned __int128)v33, 0xFFFFFFFFFFFFFFC5LL, 0LL); *((_QWORD *)&v44 + 1) = sub_400BA0(v18 * (unsigned __int128)v34, 0xFFFFFFFFFFFFFFC5LL, 0LL); *(_QWORD *)&v45 = sub_400BA0(v19 * (unsigned __int128)v35, 0xFFFFFFFFFFFFFFC5LL, 0LL); *((_QWORD *)&v45 + 1) = sub_400BA0(v20 * (unsigned __int128)v36, 0xFFFFFFFFFFFFFFC5LL, 0LL); v46.m128i_i64[0] = sub_400BA0(v21 * (unsigned __int128)v37, 0xFFFFFFFFFFFFFFC5LL, 0LL); v3 = sub_400BA0(v22 * (unsigned __int128)v38, 0xFFFFFFFFFFFFFFC5LL, 0LL); v4 = _mm_load_si128((const __m128i *)&v39); v46.m128i_i64[1] = v3; v5 = _mm_or_si128( _mm_xor_si128(_mm_load_si128((const __m128i *)&xmmword_6020D0), v46), _mm_or_si128( _mm_xor_si128(_mm_load_si128((const __m128i *)&v45), (__m128i)xmmword_6020C0), _mm_or_si128( _mm_xor_si128(_mm_load_si128((const __m128i *)&v44), (__m128i)xmmword_6020B0), _mm_or_si128( _mm_xor_si128(_mm_load_si128((const __m128i *)&v43), (__m128i)xmmword_6020A0), _mm_or_si128( _mm_xor_si128(_mm_load_si128((const __m128i *)&v42), (__m128i)xmmword_602090), _mm_or_si128( _mm_xor_si128(_mm_load_si128((const __m128i *)&v41), (__m128i)xmmword_602080), _mm_or_si128( _mm_xor_si128(v4, (__m128i)xmmword_602060), _mm_xor_si128(_mm_load_si128((const __m128i *)&xmmword_602070), v40)))))))); if ( (unsigned __int64)*(_OWORD *)&_mm_or_si128(v5, _mm_srli_si128(v5, 8)) ) puts("Incorrect."); else puts("Correct. Congratulations!"); return 0LL; } |