OLLVM 代码混淆

编译器由3部分组成

  • Frontend 语法分析
  • Optimizer 中间优化
  • Backend 编译为对应平台的汇编代码(arm, x86)

当前主流编译器

  • gcc
  • llvm-clang
  • msvc

LLVM

gcc编译器使用范围比较广泛, 但是缺点是编译器前端中间优化以及后端耦合度太高, 所以想要增加一个前端用来支持一种新的语言或者在后端增加一个新的平台改动都会很大.
llvm最大的优势是模块化设计, 代码解析, 优化, 汇编生成等等, 都可以分别改进或者进行功能定制.

OLLVM

OLLVM是一个LLVM的开源分支, 它包含数个独立功能的LLVM Pass, 每个Pass会实现一种特定的代码混淆方式

OLLVM代码混淆方式

  • 指令替换 -mllvm -sub
  • 虚假控制流 -mllvm -bcf
  • 控制流扁平化 -mllvm -fla
  • 随机种子加密 -mllvm -aesSeed
  • 分离代码块 -mllvm -split

下载安装

1
2
3
4
5
6
7
8
9
10
git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git
cd obfuscator
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF ../
# 如果配置够高, 可以make -jX X为cpu核数
# 编译时间非常久
make
make install
clang --version

代码混淆测试

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#ifdef _Obfuscator_
__attribute((__annotate__(("split"))))
__attribute((__annotate__(("fla"))))
__attribute((__annotate__(("bcf"))))
__attribute((__annotate__(("sub"))))
#endif
int main(int argc, char * argv[]) {
int a = 100;
a++;
printf("a = %d\n", a);
return 0;
}
1
2
3
4
5
6
7
8
9
10
# 未开启代码混淆
clang -Wall -O1 main.c -o before

# 开启代码混淆
clang -mllvm -sub -mllvm -sub_loop=3 -mllvm -bcf -mllvm -bcf_loop=3 -mllvm -bcf_prob=40 -mllvm -fla -mllvm -split -mllvm -split_num=3 -Wall -D_Obfuscator_ -O1 main.c -o after

# 进行代码混淆后编译出来的文件会更大
ls -la
-rwxr-xr-x 1 root root 12544 Apr 11 20:16 after
-rwxr-xr-x 1 root root 8400 Apr 11 20:15 before

代码混淆后不影响正常使用, 测试执行可执行程序

1
2
3
4
5
6
7
# 未混淆
[root@VM-16-6-centos build]# ./before
a = 101

# 混淆后
[root@VM-16-6-centos build]# ./after
a = 101

使用IDA查看汇编代码, 会发现代码膨胀了上百倍, 控制流程更加复杂, 但是程序性能会受到一定的影响, 需要进行取舍.
在实际使用过程中, 可以只对部分重要的函数进行代码混淆, 或者减少混淆选项.
使用IDA查看二进制文件, 将汇编代码转为C代码
混淆前:

1
2
3
4
5
int __cdecl main(int argc, const char **argv, const char **envp)
{
printf("a = %d\n", 101LL);
return 0;
}

混淆后:

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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
int __cdecl main(int argc, const char **argv, const char **envp)
{
unsigned int v3; // ebx
int v4; // ecx
unsigned int v5; // ecx
unsigned int v6; // ecx
unsigned int v7; // ecx
unsigned int v8; // ecx
int v9; // eax
int v10; // ecx
bool v11; // dl
bool v12; // al
char v13; // al
char v14; // dl
unsigned __int8 v15; // cl
unsigned __int8 v16; // dl
int v17; // esi
bool v18; // zf
int v19; // edx
int v20; // ecx
unsigned int v21; // ebp
unsigned int v22; // esi
int v23; // edx
char v24; // al
unsigned __int8 v25; // cl
int v26; // edx
unsigned int v27; // edx
unsigned int v28; // esi
unsigned int v29; // edx
unsigned int v30; // ecx
unsigned int v31; // ecx
unsigned int v32; // edi
unsigned int v33; // edx
unsigned int v34; // ebx
unsigned int v35; // ecx
char v36; // al
char v37; // al
unsigned __int8 v38; // al
int v39; // ecx
bool v40; // zf
int v41; // edx
unsigned int v42; // edi
int v43; // esi
bool v44; // cl
char v45; // al
char v46; // cl
unsigned __int8 v47; // dl
unsigned int v48; // eax
unsigned int v49; // eax
unsigned int v50; // ecx
char v51; // dl
char v52; // dl
char v53; // si
unsigned __int8 v54; // si
int v55; // edx
unsigned int v56; // ecx
unsigned int v57; // esi
unsigned int v58; // edx
bool v59; // al
unsigned __int8 v60; // cl
unsigned __int8 v61; // al
int v62; // edx
unsigned int v63; // esi
unsigned int v64; // edx
unsigned int v65; // edi
unsigned int v66; // ecx
unsigned int v67; // ecx
int v68; // edx
unsigned int v69; // ecx
bool v70; // bl
unsigned int v71; // esi
char v72; // al
unsigned int v73; // edi
char v74; // dl
char v75; // al
char v76; // cl
bool v77; // zf
int v78; // ecx
int v79; // eax
unsigned int v80; // edx
unsigned int v81; // edx
unsigned int v82; // eax
char v83; // cl
unsigned __int8 v84; // dl
unsigned __int8 v85; // cl
int v86; // edx
unsigned int v87; // edi
char v88; // al
char v89; // cl
int v90; // edx
int v91; // ecx
unsigned int v92; // edx
int v93; // edx
unsigned int v94; // esi
unsigned int v95; // ecx
unsigned int v96; // edx
int v97; // edx
unsigned int v98; // edx
char v99; // al
char v100; // cl
unsigned int v101; // edx
unsigned int v102; // ecx
unsigned int v103; // edi
unsigned int v104; // eax
unsigned int v105; // esi
unsigned int v106; // ecx
int v107; // eax
unsigned int v108; // edx
unsigned int v109; // eax
int v110; // ecx
unsigned int v111; // edx
char v112; // bl
unsigned __int8 v113; // dl
unsigned __int8 v114; // cl
int v115; // esi
unsigned int v116; // ebp
unsigned int v117; // ecx
unsigned int v118; // edi
char v119; // dl
char v120; // al
char v121; // al
unsigned __int8 v122; // dl
unsigned __int8 v123; // al
bool v125; // [rsp+0h] [rbp-32h]
bool v126; // [rsp+1h] [rbp-31h]

v4 = x * (-355793914 - (-355793913 - x));
v5 = (((~v4 & 0x3038B24A | v4 & 0xCFC74DB5) ^ 0x3038B24A) & 0x1AFD5AB6 | ((~v4 & 0x3038B24A | v4 & 0xCFC74DB5) ^ 0xC5020501) & 0xE502A549) ^ (~(v4 & ~v4) & 0x1AFD5AB6 | v4 & ~v4 & 0xE502A549) | ~(~(v4 & ~v4) | (~v4 & 0x3038B24A | v4 & 0xCFC74DB5) ^ 0x3038B24A);
v6 = (~v5 & 0xFFFFFFFE | v5 & 1) & v5 & 0xFFFFFFFE | v5 & 0xFFFFFFFE ^ (~v5 & 0xFFFFFFFE | v5 & 1);
v7 = (~v6 & 0x105B4044 | v6 & 0x2A20B811) ^ 0x2A20B811 | v6 & 0xC58407AA;
v8 = ~v7 & 0x4DE87796 | v7 & 0xB2178869;
v125 = ((((v8 ^ 0x77938FC3) & 0x2860055 | (v8 ^ 0x88687028) & 0xFD79FFAA) ^ 0x2860055) & (((v8 ^ 0x77938FC3) & 0x2860055 | (v8 ^ 0x88687028) & 0xFD79FFAA) ^ 0x2860055 ^ v8 ^ 0x77938FC3)) == 0;
v126 = y < 10;
v9 = -130698396;
while ( 1 )
{
while ( 1 )
{
LABEL_60:
if ( v9 <= -123056904 )
{
if ( v9 > -677075566 )
{
if ( v9 != -677075565 )
{
if ( v9 == -588951985 )
{
v9 = 911225516;
goto LABEL_11;
}
LOBYTE(v9) = !v125;
v86 = v9;
LOBYTE(v86) = v126 ^ !v125 ^ 1;
v87 = v86;
LOBYTE(v87) = !v125 | v86;
v3 = v87;
LOBYTE(v86) = (v126 || !v125) ^ v126 & v86 ^ 1 | ((v126 || !v125) | v126 & v86 ^ 1) ^ 1;
LOBYTE(v3) = v87 & v86 | (v86 ^ 1) & (v87 ^ 1);
v88 = (v86 ^ 1) & v87 | v87 ^ v86 ^ 1;
v89 = v88 ^ v3;
v18 = (v88 & 1) == 0;
v9 = 1172987121;
if ( !v18 )
v9 = 329200819;
if ( (v3 & 1) == 0 )
v9 = 329200819;
v40 = (v89 & 1) == 0;
v39 = 1172987121;
goto LABEL_69;
}
v90 = x * (-1717260685 - (-1195566337 - (474189997 - (-495888577 - (x - 448384227)))));
v91 = v90 & ~v90;
v92 = (~v90 & 0x6A782C80 | v90 & 0x9587D37F) ^ 0x9587D37F;
v93 = v91 & v92 | v91 ^ v92;
v94 = ~(v93 & (v93 ^ 0x5DB2636F) & ~v93 & 0x5DB2636F | ~v93 & 0x5DB2636F ^ v93 & (v93 ^ 0x5DB2636F)) & 0xA24D9C91 | (v93 & (v93 ^ 0x5DB2636F) & ~v93 & 0x5DB2636F | ~v93 & 0x5DB2636F ^ v93 & (v93 ^ 0x5DB2636F)) & 0x5DB2636E;
v95 = (v93 & 0xED8343A6 | ~v93 & 0x127CBC59) ^ 0xED8343A7 | ((v93 & 1) == 0);
v96 = (~v94 & 0x9D8CAF9 | v94 & 0xF6273506) ^ (v95 & 0x9D8CAF9 | ~v95 & 0xF6273506) | ~(v95 | ~v94);
v97 = ~v96 & v96 & ~v96 | ~v96 ^ ~v96 & v96;
v98 = ~v97 | (~v97 & 0xAC1D76AF | v97 & 0x53E28950) ^ 0x53E28950;
LOBYTE(v98) = v98 == -1;
LOBYTE(v95) = !(_BYTE)v98;
LOBYTE(v98) = y > 9 || !((y > 9 && !(_BYTE)v98) | (y < 10) & (unsigned __int8)v98);
LOBYTE(v95) = v95 ^ (y > 9);
v99 = v98 & v95;
LOBYTE(v98) = v98 ^ 1;
LOBYTE(v95) = v95 ^ 1;
v3 = v98;
LOBYTE(v3) = v98 & (v95 ^ v98);
v100 = v99 | v98 & v95;
v9 = 639533240;
v62 = -815177895;
if ( v100 )
v9 = -815177895;
v60 = v3 ^ v100;
if ( (v3 & 1) == 0 )
v9 = 639533240;
goto LABEL_85;
}
if ( v9 != -2093292154 )
{
v9 = 1909823120;
goto LABEL_11;
}
v116 = ((~((((x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x60405601) & 0xE852D6A3 | ~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x13092910) ^ ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x881280A2) & 0xE852D6A3 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x4A4004C)) & 0x1A02E1E | ((((x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x60405601) & 0xE852D6A3 | ~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x13092910) ^ ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x881280A2) & 0xE852D6A3 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x4A4004C)) & 0xFE5FD1E1) ^ 0x9ABB87AD) & 0xC94ED067;
v117 = ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x7FFB6353 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x80049CAC) ^ 0x494A4043) & 0xC94ED067;
v118 = (v116 | ((~((((x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x60405601) & 0xE852D6A3 | ~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x13092910) ^ ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x881280A2) & 0xE852D6A3 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x4A4004C)) & 0x1A02E1E | ((((x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x60405601) & 0xE852D6A3 | ~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x13092910) ^ ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x881280A2) & 0xE852D6A3 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x4A4004C)) & 0xFE5FD1E1) ^ 0x24002810) & 0x36B12F98) ^ (v117 | ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x7FFB6353 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x80049CAC) ^ 0xC88) & 0x36B12F98);
v18 = (v118 & (v118 ^ (~((((x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x60405601) & 0xE852D6A3 | ~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x13092910) ^ ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x881280A2) & 0xE852D6A3 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x4A4004C)) & 0x1A02E1E | ((((x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x60405601) & 0xE852D6A3 | ~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x13092910) ^ ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x881280A2) & 0xE852D6A3 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x4A4004C)) & 0xFE5FD1E1) ^ 0x9ABB87AD)) == 0;
LOBYTE(v118) = (v118 & (v118 ^ (~((((x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x60405601) & 0xE852D6A3 | ~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x13092910) ^ ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x881280A2) & 0xE852D6A3 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x4A4004C)) & 0x1A02E1E | ((((x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x60405601) & 0xE852D6A3 | ~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x13092910) ^ ((~(x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) | 0x881280A2) & 0xE852D6A3 | (x * (49328279 - (1464885028 - (-237200176 - (-1652756924 - x))))) & 0x4A4004C)) & 0xFE5FD1E1) ^ 0x9ABB87AD)) != 0;
v119 = (y > 9) & (v118 ^ (y > 9)) & v118 & (v118 ^ (y > 9)) | v118 & (v118 ^ (y > 9)) ^ (y > 9) & (v118 ^ (y > 9));
v120 = (v18 && y < 10) | v18 ^ (y < 10);
LOBYTE(v117) = !((y < 10) & (unsigned __int8)v118 | (v18 && y > 9));
v3 = v117;
LOBYTE(v117) = v120 ^ v117 | (v120 | v117) ^ 1;
v121 = v117 ^ v119;
v122 = v117 | v119 ^ 1;
v123 = v121 ^ 1;
v78 = 545460225;
if ( ((v123 ^ v122) & 1) != 0 )
v78 = 82960845;
v18 = (v123 & 1) == 0;
v9 = v78;
if ( !v18 )
v9 = 545460225;
v77 = (v122 & 1) == 0;
goto LABEL_104;
}
if ( v9 > 92551505 )
break;
if ( v9 == -123056903 )
{
printf("a = %d\n", 101LL);
v9 = 1811900722;
goto LABEL_11;
}
v9 = -2093292154;
}
if ( v9 == 92551506 )
{
v9 = 2103454096;
goto LABEL_11;
}
if ( v9 != 329200819 )
return 0;
v101 = ((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0x29FBE151) & ((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0xA8E6C746);
v102 = (((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0xD2040A8A) & 0xDAFE4BDA | ((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0x29FBE151) & 0x2501B425) ^ 0x2501B425;
v103 = ~(v102 & ((((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0xD2040A8A) & 0xDAFE4BDA | ((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0x29FBE151) & 0x2501B425) ^ 0x5BE36DCD)) & 0xA905803C | v102 & ((((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0xD2040A8A) & 0xDAFE4BDA | ((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0x29FBE151) & 0x2501B425) ^ 0x5BE36DCD) & 0x56FA7FC3;
v104 = ~(v103 ^ (~v101 & 0xA905803C | v101 & 0x56FA7FC3) | ~(~v101 | ~(v102 & ((((~(~(x
* (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0xD2040A8A) & 0xDAFE4BDA | ((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0x29FBE151) & 0x2501B425) ^ 0x5BE36DCD)))) & 0x516AEB6D;
v105 = (v104 | (v103 ^ (~v101 & 0xA905803C | v101 & 0x56FA7FC3) | ~(~v101 | ~(v102 & ((((~(~(x
* (752995437
- (752995438
- x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0xD2040A8A) & 0xDAFE4BDA | ((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0x29FBE151) & 0x2501B425) ^ 0x5BE36DCD)))) & 0xAE951492) ^ 0x2F883284;
v106 = ~((((((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0xD2040A8A) & 0xDAFE4BDA | ((~(~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0x50D5318A | (~(x * (752995437 - (752995438 - x))) & 0x86D12F24 | (x * (752995437 - (752995438 - x))) & 0x792ED0DB) & 0xAF2ACE75) ^ 0x29FBE151) & 0x2501B425) ^ 0x90960AD8) & 0xB0979EF9 | v102 & 0x4F686106) ^ 0xB0979EF8 | v102 & 1);
v107 = v106 & v105 | v105 ^ v106;
v108 = v107 & (v107 ^ 0x881A1E1C);
v109 = (~v107 & 0x8120804 | v107 & 0x80081618) ^ 0x80081618;
v110 = v108 & v109;
v111 = ~(v110 | v109 ^ v108) & 0x77E5E1E3 | (v110 | v109 ^ v108) & 0x881A1E1C;
LOBYTE(v110) = y > 9;
LOBYTE(v103) = (((v111 & 0x65CE9B9 | ~v111 & 0xF9A31646) ^ 0x20230242) & 0x227F8BE3 | ((v111 & 0x65CE9B9 | ~v111 & 0xF9A31646) ^ 0x4006018) & 0xDD80741C) == 0xDD80741C;
LOBYTE(v105) = (((v111 & 0x65CE9B9 | ~v111 & 0xF9A31646) ^ 0x20230242) & 0x227F8BE3 | ((v111 & 0x65CE9B9 | ~v111 & 0xF9A31646) ^ 0x4006018) & 0xDD80741C) != 0xDD80741C;
v112 = v105 & (v103 ^ v105);
LOBYTE(v109) = ((v112 | !v112) ^ 1) & v112 | v112 ^ (v112 | !v112) ^ 1;
v3 = v110;
LOBYTE(v3) = (y > 9) & (v109 ^ (y > 9)) & (v109 ^ (y > 9)) & v109 | (v109 ^ (y > 9)) & v109 ^ (y > 9) & (v109 ^ (y > 9));
LOBYTE(v103) = v105 & (y < 10) | (y > 9) & v103;
LOBYTE(v110) = !((unsigned __int8)(v105 ^ (y > 9)) | !((unsigned __int8)v105 | (y > 9)));
LOBYTE(v110) = v110 & v103 | v103 ^ v110;
v113 = v110 | v3 ^ 1;
v114 = (v3 ^ 1) & (v110 ^ 1) | v3 & v110;
v115 = 1811900722;
if ( ((v114 ^ v113) & 1) != 0 )
v115 = -123056903;
v9 = v115;
if ( (v114 & 1) != 0 )
v9 = 1811900722;
if ( (v113 & 1) != 0 )
v9 = v115;
if ( v9 > 639533239 )
{
while ( 1 )
{
while ( 1 )
{
LABEL_11:
while ( v9 <= 1811900721 )
{
if ( v9 <= 1172987120 )
{
if ( v9 == 639533240 )
{
v9 = -677075565;
goto LABEL_60;
}
v27 = ~(~((((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x2002400 | 0xDD8178) & 0x5ADDB57A | ((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x1000000) & 0x81224801) ^ ((~(x * (x - 1)) | 0x5A003402) & 0x5ADDB57A | (x * (x - 1)) & 0x24000284)) & 0x24DD83FC | ((((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x2002400 | 0xDD8178) & 0x5ADDB57A | ((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x1000000) & 0x81224801) ^ ((~(x * (x - 1)) | 0x5A003402) & 0x5ADDB57A | (x * (x - 1)) & 0x24000284)) & 0xDB227C03) & 0x2039E710;
v28 = v27 | (~((((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x2002400 | 0xDD8178) & 0x5ADDB57A | ((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x1000000) & 0x81224801) ^ ((~(x * (x - 1)) | 0x5A003402) & 0x5ADDB57A | (x * (x - 1)) & 0x24000284)) & 0x24DD83FC | ((((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x2002400 | 0xDD8178) & 0x5ADDB57A | ((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x1000000) & 0x81224801) ^ ((~(x * (x - 1)) | 0x5A003402) & 0x5ADDB57A | (x * (x - 1)) & 0x24000284)) & 0xDB227C03) & 0xDFC618EF;
v29 = v28 ^ 0xDFC618EF;
v30 = (~((((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x2002400 | 0xDD8178) & 0x5ADDB57A | ((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x1000000) & 0x81224801) ^ ((~(x * (x - 1)) | 0x5A003402) & 0x5ADDB57A | (x * (x - 1)) & 0x24000284)) & 0x24DD83FC | ((((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x2002400 | 0xDD8178) & 0x5ADDB57A | ((~(x * (x - 1)) & 0xA676EC3D | (x * (x - 1)) & 0x598913C2) ^ 0x1000000) & 0x81224801) ^ ((~(x * (x - 1)) | 0x5A003402) & 0x5ADDB57A | (x * (x - 1)) & 0x24000284)) & 0xDB227C03) & 0xDDDA5345;
v31 = (~(v30 & v29 & (v28 ^ 0x21C4BAA) | v29 & (v28 ^ 0x21C4BAA) ^ v30) & 0xA9B08399 | (v30 & v29 & (v28 ^ 0x21C4BAA) | v29 & (v28 ^ 0x21C4BAA) ^ v30) & 0x564F7C66) ^ 0x746AD0DD;
v32 = ((v28 ^ 0x20210100) & 0x3AE11169 | (v28 ^ 0xDFC618EF) & 0xC51EEE96) ^ 0x3AE11168;
v33 = (~(v32 | v29 & 1) & 0x7F201529 | (v32 | v29 & 1) & 0x80DFEAD6) ^ 0x80DFEAD6;
LOBYTE(v33) = (v33 & v31 | v31 ^ v33) == -1;
LOBYTE(v31) = y < 10;
LOBYTE(v28) = v33 ^ (y > 9);
v34 = v31;
LOBYTE(v34) = (y < 10) & ((y > 9) ^ (y < 10));
v35 = v34;
LOBYTE(v35) = v34 & (v33 ^ v34) ^ (v33 ^ v34) & v33 | ((v33 ^ v34) & v33 ^ 1 | v34 & (v33 ^ v34) ^ 1) ^ 1;
LOBYTE(v33) = (v28 ^ v28 & (y > 9) ^ 1 | (v28 | !((unsigned __int8)v28 & (y > 9))) ^ 1) ^ 1;
v36 = v33 & (v28 ^ v28 & (y > 9) ^ 1 | (v28 | !((unsigned __int8)v28 & (y > 9))) ^ 1);
v37 = v36 & v33 | v33 ^ v36;
LOBYTE(v33) = v37 & (v35 ^ 1);
v37 ^= 1u;
v3 = v35;
LOBYTE(v3) = v35 & (v37 ^ v35);
v38 = v33 | v35 & v37;
v39 = 1996163170;
if ( ((v38 ^ (unsigned __int8)v3) & 1) != 0 )
v39 = 1860491186;
v18 = (v38 & 1) == 0;
v9 = v39;
if ( !v18 )
v9 = 1860491186;
v40 = (v3 & 1) == 0;
goto LABEL_69;
}
if ( v9 == 1172987121 )
{
printf("a = %d\n", 101LL);
v10 = x * (2129684170 - (2129684171 - x));
v3 = (v10 | 0x7E008019) & 0x7E0A98F9 | ~v10 & 0x81340306;
v11 = ((((~(v3 ^ ((~v10 | 0xA18E0) & 0x7E0A98F9 | v10 & 0xC16400)) & 0x8333698A | (v3 ^ ((~v10 | 0xA18E0) & 0x7E0A98F9 | v10 & 0xC16400)) & 0x7CCC9675) ^ 0xFDF28D92) & 0x3C50EDC2 | ((~(v3 ^ ((~v10 | 0xA18E0) & 0x7E0A98F9 | v10 & 0xC16400)) & 0x8333698A | (v3 ^ ((~v10 | 0xA18E0) & 0x7E0A98F9 | v10 & 0xC16400)) & 0x7CCC9675) ^ 0x20D122D) & 0xC3AF123D) ^ (v10 & 0x3C50EDC2 | ~v10 & 0xC3AF123D) | ~(v10 | (~(v3 ^ ((~v10 | 0xA18E0) & 0x7E0A98F9 | v10 & 0xC16400)) & 0x8333698A | (v3 ^ ((~v10 | 0xA18E0) & 0x7E0A98F9 | v10 & 0xC16400)) & 0x7CCC9675) ^ 0xFDF28D92)) == -1;
LOBYTE(v10) = v11 & (!v11 ^ v11) & (y > 9) | (y < 10) & ~(v11 & (!v11 ^ v11));
v12 = !(!v11 ^ (y > 9) | (v11 && y <= 9));
v13 = (v12 && (y > 9 && v11 || !v11 && y < 10)) | (y > 9 && v11 || !v11 && y < 10) ^ v12;
v14 = v13 ^ v10;
v15 = v13 | v10 ^ 1;
v16 = v14 ^ 1;
v17 = 1682981360;
if ( ((v16 ^ v15) & 1) != 0 )
v17 = 329200819;
v18 = (v16 & 1) == 0;
v9 = v17;
v19 = 1682981360;
LABEL_2:
if ( !v18 )
v9 = v19;
if ( (v15 & 1) != 0 )
v9 = v17;
if ( v9 <= 639533239 )
goto LABEL_60;
}
else if ( v9 == 1682981360 )
{
v48 = (((x * (x - 1)) & 0xD219E318 | ~(x * (x - 1)) & 0x2DE61CE7) ^ 0x2DE61CE6) & 0xFFFFFFFE | (((x * (x - 1)) & 0xD219E318 | ~(x * (x - 1)) & 0x2DE61CE7) ^ 0xD219E318) & 1;
v49 = v48 & (((x * (x - 1)) & 0xD219E318 | ~(x * (x - 1)) & 0x2DE61CE7) ^ 0xD219E318) & 0xFFFFFFFE | (((x * (x - 1)) & 0xD219E318 | ~(x * (x - 1)) & 0x2DE61CE7) ^ 0xD219E318) & 0xFFFFFFFE ^ v48;
LOBYTE(v49) = (((((((~v49 & 0x236E9331 | v49 & 0xDC916CCE) ^ 0x220C9031) & 0xBE1DDCF3 | ((~v49 & 0x236E9331 | v49 & 0xDC916CCE) ^ 0x4080200C) & 0x41E2230C) ^ 0x9C18D0A3) & 0xDC18F3A7 | ((((~v49 & 0x236E9331 | v49 & 0xDC916CCE) ^ 0x220C9031) & 0xBE1DDCF3 | ((~v49 & 0x236E9331 | v49 & 0xDC916CCE) ^ 0x4080200C) & 0x41E2230C) ^ 0x1E20008) & 0x23E70C58) ^ 0x860458) & 0xCC962578 | ((((((~v49 & 0x236E9331 | v49 & 0xDC916CCE) ^ 0x220C9031) & 0xBE1DDCF3 | ((~v49 & 0x236E9331 | v49 & 0xDC916CCE) ^ 0x4080200C) & 0x41E2230C) ^ 0x9C18D0A3) & 0xDC18F3A7 | ((((~v49 & 0x236E9331 | v49 & 0xDC916CCE) ^ 0x220C9031) & 0xBE1DDCF3 | ((~v49 & 0x236E9331 | v49 & 0xDC916CCE) ^ 0x4080200C) & 0x41E2230C) ^ 0x1E20008) & 0x23E70C58) ^ 0x1008D287) & 0x3369DA87) == 0x3369DA87;
LOBYTE(v3) = y < 10;
v50 = v3;
LOBYTE(v50) = v49 ^ (y < 10);
v51 = v50 | (v49 | (y < 10)) ^ 1;
LOBYTE(v50) = !((y < 10) & (unsigned __int8)v50) ^ v50 & v49 ^ 1 | (v50 & v49 ^ 1 | !((y < 10) & (unsigned __int8)v50)) ^ 1;
v3 = v50;
LOBYTE(v50) = v51 & v50;
v52 = v51 ^ 1;
LOBYTE(v3) = v3 ^ 1;
v53 = v3 ^ v52;
LOBYTE(v3) = v50 | v52 & v3;
v9 = 639533240;
if ( (v3 & 1) != 0 )
v9 = -677075565;
v54 = v52 & v53;
if ( !v54 )
v9 = 639533240;
if ( (((unsigned __int8)v3 ^ v54) & 1) != 0 )
v9 = -677075565;
if ( v9 <= 639533239 )
goto LABEL_60;
}
else
{
v9 = 1172987121;
}
}
if ( v9 > 1909823119 )
break;
if ( v9 != 1811900722 )
{
v41 = ~(x * (-25862008 - (-122147140 - (13349652 - (109634785 - x)))));
v42 = (v41 & 0x76C5B26 | (x * (-25862008 - (-122147140 - (13349652 - (109634785 - x))))) & 0xF893A4D8) ^ 0xF893A4D8;
v43 = v41 & ~(v42 | (x * (-25862008 - (-122147140 - (13349652 - (109634785 - x))))) & 1);
v44 = (~(v43 | v41 ^ ~(v42 | (x * (-25862008 - (-122147140 - (13349652 - (109634785 - x))))) & 1)) & 0x49A72E9C | (v43 | v41 ^ ~(v42 | (x * (-25862008 - (-122147140 - (13349652 - (109634785 - x))))) & 1)) & 0xB658D163) == 0xB658D163;
v45 = (!v44 && y > 9) | !v44 ^ (y > 9);
v46 = (y > 9 || v44) ^ (!v44 || y < 10) | ((~(v43 | v41 ^ ~(v42 | (x
* (-25862008
- (-122147140
- (13349652
- (109634785
- x))))) & 1)) & 0x49A72E9C | (v43 | v41 ^ ~(v42 | (x * (-25862008 - (-122147140 - (13349652 - (109634785 - x))))) & 1)) & 0xB658D163) == 0xB658D163
&& y >= 10
&& y <= 9
&& !v44);
v47 = v46 ^ v45;
v15 = v45 | v46 ^ 1;
v17 = -2093292154;
if ( ((v15 ^ v47 ^ 1) & 1) != 0 )
v17 = 82960845;
v18 = v47 == 1;
v9 = v17;
v19 = -2093292154;
goto LABEL_2;
}
printf("a = %d\n", 101LL);
v79 = x * (x - 1);
v3 = (v79 | 0x5234B34C) & 0x89E7121A;
v80 = (v3 | ~v79 & 0x24084CA1) ^ (~(v79 & (v79 ^ 0xADCB4CB3)) & 0x89E7121A | v79 & (v79 ^ 0xADCB4CB3) & 0x7618EDE5) | ~(~(v79 & (v79 ^ 0xADCB4CB3)) | v79 | 0x5234B34C);
v81 = ~(~v80 & 0x5234B34D | v80 & 0xADCB4CB2);
v82 = (~v79 & 0x6A711728 | v79 & 0x958EE8D7) ^ 0x958EE8D7;
LOBYTE(v82) = (~(v82 & v81 | v81 ^ v82) & 0x61B45B5B | (v82 & v81 | v81 ^ v82) & 0x9E4BA4A4) == 0x9E4BA4A4;
v83 = v82 ^ (y < 10);
LOBYTE(v81) = !((y < 10 && !(_BYTE)v82) | (unsigned __int8)v82 & (y > 9));
v84 = v83 ^ (v81 ^ (v82 | (y < 10)) | (v82 | (y < 10) | v81) ^ 1);
v9 = 1684211123;
if ( (v84 & 1) != 0 )
v9 = -123056903;
v85 = v84 & v83;
if ( !v85 )
v9 = -123056903;
v40 = ((v84 ^ v85) & 1) == 0;
v39 = 1684211123;
LABEL_69:
if ( v40 )
v9 = v39;
if ( v9 <= 639533239 )
goto LABEL_60;
}
if ( v9 != 1909823120 )
break;
v55 = x * (x - 1);
v56 = ((v55 & (v55 ^ 0xFFFFFFFE) & ((~v55 & 0xE7D679E8 | v55 & 0x18298616) ^ 0x18298616) | (~v55 & 0xE7D679E8 | v55 & 0x18298616) ^ 0x18298616 ^ v55 & (v55 ^ 0xFFFFFFFE)) & 0x1EEEA3BC | ~(v55 & (v55 ^ 0xFFFFFFFE) & ((~v55 & 0xE7D679E8 | v55 & 0x18298616) ^ 0x18298616) | (~v55 & 0xE7D679E8 | v55 & 0x18298616) ^ 0x18298616 ^ v55 & (v55 ^ 0xFFFFFFFE)) & 0xE1115C43) ^ (v55 & 0x1EEEA3BC | ~v55 & 0xE1115C43);
v57 = v56 | ~(v55 | v55 & (v55 ^ 0xFFFFFFFE) & ((~v55 & 0xE7D679E8 | v55 & 0x18298616) ^ 0x18298616) | (~v55 & 0xE7D679E8 | v55 & 0x18298616) ^ 0x18298616 ^ v55 & (v55 ^ 0xFFFFFFFE));
LOBYTE(v56) = y > 9;
v58 = v56;
LOBYTE(v58) = !((v57 != -1 && y > 9) | (v57 != -1) ^ (y > 9));
v59 = v57 != -1 && y < 10 || y > 9 && v57 == -1;
v60 = v58 ^ ((v59 && !v59) ^ !v59 | (!v59 && v59 && !v59));
v3 = v58;
v61 = v59 ^ v58 | (v58 | v59) ^ 1;
v62 = 911225516;
if ( ((v61 ^ v60) & 1) == 0 )
v62 = 1996163170;
v18 = (v61 & 1) == 0;
v9 = 911225516;
if ( !v18 )
v9 = v62;
LABEL_85:
if ( (v60 & 1) != 0 )
v9 = v62;
if ( v9 <= 639533239 )
goto LABEL_60;
}
if ( v9 == 1996163170 )
{
v63 = ~(~(~((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x821201B2 | ((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x7DEDFE4D) & 0xFFFFFFFE | (~((x * (x - 1)) & ((unsigned __int8)(x * (x - 1)) ^ 0x4D) & ~((_BYTE)x * ((_BYTE)x - 1)) & 0x4D | ~((_BYTE)x * ((_BYTE)x - 1)) & 0x4D ^ (x * (x - 1)) & ((unsigned __int8)(x * (x - 1)) ^ 0x4D)) & 0xB2 | ((x * (x - 1)) & ((unsigned __int8)(x * (x - 1)) ^ 0x4D) & ~((_BYTE)x * ((_BYTE)x - 1)) & 0x4D | ~((_BYTE)x * ((_BYTE)x - 1)) & 0x4D ^ (x * (x - 1)) & ((unsigned __int8)(x * (x - 1)) ^ 0x4D)) & 0x4D) & 1);
v64 = (~(~((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x821201B2 | ((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x7DEDFE4D) | 1) & 0x994883D1 | (~((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x821201B2 | ((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x7DEDFE4D) & 0x66B77C2E;
v65 = v64 ^ (v63 & 0x994883D1 | (~(~((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x821201B2 | ((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x7DEDFE4D) & 0xFFFFFFFE | (~((x * (x - 1)) & ((unsigned __int8)(x * (x - 1)) ^ 0x4D) & ~((_BYTE)x * ((_BYTE)x - 1)) & 0x4D | ~((_BYTE)x * ((_BYTE)x - 1)) & 0x4D ^ (x * (x - 1)) & ((unsigned __int8)(x * (x - 1)) ^ 0x4D)) & 0xB2 | ((x * (x - 1)) & ((unsigned __int8)(x * (x - 1)) ^ 0x4D) & ~((_BYTE)x * ((_BYTE)x - 1)) & 0x4D | ~((_BYTE)x * ((_BYTE)x - 1)) & 0x4D ^ (x * (x - 1)) & ((unsigned __int8)(x * (x - 1)) ^ 0x4D)) & 0x4D) & 1) & 0x66B77C2E);
v66 = v65 | ~(v63 | ~(~((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x821201B2 | ((x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D) & ~(x * (x - 1)) & 0x7DEDFE4D | ~(x * (x - 1)) & 0x7DEDFE4D ^ (x * (x - 1)) & ((x * (x - 1)) ^ 0x7DEDFE4D)) & 0x7DEDFE4D) | 1);
v67 = (v66 & 0x9CF5F241 | ~v66 & 0x630A0DBE) ^ (~(v66 & ~v66) & 0x9CF5F241 | v66 & ~v66 & 0x630A0DBE) | ~(~(v66 & ~v66) | v66);
v68 = ~v67;
v69 = (~v67 & 0xD1A78275 | v67 & 0x2E587D8A) ^ 0xD1A78275;
v70 = (v69 & (v69 ^ v68)) != 0;
LOBYTE(v65) = (v69 & (v69 ^ v68)) == 0;
LOBYTE(v69) = v65 ^ (y < 10) | !((unsigned __int8)v65 | (y < 10));
v71 = v69;
LOBYTE(v71) = v69 ^ 1;
v72 = ((v65 | (y > 9)) ^ 1) & (y >= 10 && !v70) | (y >= 10 && !v70) ^ (v65 | (y > 9)) ^ 1;
v73 = v71;
LOBYTE(v73) = v69 & (v69 ^ 1);
v3 = v73;
LOBYTE(v3) = v69 ^ 1 ^ v73 | (v69 | v73 ^ 1) ^ 1;
LOBYTE(v68) = v72 & v72 & (v72 ^ 1) | v72 ^ v72 & (v72 ^ 1);
v74 = v68 & (v3 ^ 1) | v3 & (v68 ^ 1);
v75 = v72 ^ v69 ^ 1 | (v69 ^ 1 | v72) ^ 1;
v76 = ~(v75 ^ v74);
v18 = (v75 & 1) == 0;
v9 = 2103454096;
if ( !v18 )
v9 = 92551506;
if ( (v74 & 1) == 0 )
v9 = 92551506;
v77 = (v76 & 1) == 0;
v78 = 2103454096;
LABEL_104:
if ( !v77 )
v9 = v78;
if ( v9 > 639533239 )
goto LABEL_11;
}
else
{
v20 = x * (x - 1);
v21 = ((~(~((~v20 & 0x66104284 | v20 & 0x1288C08) ^ 0x1288C08 | v20 & 0x98C73173) & 0x98C73172 | ((~v20 & 0x66104284 | v20 & 0x1288C08) ^ 0x1288C08 | v20 & 0x98C73173) & 0x6738CE8D) & 0xBA7EB345 | (~((~v20 & 0x66104284 | v20 & 0x1288C08) ^ 0x1288C08 | v20 & 0x98C73173) & 0x98C73172 | ((~v20 & 0x66104284 | v20 & 0x1288C08) ^ 0x1288C08 | v20 & 0x98C73173) & 0x6738CE8D) & 0x45814CBA) ^ 0xBA7EB345) & 0x73781B9D;
v22 = v20 | (~(~((~v20 & 0x66104284 | v20 & 0x1288C08) ^ 0x1288C08 | v20 & 0x98C73173) & 0x98C73172 | ((~v20 & 0x66104284 | v20 & 0x1288C08) ^ 0x1288C08 | v20 & 0x98C73173) & 0x6738CE8D) & 0xBA7EB345 | (~((~v20 & 0x66104284 | v20 & 0x1288C08) ^ 0x1288C08 | v20 & 0x98C73173) & 0x98C73172 | ((~v20 & 0x66104284 | v20 & 0x1288C08) ^ 0x1288C08 | v20 & 0x98C73173) & 0x6738CE8D) & 0x45814CBA) ^ 0xBA7EB345;
v20 &= 0x73781B9Du;
LOBYTE(v20) = ((v21 | ((~(~((~(x * (x - 1)) & 0x66104284 | (x * (x - 1)) & 0x1288C08) ^ 0x1288C08 | (x * (x - 1)) & 0x98C73173) & 0x98C73172 | ((~(x * (x - 1)) & 0x66104284 | (x * (x - 1)) & 0x1288C08) ^ 0x1288C08 | (x * (x - 1)) & 0x98C73173) & 0x6738CE8D) & 0xBA7EB345 | (~((~(x * (x - 1)) & 0x66104284 | (x * (x - 1)) & 0x1288C08) ^ 0x1288C08 | (x * (x - 1)) & 0x98C73173) & 0x98C73172 | ((~(x * (x - 1)) & 0x66104284 | (x * (x - 1)) & 0x1288C08) ^ 0x1288C08 | (x * (x - 1)) & 0x98C73173) & 0x6738CE8D) & 0x45814CBA) ^ 0x4814422) & 0x8C87E462) ^ (v20 | ~(x * (x - 1)) & 0x8C87E462) | ~v22) == -1;
LOBYTE(v22) = !(_BYTE)v20;
LOBYTE(v20) = (y > 9 && !(_BYTE)v20) | (y < 10) & v20;
v23 = v20;
LOBYTE(v23) = v20 & ((y > 9) ^ v20);
v24 = v22 ^ (y > 9);
v3 = v23;
v25 = (v23 ^ 1 ^ (v23 ^ 1) & v23 ^ 1 | (v23 ^ 1 | (v23 ^ 1) & v23 ^ 1) ^ 1) ^ (v24 & (v24 ^ 1) & v24 | v24 ^ (v24 ^ 1) & v24);
LOBYTE(v3) = (v24 ^ 1) & (v23 ^ 1) | v24 ^ 1 ^ v23 ^ 1;
v26 = -588951985;
if ( (((unsigned __int8)v3 ^ v25) & 1) != 0 )
v26 = 92551506;
v9 = -588951985;
if ( (v3 & 1) != 0 )
v9 = v26;
if ( (v25 & 1) == 0 )
v9 = v26;
}
}
}
}