1extern int __VERIFIER_nondet_int(void);
2
3
4
5#line 2 "libacc.c"
6struct JoinPoint {
7 void **(*fp)(struct JoinPoint * ) ;
8 void **args ;
9 int argsCount ;
10 char const **argsType ;
11 void *(*arg)(int , struct JoinPoint * ) ;
12 char const *(*argType)(int , struct JoinPoint * ) ;
13 void **retValue ;
14 char const *retType ;
15 char const *funcName ;
16 char const *targetName ;
17 char const *fileName ;
18 char const *kind ;
19 void *excep_return ;
20};
21#line 18 "libacc.c"
22struct __UTAC__CFLOW_FUNC {
23 int (*func)(int , int ) ;
24 int val ;
25 struct __UTAC__CFLOW_FUNC *next ;
26};
27#line 18 "libacc.c"
28struct __UTAC__EXCEPTION {
29 void *jumpbuf ;
30 unsigned long long prtValue ;
31 int pops ;
32 struct __UTAC__CFLOW_FUNC *cflowfuncs ;
33};
34#line 211 "/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h"
35typedef unsigned long size_t;
36#line 76 "libacc.c"
37struct __ACC__ERR {
38 void *v ;
39 struct __ACC__ERR *next ;
40};
41#line 1 "ClientLib.o"
42#pragma merger(0,"ClientLib.i","")
43#line 4 "ClientLib.h"
44int initClient(void) ;
45#line 6
46char *getClientName(int handle ) ;
47#line 8
48void setClientName(int handle , char *value ) ;
49#line 10
50int getClientOutbuffer(int handle ) ;
51#line 12
52void setClientOutbuffer(int handle , int value ) ;
53#line 14
54int getClientAddressBookSize(int handle ) ;
55#line 16
56void setClientAddressBookSize(int handle , int value ) ;
57#line 18
58int createClientAddressBookEntry(int handle ) ;
59#line 20
60int getClientAddressBookAlias(int handle , int index ) ;
61#line 22
62void setClientAddressBookAlias(int handle , int index , int value ) ;
63#line 24
64int getClientAddressBookAddress(int handle , int index ) ;
65#line 26
66void setClientAddressBookAddress(int handle , int index , int value ) ;
67#line 29
68int getClientAutoResponse(int handle ) ;
69#line 31
70void setClientAutoResponse(int handle , int value ) ;
71#line 33
72int getClientPrivateKey(int handle ) ;
73#line 35
74void setClientPrivateKey(int handle , int value ) ;
75#line 37
76int getClientKeyringSize(int handle ) ;
77#line 39
78int createClientKeyringEntry(int handle ) ;
79#line 41
80int getClientKeyringUser(int handle , int index ) ;
81#line 43
82void setClientKeyringUser(int handle , int index , int value ) ;
83#line 45
84int getClientKeyringPublicKey(int handle , int index ) ;
85#line 47
86void setClientKeyringPublicKey(int handle , int index , int value ) ;
87#line 49
88int getClientForwardReceiver(int handle ) ;
89#line 51
90void setClientForwardReceiver(int handle , int value ) ;
91#line 53
92int getClientId(int handle ) ;
93#line 55
94void setClientId(int handle , int value ) ;
95#line 57
96int findPublicKey(int handle , int userid ) ;
97#line 59
98int findClientAddressBookAlias(int handle , int userid ) ;
99#line 5 "ClientLib.c"
100int __ste_Client_counter = 0;
101#line 7 "ClientLib.c"
102int initClient(void)
103{ int retValue_acc ;
104
105 {
106#line 12 "ClientLib.c"
107 if (__ste_Client_counter < 3) {
108#line 684
109 __ste_Client_counter = __ste_Client_counter + 1;
110#line 684
111 retValue_acc = __ste_Client_counter;
112#line 686
113 return (retValue_acc);
114 } else {
115#line 692 "ClientLib.c"
116 retValue_acc = -1;
117#line 694
118 return (retValue_acc);
119 }
120#line 701 "ClientLib.c"
121 return (retValue_acc);
122}
123}
124#line 15 "ClientLib.c"
125char *__ste_client_name0 = (char *)0;
126#line 17 "ClientLib.c"
127char *__ste_client_name1 = (char *)0;
128#line 19 "ClientLib.c"
129char *__ste_client_name2 = (char *)0;
130#line 22 "ClientLib.c"
131char *getClientName(int handle )
132{ char *retValue_acc ;
133 void *__cil_tmp3 ;
134
135 {
136#line 31 "ClientLib.c"
137 if (handle == 1) {
138#line 732
139 retValue_acc = __ste_client_name0;
140#line 734
141 return (retValue_acc);
142 } else {
143#line 736
144 if (handle == 2) {
145#line 741
146 retValue_acc = __ste_client_name1;
147#line 743
148 return (retValue_acc);
149 } else {
150#line 745
151 if (handle == 3) {
152#line 750
153 retValue_acc = __ste_client_name2;
154#line 752
155 return (retValue_acc);
156 } else {
157#line 758 "ClientLib.c"
158 __cil_tmp3 = (void *)0;
159#line 758
160 retValue_acc = (char *)__cil_tmp3;
161#line 760
162 return (retValue_acc);
163 }
164 }
165 }
166#line 767 "ClientLib.c"
167 return (retValue_acc);
168}
169}
170#line 34 "ClientLib.c"
171void setClientName(int handle , char *value )
172{
173
174 {
175#line 42
176 if (handle == 1) {
177#line 36
178 __ste_client_name0 = value;
179 } else {
180#line 37
181 if (handle == 2) {
182#line 38
183 __ste_client_name1 = value;
184 } else {
185#line 39
186 if (handle == 3) {
187#line 40
188 __ste_client_name2 = value;
189 } else {
190
191 }
192 }
193 }
194#line 802 "ClientLib.c"
195 return;
196}
197}
198#line 44 "ClientLib.c"
199int __ste_client_outbuffer0 = 0;
200#line 46 "ClientLib.c"
201int __ste_client_outbuffer1 = 0;
202#line 48 "ClientLib.c"
203int __ste_client_outbuffer2 = 0;
204#line 50 "ClientLib.c"
205int __ste_client_outbuffer3 = 0;
206#line 53 "ClientLib.c"
207int getClientOutbuffer(int handle )
208{ int retValue_acc ;
209
210 {
211#line 62 "ClientLib.c"
212 if (handle == 1) {
213#line 831
214 retValue_acc = __ste_client_outbuffer0;
215#line 833
216 return (retValue_acc);
217 } else {
218#line 835
219 if (handle == 2) {
220#line 840
221 retValue_acc = __ste_client_outbuffer1;
222#line 842
223 return (retValue_acc);
224 } else {
225#line 844
226 if (handle == 3) {
227#line 849
228 retValue_acc = __ste_client_outbuffer2;
229#line 851
230 return (retValue_acc);
231 } else {
232#line 857 "ClientLib.c"
233 retValue_acc = 0;
234#line 859
235 return (retValue_acc);
236 }
237 }
238 }
239#line 866 "ClientLib.c"
240 return (retValue_acc);
241}
242}
243#line 65 "ClientLib.c"
244void setClientOutbuffer(int handle , int value )
245{
246
247 {
248#line 73
249 if (handle == 1) {
250#line 67
251 __ste_client_outbuffer0 = value;
252 } else {
253#line 68
254 if (handle == 2) {
255#line 69
256 __ste_client_outbuffer1 = value;
257 } else {
258#line 70
259 if (handle == 3) {
260#line 71
261 __ste_client_outbuffer2 = value;
262 } else {
263
264 }
265 }
266 }
267#line 901 "ClientLib.c"
268 return;
269}
270}
271#line 77 "ClientLib.c"
272int __ste_ClientAddressBook_size0 = 0;
273#line 79 "ClientLib.c"
274int __ste_ClientAddressBook_size1 = 0;
275#line 81 "ClientLib.c"
276int __ste_ClientAddressBook_size2 = 0;
277#line 84 "ClientLib.c"
278int getClientAddressBookSize(int handle )
279{ int retValue_acc ;
280
281 {
282#line 93 "ClientLib.c"
283 if (handle == 1) {
284#line 928
285 retValue_acc = __ste_ClientAddressBook_size0;
286#line 930
287 return (retValue_acc);
288 } else {
289#line 932
290 if (handle == 2) {
291#line 937
292 retValue_acc = __ste_ClientAddressBook_size1;
293#line 939
294 return (retValue_acc);
295 } else {
296#line 941
297 if (handle == 3) {
298#line 946
299 retValue_acc = __ste_ClientAddressBook_size2;
300#line 948
301 return (retValue_acc);
302 } else {
303#line 954 "ClientLib.c"
304 retValue_acc = 0;
305#line 956
306 return (retValue_acc);
307 }
308 }
309 }
310#line 963 "ClientLib.c"
311 return (retValue_acc);
312}
313}
314#line 96 "ClientLib.c"
315void setClientAddressBookSize(int handle , int value )
316{
317
318 {
319#line 104
320 if (handle == 1) {
321#line 98
322 __ste_ClientAddressBook_size0 = value;
323 } else {
324#line 99
325 if (handle == 2) {
326#line 100
327 __ste_ClientAddressBook_size1 = value;
328 } else {
329#line 101
330 if (handle == 3) {
331#line 102
332 __ste_ClientAddressBook_size2 = value;
333 } else {
334
335 }
336 }
337 }
338#line 998 "ClientLib.c"
339 return;
340}
341}
342#line 106 "ClientLib.c"
343int createClientAddressBookEntry(int handle )
344{ int retValue_acc ;
345 int size ;
346 int tmp ;
347 int __cil_tmp5 ;
348
349 {
350 {
351#line 107
352 tmp = getClientAddressBookSize(handle);
353#line 107
354 size = tmp;
355 }
356#line 108 "ClientLib.c"
357 if (size < 3) {
358 {
359#line 109 "ClientLib.c"
360 __cil_tmp5 = size + 1;
361#line 109
362 setClientAddressBookSize(handle, __cil_tmp5);
363#line 1025 "ClientLib.c"
364 retValue_acc = size + 1;
365 }
366#line 1027
367 return (retValue_acc);
368 } else {
369#line 1031 "ClientLib.c"
370 retValue_acc = -1;
371#line 1033
372 return (retValue_acc);
373 }
374#line 1040 "ClientLib.c"
375 return (retValue_acc);
376}
377}
378#line 115 "ClientLib.c"
379int __ste_Client_AddressBook0_Alias0 = 0;
380#line 117 "ClientLib.c"
381int __ste_Client_AddressBook0_Alias1 = 0;
382#line 119 "ClientLib.c"
383int __ste_Client_AddressBook0_Alias2 = 0;
384#line 121 "ClientLib.c"
385int __ste_Client_AddressBook1_Alias0 = 0;
386#line 123 "ClientLib.c"
387int __ste_Client_AddressBook1_Alias1 = 0;
388#line 125 "ClientLib.c"
389int __ste_Client_AddressBook1_Alias2 = 0;
390#line 127 "ClientLib.c"
391int __ste_Client_AddressBook2_Alias0 = 0;
392#line 129 "ClientLib.c"
393int __ste_Client_AddressBook2_Alias1 = 0;
394#line 131 "ClientLib.c"
395int __ste_Client_AddressBook2_Alias2 = 0;
396#line 134 "ClientLib.c"
397int getClientAddressBookAlias(int handle , int index )
398{ int retValue_acc ;
399
400 {
401#line 167
402 if (handle == 1) {
403#line 144 "ClientLib.c"
404 if (index == 0) {
405#line 1086
406 retValue_acc = __ste_Client_AddressBook0_Alias0;
407#line 1088
408 return (retValue_acc);
409 } else {
410#line 1090
411 if (index == 1) {
412#line 1095
413 retValue_acc = __ste_Client_AddressBook0_Alias1;
414#line 1097
415 return (retValue_acc);
416 } else {
417#line 1099
418 if (index == 2) {
419#line 1104
420 retValue_acc = __ste_Client_AddressBook0_Alias2;
421#line 1106
422 return (retValue_acc);
423 } else {
424#line 1112
425 retValue_acc = 0;
426#line 1114
427 return (retValue_acc);
428 }
429 }
430 }
431 } else {
432#line 1116 "ClientLib.c"
433 if (handle == 2) {
434#line 154 "ClientLib.c"
435 if (index == 0) {
436#line 1124
437 retValue_acc = __ste_Client_AddressBook1_Alias0;
438#line 1126
439 return (retValue_acc);
440 } else {
441#line 1128
442 if (index == 1) {
443#line 1133
444 retValue_acc = __ste_Client_AddressBook1_Alias1;
445#line 1135
446 return (retValue_acc);
447 } else {
448#line 1137
449 if (index == 2) {
450#line 1142
451 retValue_acc = __ste_Client_AddressBook1_Alias2;
452#line 1144
453 return (retValue_acc);
454 } else {
455#line 1150
456 retValue_acc = 0;
457#line 1152
458 return (retValue_acc);
459 }
460 }
461 }
462 } else {
463#line 1154 "ClientLib.c"
464 if (handle == 3) {
465#line 164 "ClientLib.c"
466 if (index == 0) {
467#line 1162
468 retValue_acc = __ste_Client_AddressBook2_Alias0;
469#line 1164
470 return (retValue_acc);
471 } else {
472#line 1166
473 if (index == 1) {
474#line 1171
475 retValue_acc = __ste_Client_AddressBook2_Alias1;
476#line 1173
477 return (retValue_acc);
478 } else {
479#line 1175
480 if (index == 2) {
481#line 1180
482 retValue_acc = __ste_Client_AddressBook2_Alias2;
483#line 1182
484 return (retValue_acc);
485 } else {
486#line 1188
487 retValue_acc = 0;
488#line 1190
489 return (retValue_acc);
490 }
491 }
492 }
493 } else {
494#line 1196 "ClientLib.c"
495 retValue_acc = 0;
496#line 1198
497 return (retValue_acc);
498 }
499 }
500 }
501#line 1205 "ClientLib.c"
502 return (retValue_acc);
503}
504}
505#line 171 "ClientLib.c"
506int findClientAddressBookAlias(int handle , int userid )
507{ int retValue_acc ;
508
509 {
510#line 204
511 if (handle == 1) {
512#line 181 "ClientLib.c"
513 if (userid == __ste_Client_AddressBook0_Alias0) {
514#line 1233
515 retValue_acc = 0;
516#line 1235
517 return (retValue_acc);
518 } else {
519#line 1237
520 if (userid == __ste_Client_AddressBook0_Alias1) {
521#line 1242
522 retValue_acc = 1;
523#line 1244
524 return (retValue_acc);
525 } else {
526#line 1246
527 if (userid == __ste_Client_AddressBook0_Alias2) {
528#line 1251
529 retValue_acc = 2;
530#line 1253
531 return (retValue_acc);
532 } else {
533#line 1259
534 retValue_acc = -1;
535#line 1261
536 return (retValue_acc);
537 }
538 }
539 }
540 } else {
541#line 1263 "ClientLib.c"
542 if (handle == 2) {
543#line 191 "ClientLib.c"
544 if (userid == __ste_Client_AddressBook1_Alias0) {
545#line 1271
546 retValue_acc = 0;
547#line 1273
548 return (retValue_acc);
549 } else {
550#line 1275
551 if (userid == __ste_Client_AddressBook1_Alias1) {
552#line 1280
553 retValue_acc = 1;
554#line 1282
555 return (retValue_acc);
556 } else {
557#line 1284
558 if (userid == __ste_Client_AddressBook1_Alias2) {
559#line 1289
560 retValue_acc = 2;
561#line 1291
562 return (retValue_acc);
563 } else {
564#line 1297
565 retValue_acc = -1;
566#line 1299
567 return (retValue_acc);
568 }
569 }
570 }
571 } else {
572#line 1301 "ClientLib.c"
573 if (handle == 3) {
574#line 201 "ClientLib.c"
575 if (userid == __ste_Client_AddressBook2_Alias0) {
576#line 1309
577 retValue_acc = 0;
578#line 1311
579 return (retValue_acc);
580 } else {
581#line 1313
582 if (userid == __ste_Client_AddressBook2_Alias1) {
583#line 1318
584 retValue_acc = 1;
585#line 1320
586 return (retValue_acc);
587 } else {
588#line 1322
589 if (userid == __ste_Client_AddressBook2_Alias2) {
590#line 1327
591 retValue_acc = 2;
592#line 1329
593 return (retValue_acc);
594 } else {
595#line 1335
596 retValue_acc = -1;
597#line 1337
598 return (retValue_acc);
599 }
600 }
601 }
602 } else {
603#line 1343 "ClientLib.c"
604 retValue_acc = -1;
605#line 1345
606 return (retValue_acc);
607 }
608 }
609 }
610#line 1352 "ClientLib.c"
611 return (retValue_acc);
612}
613}
614#line 208 "ClientLib.c"
615void setClientAddressBookAlias(int handle , int index , int value )
616{
617
618 {
619#line 234
620 if (handle == 1) {
621#line 217
622 if (index == 0) {
623#line 211
624 __ste_Client_AddressBook0_Alias0 = value;
625 } else {
626#line 212
627 if (index == 1) {
628#line 213
629 __ste_Client_AddressBook0_Alias1 = value;
630 } else {
631#line 214
632 if (index == 2) {
633#line 215
634 __ste_Client_AddressBook0_Alias2 = value;
635 } else {
636
637 }
638 }
639 }
640 } else {
641#line 216
642 if (handle == 2) {
643#line 225
644 if (index == 0) {
645#line 219
646 __ste_Client_AddressBook1_Alias0 = value;
647 } else {
648#line 220
649 if (index == 1) {
650#line 221
651 __ste_Client_AddressBook1_Alias1 = value;
652 } else {
653#line 222
654 if (index == 2) {
655#line 223
656 __ste_Client_AddressBook1_Alias2 = value;
657 } else {
658
659 }
660 }
661 }
662 } else {
663#line 224
664 if (handle == 3) {
665#line 233
666 if (index == 0) {
667#line 227
668 __ste_Client_AddressBook2_Alias0 = value;
669 } else {
670#line 228
671 if (index == 1) {
672#line 229
673 __ste_Client_AddressBook2_Alias1 = value;
674 } else {
675#line 230
676 if (index == 2) {
677#line 231
678 __ste_Client_AddressBook2_Alias2 = value;
679 } else {
680
681 }
682 }
683 }
684 } else {
685
686 }
687 }
688 }
689#line 1420 "ClientLib.c"
690 return;
691}
692}
693#line 236 "ClientLib.c"
694int __ste_Client_AddressBook0_Address0 = 0;
695#line 238 "ClientLib.c"
696int __ste_Client_AddressBook0_Address1 = 0;
697#line 240 "ClientLib.c"
698int __ste_Client_AddressBook0_Address2 = 0;
699#line 242 "ClientLib.c"
700int __ste_Client_AddressBook1_Address0 = 0;
701#line 244 "ClientLib.c"
702int __ste_Client_AddressBook1_Address1 = 0;
703#line 246 "ClientLib.c"
704int __ste_Client_AddressBook1_Address2 = 0;
705#line 248 "ClientLib.c"
706int __ste_Client_AddressBook2_Address0 = 0;
707#line 250 "ClientLib.c"
708int __ste_Client_AddressBook2_Address1 = 0;
709#line 252 "ClientLib.c"
710int __ste_Client_AddressBook2_Address2 = 0;
711#line 255 "ClientLib.c"
712int getClientAddressBookAddress(int handle , int index )
713{ int retValue_acc ;
714
715 {
716#line 288
717 if (handle == 1) {
718#line 265 "ClientLib.c"
719 if (index == 0) {
720#line 1462
721 retValue_acc = __ste_Client_AddressBook0_Address0;
722#line 1464
723 return (retValue_acc);
724 } else {
725#line 1466
726 if (index == 1) {
727#line 1471
728 retValue_acc = __ste_Client_AddressBook0_Address1;
729#line 1473
730 return (retValue_acc);
731 } else {
732#line 1475
733 if (index == 2) {
734#line 1480
735 retValue_acc = __ste_Client_AddressBook0_Address2;
736#line 1482
737 return (retValue_acc);
738 } else {
739#line 1488
740 retValue_acc = 0;
741#line 1490
742 return (retValue_acc);
743 }
744 }
745 }
746 } else {
747#line 1492 "ClientLib.c"
748 if (handle == 2) {
749#line 275 "ClientLib.c"
750 if (index == 0) {
751#line 1500
752 retValue_acc = __ste_Client_AddressBook1_Address0;
753#line 1502
754 return (retValue_acc);
755 } else {
756#line 1504
757 if (index == 1) {
758#line 1509
759 retValue_acc = __ste_Client_AddressBook1_Address1;
760#line 1511
761 return (retValue_acc);
762 } else {
763#line 1513
764 if (index == 2) {
765#line 1518
766 retValue_acc = __ste_Client_AddressBook1_Address2;
767#line 1520
768 return (retValue_acc);
769 } else {
770#line 1526
771 retValue_acc = 0;
772#line 1528
773 return (retValue_acc);
774 }
775 }
776 }
777 } else {
778#line 1530 "ClientLib.c"
779 if (handle == 3) {
780#line 285 "ClientLib.c"
781 if (index == 0) {
782#line 1538
783 retValue_acc = __ste_Client_AddressBook2_Address0;
784#line 1540
785 return (retValue_acc);
786 } else {
787#line 1542
788 if (index == 1) {
789#line 1547
790 retValue_acc = __ste_Client_AddressBook2_Address1;
791#line 1549
792 return (retValue_acc);
793 } else {
794#line 1551
795 if (index == 2) {
796#line 1556
797 retValue_acc = __ste_Client_AddressBook2_Address2;
798#line 1558
799 return (retValue_acc);
800 } else {
801#line 1564
802 retValue_acc = 0;
803#line 1566
804 return (retValue_acc);
805 }
806 }
807 }
808 } else {
809#line 1572 "ClientLib.c"
810 retValue_acc = 0;
811#line 1574
812 return (retValue_acc);
813 }
814 }
815 }
816#line 1581 "ClientLib.c"
817 return (retValue_acc);
818}
819}
820#line 291 "ClientLib.c"
821void setClientAddressBookAddress(int handle , int index , int value )
822{
823
824 {
825#line 317
826 if (handle == 1) {
827#line 300
828 if (index == 0) {
829#line 294
830 __ste_Client_AddressBook0_Address0 = value;
831 } else {
832#line 295
833 if (index == 1) {
834#line 296
835 __ste_Client_AddressBook0_Address1 = value;
836 } else {
837#line 297
838 if (index == 2) {
839#line 298
840 __ste_Client_AddressBook0_Address2 = value;
841 } else {
842
843 }
844 }
845 }
846 } else {
847#line 299
848 if (handle == 2) {
849#line 308
850 if (index == 0) {
851#line 302
852 __ste_Client_AddressBook1_Address0 = value;
853 } else {
854#line 303
855 if (index == 1) {
856#line 304
857 __ste_Client_AddressBook1_Address1 = value;
858 } else {
859#line 305
860 if (index == 2) {
861#line 306
862 __ste_Client_AddressBook1_Address2 = value;
863 } else {
864
865 }
866 }
867 }
868 } else {
869#line 307
870 if (handle == 3) {
871#line 316
872 if (index == 0) {
873#line 310
874 __ste_Client_AddressBook2_Address0 = value;
875 } else {
876#line 311
877 if (index == 1) {
878#line 312
879 __ste_Client_AddressBook2_Address1 = value;
880 } else {
881#line 313
882 if (index == 2) {
883#line 314
884 __ste_Client_AddressBook2_Address2 = value;
885 } else {
886
887 }
888 }
889 }
890 } else {
891
892 }
893 }
894 }
895#line 1649 "ClientLib.c"
896 return;
897}
898}
899#line 319 "ClientLib.c"
900int __ste_client_autoResponse0 = 0;
901#line 321 "ClientLib.c"
902int __ste_client_autoResponse1 = 0;
903#line 323 "ClientLib.c"
904int __ste_client_autoResponse2 = 0;
905#line 326 "ClientLib.c"
906int getClientAutoResponse(int handle )
907{ int retValue_acc ;
908
909 {
910#line 335 "ClientLib.c"
911 if (handle == 1) {
912#line 1676
913 retValue_acc = __ste_client_autoResponse0;
914#line 1678
915 return (retValue_acc);
916 } else {
917#line 1680
918 if (handle == 2) {
919#line 1685
920 retValue_acc = __ste_client_autoResponse1;
921#line 1687
922 return (retValue_acc);
923 } else {
924#line 1689
925 if (handle == 3) {
926#line 1694
927 retValue_acc = __ste_client_autoResponse2;
928#line 1696
929 return (retValue_acc);
930 } else {
931#line 1702 "ClientLib.c"
932 retValue_acc = -1;
933#line 1704
934 return (retValue_acc);
935 }
936 }
937 }
938#line 1711 "ClientLib.c"
939 return (retValue_acc);
940}
941}
942#line 338 "ClientLib.c"
943void setClientAutoResponse(int handle , int value )
944{
945
946 {
947#line 346
948 if (handle == 1) {
949#line 340
950 __ste_client_autoResponse0 = value;
951 } else {
952#line 341
953 if (handle == 2) {
954#line 342
955 __ste_client_autoResponse1 = value;
956 } else {
957#line 343
958 if (handle == 3) {
959#line 344
960 __ste_client_autoResponse2 = value;
961 } else {
962
963 }
964 }
965 }
966#line 1746 "ClientLib.c"
967 return;
968}
969}
970#line 348 "ClientLib.c"
971int __ste_client_privateKey0 = 0;
972#line 350 "ClientLib.c"
973int __ste_client_privateKey1 = 0;
974#line 352 "ClientLib.c"
975int __ste_client_privateKey2 = 0;
976#line 355 "ClientLib.c"
977int getClientPrivateKey(int handle )
978{ int retValue_acc ;
979
980 {
981#line 364 "ClientLib.c"
982 if (handle == 1) {
983#line 1773
984 retValue_acc = __ste_client_privateKey0;
985#line 1775
986 return (retValue_acc);
987 } else {
988#line 1777
989 if (handle == 2) {
990#line 1782
991 retValue_acc = __ste_client_privateKey1;
992#line 1784
993 return (retValue_acc);
994 } else {
995#line 1786
996 if (handle == 3) {
997#line 1791
998 retValue_acc = __ste_client_privateKey2;
999#line 1793
1000 return (retValue_acc);
1001 } else {
1002#line 1799 "ClientLib.c"
1003 retValue_acc = 0;
1004#line 1801
1005 return (retValue_acc);
1006 }
1007 }
1008 }
1009#line 1808 "ClientLib.c"
1010 return (retValue_acc);
1011}
1012}
1013#line 367 "ClientLib.c"
1014void setClientPrivateKey(int handle , int value )
1015{
1016
1017 {
1018#line 375
1019 if (handle == 1) {
1020#line 369
1021 __ste_client_privateKey0 = value;
1022 } else {
1023#line 370
1024 if (handle == 2) {
1025#line 371
1026 __ste_client_privateKey1 = value;
1027 } else {
1028#line 372
1029 if (handle == 3) {
1030#line 373
1031 __ste_client_privateKey2 = value;
1032 } else {
1033
1034 }
1035 }
1036 }
1037#line 1843 "ClientLib.c"
1038 return;
1039}
1040}
1041#line 377 "ClientLib.c"
1042int __ste_ClientKeyring_size0 = 0;
1043#line 379 "ClientLib.c"
1044int __ste_ClientKeyring_size1 = 0;
1045#line 381 "ClientLib.c"
1046int __ste_ClientKeyring_size2 = 0;
1047#line 384 "ClientLib.c"
1048int getClientKeyringSize(int handle )
1049{ int retValue_acc ;
1050
1051 {
1052#line 393 "ClientLib.c"
1053 if (handle == 1) {
1054#line 1870
1055 retValue_acc = __ste_ClientKeyring_size0;
1056#line 1872
1057 return (retValue_acc);
1058 } else {
1059#line 1874
1060 if (handle == 2) {
1061#line 1879
1062 retValue_acc = __ste_ClientKeyring_size1;
1063#line 1881
1064 return (retValue_acc);
1065 } else {
1066#line 1883
1067 if (handle == 3) {
1068#line 1888
1069 retValue_acc = __ste_ClientKeyring_size2;
1070#line 1890
1071 return (retValue_acc);
1072 } else {
1073#line 1896 "ClientLib.c"
1074 retValue_acc = 0;
1075#line 1898
1076 return (retValue_acc);
1077 }
1078 }
1079 }
1080#line 1905 "ClientLib.c"
1081 return (retValue_acc);
1082}
1083}
1084#line 396 "ClientLib.c"
1085void setClientKeyringSize(int handle , int value )
1086{
1087
1088 {
1089#line 404
1090 if (handle == 1) {
1091#line 398
1092 __ste_ClientKeyring_size0 = value;
1093 } else {
1094#line 399
1095 if (handle == 2) {
1096#line 400
1097 __ste_ClientKeyring_size1 = value;
1098 } else {
1099#line 401
1100 if (handle == 3) {
1101#line 402
1102 __ste_ClientKeyring_size2 = value;
1103 } else {
1104
1105 }
1106 }
1107 }
1108#line 1940 "ClientLib.c"
1109 return;
1110}
1111}
1112#line 406 "ClientLib.c"
1113int createClientKeyringEntry(int handle )
1114{ int retValue_acc ;
1115 int size ;
1116 int tmp ;
1117 int __cil_tmp5 ;
1118
1119 {
1120 {
1121#line 407
1122 tmp = getClientKeyringSize(handle);
1123#line 407
1124 size = tmp;
1125 }
1126#line 408 "ClientLib.c"
1127 if (size < 2) {
1128 {
1129#line 409 "ClientLib.c"
1130 __cil_tmp5 = size + 1;
1131#line 409
1132 setClientKeyringSize(handle, __cil_tmp5);
1133#line 1967 "ClientLib.c"
1134 retValue_acc = size + 1;
1135 }
1136#line 1969
1137 return (retValue_acc);
1138 } else {
1139#line 1973 "ClientLib.c"
1140 retValue_acc = -1;
1141#line 1975
1142 return (retValue_acc);
1143 }
1144#line 1982 "ClientLib.c"
1145 return (retValue_acc);
1146}
1147}
1148#line 414 "ClientLib.c"
1149int __ste_Client_Keyring0_User0 = 0;
1150#line 416 "ClientLib.c"
1151int __ste_Client_Keyring0_User1 = 0;
1152#line 418 "ClientLib.c"
1153int __ste_Client_Keyring0_User2 = 0;
1154#line 420 "ClientLib.c"
1155int __ste_Client_Keyring1_User0 = 0;
1156#line 422 "ClientLib.c"
1157int __ste_Client_Keyring1_User1 = 0;
1158#line 424 "ClientLib.c"
1159int __ste_Client_Keyring1_User2 = 0;
1160#line 426 "ClientLib.c"
1161int __ste_Client_Keyring2_User0 = 0;
1162#line 428 "ClientLib.c"
1163int __ste_Client_Keyring2_User1 = 0;
1164#line 430 "ClientLib.c"
1165int __ste_Client_Keyring2_User2 = 0;
1166#line 433 "ClientLib.c"
1167int getClientKeyringUser(int handle , int index )
1168{ int retValue_acc ;
1169
1170 {
1171#line 466
1172 if (handle == 1) {
1173#line 443 "ClientLib.c"
1174 if (index == 0) {
1175#line 2028
1176 retValue_acc = __ste_Client_Keyring0_User0;
1177#line 2030
1178 return (retValue_acc);
1179 } else {
1180#line 2032
1181 if (index == 1) {
1182#line 2037
1183 retValue_acc = __ste_Client_Keyring0_User1;
1184#line 2039
1185 return (retValue_acc);
1186 } else {
1187#line 2045
1188 retValue_acc = 0;
1189#line 2047
1190 return (retValue_acc);
1191 }
1192 }
1193 } else {
1194#line 2049 "ClientLib.c"
1195 if (handle == 2) {
1196#line 453 "ClientLib.c"
1197 if (index == 0) {
1198#line 2057
1199 retValue_acc = __ste_Client_Keyring1_User0;
1200#line 2059
1201 return (retValue_acc);
1202 } else {
1203#line 2061
1204 if (index == 1) {
1205#line 2066
1206 retValue_acc = __ste_Client_Keyring1_User1;
1207#line 2068
1208 return (retValue_acc);
1209 } else {
1210#line 2074
1211 retValue_acc = 0;
1212#line 2076
1213 return (retValue_acc);
1214 }
1215 }
1216 } else {
1217#line 2078 "ClientLib.c"
1218 if (handle == 3) {
1219#line 463 "ClientLib.c"
1220 if (index == 0) {
1221#line 2086
1222 retValue_acc = __ste_Client_Keyring2_User0;
1223#line 2088
1224 return (retValue_acc);
1225 } else {
1226#line 2090
1227 if (index == 1) {
1228#line 2095
1229 retValue_acc = __ste_Client_Keyring2_User1;
1230#line 2097
1231 return (retValue_acc);
1232 } else {
1233#line 2103
1234 retValue_acc = 0;
1235#line 2105
1236 return (retValue_acc);
1237 }
1238 }
1239 } else {
1240#line 2111 "ClientLib.c"
1241 retValue_acc = 0;
1242#line 2113
1243 return (retValue_acc);
1244 }
1245 }
1246 }
1247#line 2120 "ClientLib.c"
1248 return (retValue_acc);
1249}
1250}
1251#line 473 "ClientLib.c"
1252void setClientKeyringUser(int handle , int index , int value )
1253{
1254
1255 {
1256#line 499
1257 if (handle == 1) {
1258#line 482
1259 if (index == 0) {
1260#line 476
1261 __ste_Client_Keyring0_User0 = value;
1262 } else {
1263#line 477
1264 if (index == 1) {
1265#line 478
1266 __ste_Client_Keyring0_User1 = value;
1267 } else {
1268
1269 }
1270 }
1271 } else {
1272#line 479
1273 if (handle == 2) {
1274#line 490
1275 if (index == 0) {
1276#line 484
1277 __ste_Client_Keyring1_User0 = value;
1278 } else {
1279#line 485
1280 if (index == 1) {
1281#line 486
1282 __ste_Client_Keyring1_User1 = value;
1283 } else {
1284
1285 }
1286 }
1287 } else {
1288#line 487
1289 if (handle == 3) {
1290#line 498
1291 if (index == 0) {
1292#line 492
1293 __ste_Client_Keyring2_User0 = value;
1294 } else {
1295#line 493
1296 if (index == 1) {
1297#line 494
1298 __ste_Client_Keyring2_User1 = value;
1299 } else {
1300
1301 }
1302 }
1303 } else {
1304
1305 }
1306 }
1307 }
1308#line 2176 "ClientLib.c"
1309 return;
1310}
1311}
1312#line 501 "ClientLib.c"
1313int __ste_Client_Keyring0_PublicKey0 = 0;
1314#line 503 "ClientLib.c"
1315int __ste_Client_Keyring0_PublicKey1 = 0;
1316#line 505 "ClientLib.c"
1317int __ste_Client_Keyring0_PublicKey2 = 0;
1318#line 507 "ClientLib.c"
1319int __ste_Client_Keyring1_PublicKey0 = 0;
1320#line 509 "ClientLib.c"
1321int __ste_Client_Keyring1_PublicKey1 = 0;
1322#line 511 "ClientLib.c"
1323int __ste_Client_Keyring1_PublicKey2 = 0;
1324#line 513 "ClientLib.c"
1325int __ste_Client_Keyring2_PublicKey0 = 0;
1326#line 515 "ClientLib.c"
1327int __ste_Client_Keyring2_PublicKey1 = 0;
1328#line 517 "ClientLib.c"
1329int __ste_Client_Keyring2_PublicKey2 = 0;
1330#line 520 "ClientLib.c"
1331int getClientKeyringPublicKey(int handle , int index )
1332{ int retValue_acc ;
1333
1334 {
1335#line 553
1336 if (handle == 1) {
1337#line 530 "ClientLib.c"
1338 if (index == 0) {
1339#line 2218
1340 retValue_acc = __ste_Client_Keyring0_PublicKey0;
1341#line 2220
1342 return (retValue_acc);
1343 } else {
1344#line 2222
1345 if (index == 1) {
1346#line 2227
1347 retValue_acc = __ste_Client_Keyring0_PublicKey1;
1348#line 2229
1349 return (retValue_acc);
1350 } else {
1351#line 2235
1352 retValue_acc = 0;
1353#line 2237
1354 return (retValue_acc);
1355 }
1356 }
1357 } else {
1358#line 2239 "ClientLib.c"
1359 if (handle == 2) {
1360#line 540 "ClientLib.c"
1361 if (index == 0) {
1362#line 2247
1363 retValue_acc = __ste_Client_Keyring1_PublicKey0;
1364#line 2249
1365 return (retValue_acc);
1366 } else {
1367#line 2251
1368 if (index == 1) {
1369#line 2256
1370 retValue_acc = __ste_Client_Keyring1_PublicKey1;
1371#line 2258
1372 return (retValue_acc);
1373 } else {
1374#line 2264
1375 retValue_acc = 0;
1376#line 2266
1377 return (retValue_acc);
1378 }
1379 }
1380 } else {
1381#line 2268 "ClientLib.c"
1382 if (handle == 3) {
1383#line 550 "ClientLib.c"
1384 if (index == 0) {
1385#line 2276
1386 retValue_acc = __ste_Client_Keyring2_PublicKey0;
1387#line 2278
1388 return (retValue_acc);
1389 } else {
1390#line 2280
1391 if (index == 1) {
1392#line 2285
1393 retValue_acc = __ste_Client_Keyring2_PublicKey1;
1394#line 2287
1395 return (retValue_acc);
1396 } else {
1397#line 2293
1398 retValue_acc = 0;
1399#line 2295
1400 return (retValue_acc);
1401 }
1402 }
1403 } else {
1404#line 2301 "ClientLib.c"
1405 retValue_acc = 0;
1406#line 2303
1407 return (retValue_acc);
1408 }
1409 }
1410 }
1411#line 2310 "ClientLib.c"
1412 return (retValue_acc);
1413}
1414}
1415#line 557 "ClientLib.c"
1416int findPublicKey(int handle , int userid )
1417{ int retValue_acc ;
1418
1419 {
1420#line 591
1421 if (handle == 1) {
1422#line 568 "ClientLib.c"
1423 if (userid == __ste_Client_Keyring0_User0) {
1424#line 2338
1425 retValue_acc = __ste_Client_Keyring0_PublicKey0;
1426#line 2340
1427 return (retValue_acc);
1428 } else {
1429#line 2342
1430 if (userid == __ste_Client_Keyring0_User1) {
1431#line 2347
1432 retValue_acc = __ste_Client_Keyring0_PublicKey1;
1433#line 2349
1434 return (retValue_acc);
1435 } else {
1436#line 2355
1437 retValue_acc = 0;
1438#line 2357
1439 return (retValue_acc);
1440 }
1441 }
1442 } else {
1443#line 2359 "ClientLib.c"
1444 if (handle == 2) {
1445#line 578 "ClientLib.c"
1446 if (userid == __ste_Client_Keyring1_User0) {
1447#line 2367
1448 retValue_acc = __ste_Client_Keyring1_PublicKey0;
1449#line 2369
1450 return (retValue_acc);
1451 } else {
1452#line 2371
1453 if (userid == __ste_Client_Keyring1_User1) {
1454#line 2376
1455 retValue_acc = __ste_Client_Keyring1_PublicKey1;
1456#line 2378
1457 return (retValue_acc);
1458 } else {
1459#line 2384
1460 retValue_acc = 0;
1461#line 2386
1462 return (retValue_acc);
1463 }
1464 }
1465 } else {
1466#line 2388 "ClientLib.c"
1467 if (handle == 3) {
1468#line 588 "ClientLib.c"
1469 if (userid == __ste_Client_Keyring2_User0) {
1470#line 2396
1471 retValue_acc = __ste_Client_Keyring2_PublicKey0;
1472#line 2398
1473 return (retValue_acc);
1474 } else {
1475#line 2400
1476 if (userid == __ste_Client_Keyring2_User1) {
1477#line 2405
1478 retValue_acc = __ste_Client_Keyring2_PublicKey1;
1479#line 2407
1480 return (retValue_acc);
1481 } else {
1482#line 2413
1483 retValue_acc = 0;
1484#line 2415
1485 return (retValue_acc);
1486 }
1487 }
1488 } else {
1489#line 2421 "ClientLib.c"
1490 retValue_acc = 0;
1491#line 2423
1492 return (retValue_acc);
1493 }
1494 }
1495 }
1496#line 2430 "ClientLib.c"
1497 return (retValue_acc);
1498}
1499}
1500#line 595 "ClientLib.c"
1501void setClientKeyringPublicKey(int handle , int index , int value )
1502{
1503
1504 {
1505#line 621
1506 if (handle == 1) {
1507#line 604
1508 if (index == 0) {
1509#line 598
1510 __ste_Client_Keyring0_PublicKey0 = value;
1511 } else {
1512#line 599
1513 if (index == 1) {
1514#line 600
1515 __ste_Client_Keyring0_PublicKey1 = value;
1516 } else {
1517
1518 }
1519 }
1520 } else {
1521#line 601
1522 if (handle == 2) {
1523#line 612
1524 if (index == 0) {
1525#line 606
1526 __ste_Client_Keyring1_PublicKey0 = value;
1527 } else {
1528#line 607
1529 if (index == 1) {
1530#line 608
1531 __ste_Client_Keyring1_PublicKey1 = value;
1532 } else {
1533
1534 }
1535 }
1536 } else {
1537#line 609
1538 if (handle == 3) {
1539#line 620
1540 if (index == 0) {
1541#line 614
1542 __ste_Client_Keyring2_PublicKey0 = value;
1543 } else {
1544#line 615
1545 if (index == 1) {
1546#line 616
1547 __ste_Client_Keyring2_PublicKey1 = value;
1548 } else {
1549
1550 }
1551 }
1552 } else {
1553
1554 }
1555 }
1556 }
1557#line 2486 "ClientLib.c"
1558 return;
1559}
1560}
1561#line 623 "ClientLib.c"
1562int __ste_client_forwardReceiver0 = 0;
1563#line 625 "ClientLib.c"
1564int __ste_client_forwardReceiver1 = 0;
1565#line 627 "ClientLib.c"
1566int __ste_client_forwardReceiver2 = 0;
1567#line 629 "ClientLib.c"
1568int __ste_client_forwardReceiver3 = 0;
1569#line 631 "ClientLib.c"
1570int getClientForwardReceiver(int handle )
1571{ int retValue_acc ;
1572
1573 {
1574#line 640 "ClientLib.c"
1575 if (handle == 1) {
1576#line 2515
1577 retValue_acc = __ste_client_forwardReceiver0;
1578#line 2517
1579 return (retValue_acc);
1580 } else {
1581#line 2519
1582 if (handle == 2) {
1583#line 2524
1584 retValue_acc = __ste_client_forwardReceiver1;
1585#line 2526
1586 return (retValue_acc);
1587 } else {
1588#line 2528
1589 if (handle == 3) {
1590#line 2533
1591 retValue_acc = __ste_client_forwardReceiver2;
1592#line 2535
1593 return (retValue_acc);
1594 } else {
1595#line 2541 "ClientLib.c"
1596 retValue_acc = 0;
1597#line 2543
1598 return (retValue_acc);
1599 }
1600 }
1601 }
1602#line 2550 "ClientLib.c"
1603 return (retValue_acc);
1604}
1605}
1606#line 643 "ClientLib.c"
1607void setClientForwardReceiver(int handle , int value )
1608{
1609
1610 {
1611#line 651
1612 if (handle == 1) {
1613#line 645
1614 __ste_client_forwardReceiver0 = value;
1615 } else {
1616#line 646
1617 if (handle == 2) {
1618#line 647
1619 __ste_client_forwardReceiver1 = value;
1620 } else {
1621#line 648
1622 if (handle == 3) {
1623#line 649
1624 __ste_client_forwardReceiver2 = value;
1625 } else {
1626
1627 }
1628 }
1629 }
1630#line 2585 "ClientLib.c"
1631 return;
1632}
1633}
1634#line 653 "ClientLib.c"
1635int __ste_client_idCounter0 = 0;
1636#line 655 "ClientLib.c"
1637int __ste_client_idCounter1 = 0;
1638#line 657 "ClientLib.c"
1639int __ste_client_idCounter2 = 0;
1640#line 660 "ClientLib.c"
1641int getClientId(int handle )
1642{ int retValue_acc ;
1643
1644 {
1645#line 669 "ClientLib.c"
1646 if (handle == 1) {
1647#line 2612
1648 retValue_acc = __ste_client_idCounter0;
1649#line 2614
1650 return (retValue_acc);
1651 } else {
1652#line 2616
1653 if (handle == 2) {
1654#line 2621
1655 retValue_acc = __ste_client_idCounter1;
1656#line 2623
1657 return (retValue_acc);
1658 } else {
1659#line 2625
1660 if (handle == 3) {
1661#line 2630
1662 retValue_acc = __ste_client_idCounter2;
1663#line 2632
1664 return (retValue_acc);
1665 } else {
1666#line 2638 "ClientLib.c"
1667 retValue_acc = 0;
1668#line 2640
1669 return (retValue_acc);
1670 }
1671 }
1672 }
1673#line 2647 "ClientLib.c"
1674 return (retValue_acc);
1675}
1676}
1677#line 672 "ClientLib.c"
1678void setClientId(int handle , int value )
1679{
1680
1681 {
1682#line 680
1683 if (handle == 1) {
1684#line 674
1685 __ste_client_idCounter0 = value;
1686 } else {
1687#line 675
1688 if (handle == 2) {
1689#line 676
1690 __ste_client_idCounter1 = value;
1691 } else {
1692#line 677
1693 if (handle == 3) {
1694#line 678
1695 __ste_client_idCounter2 = value;
1696 } else {
1697
1698 }
1699 }
1700 }
1701#line 2682 "ClientLib.c"
1702 return;
1703}
1704}
1705#line 1 "Email.o"
1706#pragma merger(0,"Email.i","")
1707#line 359 "/usr/include/stdio.h"
1708extern int printf(char const * __restrict __format , ...) ;
1709#line 8 "featureselect.h"
1710int __SELECTED_FEATURE_Base ;
1711#line 11 "featureselect.h"
1712int __SELECTED_FEATURE_Keys ;
1713#line 14 "featureselect.h"
1714int __SELECTED_FEATURE_Encrypt ;
1715#line 17 "featureselect.h"
1716int __SELECTED_FEATURE_AutoResponder ;
1717#line 20 "featureselect.h"
1718int __SELECTED_FEATURE_AddressBook ;
1719#line 23 "featureselect.h"
1720int __SELECTED_FEATURE_Sign ;
1721#line 26 "featureselect.h"
1722int __SELECTED_FEATURE_Forward ;
1723#line 29 "featureselect.h"
1724int __SELECTED_FEATURE_Verify ;
1725#line 32 "featureselect.h"
1726int __SELECTED_FEATURE_Decrypt ;
1727#line 35 "featureselect.h"
1728int __GUIDSL_ROOT_PRODUCTION ;
1729#line 37 "featureselect.h"
1730int __GUIDSL_NON_TERMINAL_main ;
1731#line 6 "EmailLib.h"
1732int getEmailId(int handle ) ;
1733#line 10
1734int getEmailFrom(int handle ) ;
1735#line 12
1736void setEmailFrom(int handle , int value ) ;
1737#line 14
1738int getEmailTo(int handle ) ;
1739#line 16
1740void setEmailTo(int handle , int value ) ;
1741#line 26
1742int isEncrypted(int handle ) ;
1743#line 30
1744int getEmailEncryptionKey(int handle ) ;
1745#line 34
1746int isSigned(int handle ) ;
1747#line 38
1748int getEmailSignKey(int handle ) ;
1749#line 42
1750int isVerified(int handle ) ;
1751#line 6 "Email.h"
1752void printMail(int msg ) ;
1753#line 9
1754int isReadable(int msg ) ;
1755#line 12
1756int createEmail(int from , int to ) ;
1757#line 15
1758int cloneEmail(int msg ) ;
1759#line 9 "Email.c"
1760void printMail__wrappee__Keys(int msg )
1761{ int tmp ;
1762 int tmp___0 ;
1763 int tmp___1 ;
1764 int tmp___2 ;
1765 char const * __restrict __cil_tmp6 ;
1766 char const * __restrict __cil_tmp7 ;
1767 char const * __restrict __cil_tmp8 ;
1768 char const * __restrict __cil_tmp9 ;
1769
1770 {
1771 {
1772#line 10
1773 tmp = getEmailId(msg);
1774#line 10
1775 __cil_tmp6 = (char const * __restrict )"ID:\n %i\n";
1776#line 10
1777 printf(__cil_tmp6, tmp);
1778#line 11
1779 tmp___0 = getEmailFrom(msg);
1780#line 11
1781 __cil_tmp7 = (char const * __restrict )"FROM:\n %i\n";
1782#line 11
1783 printf(__cil_tmp7, tmp___0);
1784#line 12
1785 tmp___1 = getEmailTo(msg);
1786#line 12
1787 __cil_tmp8 = (char const * __restrict )"TO:\n %i\n";
1788#line 12
1789 printf(__cil_tmp8, tmp___1);
1790#line 13
1791 tmp___2 = isReadable(msg);
1792#line 13
1793 __cil_tmp9 = (char const * __restrict )"IS_READABLE\n %i\n";
1794#line 13
1795 printf(__cil_tmp9, tmp___2);
1796 }
1797#line 601 "Email.c"
1798 return;
1799}
1800}
1801#line 17 "Email.c"
1802void printMail__wrappee__AddressBook(int msg )
1803{ int tmp ;
1804 int tmp___0 ;
1805 char const * __restrict __cil_tmp4 ;
1806 char const * __restrict __cil_tmp5 ;
1807
1808 {
1809 {
1810#line 18
1811 printMail__wrappee__Keys(msg);
1812#line 19
1813 tmp = isEncrypted(msg);
1814#line 19
1815 __cil_tmp4 = (char const * __restrict )"ENCRYPTED\n %d\n";
1816#line 19
1817 printf(__cil_tmp4, tmp);
1818#line 20
1819 tmp___0 = getEmailEncryptionKey(msg);
1820#line 20
1821 __cil_tmp5 = (char const * __restrict )"ENCRYPTION KEY\n %d\n";
1822#line 20
1823 printf(__cil_tmp5, tmp___0);
1824 }
1825#line 625 "Email.c"
1826 return;
1827}
1828}
1829#line 26 "Email.c"
1830void printMail__wrappee__Forward(int msg )
1831{ int tmp ;
1832 int tmp___0 ;
1833 char const * __restrict __cil_tmp4 ;
1834 char const * __restrict __cil_tmp5 ;
1835
1836 {
1837 {
1838#line 27
1839 printMail__wrappee__AddressBook(msg);
1840#line 28
1841 tmp = isSigned(msg);
1842#line 28
1843 __cil_tmp4 = (char const * __restrict )"SIGNED\n %i\n";
1844#line 28
1845 printf(__cil_tmp4, tmp);
1846#line 29
1847 tmp___0 = getEmailSignKey(msg);
1848#line 29
1849 __cil_tmp5 = (char const * __restrict )"SIGNATURE\n %i\n";
1850#line 29
1851 printf(__cil_tmp5, tmp___0);
1852 }
1853#line 649 "Email.c"
1854 return;
1855}
1856}
1857#line 33 "Email.c"
1858void printMail(int msg )
1859{ int tmp ;
1860 char const * __restrict __cil_tmp3 ;
1861
1862 {
1863 {
1864#line 34
1865 printMail__wrappee__Forward(msg);
1866#line 35
1867 tmp = isVerified(msg);
1868#line 35
1869 __cil_tmp3 = (char const * __restrict )"SIGNATURE VERIFIED\n %d\n";
1870#line 35
1871 printf(__cil_tmp3, tmp);
1872 }
1873#line 671 "Email.c"
1874 return;
1875}
1876}
1877#line 41 "Email.c"
1878int isReadable__wrappee__Keys(int msg )
1879{ int retValue_acc ;
1880
1881 {
1882#line 689 "Email.c"
1883 retValue_acc = 1;
1884#line 691
1885 return (retValue_acc);
1886#line 698
1887 return (retValue_acc);
1888}
1889}
1890#line 49 "Email.c"
1891int isReadable(int msg )
1892{ int retValue_acc ;
1893 int tmp ;
1894
1895 {
1896 {
1897#line 53
1898 tmp = isEncrypted(msg);
1899 }
1900#line 53 "Email.c"
1901 if (tmp) {
1902#line 727
1903 retValue_acc = 0;
1904#line 729
1905 return (retValue_acc);
1906 } else {
1907 {
1908#line 721 "Email.c"
1909 retValue_acc = isReadable__wrappee__Keys(msg);
1910 }
1911#line 723
1912 return (retValue_acc);
1913 }
1914#line 736 "Email.c"
1915 return (retValue_acc);
1916}
1917}
1918#line 57 "Email.c"
1919int cloneEmail(int msg )
1920{ int retValue_acc ;
1921
1922 {
1923#line 758 "Email.c"
1924 retValue_acc = msg;
1925#line 760
1926 return (retValue_acc);
1927#line 767
1928 return (retValue_acc);
1929}
1930}
1931#line 62 "Email.c"
1932int createEmail(int from , int to )
1933{ int retValue_acc ;
1934 int msg ;
1935
1936 {
1937 {
1938#line 63
1939 msg = 1;
1940#line 64
1941 setEmailFrom(msg, from);
1942#line 65
1943 setEmailTo(msg, to);
1944#line 797 "Email.c"
1945 retValue_acc = msg;
1946 }
1947#line 799
1948 return (retValue_acc);
1949#line 806
1950 return (retValue_acc);
1951}
1952}
1953#line 1 "scenario.o"
1954#pragma merger(0,"scenario.i","")
1955#line 17 "scenario.c"
1956void bobKeyAdd(void) ;
1957#line 24
1958void rjhDeletePrivateKey(void) ;
1959#line 28
1960void rjhKeyAdd(void) ;
1961#line 32
1962void chuckKeyAddRjh(void) ;
1963#line 36
1964void rjhEnableForwarding(void) ;
1965#line 40
1966void rjhKeyChange(void) ;
1967#line 44
1968void bobSetAddressBook(void) ;
1969#line 48
1970void chuckKeyAdd(void) ;
1971#line 52
1972void bobKeyChange(void) ;
1973#line 54
1974#line 61
1975void bobToRjh(void) ;
1976#line 1 "scenario.c"
1977void test(void)
1978{ int op1 ;
1979 int op2 ;
1980 int op3 ;
1981 int op4 ;
1982 int op5 ;
1983 int op6 ;
1984 int op7 ;
1985 int op8 ;
1986 int op9 ;
1987 int op10 ;
1988 int op11 ;
1989 int splverifierCounter ;
1990 int tmp ;
1991 int tmp___0 ;
1992 int tmp___1 ;
1993 int tmp___2 ;
1994 int tmp___3 ;
1995 int tmp___4 ;
1996 int tmp___5 ;
1997 int tmp___6 ;
1998 int tmp___7 ;
1999 int tmp___8 ;
2000 int tmp___9 ;
2001
2002 {
2003#line 2
2004 op1 = 0;
2005#line 3
2006 op2 = 0;
2007#line 4
2008 op3 = 0;
2009#line 5
2010 op4 = 0;
2011#line 6
2012 op5 = 0;
2013#line 7
2014 op6 = 0;
2015#line 8
2016 op7 = 0;
2017#line 9
2018 op8 = 0;
2019#line 10
2020 op9 = 0;
2021#line 11
2022 op10 = 0;
2023#line 12
2024 op11 = 0;
2025#line 13
2026 splverifierCounter = 0;
2027 {
2028#line 14
2029 while (1) {
2030 while_0_continue: ;
2031#line 14
2032 if (splverifierCounter < 4) {
2033
2034 } else {
2035 goto while_0_break;
2036 }
2037#line 15
2038 splverifierCounter = splverifierCounter + 1;
2039#line 16
2040 if (! op1) {
2041 {
2042#line 16
2043 tmp___9 = __VERIFIER_nondet_int();
2044 }
2045#line 16
2046 if (tmp___9) {
2047 {
2048#line 17
2049 bobKeyAdd();
2050#line 18
2051 op1 = 1;
2052 }
2053 } else {
2054 goto _L___8;
2055 }
2056 } else {
2057 _L___8:
2058#line 19
2059 if (! op2) {
2060 {
2061#line 19
2062 tmp___8 = __VERIFIER_nondet_int();
2063 }
2064#line 19
2065 if (tmp___8) {
2066#line 21
2067 op2 = 1;
2068 } else {
2069 goto _L___7;
2070 }
2071 } else {
2072 _L___7:
2073#line 22
2074 if (! op3) {
2075 {
2076#line 22
2077 tmp___7 = __VERIFIER_nondet_int();
2078 }
2079#line 22
2080 if (tmp___7) {
2081 {
2082#line 24
2083 rjhDeletePrivateKey();
2084#line 25
2085 op3 = 1;
2086 }
2087 } else {
2088 goto _L___6;
2089 }
2090 } else {
2091 _L___6:
2092#line 26
2093 if (! op4) {
2094 {
2095#line 26
2096 tmp___6 = __VERIFIER_nondet_int();
2097 }
2098#line 26
2099 if (tmp___6) {
2100 {
2101#line 28
2102 rjhKeyAdd();
2103#line 29
2104 op4 = 1;
2105 }
2106 } else {
2107 goto _L___5;
2108 }
2109 } else {
2110 _L___5:
2111#line 30
2112 if (! op5) {
2113 {
2114#line 30
2115 tmp___5 = __VERIFIER_nondet_int();
2116 }
2117#line 30
2118 if (tmp___5) {
2119 {
2120#line 32
2121 chuckKeyAddRjh();
2122#line 33
2123 op5 = 1;
2124 }
2125 } else {
2126 goto _L___4;
2127 }
2128 } else {
2129 _L___4:
2130#line 34
2131 if (! op6) {
2132 {
2133#line 34
2134 tmp___4 = __VERIFIER_nondet_int();
2135 }
2136#line 34
2137 if (tmp___4) {
2138 {
2139#line 36
2140 rjhEnableForwarding();
2141#line 37
2142 op6 = 1;
2143 }
2144 } else {
2145 goto _L___3;
2146 }
2147 } else {
2148 _L___3:
2149#line 38
2150 if (! op7) {
2151 {
2152#line 38
2153 tmp___3 = __VERIFIER_nondet_int();
2154 }
2155#line 38
2156 if (tmp___3) {
2157 {
2158#line 40
2159 rjhKeyChange();
2160#line 41
2161 op7 = 1;
2162 }
2163 } else {
2164 goto _L___2;
2165 }
2166 } else {
2167 _L___2:
2168#line 42
2169 if (! op8) {
2170 {
2171#line 42
2172 tmp___2 = __VERIFIER_nondet_int();
2173 }
2174#line 42
2175 if (tmp___2) {
2176 {
2177#line 44
2178 bobSetAddressBook();
2179#line 45
2180 op8 = 1;
2181 }
2182 } else {
2183 goto _L___1;
2184 }
2185 } else {
2186 _L___1:
2187#line 46
2188 if (! op9) {
2189 {
2190#line 46
2191 tmp___1 = __VERIFIER_nondet_int();
2192 }
2193#line 46
2194 if (tmp___1) {
2195 {
2196#line 48
2197 chuckKeyAdd();
2198#line 49
2199 op9 = 1;
2200 }
2201 } else {
2202 goto _L___0;
2203 }
2204 } else {
2205 _L___0:
2206#line 50
2207 if (! op10) {
2208 {
2209#line 50
2210 tmp___0 = __VERIFIER_nondet_int();
2211 }
2212#line 50
2213 if (tmp___0) {
2214 {
2215#line 52
2216 bobKeyChange();
2217#line 53
2218 op10 = 1;
2219 }
2220 } else {
2221 goto _L;
2222 }
2223 } else {
2224 _L:
2225#line 54
2226 if (! op11) {
2227 {
2228#line 54
2229 tmp = __VERIFIER_nondet_int();
2230 }
2231#line 54
2232 if (tmp) {
2233 {
2234#line 56
2235 chuckKeyAdd();
2236#line 57
2237 op11 = 1;
2238 }
2239 } else {
2240 goto while_0_break;
2241 }
2242 } else {
2243 goto while_0_break;
2244 }
2245 }
2246 }
2247 }
2248 }
2249 }
2250 }
2251 }
2252 }
2253 }
2254 }
2255 }
2256 while_0_break: ;
2257 }
2258 {
2259#line 61
2260 bobToRjh();
2261 }
2262#line 169 "scenario.c"
2263 return;
2264}
2265}
2266#line 1 "Util.o"
2267#pragma merger(0,"Util.i","")
2268#line 1 "Util.h"
2269int prompt(char *msg ) ;
2270#line 9 "Util.c"
2271int prompt(char *msg )
2272{ int retValue_acc ;
2273 int retval ;
2274 char const * __restrict __cil_tmp4 ;
2275
2276 {
2277 {
2278#line 10
2279 __cil_tmp4 = (char const * __restrict )"%s\n";
2280#line 10
2281 printf(__cil_tmp4, msg);
2282#line 518 "Util.c"
2283 retValue_acc = retval;
2284 }
2285#line 520
2286 return (retValue_acc);
2287#line 527
2288 return (retValue_acc);
2289}
2290}
2291#line 1 "EmailLib.o"
2292#pragma merger(0,"EmailLib.i","")
2293#line 4 "EmailLib.h"
2294int initEmail(void) ;
2295#line 8
2296void setEmailId(int handle , int value ) ;
2297#line 18
2298char *getEmailSubject(int handle ) ;
2299#line 20
2300void setEmailSubject(int handle , char *value ) ;
2301#line 22
2302char *getEmailBody(int handle ) ;
2303#line 24
2304void setEmailBody(int handle , char *value ) ;
2305#line 28
2306void setEmailIsEncrypted(int handle , int value ) ;
2307#line 32
2308void setEmailEncryptionKey(int handle , int value ) ;
2309#line 36
2310void setEmailIsSigned(int handle , int value ) ;
2311#line 40
2312void setEmailSignKey(int handle , int value ) ;
2313#line 44
2314void setEmailIsSignatureVerified(int handle , int value ) ;
2315#line 5 "EmailLib.c"
2316int __ste_Email_counter = 0;
2317#line 7 "EmailLib.c"
2318int initEmail(void)
2319{ int retValue_acc ;
2320
2321 {
2322#line 12 "EmailLib.c"
2323 if (__ste_Email_counter < 2) {
2324#line 670
2325 __ste_Email_counter = __ste_Email_counter + 1;
2326#line 670
2327 retValue_acc = __ste_Email_counter;
2328#line 672
2329 return (retValue_acc);
2330 } else {
2331#line 678 "EmailLib.c"
2332 retValue_acc = -1;
2333#line 680
2334 return (retValue_acc);
2335 }
2336#line 687 "EmailLib.c"
2337 return (retValue_acc);
2338}
2339}
2340#line 15 "EmailLib.c"
2341int __ste_email_id0 = 0;
2342#line 17 "EmailLib.c"
2343int __ste_email_id1 = 0;
2344#line 19 "EmailLib.c"
2345int getEmailId(int handle )
2346{ int retValue_acc ;
2347
2348 {
2349#line 26 "EmailLib.c"
2350 if (handle == 1) {
2351#line 716
2352 retValue_acc = __ste_email_id0;
2353#line 718
2354 return (retValue_acc);
2355 } else {
2356#line 720
2357 if (handle == 2) {
2358#line 725
2359 retValue_acc = __ste_email_id1;
2360#line 727
2361 return (retValue_acc);
2362 } else {
2363#line 733 "EmailLib.c"
2364 retValue_acc = 0;
2365#line 735
2366 return (retValue_acc);
2367 }
2368 }
2369#line 742 "EmailLib.c"
2370 return (retValue_acc);
2371}
2372}
2373#line 29 "EmailLib.c"
2374void setEmailId(int handle , int value )
2375{
2376
2377 {
2378#line 35
2379 if (handle == 1) {
2380#line 31
2381 __ste_email_id0 = value;
2382 } else {
2383#line 32
2384 if (handle == 2) {
2385#line 33
2386 __ste_email_id1 = value;
2387 } else {
2388
2389 }
2390 }
2391#line 773 "EmailLib.c"
2392 return;
2393}
2394}
2395#line 37 "EmailLib.c"
2396int __ste_email_from0 = 0;
2397#line 39 "EmailLib.c"
2398int __ste_email_from1 = 0;
2399#line 41 "EmailLib.c"
2400int getEmailFrom(int handle )
2401{ int retValue_acc ;
2402
2403 {
2404#line 48 "EmailLib.c"
2405 if (handle == 1) {
2406#line 798
2407 retValue_acc = __ste_email_from0;
2408#line 800
2409 return (retValue_acc);
2410 } else {
2411#line 802
2412 if (handle == 2) {
2413#line 807
2414 retValue_acc = __ste_email_from1;
2415#line 809
2416 return (retValue_acc);
2417 } else {
2418#line 815 "EmailLib.c"
2419 retValue_acc = 0;
2420#line 817
2421 return (retValue_acc);
2422 }
2423 }
2424#line 824 "EmailLib.c"
2425 return (retValue_acc);
2426}
2427}
2428#line 51 "EmailLib.c"
2429void setEmailFrom(int handle , int value )
2430{
2431
2432 {
2433#line 57
2434 if (handle == 1) {
2435#line 53
2436 __ste_email_from0 = value;
2437 } else {
2438#line 54
2439 if (handle == 2) {
2440#line 55
2441 __ste_email_from1 = value;
2442 } else {
2443
2444 }
2445 }
2446#line 855 "EmailLib.c"
2447 return;
2448}
2449}
2450#line 59 "EmailLib.c"
2451int __ste_email_to0 = 0;
2452#line 61 "EmailLib.c"
2453int __ste_email_to1 = 0;
2454#line 63 "EmailLib.c"
2455int getEmailTo(int handle )
2456{ int retValue_acc ;
2457
2458 {
2459#line 70 "EmailLib.c"
2460 if (handle == 1) {
2461#line 880
2462 retValue_acc = __ste_email_to0;
2463#line 882
2464 return (retValue_acc);
2465 } else {
2466#line 884
2467 if (handle == 2) {
2468#line 889
2469 retValue_acc = __ste_email_to1;
2470#line 891
2471 return (retValue_acc);
2472 } else {
2473#line 897 "EmailLib.c"
2474 retValue_acc = 0;
2475#line 899
2476 return (retValue_acc);
2477 }
2478 }
2479#line 906 "EmailLib.c"
2480 return (retValue_acc);
2481}
2482}
2483#line 73 "EmailLib.c"
2484void setEmailTo(int handle , int value )
2485{
2486
2487 {
2488#line 79
2489 if (handle == 1) {
2490#line 75
2491 __ste_email_to0 = value;
2492 } else {
2493#line 76
2494 if (handle == 2) {
2495#line 77
2496 __ste_email_to1 = value;
2497 } else {
2498
2499 }
2500 }
2501#line 937 "EmailLib.c"
2502 return;
2503}
2504}
2505#line 81 "EmailLib.c"
2506char *__ste_email_subject0 ;
2507#line 83 "EmailLib.c"
2508char *__ste_email_subject1 ;
2509#line 85 "EmailLib.c"
2510char *getEmailSubject(int handle )
2511{ char *retValue_acc ;
2512 void *__cil_tmp3 ;
2513
2514 {
2515#line 92 "EmailLib.c"
2516 if (handle == 1) {
2517#line 962
2518 retValue_acc = __ste_email_subject0;
2519#line 964
2520 return (retValue_acc);
2521 } else {
2522#line 966
2523 if (handle == 2) {
2524#line 971
2525 retValue_acc = __ste_email_subject1;
2526#line 973
2527 return (retValue_acc);
2528 } else {
2529#line 979 "EmailLib.c"
2530 __cil_tmp3 = (void *)0;
2531#line 979
2532 retValue_acc = (char *)__cil_tmp3;
2533#line 981
2534 return (retValue_acc);
2535 }
2536 }
2537#line 988 "EmailLib.c"
2538 return (retValue_acc);
2539}
2540}
2541#line 95 "EmailLib.c"
2542void setEmailSubject(int handle , char *value )
2543{
2544
2545 {
2546#line 101
2547 if (handle == 1) {
2548#line 97
2549 __ste_email_subject0 = value;
2550 } else {
2551#line 98
2552 if (handle == 2) {
2553#line 99
2554 __ste_email_subject1 = value;
2555 } else {
2556
2557 }
2558 }
2559#line 1019 "EmailLib.c"
2560 return;
2561}
2562}
2563#line 103 "EmailLib.c"
2564char *__ste_email_body0 = (char *)0;
2565#line 105 "EmailLib.c"
2566char *__ste_email_body1 = (char *)0;
2567#line 107 "EmailLib.c"
2568char *getEmailBody(int handle )
2569{ char *retValue_acc ;
2570 void *__cil_tmp3 ;
2571
2572 {
2573#line 114 "EmailLib.c"
2574 if (handle == 1) {
2575#line 1044
2576 retValue_acc = __ste_email_body0;
2577#line 1046
2578 return (retValue_acc);
2579 } else {
2580#line 1048
2581 if (handle == 2) {
2582#line 1053
2583 retValue_acc = __ste_email_body1;
2584#line 1055
2585 return (retValue_acc);
2586 } else {
2587#line 1061 "EmailLib.c"
2588 __cil_tmp3 = (void *)0;
2589#line 1061
2590 retValue_acc = (char *)__cil_tmp3;
2591#line 1063
2592 return (retValue_acc);
2593 }
2594 }
2595#line 1070 "EmailLib.c"
2596 return (retValue_acc);
2597}
2598}
2599#line 117 "EmailLib.c"
2600void setEmailBody(int handle , char *value )
2601{
2602
2603 {
2604#line 123
2605 if (handle == 1) {
2606#line 119
2607 __ste_email_body0 = value;
2608 } else {
2609#line 120
2610 if (handle == 2) {
2611#line 121
2612 __ste_email_body1 = value;
2613 } else {
2614
2615 }
2616 }
2617#line 1101 "EmailLib.c"
2618 return;
2619}
2620}
2621#line 125 "EmailLib.c"
2622int __ste_email_isEncrypted0 = 0;
2623#line 127 "EmailLib.c"
2624int __ste_email_isEncrypted1 = 0;
2625#line 129 "EmailLib.c"
2626int isEncrypted(int handle )
2627{ int retValue_acc ;
2628
2629 {
2630#line 136 "EmailLib.c"
2631 if (handle == 1) {
2632#line 1126
2633 retValue_acc = __ste_email_isEncrypted0;
2634#line 1128
2635 return (retValue_acc);
2636 } else {
2637#line 1130
2638 if (handle == 2) {
2639#line 1135
2640 retValue_acc = __ste_email_isEncrypted1;
2641#line 1137
2642 return (retValue_acc);
2643 } else {
2644#line 1143 "EmailLib.c"
2645 retValue_acc = 0;
2646#line 1145
2647 return (retValue_acc);
2648 }
2649 }
2650#line 1152 "EmailLib.c"
2651 return (retValue_acc);
2652}
2653}
2654#line 139 "EmailLib.c"
2655void setEmailIsEncrypted(int handle , int value )
2656{
2657
2658 {
2659#line 145
2660 if (handle == 1) {
2661#line 141
2662 __ste_email_isEncrypted0 = value;
2663 } else {
2664#line 142
2665 if (handle == 2) {
2666#line 143
2667 __ste_email_isEncrypted1 = value;
2668 } else {
2669
2670 }
2671 }
2672#line 1183 "EmailLib.c"
2673 return;
2674}
2675}
2676#line 147 "EmailLib.c"
2677int __ste_email_encryptionKey0 = 0;
2678#line 149 "EmailLib.c"
2679int __ste_email_encryptionKey1 = 0;
2680#line 151 "EmailLib.c"
2681int getEmailEncryptionKey(int handle )
2682{ int retValue_acc ;
2683
2684 {
2685#line 158 "EmailLib.c"
2686 if (handle == 1) {
2687#line 1208
2688 retValue_acc = __ste_email_encryptionKey0;
2689#line 1210
2690 return (retValue_acc);
2691 } else {
2692#line 1212
2693 if (handle == 2) {
2694#line 1217
2695 retValue_acc = __ste_email_encryptionKey1;
2696#line 1219
2697 return (retValue_acc);
2698 } else {
2699#line 1225 "EmailLib.c"
2700 retValue_acc = 0;
2701#line 1227
2702 return (retValue_acc);
2703 }
2704 }
2705#line 1234 "EmailLib.c"
2706 return (retValue_acc);
2707}
2708}
2709#line 161 "EmailLib.c"
2710void setEmailEncryptionKey(int handle , int value )
2711{
2712
2713 {
2714#line 167
2715 if (handle == 1) {
2716#line 163
2717 __ste_email_encryptionKey0 = value;
2718 } else {
2719#line 164
2720 if (handle == 2) {
2721#line 165
2722 __ste_email_encryptionKey1 = value;
2723 } else {
2724
2725 }
2726 }
2727#line 1265 "EmailLib.c"
2728 return;
2729}
2730}
2731#line 169 "EmailLib.c"
2732int __ste_email_isSigned0 = 0;
2733#line 171 "EmailLib.c"
2734int __ste_email_isSigned1 = 0;
2735#line 173 "EmailLib.c"
2736int isSigned(int handle )
2737{ int retValue_acc ;
2738
2739 {
2740#line 180 "EmailLib.c"
2741 if (handle == 1) {
2742#line 1290
2743 retValue_acc = __ste_email_isSigned0;
2744#line 1292
2745 return (retValue_acc);
2746 } else {
2747#line 1294
2748 if (handle == 2) {
2749#line 1299
2750 retValue_acc = __ste_email_isSigned1;
2751#line 1301
2752 return (retValue_acc);
2753 } else {
2754#line 1307 "EmailLib.c"
2755 retValue_acc = 0;
2756#line 1309
2757 return (retValue_acc);
2758 }
2759 }
2760#line 1316 "EmailLib.c"
2761 return (retValue_acc);
2762}
2763}
2764#line 183 "EmailLib.c"
2765void setEmailIsSigned(int handle , int value )
2766{
2767
2768 {
2769#line 189
2770 if (handle == 1) {
2771#line 185
2772 __ste_email_isSigned0 = value;
2773 } else {
2774#line 186
2775 if (handle == 2) {
2776#line 187
2777 __ste_email_isSigned1 = value;
2778 } else {
2779
2780 }
2781 }
2782#line 1347 "EmailLib.c"
2783 return;
2784}
2785}
2786#line 191 "EmailLib.c"
2787int __ste_email_signKey0 = 0;
2788#line 193 "EmailLib.c"
2789int __ste_email_signKey1 = 0;
2790#line 195 "EmailLib.c"
2791int getEmailSignKey(int handle )
2792{ int retValue_acc ;
2793
2794 {
2795#line 202 "EmailLib.c"
2796 if (handle == 1) {
2797#line 1372
2798 retValue_acc = __ste_email_signKey0;
2799#line 1374
2800 return (retValue_acc);
2801 } else {
2802#line 1376
2803 if (handle == 2) {
2804#line 1381
2805 retValue_acc = __ste_email_signKey1;
2806#line 1383
2807 return (retValue_acc);
2808 } else {
2809#line 1389 "EmailLib.c"
2810 retValue_acc = 0;
2811#line 1391
2812 return (retValue_acc);
2813 }
2814 }
2815#line 1398 "EmailLib.c"
2816 return (retValue_acc);
2817}
2818}
2819#line 205 "EmailLib.c"
2820void setEmailSignKey(int handle , int value )
2821{
2822
2823 {
2824#line 211
2825 if (handle == 1) {
2826#line 207
2827 __ste_email_signKey0 = value;
2828 } else {
2829#line 208
2830 if (handle == 2) {
2831#line 209
2832 __ste_email_signKey1 = value;
2833 } else {
2834
2835 }
2836 }
2837#line 1429 "EmailLib.c"
2838 return;
2839}
2840}
2841#line 213 "EmailLib.c"
2842int __ste_email_isSignatureVerified0 ;
2843#line 215 "EmailLib.c"
2844int __ste_email_isSignatureVerified1 ;
2845#line 217 "EmailLib.c"
2846int isVerified(int handle )
2847{ int retValue_acc ;
2848
2849 {
2850#line 224 "EmailLib.c"
2851 if (handle == 1) {
2852#line 1454
2853 retValue_acc = __ste_email_isSignatureVerified0;
2854#line 1456
2855 return (retValue_acc);
2856 } else {
2857#line 1458
2858 if (handle == 2) {
2859#line 1463
2860 retValue_acc = __ste_email_isSignatureVerified1;
2861#line 1465
2862 return (retValue_acc);
2863 } else {
2864#line 1471 "EmailLib.c"
2865 retValue_acc = 0;
2866#line 1473
2867 return (retValue_acc);
2868 }
2869 }
2870#line 1480 "EmailLib.c"
2871 return (retValue_acc);
2872}
2873}
2874#line 227 "EmailLib.c"
2875void setEmailIsSignatureVerified(int handle , int value )
2876{
2877
2878 {
2879#line 233
2880 if (handle == 1) {
2881#line 229
2882 __ste_email_isSignatureVerified0 = value;
2883 } else {
2884#line 230
2885 if (handle == 2) {
2886#line 231
2887 __ste_email_isSignatureVerified1 = value;
2888 } else {
2889
2890 }
2891 }
2892#line 1511 "EmailLib.c"
2893 return;
2894}
2895}
2896#line 1 "featureselect.o"
2897#pragma merger(0,"featureselect.i","")
2898#line 41 "featureselect.h"
2899int select_one(void) ;
2900#line 43
2901void select_features(void) ;
2902#line 45
2903void select_helpers(void) ;
2904#line 47
2905int valid_product(void) ;
2906#line 8 "featureselect.c"
2907int select_one(void)
2908{ int retValue_acc ;
2909 int choice = __VERIFIER_nondet_int();
2910
2911 {
2912#line 84 "featureselect.c"
2913 retValue_acc = choice;
2914#line 86
2915 return (retValue_acc);
2916#line 93
2917 return (retValue_acc);
2918}
2919}
2920#line 14 "featureselect.c"
2921void select_features(void)
2922{
2923
2924 {
2925#line 115 "featureselect.c"
2926 return;
2927}
2928}
2929#line 20 "featureselect.c"
2930void select_helpers(void)
2931{
2932
2933 {
2934#line 133 "featureselect.c"
2935 return;
2936}
2937}
2938#line 25 "featureselect.c"
2939int valid_product(void)
2940{ int retValue_acc ;
2941
2942 {
2943#line 151 "featureselect.c"
2944 retValue_acc = 1;
2945#line 153
2946 return (retValue_acc);
2947#line 160
2948 return (retValue_acc);
2949}
2950}
2951#line 1 "Client.o"
2952#pragma merger(0,"Client.i","")
2953#line 688 "/usr/include/stdio.h"
2954extern int puts(char const *__s ) ;
2955#line 14 "Client.h"
2956void queue(int client , int msg ) ;
2957#line 17
2958int is_queue_empty(void) ;
2959#line 19
2960int get_queued_client(void) ;
2961#line 21
2962int get_queued_email(void) ;
2963#line 24
2964void mail(int client , int msg ) ;
2965#line 26
2966void outgoing(int client , int msg ) ;
2967#line 28
2968void deliver(int client , int msg ) ;
2969#line 30
2970void incoming(int client , int msg ) ;
2971#line 32
2972int createClient(char *name ) ;
2973#line 35
2974void sendEmail(int sender , int receiver ) ;
2975#line 40
2976int isKeyPairValid(int publicKey , int privateKey ) ;
2977#line 44
2978void generateKeyPair(int client , int seed ) ;
2979#line 45
2980void sendToAddressBook(int client , int msg ) ;
2981#line 47
2982void sign(int client , int msg ) ;
2983#line 49
2984void forward(int client , int msg ) ;
2985#line 51
2986void verify(int client , int msg ) ;
2987#line 6 "Client.c"
2988int queue_empty = 1;
2989#line 9 "Client.c"
2990int queued_message ;
2991#line 12 "Client.c"
2992int queued_client ;
2993#line 18 "Client.c"
2994void mail(int client , int msg )
2995{ int tmp ;
2996
2997 {
2998 {
2999#line 19
3000 puts("mail sent");
3001#line 20
3002 tmp = getEmailTo(msg);
3003#line 20
3004 incoming(tmp, msg);
3005 }
3006#line 737 "Client.c"
3007 return;
3008}
3009}
3010#line 27 "Client.c"
3011void outgoing__wrappee__Keys(int client , int msg )
3012{ int tmp ;
3013
3014 {
3015 {
3016#line 28
3017 tmp = getClientId(client);
3018#line 28
3019 setEmailFrom(msg, tmp);
3020#line 29
3021 mail(client, msg);
3022 }
3023#line 759 "Client.c"
3024 return;
3025}
3026}
3027#line 33 "Client.c"
3028void outgoing__wrappee__Encrypt(int client , int msg )
3029{ int receiver ;
3030 int tmp ;
3031 int pubkey ;
3032 int tmp___0 ;
3033
3034 {
3035 {
3036#line 36
3037 tmp = getEmailTo(msg);
3038#line 36
3039 receiver = tmp;
3040#line 37
3041 tmp___0 = findPublicKey(client, receiver);
3042#line 37
3043 pubkey = tmp___0;
3044 }
3045#line 38
3046 if (pubkey) {
3047 {
3048#line 39
3049 setEmailEncryptionKey(msg, pubkey);
3050#line 40
3051 setEmailIsEncrypted(msg, 1);
3052 }
3053 } else {
3054
3055 }
3056 {
3057#line 45
3058 outgoing__wrappee__Keys(client, msg);
3059 }
3060#line 794 "Client.c"
3061 return;
3062}
3063}
3064#line 52 "Client.c"
3065void outgoing__wrappee__AddressBook(int client , int msg )
3066{ int size ;
3067 int tmp ;
3068 int receiver ;
3069 int tmp___0 ;
3070 int second ;
3071 int tmp___1 ;
3072 int tmp___2 ;
3073
3074 {
3075 {
3076#line 54
3077 tmp = getClientAddressBookSize(client);
3078#line 54
3079 size = tmp;
3080 }
3081#line 56
3082 if (size) {
3083 {
3084#line 57
3085 sendToAddressBook(client, msg);
3086#line 58
3087 puts("sending to alias in address book\n");
3088#line 59
3089 tmp___0 = getEmailTo(msg);
3090#line 59
3091 receiver = tmp___0;
3092#line 61
3093 puts("sending to second receipient\n");
3094#line 62
3095 tmp___1 = getClientAddressBookAddress(client, 1);
3096#line 62
3097 second = tmp___1;
3098#line 63
3099 setEmailTo(msg, second);
3100#line 64
3101 outgoing__wrappee__Encrypt(client, msg);
3102#line 67
3103 tmp___2 = getClientAddressBookAddress(client, 0);
3104#line 67
3105 setEmailTo(msg, tmp___2);
3106#line 68
3107 outgoing__wrappee__Encrypt(client, msg);
3108 }
3109 } else {
3110 {
3111#line 70
3112 outgoing__wrappee__Encrypt(client, msg);
3113 }
3114 }
3115#line 844 "Client.c"
3116 return;
3117}
3118}
3119#line 78 "Client.c"
3120void outgoing(int client , int msg )
3121{
3122
3123 {
3124 {
3125#line 79
3126 sign(client, msg);
3127#line 80
3128 outgoing__wrappee__AddressBook(client, msg);
3129 }
3130#line 866 "Client.c"
3131 return;
3132}
3133}
3134#line 868
3135void __utac_acc__VerifyForward_spec__1(int client , int msg ) ;
3136#line 87 "Client.c"
3137void deliver(int client , int msg )
3138{ int __utac__ad__arg1 ;
3139 int __utac__ad__arg2 ;
3140
3141 {
3142 {
3143#line 879 "Client.c"
3144 __utac__ad__arg1 = client;
3145#line 880
3146 __utac__ad__arg2 = msg;
3147#line 881
3148 __utac_acc__VerifyForward_spec__1(__utac__ad__arg1, __utac__ad__arg2);
3149#line 88 "Client.c"
3150 puts("mail delivered\n");
3151 }
3152#line 896 "Client.c"
3153 return;
3154}
3155}
3156#line 95 "Client.c"
3157void incoming__wrappee__Sign(int client , int msg )
3158{
3159
3160 {
3161 {
3162#line 96
3163 deliver(client, msg);
3164 }
3165#line 916 "Client.c"
3166 return;
3167}
3168}
3169#line 102 "Client.c"
3170void incoming__wrappee__Forward(int client , int msg )
3171{ int fwreceiver ;
3172 int tmp ;
3173
3174 {
3175 {
3176#line 103
3177 incoming__wrappee__Sign(client, msg);
3178#line 104
3179 tmp = getClientForwardReceiver(client);
3180#line 104
3181 fwreceiver = tmp;
3182 }
3183#line 105
3184 if (fwreceiver) {
3185 {
3186#line 107
3187 setEmailTo(msg, fwreceiver);
3188#line 108
3189 forward(client, msg);
3190 }
3191 } else {
3192
3193 }
3194#line 947 "Client.c"
3195 return;
3196}
3197}
3198#line 116 "Client.c"
3199void incoming__wrappee__Verify(int client , int msg )
3200{
3201
3202 {
3203 {
3204#line 117
3205 verify(client, msg);
3206#line 118
3207 incoming__wrappee__Forward(client, msg);
3208 }
3209#line 969 "Client.c"
3210 return;
3211}
3212}
3213#line 123 "Client.c"
3214void incoming(int client , int msg )
3215{ int privkey ;
3216 int tmp ;
3217 int tmp___0 ;
3218 int tmp___1 ;
3219 int tmp___2 ;
3220
3221 {
3222 {
3223#line 126
3224 tmp = getClientPrivateKey(client);
3225#line 126
3226 privkey = tmp;
3227 }
3228#line 127
3229 if (privkey) {
3230 {
3231#line 135
3232 tmp___0 = isEncrypted(msg);
3233 }
3234#line 135
3235 if (tmp___0) {
3236 {
3237#line 135
3238 tmp___1 = getEmailEncryptionKey(msg);
3239#line 135
3240 tmp___2 = isKeyPairValid(tmp___1, privkey);
3241 }
3242#line 135
3243 if (tmp___2) {
3244 {
3245#line 132
3246 setEmailIsEncrypted(msg, 0);
3247#line 133
3248 setEmailEncryptionKey(msg, 0);
3249 }
3250 } else {
3251
3252 }
3253 } else {
3254
3255 }
3256 } else {
3257
3258 }
3259 {
3260#line 138
3261 incoming__wrappee__Verify(client, msg);
3262 }
3263#line 1003 "Client.c"
3264 return;
3265}
3266}
3267#line 142 "Client.c"
3268int createClient(char *name )
3269{ int retValue_acc ;
3270 int client ;
3271 int tmp ;
3272
3273 {
3274 {
3275#line 143
3276 tmp = initClient();
3277#line 143
3278 client = tmp;
3279#line 1025 "Client.c"
3280 retValue_acc = client;
3281 }
3282#line 1027
3283 return (retValue_acc);
3284#line 1034
3285 return (retValue_acc);
3286}
3287}
3288#line 150 "Client.c"
3289void sendEmail(int sender , int receiver )
3290{ int email ;
3291 int tmp ;
3292
3293 {
3294 {
3295#line 151
3296 tmp = createEmail(0, receiver);
3297#line 151
3298 email = tmp;
3299#line 152
3300 outgoing(sender, email);
3301 }
3302#line 1062 "Client.c"
3303 return;
3304}
3305}
3306#line 160 "Client.c"
3307void queue(int client , int msg )
3308{
3309
3310 {
3311#line 161
3312 queue_empty = 0;
3313#line 162
3314 queued_message = msg;
3315#line 163
3316 queued_client = client;
3317#line 1086 "Client.c"
3318 return;
3319}
3320}
3321#line 169 "Client.c"
3322int is_queue_empty(void)
3323{ int retValue_acc ;
3324
3325 {
3326#line 1104 "Client.c"
3327 retValue_acc = queue_empty;
3328#line 1106
3329 return (retValue_acc);
3330#line 1113
3331 return (retValue_acc);
3332}
3333}
3334#line 176 "Client.c"
3335int get_queued_client(void)
3336{ int retValue_acc ;
3337
3338 {
3339#line 1135 "Client.c"
3340 retValue_acc = queued_client;
3341#line 1137
3342 return (retValue_acc);
3343#line 1144
3344 return (retValue_acc);
3345}
3346}
3347#line 183 "Client.c"
3348int get_queued_email(void)
3349{ int retValue_acc ;
3350
3351 {
3352#line 1166 "Client.c"
3353 retValue_acc = queued_message;
3354#line 1168
3355 return (retValue_acc);
3356#line 1175
3357 return (retValue_acc);
3358}
3359}
3360#line 189 "Client.c"
3361int isKeyPairValid(int publicKey , int privateKey )
3362{ int retValue_acc ;
3363 char const * __restrict __cil_tmp4 ;
3364
3365 {
3366 {
3367#line 190
3368 __cil_tmp4 = (char const * __restrict )"keypair valid %d %d";
3369#line 190
3370 printf(__cil_tmp4, publicKey, privateKey);
3371 }
3372#line 191 "Client.c"
3373 if (! publicKey) {
3374#line 1200 "Client.c"
3375 retValue_acc = 0;
3376#line 1202
3377 return (retValue_acc);
3378 } else {
3379#line 191 "Client.c"
3380 if (! privateKey) {
3381#line 1200 "Client.c"
3382 retValue_acc = 0;
3383#line 1202
3384 return (retValue_acc);
3385 } else {
3386
3387 }
3388 }
3389#line 1207 "Client.c"
3390 retValue_acc = privateKey == publicKey;
3391#line 1209
3392 return (retValue_acc);
3393#line 1216
3394 return (retValue_acc);
3395}
3396}
3397#line 199 "Client.c"
3398void generateKeyPair(int client , int seed )
3399{
3400
3401 {
3402 {
3403#line 200
3404 setClientPrivateKey(client, seed);
3405 }
3406#line 1240 "Client.c"
3407 return;
3408}
3409}
3410#line 205 "Client.c"
3411void sendToAddressBook(int client , int msg )
3412{
3413
3414 {
3415#line 1258 "Client.c"
3416 return;
3417}
3418}
3419#line 211 "Client.c"
3420void sign(int client , int msg )
3421{ int privkey ;
3422 int tmp ;
3423
3424 {
3425 {
3426#line 212
3427 tmp = getClientPrivateKey(client);
3428#line 212
3429 privkey = tmp;
3430 }
3431#line 213
3432 if (! privkey) {
3433#line 214
3434 return;
3435 } else {
3436
3437 }
3438 {
3439#line 215
3440 setEmailIsSigned(msg, 1);
3441#line 216
3442 setEmailSignKey(msg, privkey);
3443 }
3444#line 1288 "Client.c"
3445 return;
3446}
3447}
3448#line 221 "Client.c"
3449void forward(int client , int msg )
3450{
3451
3452 {
3453 {
3454#line 222
3455 puts("Forwarding message.\n");
3456#line 223
3457 printMail(msg);
3458#line 224
3459 queue(client, msg);
3460 }
3461#line 1312 "Client.c"
3462 return;
3463}
3464}
3465#line 230 "Client.c"
3466void verify(int client , int msg )
3467{ int tmp ;
3468 int tmp___0 ;
3469 int pubkey ;
3470 int tmp___1 ;
3471 int tmp___2 ;
3472 int tmp___3 ;
3473 int tmp___4 ;
3474
3475 {
3476 {
3477#line 235
3478 tmp = isReadable(msg);
3479 }
3480#line 235
3481 if (tmp) {
3482 {
3483#line 235
3484 tmp___0 = isSigned(msg);
3485 }
3486#line 235
3487 if (tmp___0) {
3488
3489 } else {
3490#line 236
3491 return;
3492 }
3493 } else {
3494#line 236
3495 return;
3496 }
3497 {
3498#line 235
3499 tmp___1 = getEmailFrom(msg);
3500#line 235
3501 tmp___2 = findPublicKey(client, tmp___1);
3502#line 235
3503 pubkey = tmp___2;
3504 }
3505#line 236
3506 if (pubkey) {
3507 {
3508#line 236
3509 tmp___3 = getEmailSignKey(msg);
3510#line 236
3511 tmp___4 = isKeyPairValid(tmp___3, pubkey);
3512 }
3513#line 236
3514 if (tmp___4) {
3515 {
3516#line 237
3517 setEmailIsSignatureVerified(msg, 1);
3518 }
3519 } else {
3520
3521 }
3522 } else {
3523
3524 }
3525#line 1343 "Client.c"
3526 return;
3527}
3528}
3529#line 1 "VerifyForward_spec.o"
3530#pragma merger(0,"VerifyForward_spec.i","")
3531#line 4 "wsllib.h"
3532void __automaton_fail(void) ;
3533#line 12 "VerifyForward_spec.c"
3534void __utac_acc__VerifyForward_spec__1(int client , int msg )
3535{ int pubkey ;
3536 int tmp ;
3537 int tmp___0 ;
3538 int tmp___1 ;
3539
3540 {
3541 {
3542#line 15
3543 puts("before deliver\n");
3544#line 17
3545 tmp___1 = isVerified(msg);
3546 }
3547#line 17
3548 if (tmp___1) {
3549 {
3550#line 18
3551 tmp = getEmailFrom(msg);
3552#line 18
3553 tmp___0 = findPublicKey(client, tmp);
3554#line 18
3555 pubkey = tmp___0;
3556 }
3557#line 19
3558 if (pubkey == 0) {
3559 {
3560#line 20
3561 __automaton_fail();
3562 }
3563 } else {
3564
3565 }
3566 } else {
3567
3568 }
3569#line 20
3570 return;
3571}
3572}
3573#line 1 "wsllib_check.o"
3574#pragma merger(0,"wsllib_check.i","")
3575#line 3 "wsllib_check.c"
3576void __automaton_fail(void)
3577{
3578
3579 {
3580 goto ERROR;
3581 ERROR: ;
3582#line 53 "wsllib_check.c"
3583 return;
3584}
3585}
3586#line 1 "libacc.o"
3587#pragma merger(0,"libacc.i","")
3588#line 73 "/usr/include/assert.h"
3589extern __attribute__((__nothrow__, __noreturn__)) void __assert_fail(char const *__assertion ,
3590 char const *__file ,
3591 unsigned int __line ,
3592 char const *__function ) ;
3593#line 471 "/usr/include/stdlib.h"
3594extern __attribute__((__nothrow__)) void *malloc(size_t __size ) __attribute__((__malloc__)) ;
3595#line 488
3596extern __attribute__((__nothrow__)) void free(void *__ptr ) ;
3597#line 32 "libacc.c"
3598void __utac__exception__cf_handler_set(void *exception , int (*cflow_func)(int ,
3599 int ) ,
3600 int val )
3601{ struct __UTAC__EXCEPTION *excep ;
3602 struct __UTAC__CFLOW_FUNC *cf ;
3603 void *tmp ;
3604 unsigned long __cil_tmp7 ;
3605 unsigned long __cil_tmp8 ;
3606 unsigned long __cil_tmp9 ;
3607 unsigned long __cil_tmp10 ;
3608 unsigned long __cil_tmp11 ;
3609 unsigned long __cil_tmp12 ;
3610 unsigned long __cil_tmp13 ;
3611 unsigned long __cil_tmp14 ;
3612 int (**mem_15)(int , int ) ;
3613 int *mem_16 ;
3614 struct __UTAC__CFLOW_FUNC **mem_17 ;
3615 struct __UTAC__CFLOW_FUNC **mem_18 ;
3616 struct __UTAC__CFLOW_FUNC **mem_19 ;
3617
3618 {
3619 {
3620#line 33
3621 excep = (struct __UTAC__EXCEPTION *)exception;
3622#line 34
3623 tmp = malloc(24UL);
3624#line 34
3625 cf = (struct __UTAC__CFLOW_FUNC *)tmp;
3626#line 36
3627 mem_15 = (int (**)(int , int ))cf;
3628#line 36
3629 *mem_15 = cflow_func;
3630#line 37
3631 __cil_tmp7 = (unsigned long )cf;
3632#line 37
3633 __cil_tmp8 = __cil_tmp7 + 8;
3634#line 37
3635 mem_16 = (int *)__cil_tmp8;
3636#line 37
3637 *mem_16 = val;
3638#line 38
3639 __cil_tmp9 = (unsigned long )cf;
3640#line 38
3641 __cil_tmp10 = __cil_tmp9 + 16;
3642#line 38
3643 __cil_tmp11 = (unsigned long )excep;
3644#line 38
3645 __cil_tmp12 = __cil_tmp11 + 24;
3646#line 38
3647 mem_17 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp10;
3648#line 38
3649 mem_18 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp12;
3650#line 38
3651 *mem_17 = *mem_18;
3652#line 39
3653 __cil_tmp13 = (unsigned long )excep;
3654#line 39
3655 __cil_tmp14 = __cil_tmp13 + 24;
3656#line 39
3657 mem_19 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp14;
3658#line 39
3659 *mem_19 = cf;
3660 }
3661#line 654 "libacc.c"
3662 return;
3663}
3664}
3665#line 44 "libacc.c"
3666void __utac__exception__cf_handler_free(void *exception )
3667{ struct __UTAC__EXCEPTION *excep ;
3668 struct __UTAC__CFLOW_FUNC *cf ;
3669 struct __UTAC__CFLOW_FUNC *tmp ;
3670 unsigned long __cil_tmp5 ;
3671 unsigned long __cil_tmp6 ;
3672 struct __UTAC__CFLOW_FUNC *__cil_tmp7 ;
3673 unsigned long __cil_tmp8 ;
3674 unsigned long __cil_tmp9 ;
3675 unsigned long __cil_tmp10 ;
3676 unsigned long __cil_tmp11 ;
3677 void *__cil_tmp12 ;
3678 unsigned long __cil_tmp13 ;
3679 unsigned long __cil_tmp14 ;
3680 struct __UTAC__CFLOW_FUNC **mem_15 ;
3681 struct __UTAC__CFLOW_FUNC **mem_16 ;
3682 struct __UTAC__CFLOW_FUNC **mem_17 ;
3683
3684 {
3685#line 45
3686 excep = (struct __UTAC__EXCEPTION *)exception;
3687#line 46
3688 __cil_tmp5 = (unsigned long )excep;
3689#line 46
3690 __cil_tmp6 = __cil_tmp5 + 24;
3691#line 46
3692 mem_15 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp6;
3693#line 46
3694 cf = *mem_15;
3695 {
3696#line 49
3697 while (1) {
3698 while_1_continue: ;
3699 {
3700#line 49
3701 __cil_tmp7 = (struct __UTAC__CFLOW_FUNC *)0;
3702#line 49
3703 __cil_tmp8 = (unsigned long )__cil_tmp7;
3704#line 49
3705 __cil_tmp9 = (unsigned long )cf;
3706#line 49
3707 if (__cil_tmp9 != __cil_tmp8) {
3708
3709 } else {
3710 goto while_1_break;
3711 }
3712 }
3713 {
3714#line 50
3715 tmp = cf;
3716#line 51
3717 __cil_tmp10 = (unsigned long )cf;
3718#line 51
3719 __cil_tmp11 = __cil_tmp10 + 16;
3720#line 51
3721 mem_16 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp11;
3722#line 51
3723 cf = *mem_16;
3724#line 52
3725 __cil_tmp12 = (void *)tmp;
3726#line 52
3727 free(__cil_tmp12);
3728 }
3729 }
3730 while_1_break: ;
3731 }
3732#line 55
3733 __cil_tmp13 = (unsigned long )excep;
3734#line 55
3735 __cil_tmp14 = __cil_tmp13 + 24;
3736#line 55
3737 mem_17 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp14;
3738#line 55
3739 *mem_17 = (struct __UTAC__CFLOW_FUNC *)0;
3740#line 694 "libacc.c"
3741 return;
3742}
3743}
3744#line 59 "libacc.c"
3745void __utac__exception__cf_handler_reset(void *exception )
3746{ struct __UTAC__EXCEPTION *excep ;
3747 struct __UTAC__CFLOW_FUNC *cf ;
3748 unsigned long __cil_tmp5 ;
3749 unsigned long __cil_tmp6 ;
3750 struct __UTAC__CFLOW_FUNC *__cil_tmp7 ;
3751 unsigned long __cil_tmp8 ;
3752 unsigned long __cil_tmp9 ;
3753 int (*__cil_tmp10)(int , int ) ;
3754 unsigned long __cil_tmp11 ;
3755 unsigned long __cil_tmp12 ;
3756 int __cil_tmp13 ;
3757 unsigned long __cil_tmp14 ;
3758 unsigned long __cil_tmp15 ;
3759 struct __UTAC__CFLOW_FUNC **mem_16 ;
3760 int (**mem_17)(int , int ) ;
3761 int *mem_18 ;
3762 struct __UTAC__CFLOW_FUNC **mem_19 ;
3763
3764 {
3765#line 60
3766 excep = (struct __UTAC__EXCEPTION *)exception;
3767#line 61
3768 __cil_tmp5 = (unsigned long )excep;
3769#line 61
3770 __cil_tmp6 = __cil_tmp5 + 24;
3771#line 61
3772 mem_16 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp6;
3773#line 61
3774 cf = *mem_16;
3775 {
3776#line 64
3777 while (1) {
3778 while_2_continue: ;
3779 {
3780#line 64
3781 __cil_tmp7 = (struct __UTAC__CFLOW_FUNC *)0;
3782#line 64
3783 __cil_tmp8 = (unsigned long )__cil_tmp7;
3784#line 64
3785 __cil_tmp9 = (unsigned long )cf;
3786#line 64
3787 if (__cil_tmp9 != __cil_tmp8) {
3788
3789 } else {
3790 goto while_2_break;
3791 }
3792 }
3793 {
3794#line 65
3795 mem_17 = (int (**)(int , int ))cf;
3796#line 65
3797 __cil_tmp10 = *mem_17;
3798#line 65
3799 __cil_tmp11 = (unsigned long )cf;
3800#line 65
3801 __cil_tmp12 = __cil_tmp11 + 8;
3802#line 65
3803 mem_18 = (int *)__cil_tmp12;
3804#line 65
3805 __cil_tmp13 = *mem_18;
3806#line 65
3807 (*__cil_tmp10)(4, __cil_tmp13);
3808#line 66
3809 __cil_tmp14 = (unsigned long )cf;
3810#line 66
3811 __cil_tmp15 = __cil_tmp14 + 16;
3812#line 66
3813 mem_19 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp15;
3814#line 66
3815 cf = *mem_19;
3816 }
3817 }
3818 while_2_break: ;
3819 }
3820 {
3821#line 69
3822 __utac__exception__cf_handler_free(exception);
3823 }
3824#line 732 "libacc.c"
3825 return;
3826}
3827}
3828#line 80 "libacc.c"
3829void *__utac__error_stack_mgt(void *env , int mode , int count ) ;
3830#line 80 "libacc.c"
3831static struct __ACC__ERR *head = (struct __ACC__ERR *)0;
3832#line 79 "libacc.c"
3833void *__utac__error_stack_mgt(void *env , int mode , int count )
3834{ void *retValue_acc ;
3835 struct __ACC__ERR *new ;
3836 void *tmp ;
3837 struct __ACC__ERR *temp ;
3838 struct __ACC__ERR *next ;
3839 void *excep ;
3840 unsigned long __cil_tmp10 ;
3841 unsigned long __cil_tmp11 ;
3842 unsigned long __cil_tmp12 ;
3843 unsigned long __cil_tmp13 ;
3844 void *__cil_tmp14 ;
3845 unsigned long __cil_tmp15 ;
3846 unsigned long __cil_tmp16 ;
3847 void *__cil_tmp17 ;
3848 void **mem_18 ;
3849 struct __ACC__ERR **mem_19 ;
3850 struct __ACC__ERR **mem_20 ;
3851 void **mem_21 ;
3852 struct __ACC__ERR **mem_22 ;
3853 void **mem_23 ;
3854 void **mem_24 ;
3855
3856 {
3857#line 82 "libacc.c"
3858 if (count == 0) {
3859#line 758 "libacc.c"
3860 return (retValue_acc);
3861 } else {
3862
3863 }
3864#line 86 "libacc.c"
3865 if (mode == 0) {
3866 {
3867#line 87
3868 tmp = malloc(16UL);
3869#line 87
3870 new = (struct __ACC__ERR *)tmp;
3871#line 88
3872 mem_18 = (void **)new;
3873#line 88
3874 *mem_18 = env;
3875#line 89
3876 __cil_tmp10 = (unsigned long )new;
3877#line 89
3878 __cil_tmp11 = __cil_tmp10 + 8;
3879#line 89
3880 mem_19 = (struct __ACC__ERR **)__cil_tmp11;
3881#line 89
3882 *mem_19 = head;
3883#line 90
3884 head = new;
3885#line 776 "libacc.c"
3886 retValue_acc = (void *)new;
3887 }
3888#line 778
3889 return (retValue_acc);
3890 } else {
3891
3892 }
3893#line 94 "libacc.c"
3894 if (mode == 1) {
3895#line 95
3896 temp = head;
3897 {
3898#line 98
3899 while (1) {
3900 while_3_continue: ;
3901#line 98
3902 if (count > 1) {
3903
3904 } else {
3905 goto while_3_break;
3906 }
3907 {
3908#line 99
3909 __cil_tmp12 = (unsigned long )temp;
3910#line 99
3911 __cil_tmp13 = __cil_tmp12 + 8;
3912#line 99
3913 mem_20 = (struct __ACC__ERR **)__cil_tmp13;
3914#line 99
3915 next = *mem_20;
3916#line 100
3917 mem_21 = (void **)temp;
3918#line 100
3919 excep = *mem_21;
3920#line 101
3921 __cil_tmp14 = (void *)temp;
3922#line 101
3923 free(__cil_tmp14);
3924#line 102
3925 __utac__exception__cf_handler_reset(excep);
3926#line 103
3927 temp = next;
3928#line 104
3929 count = count - 1;
3930 }
3931 }
3932 while_3_break: ;
3933 }
3934 {
3935#line 107
3936 __cil_tmp15 = (unsigned long )temp;
3937#line 107
3938 __cil_tmp16 = __cil_tmp15 + 8;
3939#line 107
3940 mem_22 = (struct __ACC__ERR **)__cil_tmp16;
3941#line 107
3942 head = *mem_22;
3943#line 108
3944 mem_23 = (void **)temp;
3945#line 108
3946 excep = *mem_23;
3947#line 109
3948 __cil_tmp17 = (void *)temp;
3949#line 109
3950 free(__cil_tmp17);
3951#line 110
3952 __utac__exception__cf_handler_reset(excep);
3953#line 820 "libacc.c"
3954 retValue_acc = excep;
3955 }
3956#line 822
3957 return (retValue_acc);
3958 } else {
3959
3960 }
3961#line 114
3962 if (mode == 2) {
3963#line 118 "libacc.c"
3964 if (head) {
3965#line 831
3966 mem_24 = (void **)head;
3967#line 831
3968 retValue_acc = *mem_24;
3969#line 833
3970 return (retValue_acc);
3971 } else {
3972#line 837 "libacc.c"
3973 retValue_acc = (void *)0;
3974#line 839
3975 return (retValue_acc);
3976 }
3977 } else {
3978
3979 }
3980#line 846 "libacc.c"
3981 return (retValue_acc);
3982}
3983}
3984#line 122 "libacc.c"
3985void *__utac__get_this_arg(int i , struct JoinPoint *this )
3986{ void *retValue_acc ;
3987 unsigned long __cil_tmp4 ;
3988 unsigned long __cil_tmp5 ;
3989 int __cil_tmp6 ;
3990 int __cil_tmp7 ;
3991 unsigned long __cil_tmp8 ;
3992 unsigned long __cil_tmp9 ;
3993 void **__cil_tmp10 ;
3994 void **__cil_tmp11 ;
3995 int *mem_12 ;
3996 void ***mem_13 ;
3997
3998 {
3999#line 123
4000 if (i > 0) {
4001 {
4002#line 123
4003 __cil_tmp4 = (unsigned long )this;
4004#line 123
4005 __cil_tmp5 = __cil_tmp4 + 16;
4006#line 123
4007 mem_12 = (int *)__cil_tmp5;
4008#line 123
4009 __cil_tmp6 = *mem_12;
4010#line 123
4011 if (i <= __cil_tmp6) {
4012
4013 } else {
4014 {
4015#line 123
4016 __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
4017 123U, "__utac__get_this_arg");
4018 }
4019 }
4020 }
4021 } else {
4022 {
4023#line 123
4024 __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
4025 123U, "__utac__get_this_arg");
4026 }
4027 }
4028#line 870 "libacc.c"
4029 __cil_tmp7 = i - 1;
4030#line 870
4031 __cil_tmp8 = (unsigned long )this;
4032#line 870
4033 __cil_tmp9 = __cil_tmp8 + 8;
4034#line 870
4035 mem_13 = (void ***)__cil_tmp9;
4036#line 870
4037 __cil_tmp10 = *mem_13;
4038#line 870
4039 __cil_tmp11 = __cil_tmp10 + __cil_tmp7;
4040#line 870
4041 retValue_acc = *__cil_tmp11;
4042#line 872
4043 return (retValue_acc);
4044#line 879
4045 return (retValue_acc);
4046}
4047}
4048#line 129 "libacc.c"
4049char const *__utac__get_this_argtype(int i , struct JoinPoint *this )
4050{ char const *retValue_acc ;
4051 unsigned long __cil_tmp4 ;
4052 unsigned long __cil_tmp5 ;
4053 int __cil_tmp6 ;
4054 int __cil_tmp7 ;
4055 unsigned long __cil_tmp8 ;
4056 unsigned long __cil_tmp9 ;
4057 char const **__cil_tmp10 ;
4058 char const **__cil_tmp11 ;
4059 int *mem_12 ;
4060 char const ***mem_13 ;
4061
4062 {
4063#line 131
4064 if (i > 0) {
4065 {
4066#line 131
4067 __cil_tmp4 = (unsigned long )this;
4068#line 131
4069 __cil_tmp5 = __cil_tmp4 + 16;
4070#line 131
4071 mem_12 = (int *)__cil_tmp5;
4072#line 131
4073 __cil_tmp6 = *mem_12;
4074#line 131
4075 if (i <= __cil_tmp6) {
4076
4077 } else {
4078 {
4079#line 131
4080 __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
4081 131U, "__utac__get_this_argtype");
4082 }
4083 }
4084 }
4085 } else {
4086 {
4087#line 131
4088 __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
4089 131U, "__utac__get_this_argtype");
4090 }
4091 }
4092#line 903 "libacc.c"
4093 __cil_tmp7 = i - 1;
4094#line 903
4095 __cil_tmp8 = (unsigned long )this;
4096#line 903
4097 __cil_tmp9 = __cil_tmp8 + 24;
4098#line 903
4099 mem_13 = (char const ***)__cil_tmp9;
4100#line 903
4101 __cil_tmp10 = *mem_13;
4102#line 903
4103 __cil_tmp11 = __cil_tmp10 + __cil_tmp7;
4104#line 903
4105 retValue_acc = *__cil_tmp11;
4106#line 905
4107 return (retValue_acc);
4108#line 912
4109 return (retValue_acc);
4110}
4111}
4112#line 1 "Test.o"
4113#pragma merger(0,"Test.i","")
4114#line 2 "Test.h"
4115int bob ;
4116#line 5 "Test.h"
4117int rjh ;
4118#line 8 "Test.h"
4119int chuck ;
4120#line 11
4121void setup_bob(int bob___0 ) ;
4122#line 14
4123void setup_rjh(int rjh___0 ) ;
4124#line 17
4125void setup_chuck(int chuck___0 ) ;
4126#line 26
4127void rjhToBob(void) ;
4128#line 32
4129void setup(void) ;
4130#line 35
4131int main(void) ;
4132#line 39
4133void bobKeyAddChuck(void) ;
4134#line 45
4135void rjhKeyAddChuck(void) ;
4136#line 18 "Test.c"
4137void setup_bob__wrappee__Base(int bob___0 )
4138{
4139
4140 {
4141 {
4142#line 19
4143 setClientId(bob___0, bob___0);
4144 }
4145#line 1334 "Test.c"
4146 return;
4147}
4148}
4149#line 23 "Test.c"
4150void setup_bob(int bob___0 )
4151{
4152
4153 {
4154 {
4155#line 24
4156 setup_bob__wrappee__Base(bob___0);
4157#line 25
4158 setClientPrivateKey(bob___0, 123);
4159 }
4160#line 1356 "Test.c"
4161 return;
4162}
4163}
4164#line 33 "Test.c"
4165void setup_rjh__wrappee__Base(int rjh___0 )
4166{
4167
4168 {
4169 {
4170#line 34
4171 setClientId(rjh___0, rjh___0);
4172 }
4173#line 1376 "Test.c"
4174 return;
4175}
4176}
4177#line 40 "Test.c"
4178void setup_rjh(int rjh___0 )
4179{
4180
4181 {
4182 {
4183#line 42
4184 setup_rjh__wrappee__Base(rjh___0);
4185#line 43
4186 setClientPrivateKey(rjh___0, 456);
4187 }
4188#line 1398 "Test.c"
4189 return;
4190}
4191}
4192#line 50 "Test.c"
4193void setup_chuck__wrappee__Base(int chuck___0 )
4194{
4195
4196 {
4197 {
4198#line 51
4199 setClientId(chuck___0, chuck___0);
4200 }
4201#line 1418 "Test.c"
4202 return;
4203}
4204}
4205#line 57 "Test.c"
4206void setup_chuck(int chuck___0 )
4207{
4208
4209 {
4210 {
4211#line 58
4212 setup_chuck__wrappee__Base(chuck___0);
4213#line 59
4214 setClientPrivateKey(chuck___0, 789);
4215 }
4216#line 1440 "Test.c"
4217 return;
4218}
4219}
4220#line 69 "Test.c"
4221void bobToRjh(void)
4222{ int tmp ;
4223 int tmp___0 ;
4224 int tmp___1 ;
4225
4226 {
4227 {
4228#line 71
4229 puts("Please enter a subject and a message body.\n");
4230#line 72
4231 sendEmail(bob, rjh);
4232#line 73
4233 tmp___1 = is_queue_empty();
4234 }
4235#line 73
4236 if (tmp___1) {
4237
4238 } else {
4239 {
4240#line 74
4241 tmp = get_queued_email();
4242#line 74
4243 tmp___0 = get_queued_client();
4244#line 74
4245 outgoing(tmp___0, tmp);
4246 }
4247 }
4248#line 1467 "Test.c"
4249 return;
4250}
4251}
4252#line 81 "Test.c"
4253void rjhToBob(void)
4254{
4255
4256 {
4257 {
4258#line 83
4259 puts("Please enter a subject and a message body.\n");
4260#line 84
4261 sendEmail(rjh, bob);
4262 }
4263#line 1489 "Test.c"
4264 return;
4265}
4266}
4267#line 88 "Test.c"
4268#line 95 "Test.c"
4269void setup(void)
4270{ char const * __restrict __cil_tmp1 ;
4271 char const * __restrict __cil_tmp2 ;
4272 char const * __restrict __cil_tmp3 ;
4273
4274 {
4275 {
4276#line 96
4277 bob = 1;
4278#line 97
4279 setup_bob(bob);
4280#line 98
4281 __cil_tmp1 = (char const * __restrict )"bob: %d\n";
4282#line 98
4283 printf(__cil_tmp1, bob);
4284#line 100
4285 rjh = 2;
4286#line 101
4287 setup_rjh(rjh);
4288#line 102
4289 __cil_tmp2 = (char const * __restrict )"rjh: %d\n";
4290#line 102
4291 printf(__cil_tmp2, rjh);
4292#line 104
4293 chuck = 3;
4294#line 105
4295 setup_chuck(chuck);
4296#line 106
4297 __cil_tmp3 = (char const * __restrict )"chuck: %d\n";
4298#line 106
4299 printf(__cil_tmp3, chuck);
4300 }
4301#line 1560 "Test.c"
4302 return;
4303}
4304}
4305#line 112 "Test.c"
4306int main(void)
4307{ int retValue_acc ;
4308 int tmp ;
4309
4310 {
4311 {
4312#line 113
4313 select_helpers();
4314#line 114
4315 select_features();
4316#line 115
4317 tmp = valid_product();
4318 }
4319#line 115
4320 if (tmp) {
4321 {
4322#line 116
4323 setup();
4324#line 117
4325 test();
4326 }
4327 } else {
4328
4329 }
4330#line 1591 "Test.c"
4331 return (retValue_acc);
4332}
4333}
4334#line 125 "Test.c"
4335void bobKeyAdd(void)
4336{ int tmp ;
4337 int tmp___0 ;
4338 char const * __restrict __cil_tmp3 ;
4339 char const * __restrict __cil_tmp4 ;
4340
4341 {
4342 {
4343#line 126
4344 createClientKeyringEntry(bob);
4345#line 127
4346 setClientKeyringUser(bob, 0, 2);
4347#line 128
4348 setClientKeyringPublicKey(bob, 0, 456);
4349#line 129
4350 puts("bob added rjhs key");
4351#line 130
4352 tmp = getClientKeyringUser(bob, 0);
4353#line 130
4354 __cil_tmp3 = (char const * __restrict )"%d\n";
4355#line 130
4356 printf(__cil_tmp3, tmp);
4357#line 131
4358 tmp___0 = getClientKeyringPublicKey(bob, 0);
4359#line 131
4360 __cil_tmp4 = (char const * __restrict )"%d\n";
4361#line 131
4362 printf(__cil_tmp4, tmp___0);
4363 }
4364#line 1625 "Test.c"
4365 return;
4366}
4367}
4368#line 137 "Test.c"
4369void rjhKeyAdd(void)
4370{
4371
4372 {
4373 {
4374#line 138
4375 createClientKeyringEntry(rjh);
4376#line 139
4377 setClientKeyringUser(rjh, 0, 1);
4378#line 140
4379 setClientKeyringPublicKey(rjh, 0, 123);
4380 }
4381#line 1649 "Test.c"
4382 return;
4383}
4384}
4385#line 146 "Test.c"
4386void rjhKeyAddChuck(void)
4387{
4388
4389 {
4390 {
4391#line 147
4392 createClientKeyringEntry(rjh);
4393#line 148
4394 setClientKeyringUser(rjh, 0, 3);
4395#line 149
4396 setClientKeyringPublicKey(rjh, 0, 789);
4397 }
4398#line 1673 "Test.c"
4399 return;
4400}
4401}
4402#line 156 "Test.c"
4403void bobKeyAddChuck(void)
4404{
4405
4406 {
4407 {
4408#line 157
4409 createClientKeyringEntry(bob);
4410#line 158
4411 setClientKeyringUser(bob, 1, 3);
4412#line 159
4413 setClientKeyringPublicKey(bob, 1, 789);
4414 }
4415#line 1697 "Test.c"
4416 return;
4417}
4418}
4419#line 165 "Test.c"
4420void chuckKeyAdd(void)
4421{
4422
4423 {
4424 {
4425#line 166
4426 createClientKeyringEntry(chuck);
4427#line 167
4428 setClientKeyringUser(chuck, 0, 1);
4429#line 168
4430 setClientKeyringPublicKey(chuck, 0, 123);
4431 }
4432#line 1721 "Test.c"
4433 return;
4434}
4435}
4436#line 174 "Test.c"
4437void chuckKeyAddRjh(void)
4438{
4439
4440 {
4441 {
4442#line 175
4443 createClientKeyringEntry(chuck);
4444#line 176
4445 setClientKeyringUser(chuck, 0, 2);
4446#line 177
4447 setClientKeyringPublicKey(chuck, 0, 456);
4448 }
4449#line 1745 "Test.c"
4450 return;
4451}
4452}
4453#line 183 "Test.c"
4454void rjhDeletePrivateKey(void)
4455{
4456
4457 {
4458 {
4459#line 184
4460 setClientPrivateKey(rjh, 0);
4461 }
4462#line 1765 "Test.c"
4463 return;
4464}
4465}
4466#line 190 "Test.c"
4467void bobKeyChange(void)
4468{
4469
4470 {
4471 {
4472#line 191
4473 generateKeyPair(bob, 777);
4474 }
4475#line 1785 "Test.c"
4476 return;
4477}
4478}
4479#line 197 "Test.c"
4480void rjhKeyChange(void)
4481{
4482
4483 {
4484 {
4485#line 198
4486 generateKeyPair(rjh, 666);
4487 }
4488#line 1805 "Test.c"
4489 return;
4490}
4491}
4492#line 203 "Test.c"
4493void bobSetAddressBook(void)
4494{
4495
4496 {
4497 {
4498#line 204
4499 setClientAddressBookSize(bob, 1);
4500#line 205
4501 setClientAddressBookAlias(bob, 0, rjh);
4502#line 206
4503 setClientAddressBookAddress(bob, 0, rjh);
4504#line 207
4505 setClientAddressBookAddress(bob, 1, chuck);
4506 }
4507#line 1831 "Test.c"
4508 return;
4509}
4510}
4511#line 213 "Test.c"
4512void rjhEnableForwarding(void)
4513{
4514
4515 {
4516 {
4517#line 214
4518 setClientForwardReceiver(rjh, chuck);
4519 }
4520#line 1851 "Test.c"
4521 return;
4522}
4523}