-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path5CF5.c
54 lines (47 loc) · 1.16 KB
/
5CF5.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
/*
* File - sub_5CF5.c Created 09.03.2019 Last Modified 17.06.2020
*/
#include "stdio.h"
#include "cgen.h"
/*********************************************************
* sub_5CF5 OK+ Used in: sub_406, sub_17E0
*
* Compiler generates identical code, however, location
* of branches associated with case constants is different
* from original. This does not affect the function.
*********************************************************/
void sub_5CF5(register struct bbb * sb, int p2) {
#ifdef DEBUG
printf("\tsub_5CF5(%x, %d)\n", sb, p2);
#endif
switch(sb->b_c13) {
case 1:
if(sub_61AA(sb, p2) == 0) {
array_AE13[lvlidx] -= sb->b_size;
if((sb->b_i11 = array_AE13[lvlidx]) < 0xFF80) {
if(sb->b_size >= 4) {
warning("%s: large offset", sb->b_name);
}
}
}
break;
case 3:
case 4:
sub_C57(sb);
break;
case 5:
sb->b_i11 = array_AE97[lvlidx];
array_AE97[lvlidx] += sb->b_size;
if(sb->b_size == 1) {
switch(sb->b_type->b_class) {
case SDECL:
case UDECL:
break;
default:
array_AE97[lvlidx]++;
}
}
if((char)sub_61AA(sb, p2) == 0) sb->b_c13 = 1;
}
}
/* End of file sub_5CF5.c */