1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| __int64 __fastcall main(int a1, char **a2, char **a3) { _DWORD *v3; _DWORD *v4; _DWORD *v5; _DWORD *v6; _DWORD *v7; _DWORD *v8; _DWORD *v9; _DWORD *v10; _DWORD *v11; _DWORD *v12; _DWORD *v13; _DWORD *v14; _DWORD *v15; __int64 v16; __int64 v17; int v18; int i; int v21; int v22; int v23; int v24; int v25; int v26; int v27; int v28; __int64 *dest; char src[56]; unsigned __int64 v31;
v31 = __readfsqword(0x28u); dest = (__int64 *)mmap((void *)0xDEAD0000LL, 0x30uLL, 3, 33, -1, 0LL); sub_401286(src); memcpy(dest, src, 0x30uLL); v27 = read(0, (void *)dest[2], 0x10000uLL); for ( i = 0; i < v27 / 4; ++i ) { switch ( *(_DWORD *)(4LL * i + dest[2]) ) { case '1': v21 = i + 1; sub_401334(dest, *(unsigned int *)(4LL * v21 + dest[2])); i = v21 + 1; sub_401334(dest, *(unsigned int *)(4LL * i + dest[2])); v3 = (_DWORD *)dest[3]; *v3 = sub_4013AC(dest); v4 = (_DWORD *)(dest[3] + 4); *v4 = sub_4013AC(dest); *(_DWORD *)(dest[3] + 8) = *(_DWORD *)dest[3] + *(_DWORD *)(dest[3] + 4); sub_401334(dest, *(unsigned int *)(dest[3] + 8)); break; case '2': v22 = i + 1; sub_401334(dest, *(unsigned int *)(4LL * v22 + dest[2])); i = v22 + 1; sub_401334(dest, *(unsigned int *)(4LL * i + dest[2])); v5 = (_DWORD *)dest[3]; *v5 = sub_4013AC(dest); v6 = (_DWORD *)(dest[3] + 4); *v6 = sub_4013AC(dest); *(_DWORD *)(dest[3] + 8) = *(_DWORD *)dest[3] - *(_DWORD *)(dest[3] + 4); sub_401334(dest, *(unsigned int *)(dest[3] + 8)); break; case '3': v23 = i + 1; sub_401334(dest, *(unsigned int *)(4LL * v23 + dest[2])); i = v23 + 1; sub_401334(dest, *(unsigned int *)(4LL * i + dest[2])); v7 = (_DWORD *)dest[3]; *v7 = sub_4013AC(dest); v8 = (_DWORD *)(dest[3] + 4); *v8 = sub_4013AC(dest); *(_DWORD *)(dest[3] + 8) = *(_DWORD *)(dest[3] + 4) * *(_DWORD *)dest[3]; sub_401334(dest, *(unsigned int *)(dest[3] + 8)); break; case '4': v24 = i + 1; sub_401334(dest, *(unsigned int *)(4LL * v24 + dest[2])); i = v24 + 1; sub_401334(dest, *(unsigned int *)(4LL * i + dest[2])); v9 = (_DWORD *)dest[3]; *v9 = sub_4013AC(dest); v10 = (_DWORD *)(dest[3] + 4); *v10 = sub_4013AC(dest); *(_DWORD *)(dest[3] + 8) = *(_DWORD *)dest[3] / *(_DWORD *)(dest[3] + 4); sub_401334(dest, *(unsigned int *)(dest[3] + 8)); break; case '5': v25 = i + 1; sub_401334(dest, *(unsigned int *)(4LL * v25 + dest[2])); i = v25 + 1; sub_401334(dest, *(unsigned int *)(4LL * i + dest[2])); v11 = (_DWORD *)(dest[3] + 4); *v11 = sub_4013AC(dest); v12 = (_DWORD *)dest[3]; *v12 = sub_4013AC(dest); *(_DWORD *)(dest[3] + 8) = *(_DWORD *)dest[3] << *(_DWORD *)(dest[3] + 4); sub_401334(dest, *(unsigned int *)(dest[3] + 8)); break; case '6': v26 = i + 1; sub_401334(dest, *(unsigned int *)(4LL * v26 + dest[2])); i = v26 + 1; sub_401334(dest, *(unsigned int *)(4LL * i + dest[2])); v13 = (_DWORD *)(dest[3] + 4); *v13 = sub_4013AC(dest); v14 = (_DWORD *)dest[3]; *v14 = sub_4013AC(dest); *(_DWORD *)(dest[3] + 8) = *(int *)dest[3] >> *(_DWORD *)(dest[3] + 4); sub_401334(dest, *(unsigned int *)(dest[3] + 8)); break; case '7': if ( *((int *)dest + 2) > 65 ) { *dest = ((__int64 (__fastcall *)(__int64))dest[4])(256LL); *((_DWORD *)dest + 2) = 0; } v15 = (_DWORD *)(dest[3] + 4LL * *(int *)(4LL * ++i + dest[2])); v16 = *dest; *(_DWORD *)(4LL * (int)++*((_DWORD *)dest + 2) + v16) = *v15; break; case '8': v28 = *(_DWORD *)(4LL * ++i + dest[2]); v17 = *dest; v18 = *((_DWORD *)dest + 2); *((_DWORD *)dest + 2) = v18 - 1; *(_DWORD *)(dest[3] + 4LL * v28) = *(_DWORD *)(v17 + 4LL * v18); break; case '9': if ( *((_DWORD *)dest + 10) ) *(_DWORD *)(*dest + 4LL * *((int *)dest + 2)) += *(_DWORD *)(4LL * ++i + dest[2]); break; default: continue; } } sub_4012FC(src); return 0LL; }
|