Skip to content

Instantly share code, notes, and snippets.

@tanakh
Last active May 26, 2019 20:02
Show Gist options
  • Save tanakh/0f6475f40a2f31d8e0a58bc8be6a05eb to your computer and use it in GitHub Desktop.
Save tanakh/0f6475f40a2f31d8e0a58bc8be6a05eb to your computer and use it in GitHub Desktop.
f_xor 0x13 3 154
f_mul 0x24 0x1b 15770
f_xor 0x2e 0x39 2
f_mul 0x16 0x10 1440
f_xor 0x33 7 55
f_add 0xb 5 177
f_add 6 0xd 271
f_mul 0xc 0x3e 0x445c
f_mul 0x23 0x13 12870
f_add 0x19 8 249
f_add 0x3a 0x35 0x5e
f_xor 0xf 0x15 165
f_xor 0x39 0x10 84
f_mul 0x15 2 15300
f_add 0x2e 0x33 168
f_add 0x38 0x2a 188
f_mul 0x12 0x24 19998
f_add 0x2a 0x19 167
f_xor 0x32 2 74
f_xor 6 0xb 192
f_mul 0x1b 0xe 23750
f_mul 0xc 0x19 6860
f_xor 0x1e 0x39 82
f_add 0x3c 0x3b 117
f_xor 0x1a 0x2c 186
f_mul 0x24 0x26 8632
f_xor 0x26 0x20 79
f_add 0x27 0x2d 325
f_xor 0x1b 2 156
f_add 0x2a 0x32 170
f_mul 6 2 0x4488
f_mul 0x24 6 8798
f_add 0x1b 0x25 0x159
f_add 0x39 0 143
f_mul 0x2f 0x31 7140
f_add 0xb 0x1f 155
f_add 0x11 0x1c 217
f_add 0xd 7 319
f_add 0x1b 0x12 349
f_add 0x16 0xb 0x78
f_add 0x2b 0x37 257
f_mul 0x1c 0x21 23664
f_add 4 0x3a 186
f_mul 0x32 0x2a 4840
f_mul 0x11 0x1b 15770
f_add 9 0x30 180
f_xor 0x3c 0x13 121
f_xor 0x14 0xc 31
f_mul 0x2e 0x1e 5508
f_xor 3 0x3c 0x1c
f_xor 10 0x36 134
f_mul 0x1b 0x11 0x62a2
f_add 10 0x15 351
f_mul 0x2f 0x26 7280
f_xor 0x15 0x22 0xa7
f_mul 0xe 0x2c 29000
f_add 9 0x33 184
f_mul 0x1c 0x1f 20604
f_add 6 0x38 0x11e
f_xor 0x14 0xe 113
f_add 0x24 0x1a 281
f_mul 0x1e 0x34 9690
f_add 0x10 0x13 147
f_xor 0x3a 0x16 30
f_mul 0x35 0x11 1212
f_xor 0x1e 4 4
f_add 0x15 0xc 199
f_add 0x2f 0x13 257
f_mul 0x1a 0x3b 21630
f_xor 7 0x31 173
f_add 0x1b 0x1e 352
f_add 0xf 0x3e 329
f_xor 0x1a 0x14 186
f_xor 0x37 0x1e 170
f_add 0x1b 0x14 366
f_add 0x2e 0x19 103
f_add 0x3b 0x16 0xc6
f_add 0x2a 0xd 217
f_add 0x37 6 257
f_mul 0x1f 0x2b 19090
f_mul 0x1f 0x25 15770
f_add 5 0x32 274
f_mul 0x39 0x3d 4840
f_xor 0 0x2f 247
f_xor 0x17 0x3b 31
f_xor 0xb 0x25 105
f_add 0x2c 0x19 0x5f
f_add 0x12 0x38 312
f_xor 0x31 0x33 190
f_xor 0 0x24 163
f_add 0xd 6 251
f_add 9 0x2e 178
f_add 10 0x2e 354
f_xor 0x17 0x28 23
f_mul 5 0x39 11544
f_mul 0x2f 2 0x37c8
f_xor 6 0x23 218
f_add 0x12 0x39 250
f_add 0x30 0x13 0xeb
f_add 0x27 1 0x15a
f_xor 0x16 0x2a 98
f_xor 0x3b 0x2f 0xa7
f_mul 0x13 0x37 8874
f_add 0x29 0x24 241
f_mul 0x15 0x16 7200
f_xor 10 0x28 0x97
f_mul 0x28 0x31 6834
f_xor 0x2b 1 186
f_xor 0x18 0x27 157
f_xor 0x10 0x11 123
f_add 0x24 0x39 218
f_mul 0x1b 0x1d 0x639c
f_add 0xc 0xe 235
f_xor 0x1b 0x38 136
f_add 0x2e 0 153
f_add 0x2b 0x29 255
f_add 0 0x21 314
f_mul 0x36 0x14 1624
f_add 0x2b 0x1e 308
f_add 5 0x10 342
f_add 0x29 0x3c 188
f_add 3 1 160
f_xor 0x21 0x3c 30
f_add 0x23 0x34 205
f_xor 0x3c 0x1c 63
f_mul 0x16 0x2c 1392
f_mul 0x38 0x3a 9048
f_add 0x29 0xb 248
f_xor 0xb 0xe 105
f_add 0x2e 0x31 105
f_xor 0x1c 0x1a 0xbf
f_xor 0x35 3 0x38
f_add 0x2d 0xf 0x12d
f_add 0x12 0x29 247
f_mul 8 0x1b 17290
f_mul 0x26 0x22 0x86c
f_add 0x21 0x1f 147
f_add 1 0xf 97
f_xor 0x2c 2 0x48
f_xor 7 0xd 253
f_mul 0x3d 0x2d 11210
f_xor 0x24 0xb 202
f_add 0x11 0x18 0x105
f_mul 2 0x1e 10404
f_xor 0x1f 0x1b 249
f_mul 0x3a 0x2b 5290
f_mul 3 0x3b 4620
f_xor 0xd 4 0xa4
f_add 0x30 0x3b 223
f_xor 0xe 0x35 202
#include <ctype.h>
#include <stdint.h>
#include <stdio.h>
typedef int64_t undefined8;
typedef uint8_t byte;
typedef unsigned int uint;
typedef unsigned long ulong;
undefined8 is_correct(byte *pbParm1)
{
undefined8 uVar1;
byte bVar2;
if ((((((*pbParm1 == 99) && (pbParm1[1] == 0x74)) && (pbParm1[2] == 0x66)) &&
((((pbParm1[3] == 0x34 && (pbParm1[4] == 0x62)) &&
((pbParm1[5] == 0x7b &&
((pbParm1[0x3e] == 0x7d &&
(bVar2 = pbParm1[0x13] << 4 | pbParm1[0x13] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[3]) ^
0x11) * 0x22 ==
0x1276)))))) &&
(bVar2 = pbParm1[0x24] << 4 | pbParm1[0x24] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x1b] * 0xca ^
0xae) * 0x2f ==
0x8ec7cb6)))) &&
(((((((((bVar2 = pbParm1[0x2e] << 4 | pbParm1[0x2e] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x39]) *
0x10ac ==
0x2158 &&
(bVar2 = pbParm1[0x16] << 4 | pbParm1[0x16] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x10] ^
0xe3) * 0xf3c ==
0x5028b4)) &&
(bVar2 = pbParm1[0x33] << 4 | pbParm1[0x33] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[7]) +
0xe7 ^
0xe2) * 0x79 ==
0xf01c)) &&
((bVar2 = pbParm1[0xb] << 4 | pbParm1[0xb] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[5] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0x51) *
0xa9 ^
0x73) * 0xcf ==
0x8990af &&
(bVar2 = pbParm1[6] << 4 | pbParm1[6] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0xd] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0xf6 ^
0x90) * 0xd ==
0x2191)))) &&
((bVar2 = pbParm1[0xc] << 4 | pbParm1[0xc] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x3e] ==
0x445c &&
((bVar2 = pbParm1[0x23] << 4 | pbParm1[0x23] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x13] ^
0x66) +
0xb8) * 0x41 ==
0xce8d8 &&
(bVar2 = pbParm1[0x19] << 4 | pbParm1[0x19] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[8] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
0xf3) * 0x9fb50 ==
0x63d120)))))) &&
(bVar2 = pbParm1[0x3a] << 4 | pbParm1[0x3a] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)pbParm1[0x35] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ==
0x5e)) &&
(((((bVar2 = pbParm1[0xf] << 4 | pbParm1[0xf] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x15]) +
0xa9 ^
0xa3) * 0x87 ==
0x103fb &&
(bVar2 = pbParm1[0x39] << 4 | pbParm1[0x39] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x10]) ^
0xd0) * 0x610b ==
0x3209ac)) &&
(bVar2 = pbParm1[0x15] << 4 | pbParm1[0x15] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[2] ^
0xce) +
0x13f) *
0x5a ==
0x1531aa)) &&
((bVar2 = pbParm1[0x2e] << 4 | pbParm1[0x2e] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x33] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x42 ^
0x6c) * 0x1fef ==
0x564a104 &&
(bVar2 = pbParm1[0x38] << 4 | pbParm1[0x38] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x2a] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0xa9 ^
0x83) +
0xda) * 0xeb ==
0x28640)))) &&
((bVar2 = pbParm1[0x12] << 4 | pbParm1[0x12] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x24] * 0xd0 +
0x78) * 0x77 ==
0x1d812c68 &&
((bVar2 = pbParm1[0x2a] << 4 | pbParm1[0x2a] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x19] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x968 ==
0x622d8 &&
(bVar2 = pbParm1[0x32] << 4 | pbParm1[0x32] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[2]) *
0x24dc6e90 ==
0xaa7b7f5a0)))))))) &&
((bVar2 = pbParm1[6] << 4 | pbParm1[6] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0xb]) +
99) * 0x6d ==
0x7be7 &&
(((bVar2 = pbParm1[0x1b] << 4 | pbParm1[0x1b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0xe] ^
0x37) +
0xda) * 0x123f ==
0x6af5af5 &&
(bVar2 = pbParm1[0xc] << 4 | pbParm1[0xc] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x19] * 0xc3 ^
0xb2) * 0x3b80 ==
0x4be993d00)) &&
(bVar2 = pbParm1[0x1e] << 4 | pbParm1[0x1e] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x39]) ^
0x18) * 0x5f ==
0x1b76)))))) &&
(((bVar2 = pbParm1[0x3c] << 4 | pbParm1[0x3c] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x3b] +
(ulong)(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) +
0x79) * 0xeb ==
0xda7a &&
(bVar2 = pbParm1[0x1a] << 4 | pbParm1[0x1a] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x2c]) ^
0x5a) * 0x7e ==
0x6e40)) &&
((bVar2 = pbParm1[0x24] << 4 | pbParm1[0x24] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x26] +
0x97 ^
0xe7) * 0x3486 ==
0x71c43f0 &&
((bVar2 = pbParm1[0x26] << 4 | pbParm1[0x26] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x20]) *
0x90 ==
0x2c70 &&
(bVar2 = pbParm1[0x27] << 4 | pbParm1[0x27] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x2d] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
0x47) * 0xc9 ==
0xca92)))))))))) &&
(((bVar2 = pbParm1[0x1b] << 4 | pbParm1[0x1b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[2]) ^
0x9c) *
0xd6 +
0xb1) * 0x2c ==
0x1e6c &&
(((bVar2 = pbParm1[0x2a] << 4 | pbParm1[0x2a] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x32] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
0x56) * 0xe9 ==
0xe55c &&
(bVar2 = pbParm1[6] << 4 | pbParm1[6] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[2] ==
0x4488)) &&
(bVar2 = pbParm1[0x24] << 4 | pbParm1[0x24] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[6] * 0xc +
0x40) * 0xa3b3 ==
0x107df8178)))) &&
(((((((bVar2 = pbParm1[0x1b] << 4 | pbParm1[0x1b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)pbParm1[0x25] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ==
0x159 &&
(bVar2 = pbParm1[0x39] << 4 | pbParm1[0x39] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)*pbParm1 +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x29 ==
0x16e7)) &&
(((bVar2 = pbParm1[0x2f] << 4 | pbParm1[0x2f] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x31] ^
100) * 0x7d ==
880000 &&
((bVar2 = pbParm1[0xb] << 4 | pbParm1[0xb] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x1f] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0xfe ^
0x4f) * 0xd8 ==
0x818838 &&
(bVar2 = pbParm1[0x11] << 4 | pbParm1[0x11] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x1c] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0xf1 +
0xc6) * 0x5c ==
0x49b164)))) &&
(bVar2 = pbParm1[0xd] << 4 | pbParm1[0xd] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[7] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x54 ==
0x68ac)))) &&
((((bVar2 = pbParm1[0x1b] << 4 | pbParm1[0x1b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x12] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0x11f) * 0x34 ==
0x8130 &&
(bVar2 = pbParm1[0x16] << 4 | pbParm1[0x16] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)pbParm1[0xb] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ==
0x78)) &&
(bVar2 = pbParm1[0x2b] << 4 | pbParm1[0x2b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x37] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0xc1) * 0x7a89 ==
0xd764d2)) &&
((bVar2 = pbParm1[0x1c] << 4 | pbParm1[0x1c] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x21] * 0x36 ^
0x68) * 0xbe ==
0xe78d670 &&
(bVar2 = pbParm1[4] << 4 | pbParm1[4] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x3a] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x91 ==
0x695a)))))) &&
(((bVar2 = pbParm1[0x32] << 4 | pbParm1[0x32] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x2a] * 0x8d +
0x1b1) * 0xcc ==
0x84da46c &&
((bVar2 = pbParm1[0x11] << 4 | pbParm1[0x11] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x1b] * 0x5d43 +
0xb5) * 0x50 ==
0x70355a0f0 &&
(bVar2 = pbParm1[9] << 4 | pbParm1[9] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x30] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0xe7) *
0x53 +
0xec) * 0x6c ==
0x389afc)))) &&
((((((bVar2 = pbParm1[0x3c] << 4 | pbParm1[0x3c] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x13]) ^
0x31) * 0x8866 ==
0x265cb0 &&
((((bVar2 = pbParm1[0x14] << 4 | pbParm1[0x14] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0xc]) ^
0xe) * 0x282d ==
0x2aafd &&
(bVar2 =
pbParm1[0x2e] << 4 | pbParm1[0x2e] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) *
(ulong)pbParm1[0x1e] +
0xf) * 0x82 ==
0xaf4a6)) &&
(bVar2 = pbParm1[3] << 4 | pbParm1[3] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x3c]) == 0x1c)) &&
(((bVar2 = pbParm1[10] << 4 | pbParm1[10] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x36]) ^
0xd5) +
0x44) * 0x58e3 ==
0x346de5 &&
(bVar2 =
pbParm1[0x1b] << 4 | pbParm1[0x1b] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) *
(ulong)pbParm1[0x11] ==
0x62a2)) &&
((bVar2 = pbParm1[10] << 4 | pbParm1[10] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x15] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
0xae) *
0x3e ^
0x76) * 0xb5 ==
0x54f448 &&
((bVar2 =
pbParm1[0x2f] << 4 | pbParm1[0x2f] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) *
(ulong)pbParm1[0x26] * 0xaf ==
0x137090 &&
(bVar2 = pbParm1[0x15] << 4 |
pbParm1[0x15] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) &
0x33,
(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
pbParm1[0x22]) ==
0xa7)))))))))) &&
(bVar2 = pbParm1[0xe] << 4 | pbParm1[0xe] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x2c] ==
29000)) &&
(((((bVar2 = pbParm1[9] << 4 | pbParm1[9] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x33] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
100 ^
0xa6) * 0x19 ==
0x2b2a &&
(bVar2 = pbParm1[0x1c] << 4 | pbParm1[0x1c] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x1f] +
0xd9) * 0x9720 ==
0x30034da0)) &&
(bVar2 = pbParm1[6] << 4 | pbParm1[6] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)pbParm1[0x38] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ==
0x11e)) &&
((bVar2 = pbParm1[0x14] << 4 | pbParm1[0x14] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0xe]) +
0x35) *
0x99 +
3) * 0xb5 ==
0x46274d &&
(bVar2 = pbParm1[0x24] << 4 | pbParm1[0x24] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x1a] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x9c +
0xf0) * 0xe3 ==
0x98ab04)))) &&
(((bVar2 = pbParm1[0x1e] << 4 | pbParm1[0x1e] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x34] +
0xfb ^
199) * 0x1b ==
0x403e6 &&
((bVar2 = pbParm1[0x10] << 4 | pbParm1[0x10] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x13] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0x12d) * 0xb7 ==
0x14040 &&
(bVar2 =
pbParm1[0x3a] << 4 | pbParm1[0x3a] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x16]) *
0xb108 ==
0x14bef0)))) &&
((bVar2 = pbParm1[0x35] << 4 | pbParm1[0x35] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x11] ^
0xf4) * 0x6e5f8 ==
0x1d888dc0 &&
((((((((bVar2 =
pbParm1[0x1e] << 4 | pbParm1[0x1e] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[4]) == 4 &&
(bVar2 = pbParm1[0x15] << 4 |
pbParm1[0x15] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) &
0x33,
(ulong)pbParm1[0xc] +
(ulong)(
bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >>
1) &
0x55) ==
199)) &&
(bVar2 =
pbParm1[0x2f] << 4 | pbParm1[0x2f] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x13] +
(ulong)(
bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
0xcb) +
0xe5) * 0xe0 ==
0x25920)) &&
((bVar2 =
pbParm1[0x1a] << 4 | pbParm1[0x1a] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) *
(ulong)pbParm1[0x3b] * 0xd ^
0x39) * 0xcf ==
0x37822d1 &&
(bVar2 =
pbParm1[7] << 4 | pbParm1[7] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) &
0x33,
(ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
pbParm1[0x31]) *
0xdb29 ==
0x941ab5)))) &&
(bVar2 =
pbParm1[0x1b] << 4 | pbParm1[0x1b] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x1e] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55)) *
0x3398 ==
0x46f100)) &&
((bVar2 = pbParm1[0xf] << 4 | pbParm1[0xf] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x3e] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
0x34) +
0xf9) * 0x8f ==
0x15fea &&
(bVar2 = pbParm1[0x1a] << 4 |
pbParm1[0x1a] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
pbParm1[0x14]) ^
0x13) * 0xeb ==
0x9b23)))) &&
((bVar2 =
pbParm1[0x37] << 4 | pbParm1[0x37] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x1e]) ^
0x3b) * 0x67 ==
0x3a57 &&
(((bVar2 = pbParm1[0x1b] << 4 |
pbParm1[0x1b] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) &
0x33,
((ulong)pbParm1[0x14] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55)) *
0x22ab32 ==
0x3190c17c &&
(bVar2 = pbParm1[0x2e] << 4 |
pbParm1[0x2e] >> 4,
bVar2 =
(byte)(
((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) &
0x33,
((ulong)pbParm1[0x19] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >>
1) &
0x55)) *
0xf1 ==
0x60f7)) &&
(bVar2 = pbParm1[0x3b] << 4 |
pbParm1[0x3b] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) &
0x33,
(ulong)pbParm1[0x16] +
(ulong)(
bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >>
1) &
0x55) ==
0xc6)))))) &&
(((bVar2 =
pbParm1[0x2a] << 4 | pbParm1[0x2a] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0xd] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) +
0x8d) * 0xd2 ==
0x125ac &&
(bVar2 = pbParm1[0x37] << 4 |
pbParm1[0x37] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[6] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55)) *
0xf96 ==
0xfa596)) &&
(bVar2 =
pbParm1[0x1f] << 4 | pbParm1[0x1f] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) *
(ulong)pbParm1[0x2b] * 0x6f ^
0x60) * 0x66 ==
0xce1f054)))))))))))) &&
(((bVar2 = pbParm1[0x1f] << 4 | pbParm1[0x1f] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x25] * 0x66 ^
0x2b) * 0x70 ==
0xabd0410 &&
(bVar2 = pbParm1[5] << 4 | pbParm1[5] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x32] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0x164) *
0x71 ==
0x11616)) &&
(((bVar2 = pbParm1[0x39] << 4 | pbParm1[0x39] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x3d] * 0x6d +
0xad) * 0xb8 ==
0x5c9ac18 &&
(((bVar2 = *pbParm1 << 4 | *pbParm1 >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x2f]) *
0x17958 ==
0x16c13e8 &&
(bVar2 =
pbParm1[0x17] << 4 | pbParm1[0x17] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x3b]) *
0xfc ==
0x1e84)) &&
(bVar2 = pbParm1[0xb] << 4 | pbParm1[0xb] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x25]) ^
0xd9) * 0x1bf2 ==
0x133660)))) &&
((bVar2 = pbParm1[0x2c] << 4 | pbParm1[0x2c] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)pbParm1[0x19] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ==
0x5f &&
(bVar2 = pbParm1[0x12] << 4 | pbParm1[0x12] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x38] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x840 ==
0xa0e00)))))))) &&
(bVar2 = pbParm1[0x31] << 4 | pbParm1[0x31] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x33]) +
0xfd) * 0xdb ==
0x17af9)))))) &&
((((((bVar2 = *pbParm1 << 4 | *pbParm1 >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x24]) ^
0xb5) *
0x58 ^
7) * 0x45 ==
0x20bb3 &&
(bVar2 = pbParm1[0xd] << 4 | pbParm1[0xd] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[6] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
0xec) +
0xac) * 0x91 ==
0x6e73)) &&
((bVar2 = pbParm1[9] << 4 | pbParm1[9] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x2e] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0xee ==
0xa57c &&
((((bVar2 = pbParm1[10] << 4 | pbParm1[10] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x2e] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
0xed) * 0x6f2 ==
0xad32e &&
(bVar2 = pbParm1[0x17] << 4 | pbParm1[0x17] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x28]) *
0x17 ^
0x2f) * 0x55 ==
0xbe96)) &&
(bVar2 = pbParm1[5] << 4 | pbParm1[5] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x39] * 0xf9 +
0xf2) * 0x6ae0 ==
0x12500244c0)) &&
((bVar2 = pbParm1[0x2f] << 4 | pbParm1[0x2f] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[2] ==
0x37c8 &&
(bVar2 = pbParm1[6] << 4 | pbParm1[6] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x23]) ^
0x89) +
0x3e) * 0x9948 ==
0x56d1c8)))))))) &&
(bVar2 = pbParm1[0x12] << 4 | pbParm1[0x12] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x39] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x52 ==
0x5014)) &&
((bVar2 = pbParm1[0x30] << 4 | pbParm1[0x30] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)pbParm1[0x13] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ==
0xeb &&
(bVar2 = pbParm1[0x27] << 4 | pbParm1[0x27] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)pbParm1[1] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ==
0x15a)))) &&
(((bVar2 = pbParm1[0x16] << 4 | pbParm1[0x16] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x2a]) +
0x217) * 0xd4 ==
0x20c34 &&
(((bVar2 = pbParm1[0x3b] << 4 | pbParm1[0x3b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x2f]) == 0xa7 &&
(bVar2 = pbParm1[0x13] << 4 | pbParm1[0x13] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x37] ^
0x7d) * 0x4338 ==
0x925e408)) &&
(bVar2 = pbParm1[0x29] << 4 | pbParm1[0x29] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x24] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0xd3 ==
0xc6a3)))) &&
(((bVar2 = pbParm1[0x15] << 4 | pbParm1[0x15] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x16] +
0x84) * 0xb ==
0x13b0c &&
(bVar2 = pbParm1[10] << 4 | pbParm1[10] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x28]) == 0x97)) &&
(bVar2 = pbParm1[0x28] << 4 | pbParm1[0x28] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x31] * 0x4c ==
0x7ecd8)))))))) &&
(((((bVar2 = pbParm1[0x2b] << 4 | pbParm1[0x2b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[1]) *
0x1b ^
0xae) +
0xcb) * 0x3d ==
0x4c2cf &&
(bVar2 = pbParm1[0x18] << 4 | pbParm1[0x18] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x27]) ^
0x70) +
0xa6) * 0x162e ==
0x22ea6a)) &&
((bVar2 = pbParm1[0x10] << 4 | pbParm1[0x10] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x11]) *
0x78 ==
0x39a8 &&
(((bVar2 = pbParm1[0x24] << 4 | pbParm1[0x24] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x39] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x5c ==
0x4e58 &&
(bVar2 = pbParm1[0x1b] << 4 | pbParm1[0x1b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x1d] ==
0x639c)) &&
(bVar2 = pbParm1[0xc] << 4 | pbParm1[0xc] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0xe] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0xe9 ^
0x25) * 0xef ==
0xc793da)))))) &&
(((bVar2 = pbParm1[0x1b] << 4 | pbParm1[0x1b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x38]) *
0x30 ^
8) +
0x71) * 0xaf ==
0x11c137 &&
(bVar2 = pbParm1[0x2e] << 4 | pbParm1[0x2e] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)*pbParm1 +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
0xd9) * 0xb ==
0x2c0)) &&
((bVar2 = pbParm1[0x2b] << 4 | pbParm1[0x2b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x29] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
0xbf) * 0x9e ==
0x2780 &&
(((bVar2 = *pbParm1 << 4 | *pbParm1 >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x21] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
0xc1) +
0xd9 ^
0x85) * 0x33 ==
0x7623 &&
(bVar2 = pbParm1[0x36] << 4 | pbParm1[0x36] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x14] * 199 ==
0x4ee68)) &&
((bVar2 = pbParm1[0x2b] << 4 | pbParm1[0x2b] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x1e] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0x33) * 0xfc ==
0x16164 &&
((((bVar2 = pbParm1[5] << 4 | pbParm1[5] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x10] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55)) *
0x11 +
0x11 ^
0x12) * 0x54 ==
0x77de4 &&
(bVar2 = pbParm1[0x29] << 4 |
pbParm1[0x29] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0x3c] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55)) *
0x20d +
0x6e) * 0x11 ==
0x19a19a)) &&
(bVar2 = pbParm1[3] << 4 | pbParm1[3] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[1] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) +
0x50) * 0xd89f5 ==
0xcb155b0)) &&
((bVar2 =
pbParm1[0x21] << 4 | pbParm1[0x21] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x3c]) +
0x54) * 0x5e ==
0x29dc &&
(bVar2 = pbParm1[0x23] << 4 |
pbParm1[0x23] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x34] +
(ulong)(
bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
0x77) * 0x3e ==
0x2d0c)))))))))))))) &&
((bVar2 = pbParm1[0x3c] << 4 | pbParm1[0x3c] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x1c]) +
0x105 ^
0xeb) * 0xcb ==
0x155c5 &&
(((((bVar2 = pbParm1[0x16] << 4 | pbParm1[0x16] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x2c] * 0x23 +
0x86) * 0xfb ==
0xbb1bd2 &&
(bVar2 = pbParm1[0x38] << 4 | pbParm1[0x38] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x3a] * 0xe5 +
7 ^
0x71) * 0x9e ==
0x13836524)) &&
((((bVar2 = pbParm1[0x29] << 4 | pbParm1[0x29] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)pbParm1[0xb] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0x84) *
0x89 +
0xf) * 0x7f ==
0x64ea15 &&
(((bVar2 = pbParm1[0xb] << 4 | pbParm1[0xb] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0xe]) ^
0x80) +
0x1f) * 0xfc ==
0x103e0 &&
(bVar2 = pbParm1[0x2e] << 4 |
pbParm1[0x2e] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x31] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55)) *
0x40e ==
0x1a9be)) &&
(bVar2 =
pbParm1[0x1c] << 4 | pbParm1[0x1c] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x1a]) == 0xbf)))) &&
(((bVar2 = pbParm1[0x35] << 4 | pbParm1[0x35] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(byte)((bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[3]) == 0x38 &&
(bVar2 =
pbParm1[0x2d] << 4 | pbParm1[0x2d] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)pbParm1[0xf] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ==
0x12d)) &&
(bVar2 = pbParm1[0x12] << 4 | pbParm1[0x12] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x29] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0x1b0 ^
0x22) * 199 ==
0x1f563)))) &&
((bVar2 = pbParm1[8] << 4 | pbParm1[8] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x1b] ^
0xab) * 0x8d ==
0x24f92d &&
(bVar2 = pbParm1[0x26] << 4 | pbParm1[0x26] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x22] ==
0x86c)))))) &&
(((bVar2 = pbParm1[0x21] << 4 | pbParm1[0x21] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x1f] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) +
0x42) * 0xde ==
0xb8b6 &&
(((bVar2 = pbParm1[1] << 4 | pbParm1[1] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0xf] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55)) *
0x29 ==
0xf89 &&
(bVar2 =
pbParm1[0x2c] << 4 | pbParm1[0x2c] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[2]) == 0x48)) &&
(bVar2 = pbParm1[7] << 4 | pbParm1[7] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0xd]) *
0x65 ==
0x63d1)))) &&
((bVar2 = pbParm1[0x3d] << 4 | pbParm1[0x3d] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x2d] * 0x84 ^
0x97) * 0x5d ==
0x8340963 &&
(bVar2 = pbParm1[0x24] << 4 | pbParm1[0x24] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0xb]) ^
0xab) +
0x51) * 0x1fbd ==
0x16116a)))))) &&
((bVar2 = pbParm1[0x11] << 4 | pbParm1[0x11] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)pbParm1[0x18] +
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ==
0x105 &&
(((bVar2 = pbParm1[2] << 4 | pbParm1[2] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x1e] ^
0xa3) * 0x5460 ==
0xd314ea0 &&
(bVar2 =
pbParm1[0x1f] << 4 | pbParm1[0x1f] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) ^
pbParm1[0x1b]) +
0xf1) * 0x73 ==
0xdc1e)) &&
((bVar2 = pbParm1[0x3a] << 4 | pbParm1[0x3a] >> 4,
bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) & 0x55) *
(ulong)pbParm1[0x2b] * 0x14f0 ==
0x1b0a760 &&
((((bVar2 = pbParm1[3] << 4 | pbParm1[3] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) *
(ulong)pbParm1[0x3b] ^
0x88) * 0xf8 ==
0x11efe0 &&
(bVar2 = pbParm1[0xd] << 4 |
pbParm1[0xd] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) &
0x33,
(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
pbParm1[4]) == 0xa4)) &&
(bVar2 = pbParm1[0x30] << 4 |
pbParm1[0x30] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
((ulong)pbParm1[0x3b] +
(ulong)(
bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
0xe2) * 0x30d ==
0xba19)) &&
(bVar2 =
pbParm1[0xe] << 4 | pbParm1[0xe] >> 4,
bVar2 =
(byte)(((uint)bVar2 & 0x3ffffff3)
<< 2) |
(byte)((int)(uint)bVar2 >> 2) & 0x33,
(((ulong)(byte)(
(bVar2 * 2 & 0xaa |
(byte)((int)(uint)bVar2 >> 1) &
0x55) ^
pbParm1[0x35]) *
0x9c ^
0x9f) +
0xa2) * 0x7e ==
0x3d1c2e)))))))))))))))))))) {
uVar1 = 1;
} else {
uVar1 = 0;
}
return uVar1;
}
undefined8 is_correct(byte pbParm1[0])
{
undefined8 uVar1;
byte bVar2;
if (pbParm1[0] == 99 && pbParm1[1] == 0x74 && pbParm1[2] == 0x66 &&
(pbParm1[3] == 0x34 && pbParm1[4] == 0x62 &&
(pbParm1[5] == 0x7b && (pbParm1[0x3e] == 0x7d &&
f_xor(brev(pbParm1[0x13]), pbParm1[3], 154))) &&
f_mul(brev(pbParm1[0x24]), pbParm1[0x1b], 15770)) &&
(f_xor(brev(pbParm1[0x2e]), pbParm1[0x39], 2) &&
f_mul(brev(pbParm1[0x16]), pbParm1[0x10], 1440) &&
f_xor(brev(pbParm1[0x33]), pbParm1[7], 55) &&
(f_add(brev(pbParm1[0xb]), pbParm1[5], 177) &&
f_add(brev(pbParm1[6]), pbParm1[0xd], 271)) &&
(f_mul(brev(pbParm1[0xc]), pbParm1[0x3e], 0x445c) &&
(f_mul(brev(pbParm1[0x23]), pbParm1[0x13], 12870) &&
f_add(brev(pbParm1[0x19]), pbParm1[8], 249))) &&
f_add(brev(pbParm1[0x3a]), pbParm1[0x35], 0x5e) &&
(f_xor(brev(pbParm1[0xf]), pbParm1[0x15], 165) &&
f_xor(brev(pbParm1[0x39]), pbParm1[0x10], 84) &&
f_mul(brev(pbParm1[0x15]), pbParm1[2], 15300) &&
(f_add(brev(pbParm1[0x2e]), pbParm1[0x33], 168) &&
f_add(brev(pbParm1[0x38]), pbParm1[0x2a], 188)) &&
(f_mul(brev(pbParm1[0x12]), pbParm1[0x24], 19998) &&
(f_add(brev(pbParm1[0x2a]), pbParm1[0x19], 167) &&
f_xor(brev(pbParm1[0x32]), pbParm1[2], 74)))) &&
(f_xor(brev(pbParm1[6]), pbParm1[0xb], 192) &&
(f_mul(brev(pbParm1[0x1b]), pbParm1[0xe], 23750) &&
f_mul(brev(pbParm1[0xc]), pbParm1[0x19], 6860) &&
f_xor(brev(pbParm1[0x1e]), pbParm1[0x39], 82))) &&
(f_add(brev(pbParm1[0x3c]), pbParm1[0x3b], 117) &&
f_xor(brev(pbParm1[0x1a]), pbParm1[0x2c], 186) &&
(f_mul(brev(pbParm1[0x24]), pbParm1[0x26], 8632) &&
(f_xor(brev(pbParm1[0x26]), pbParm1[0x20], 79) &&
f_add(brev(pbParm1[0x27]), pbParm1[0x2d], 325))))) &&
(f_xor(brev(pbParm1[0x1b]), pbParm1[2], 156) &&
(f_add(brev(pbParm1[0x2a]), pbParm1[0x32], 170) &&
f_mul(brev(pbParm1[6]), pbParm1[2], 0x4488) &&
f_mul(brev(pbParm1[0x24]), pbParm1[6], 8798)) &&
(f_add(brev(pbParm1[0x1b]), pbParm1[0x25], 0x159) &&
f_add(brev(pbParm1[0x39]), pbParm1[0], 143) &&
(f_mul(brev(pbParm1[0x2f]), pbParm1[0x31], 7140) &&
(f_add(brev(pbParm1[0xb]), pbParm1[0x1f], 155) &&
f_add(brev(pbParm1[0x11]), pbParm1[0x1c], 217)) &&
f_add(brev(pbParm1[0xd]), pbParm1[7], 319)) &&
(f_add(brev(pbParm1[0x1b]), pbParm1[0x12], 349) &&
f_add(brev(pbParm1[0x16]), pbParm1[0xb], 0x78) &&
f_add(brev(pbParm1[0x2b]), pbParm1[0x37], 257) &&
(f_mul(brev(pbParm1[0x1c]), pbParm1[0x21], 23664) &&
f_add(brev(pbParm1[4]), pbParm1[0x3a], 186))) &&
(f_mul(brev(pbParm1[0x32]), pbParm1[0x2a], 4840) &&
(f_mul(brev(pbParm1[0x11]), pbParm1[0x1b], 15770) &&
f_add(brev(pbParm1[9]), pbParm1[0x30], 180)) &&
(f_xor(brev(pbParm1[0x3c]), pbParm1[0x13], 121) &&
(f_xor(brev(pbParm1[0x14]), pbParm1[0xc], 31) &&
f_mul(brev(pbParm1[0x2e]), pbParm1[0x1e], 5508) &&
f_xor(brev(pbParm1[3]), pbParm1[0x3c], 0x1c) &&
(f_xor(brev(pbParm1[10]), pbParm1[0x36], 134) &&
f_mul(brev(pbParm1[0x1b]), pbParm1[0x11], 0x62a2) &&
(f_add(brev(pbParm1[10]), pbParm1[0x15], 351) &&
(f_mul(brev(pbParm1[0x2f]), pbParm1[0x26], 7280) &&
f_xor(brev(pbParm1[0x15]), pbParm1[0x22], 0xa7))))) &&
f_mul(brev(pbParm1[0xe]), pbParm1[0x2c], 29000) &&
(f_add(brev(pbParm1[9]), pbParm1[0x33], 184) &&
f_mul(brev(pbParm1[0x1c]), pbParm1[0x1f], 20604) &&
f_add(brev(pbParm1[6]), pbParm1[0x38], 0x11e) &&
(f_xor(brev(pbParm1[0x14]), pbParm1[0xe], 113) &&
f_add(brev(pbParm1[0x24]), pbParm1[0x1a], 281)) &&
(f_mul(brev(pbParm1[0x1e]), pbParm1[0x34], 9690) &&
(f_add(brev(pbParm1[0x10]), pbParm1[0x13], 147) &&
f_xor(brev(pbParm1[0x3a]), pbParm1[0x16], 30)) &&
(f_mul(brev(pbParm1[0x35]), pbParm1[0x11], 1212) &&
(f_xor(brev(pbParm1[0x1e]), pbParm1[4], 4) &&
f_add(brev(pbParm1[0x15]), pbParm1[0xc], 199) &&
f_add(brev(pbParm1[0x2f]), pbParm1[0x13], 257) &&
(f_mul(brev(pbParm1[0x1a]), pbParm1[0x3b], 21630) &&
f_xor(brev(pbParm1[7]), pbParm1[0x31], 173)) &&
f_add(brev(pbParm1[0x1b]), pbParm1[0x1e], 352) &&
(f_add(brev(pbParm1[0xf]), pbParm1[0x3e], 329) &&
f_xor(brev(pbParm1[0x1a]), pbParm1[0x14], 186)) &&
(f_xor(brev(pbParm1[0x37]), pbParm1[0x1e], 170) &&
(f_add(brev(pbParm1[0x1b]), pbParm1[0x14], 366) &&
f_add(brev(pbParm1[0x2e]), pbParm1[0x19], 103) &&
f_add(brev(pbParm1[0x3b]), pbParm1[0x16], 0xc6))) &&
(f_add(brev(pbParm1[0x2a]), pbParm1[0xd], 217) &&
f_add(brev(pbParm1[0x37]), pbParm1[6], 257) &&
f_mul(brev(pbParm1[0x1f]), pbParm1[0x2b], 19090)))))) &&
(f_mul(brev(pbParm1[0x1f]), pbParm1[0x25], 15770) &&
f_add(brev(pbParm1[5]), pbParm1[0x32], 274) &&
(f_mul(brev(pbParm1[0x39]), pbParm1[0x3d], 4840) &&
(f_xor(brev(pbParm1[0]), pbParm1[0x2f], 247) &&
f_xor(brev(pbParm1[0x17]), pbParm1[0x3b], 31) &&
f_xor(brev(pbParm1[0xb]), pbParm1[0x25], 105)) &&
(f_add(brev(pbParm1[0x2c]), pbParm1[0x19], 0x5f) &&
f_add(brev(pbParm1[0x12]), pbParm1[0x38], 312)))) &&
f_xor(brev(pbParm1[0x31]), pbParm1[0x33], 190))) &&
(f_xor(brev(pbParm1[0]), pbParm1[0x24], 163) &&
f_add(brev(pbParm1[0xd]), pbParm1[6], 251) &&
(f_add(brev(pbParm1[9]), pbParm1[0x2e], 178) &&
(f_add(brev(pbParm1[10]), pbParm1[0x2e], 354) &&
f_xor(brev(pbParm1[0x17]), pbParm1[0x28], 23) &&
f_mul(brev(pbParm1[5]), pbParm1[0x39], 11544) &&
(f_mul(brev(pbParm1[0x2f]), pbParm1[2], 0x37c8) &&
f_xor(brev(pbParm1[6]), pbParm1[0x23], 218)))) &&
f_add(brev(pbParm1[0x12]), pbParm1[0x39], 250) &&
(f_add(brev(pbParm1[0x30]), pbParm1[0x13], 0xeb) &&
f_add(brev(pbParm1[0x27]), pbParm1[1], 0x15a)) &&
(f_xor(brev(pbParm1[0x16]), pbParm1[0x2a], 98) &&
(f_xor(brev(pbParm1[0x3b]), pbParm1[0x2f], 0xa7) &&
f_mul(brev(pbParm1[0x13]), pbParm1[0x37], 8874) &&
f_add(brev(pbParm1[0x29]), pbParm1[0x24], 241)) &&
(f_mul(brev(pbParm1[0x15]), pbParm1[0x16], 7200) &&
f_xor(brev(pbParm1[10]), pbParm1[0x28], 0x97) &&
f_mul(brev(pbParm1[0x28]), pbParm1[0x31], 6834)))) &&
(f_xor(brev(pbParm1[0x2b]), pbParm1[1], 186) &&
f_xor(brev(pbParm1[0x18]), pbParm1[0x27], 157) &&
(f_xor(brev(pbParm1[0x10]), pbParm1[0x11], 123) &&
(f_add(brev(pbParm1[0x24]), pbParm1[0x39], 218) &&
f_mul(brev(pbParm1[0x1b]), pbParm1[0x1d], 0x639c) &&
f_add(brev(pbParm1[0xc]), pbParm1[0xe], 235))) &&
(f_xor(brev(pbParm1[0x1b]), pbParm1[0x38], 136) &&
f_add(brev(pbParm1[0x2e]), pbParm1[0], 153) &&
(f_add(brev(pbParm1[0x2b]), pbParm1[0x29], 255) &&
(f_add(brev(pbParm1[0]), pbParm1[0x21], 314) &&
f_mul(brev(pbParm1[0x36]), pbParm1[0x14], 1624) &&
(f_add(brev(pbParm1[0x2b]), pbParm1[0x1e], 308) &&
(f_add(brev(pbParm1[5]), pbParm1[0x10], 342) &&
f_add(brev(pbParm1[0x29]), pbParm1[0x3c], 188) &&
f_add(brev(pbParm1[3]), pbParm1[1], 160) &&
(f_xor(brev(pbParm1[0x21]), pbParm1[0x3c], 30) &&
f_add(brev(pbParm1[0x23]), pbParm1[0x34], 205))))))) &&
(f_xor(brev(pbParm1[0x3c]), pbParm1[0x1c], 63) &&
(f_mul(brev(pbParm1[0x16]), pbParm1[0x2c], 1392) &&
f_mul(brev(pbParm1[0x38]), pbParm1[0x3a], 9048) &&
(f_add(brev(pbParm1[0x29]), pbParm1[0xb], 248) &&
(f_xor(brev(pbParm1[0xb]), pbParm1[0xe], 105) &&
f_add(brev(pbParm1[0x2e]), pbParm1[0x31], 105) &&
f_xor(brev(pbParm1[0x1c]), pbParm1[0x1a], 0xbf)) &&
(f_xor(brev(pbParm1[0x35]), pbParm1[3], 0x38) &&
f_add(brev(pbParm1[0x2d]), pbParm1[0xf], 0x12d) &&
f_add(brev(pbParm1[0x12]), pbParm1[0x29], 247)) &&
(f_mul(brev(pbParm1[8]), pbParm1[0x1b], 17290) &&
f_mul(brev(pbParm1[0x26]), pbParm1[0x22], 0x86c))) &&
(f_add(brev(pbParm1[0x21]), pbParm1[0x1f], 147) &&
(f_add(brev(pbParm1[1]), pbParm1[0xf], 97) &&
f_xor(brev(pbParm1[0x2c]), pbParm1[2], 0x48) &&
f_xor(brev(pbParm1[7]), pbParm1[0xd], 253)) &&
(f_mul(brev(pbParm1[0x3d]), pbParm1[0x2d], 11210) &&
f_xor(brev(pbParm1[0x24]), pbParm1[0xb], 202))) &&
(f_add(brev(pbParm1[0x11]), pbParm1[0x18], 0x105) &&
(f_mul(brev(pbParm1[2]), pbParm1[0x1e], 10404) &&
f_xor(brev(pbParm1[0x1f]), pbParm1[0x1b], 249) &&
(f_mul(brev(pbParm1[0x3a]), pbParm1[0x2b], 5290) &&
(f_mul(brev(pbParm1[3]), pbParm1[0x3b], 4620) &&
f_xor(brev(pbParm1[0xd]), pbParm1[4], 0xa4) &&
f_add(brev(pbParm1[0x30]), pbParm1[0x3b], 223) &&
f_xor(brev(pbParm1[0xe]), pbParm1[0x35], 202))))))))))) {
uVar1 = 1;
} else {
uVar1 = 0;
}
return uVar1;
}
// ctf4b{5ymbol1c_3xecuti0n_1s_3ffect1ve_4ga1nst_l1n34r_0p3r4ti0n}
param_0 = 99 :: Word8
param_1 = 116 :: Word8
param_2 = 102 :: Word8
param_3 = 52 :: Word8
param_4 = 98 :: Word8
param_5 = 123 :: Word8
param_6 = 53 :: Word8
param_7 = 121 :: Word8
param_8 = 109 :: Word8
param_9 = 98 :: Word8
param_10 = 111 :: Word8
param_11 = 108 :: Word8
param_12 = 49 :: Word8
param_13 = 99 :: Word8
param_14 = 95 :: Word8
param_15 = 51 :: Word8
param_16 = 120 :: Word8
param_17 = 101 :: Word8
param_18 = 99 :: Word8
param_19 = 117 :: Word8
param_20 = 116 :: Word8
param_21 = 105 :: Word8
param_22 = 48 :: Word8
param_23 = 110 :: Word8
param_24 = 95 :: Word8
param_25 = 49 :: Word8
param_26 = 115 :: Word8
param_27 = 95 :: Word8
param_28 = 51 :: Word8
param_29 = 102 :: Word8
param_30 = 102 :: Word8
param_31 = 101 :: Word8
param_32 = 99 :: Word8
param_33 = 116 :: Word8
param_34 = 49 :: Word8
param_35 = 118 :: Word8
param_36 = 101 :: Word8
param_37 = 95 :: Word8
param_38 = 52 :: Word8
param_39 = 103 :: Word8
param_40 = 97 :: Word8
param_41 = 49 :: Word8
param_42 = 110 :: Word8
param_43 = 115 :: Word8
param_44 = 116 :: Word8
param_45 = 95 :: Word8
param_46 = 108 :: Word8
param_47 = 49 :: Word8
param_48 = 110 :: Word8
param_49 = 51 :: Word8
param_50 = 52 :: Word8
param_51 = 114 :: Word8
param_52 = 95 :: Word8
param_53 = 48 :: Word8
param_54 = 112 :: Word8
param_55 = 51 :: Word8
param_56 = 114 :: Word8
param_57 = 52 :: Word8
param_58 = 116 :: Word8
param_59 = 105 :: Word8
param_60 = 48 :: Word8
param_61 = 110 :: Word8
param_62 = 125 :: Word8
import Language.C
import Language.C.System.GCC
import Language.C.Pretty
import Language.C.Syntax.AST
import Language.C.Data.Ident
import Language.C.Syntax.Constants
import Control.Exception
import Control.Monad
import Data.Bits
import Debug.Trace
main :: IO ()
main = do
Right (CTranslUnit decls _) <- parseCFile (newGCC "gcc") Nothing [] "is_correct.c"
let def =
head [ body
| CFDefExt (CFunDef args (CDeclr (Just (Ident fname _ _)) _ _ _ _) b body _) <- decls
, fname == "is_correct"
]
-- print $ pretty def
let simpl = simplify def
print $ pretty simpl
return ()
simplify :: CStat -> CStat
simplify s = case s of
CCompound ids items a ->
let f (CBlockStmt stmt) = CBlockStmt $ simplify stmt
f item = item
in CCompound ids [ f item | item <- items ] a
CIf cond th el a ->
CIf (simplifyExpr cond) (simplify th) (fmap simplify el) a
CExpr expr a ->
CExpr (fmap simplifyExpr expr) a
CReturn expr a ->
CReturn expr a
_ -> error $ "HOGEHOGE: " ++ (show s)
-- CLabel Ident (CStatement a) [CAttribute a] a
-- -- An (attributed) label followed by a statement
-- CCase (CExpression a) (CStatement a) a
-- -- A statement of the form case expr : stmt
-- CCases (CExpression a) (CExpression a) (CStatement a) a
-- -- A case range of the form case lower ... upper : stmt
-- CDefault (CStatement a) a
-- -- The default case default : stmt
-- CSwitch (CExpression a) (CStatement a) a
-- -- switch statement CSwitch selectorExpr switchStmt, where switchStmt usually includes case, break and default statements
-- CWhile (CExpression a) (CStatement a) Bool a
-- -- while or do-while statement CWhile guard stmt isDoWhile at
-- CFor (Either (Maybe (CExpression a)) (CDeclaration a)) (Maybe (CExpression a)) (Maybe (CExpression a)) (CStatement a) a
-- -- for statement CFor init expr-2 expr-3 stmt, where init is either a declaration or initializing expression
-- CGoto Ident a
-- -- goto statement CGoto label
-- CGotoPtr (CExpression a) a
-- -- computed goto CGotoPtr labelExpr
-- CCont a
-- -- continue statement
-- CBreak a
-- -- break statement
-- CAsm (CAssemblyStatement a) a
cconst :: Integer -> NodeInfo -> CExpr
cconst n a = CConst (CIntConst (CInteger n DecRepr $ Flags 0) a)
simplifyExpr :: CExpr -> CExpr
simplifyExpr e = case e of
CBinary CEqOp
(CBinary CMulOp x (CConst (CIntConst (CInteger l _ _) _)) _)
(CConst (CIntConst (CInteger r _ _) _)) a ->
simplifyExpr $ assert (r `mod` l == 0) $ CBinary CEqOp x (cconst (r `div` l) a) a
CBinary CEqOp
(CBinary CAddOp x (CConst (CIntConst (CInteger l _ _) _)) _)
(CConst (CIntConst (CInteger r _ _) _)) a ->
simplifyExpr $ assert (r >= l) $ CBinary CEqOp x (cconst (r - l) a) a
CBinary CEqOp
(CBinary CXorOp x (CConst (CIntConst (CInteger l _ _) _)) _)
(CConst (CIntConst (CInteger r _ _) _)) a ->
simplifyExpr $ CBinary CEqOp x (cconst (r `xor` l) a) a
-- (ulong)(byte)(brev ^ pbParm1[3]) == 154
-- (ulong)brev * (ulong)pbParm1[0x1b] == 15770
pat@(CComma
[ CAssign CAssignOp _ (CBinary COrOp (CBinary CShlOp var1_ _ _) r _) _
-- (bVar2 = pbParm1[0x24] << 4 | pbParm1[0x24] >> 4,
, CAssign CAssignOp _ _ _
-- bVar2 = (byte)(((uint)bVar2 & 0x3ffffff3) << 2) | (byte)((int)(uint)bVar2 >> 2) & 0x33,
, e
-- ((ulong)(bVar2 * 2 & 0xaa | (byte)((int)(uint)bVar2 >> 1) & 0x55) * (ulong)pbParm1[0x1b] * 0xca ^ 0xae) * 0x2f == 0x8ec7cb6
]
a) ->
let var1 = CCall (CVar (Ident "brev" 0 a) a) [var1_] a in
case simplifyExpr e of
CBinary CEqOp (CCast _ (CBinary CXorOp _ var2 _) _) coeff _ ->
CCall (CVar (Ident "f_xor" 0 a) a) [var1, var2, coeff] a
CBinary CEqOp (CCast _ (CCast _ (CBinary CXorOp _ var2 _) _) _) coeff _ ->
CCall (CVar (Ident "f_xor" 0 a) a) [var1, var2, coeff] a
CBinary CEqOp (CBinary CMulOp _ var2 _) coeff _ ->
CCall (CVar (Ident "f_mul" 0 a) a) [var1, var2, coeff] a
CBinary CEqOp (CBinary CAddOp var2 _ _) coeff _ ->
CCall (CVar (Ident "f_add" 0 a) a) [var1, var2, coeff] a
CBinary CLndOp (CBinary CEqOp (CCast _ (CBinary CXorOp _ var2 _) _) coeff _) r _ ->
CBinary CLndOp (CCall (CVar (Ident "f_xor" 0 a) a) [var1, var2, coeff] a) r a
CBinary CLndOp (CBinary CEqOp (CCast _ (CCast _ (CBinary CXorOp _ var2 _) _) _) coeff _) r _ ->
CBinary CLndOp (CCall (CVar (Ident "f_xor" 0 a) a) [var1, var2, coeff] a) r a
CBinary CLndOp (CBinary CEqOp (CBinary CAddOp var2 _ _) coeff _) r _ ->
CBinary CLndOp (CCall (CVar (Ident "f_add" 0 a) a) [var1, var2, coeff] a) r a
CBinary CLndOp (CBinary CEqOp (CBinary CMulOp _ var2 _) coeff _) r _ ->
CBinary CLndOp (CCall (CVar (Ident "f_mul" 0 a) a) [var1, var2, coeff] a) r a
ee -> traceShow ("<tag>", pretty ee, "</tag>") ee
CUnary op x a -> CUnary op (simplifyExpr x) a
CBinary op x y a -> CBinary op (simplifyExpr x) (simplifyExpr y) a
CComma exprs a -> CComma (map simplifyExpr exprs) a
CAssign op lvar rvar a -> CAssign op lvar (simplifyExpr rvar) a
CCast decl expr a -> CCast decl (simplifyExpr expr) a
CVar ident a -> CVar ident a
CConst c -> CConst c
CIndex arr ix a -> CIndex arr ix a
CCall f args a -> CCall f args a
_ -> error $ show e
-- CCond (CExpression a) (Maybe (CExpression a)) (CExpression a) a
-- CUnary CUnaryOp (CExpression a) a
-- CSizeofExpr (CExpression a) a
-- CSizeofType (CDeclaration a) a
-- CAlignofExpr (CExpression a) a
-- CAlignofType (CDeclaration a) a
-- CComplexReal (CExpression a) a
-- CComplexImag (CExpression a) a
-- CCall (CExpression a) [CExpression a] a
-- CMember (CExpression a) Ident Bool a
-- integer, character, floating point and string constants
-- CCompoundLit (CDeclaration a) (CInitializerList a) a
-- C99 compound literal
-- CGenericSelection (CExpression a) [(Maybe (CDeclaration a), CExpression a)] a
-- C11 generic selection
-- CStatExpr (CStatement a) a
-- GNU C compound statement as expr
-- CLabAddrExpr Ident a
-- GNU C address of label
-- CBuiltinExpr (CBuiltinThing a)
import Data.SBV
import Control.Monad
main :: IO ()
main = do
es <- map words . lines <$> readFile "expr.txt"
res <- sat $ problem es
print res
return ()
brev :: SWord8 -> SWord8
brev b = fromBitsLE $ reverse $ blastLE b
problem :: [[String]] -> Symbolic ()
problem es = do
param <- sWord8s [ "param_" ++ show i | i <- [0..0x3e]]
let consts =
[ (0, 99)
, (1, 0x74)
, (2, 0x66)
, (3, 0x34)
, (4, 0x62)
, (5, 0x7b)
, (0x3e, 0x7d)
]
forM_ consts $ \(ix, val) -> constrain $ (param !! ix) .== val
forM_ es $ \[f, a, b, c] -> do
let na = read a :: Int
let nb = read b :: Int
let nc = read c :: Int
let x = sFromIntegral (brev $ param !! na) :: SWord16
let y = sFromIntegral (param !! nb)
let l = case f of
"f_mul" -> x * y
"f_add" -> x + y
"f_xor" -> x `xor` y
constrain $ l .== fromIntegral nc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment