-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path47B2.c
140 lines (132 loc) · 4.5 KB
/
47B2.c
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
/*
* File - sub_47B2.c Created 09.03.2019 Last Modified 30.05.2020
*/
#include "stdio.h"
#include "cgen.h"
#define REG_A 1
#define REG_L 2
#define REG_F 3
/*********************************************************
* sub_47B2 OK+ Used in: sub_1F4B
*********************************************************/
char sub_47B2(register struct aaa * sa, int p2) {
long l1;
#ifdef DEBUG
printf("\tsub_47B2(%x, %d)\n", sa, p2);
#endif
switch (p2-1) { /* m1: */
case MUL_U - 1:
sa = sa->a_l15.wi[1]; /* m2: loc_47DE */
case T_SCOLON - 1:
if(sa->a_l15.l >= 1) { /* m3: loc_47E7 */
if(sa->a_l15.l < 3) return 1;
}
return 0;
case RPAREN - 1:
sa = sa->a_l15.wi[0]; /* m5: loc_4821 */
case MOD - 1:
if(nodesize(sa) == 2) { /* m6: loc_482A */
m7: if((char)sub_3968(sa) == 0) return 1;
}
return 0;
case BAND - 1:
if(sub_14F3(sa) != REG_F) goto m12; /* m9: loc_4846 */
return 0;
case MUL - 1:
sa = sa->a_l15.wi[0]; /* m11: loc_4856 */
case DOLLAR_U - 1:
m12: if(nodesize(sa) == 4) return 0; /* m12: loc_485F */
goto m7;
case SCOLON - 1:
sa = sa->a_l15.wi[0]; /* m13: loc_486A */
case DOLLAR-1:
return sub_3968(sa); /* m14: loc_4873 */
case ADD - 1:
if(sa->a_l15.bc[0] == 8) return 1; /* m16: loc_487C */
if(sa->a_l15.bc[0] == 9) return 1;
return 0;
case INCR - 1:
l1 = sub_2C5E(sa, sa->a_l15.l); /* m17: loc_4887 */
if(l1 < (long)0xffffff80) return 0;
if(l1 < 0x7d) return 1;
return 0;
case COLON_U - 1:
if(sa->a_l15.l < 1) return 0; /* m19: loc_48E0 */
if(sa->a_l15.l < 5) return 1;
return 0;
case COLON_S - 1:
l1 = sa->a_l15.l; /* m20: loc_4910 */
if(sub_14F3(sa) != REG_L) goto m21;
if((l1 & 1<<(nodesize(sa)<<3)) == 0) goto m21;
l1 |= ((-1) - (unsigned)((int)(1<<(nodesize(sa)<<3)) - 1));
m21: if(((uchar)l1 & 0x80) == 0) return 0;
if(l1 >= (long)0xFFFFFFFC) return 1;
return 0;
case LPAREN - 1:
sa = sa->a_l15.wi[1]; /* m22: loc_49AA */
case HASHSIGN - 1:
if(nodesize(sa) != 1) return 0; /* m23: loc_49B3 */
if((char)sub_3968(sa) != 0) return 0;
return 1;
case MINUS_U - 1:
if(nodesize(sa) != 4) return 0; /* m24: loc_49CD */
m25: if(sub_14F3(sa) != REG_F) goto m27;
return 0;
case COMMA - 1:
if(nodesize(sa) == 2) goto m25; /* m26: loc_49EA */
return 0;
m27: if(sub_14F3(sa->a_l15.wi[0]) == REG_F) return 0; /* loc_49FB */
if(sub_14F3(sa) != REG_L) {
m28: if(sub_14F3(sa->a_l15.wi[0]) != REG_L) return 0; /* loc_4A15 */
}
return 1;
case LT - 1:
if(sa->a_l15.l == 0) return 1; /* m29: loc_4A29 */
return 0;
case CONV - 1: /* m31: loc_4A3F */
if(nodesize(sa) == 4) {
m32: if(sub_14F3(sa) == REG_A) {
if(sub_14F3(sa->a_l15.wi[0]) == REG_A) return 1;
}
}
return 0;
case SUB - 1:
if(nodesize(sa) == 2) goto m32; /* m34: loc_4A5F */
return 0;
case PLUS_U - 1:
if(1 == sa->a_l15.l) return 1; /* m36: loc_4A7B */
return 0;
case NOT - 1:
return (uchar)sub_46F7(sa->a_l15.wi[1]->a_l15.l); /* m38: loc_4A9C */
case NEQL - 1:
return (uchar)sub_46F7(-1 - sa->a_l15.wi[1]->a_l15.l); /* m40: loc_4AB7 */
case COLON - 1:
if(nodesize(sa) == 4) goto m45; /* m41: loc_4ADB */
return 0;
case DECR - 1:
if(nodesize(sa) == 2) goto m45; /* m43: loc_4AEC */
return 0;
case GADDR - 1:
if(nodesize(sa) != 1) return 0; /* m44: loc_4AF7 */
m45: if(sub_14F3(sa) != REG_A) {
if(sub_14F3(sa) != REG_L) return 0;
}
if(sub_14F3(sa->a_l15.wi[0]) != REG_F) return 0; /* m46: loc_4B19 */
return 1;
case DIV - 1:
if(nodesize(sa->a_l15.wi[0]) == 1) goto m51; /* m47: loc_4B2A */
return 0;
case DOT_DOT - 1:
if(nodesize(sa->a_l15.wi[0]) == 2) goto m51; /* m49: loc_4B40 */
return 0;
case DOT - 1:
if(nodesize(sa->a_l15.wi[0]) != 4) return 0; /* m50: loc_4B50 */
m51: if(sub_14F3(sa) != REG_F) return 0;
if(sub_14F3(sa->a_l15.wi[0]) == REG_A) return 1;
goto m28;
case LAND - 1:
if(sub_14F3(sa) == REG_F) return 1; /* m52: loc_4B7D */
}
return 0;
}
/* End of file sub_47B2.c */