File: bytecode_api_decl.c

package info (click to toggle)
clamav 0.98.7+dfsg-0+deb6u2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze-lts
  • size: 60,204 kB
  • ctags: 49,129
  • sloc: cpp: 267,090; ansic: 152,211; sh: 35,196; python: 2,630; makefile: 2,220; perl: 1,690; pascal: 1,218; lisp: 184; csh: 117; xml: 38; asm: 32; exp: 4
file content (445 lines) | stat: -rw-r--r-- 21,228 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
/*
 *  ClamAV bytecode internal API
 *  This is an automatically generated file!
 *
 *  Copyright (C) 2009-2013 Sourcefire, Inc.
 *  Copyright (C) 2014 Cisco Systems, Inc. and/or its affiliates. *  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE
 */
#include "cltypes.h"
#include "type_desc.h"
#include "bytecode_api.h"
#include "bytecode_api_impl.h"
#include "bytecode_priv.h"
#include <stdlib.h>

uint32_t cli_bcapi_test1(struct cli_bc_ctx *ctx , uint32_t, uint32_t);
int32_t cli_bcapi_read(struct cli_bc_ctx *ctx , uint8_t*, int32_t);
int32_t cli_bcapi_write(struct cli_bc_ctx *ctx , uint8_t*, int32_t);
int32_t cli_bcapi_seek(struct cli_bc_ctx *ctx , int32_t, uint32_t);
uint32_t cli_bcapi_setvirusname(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_debug_print_str(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_debug_print_uint(struct cli_bc_ctx *ctx , uint32_t);
uint32_t cli_bcapi_disasm_x86(struct cli_bc_ctx *ctx , struct DISASM_RESULT*, uint32_t);
uint32_t cli_bcapi_trace_directory(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_scope(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_source(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_op(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_value(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_ptr(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_pe_rawaddr(struct cli_bc_ctx *ctx , uint32_t);
int32_t cli_bcapi_file_find(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx , uint32_t);
uint8_t* cli_bcapi_malloc(struct cli_bc_ctx *ctx , uint32_t);
uint32_t cli_bcapi_test2(struct cli_bc_ctx *ctx , uint32_t);
int32_t cli_bcapi_get_pe_section(struct cli_bc_ctx *ctx , struct cli_exe_section*, uint32_t);
int32_t cli_bcapi_fill_buffer(struct cli_bc_ctx *ctx , uint8_t*, uint32_t, uint32_t, uint32_t, uint32_t);
int32_t cli_bcapi_extract_new(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_read_number(struct cli_bc_ctx *ctx , uint32_t);
int32_t cli_bcapi_hashset_new(struct cli_bc_ctx *ctx );
int32_t cli_bcapi_hashset_add(struct cli_bc_ctx *ctx , int32_t, uint32_t);
int32_t cli_bcapi_hashset_remove(struct cli_bc_ctx *ctx , int32_t, uint32_t);
int32_t cli_bcapi_hashset_contains(struct cli_bc_ctx *ctx , int32_t, uint32_t);
int32_t cli_bcapi_hashset_done(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_hashset_empty(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_buffer_pipe_new(struct cli_bc_ctx *ctx , uint32_t);
int32_t cli_bcapi_buffer_pipe_new_fromfile(struct cli_bc_ctx *ctx , uint32_t);
uint32_t cli_bcapi_buffer_pipe_read_avail(struct cli_bc_ctx *ctx , int32_t);
const uint8_t* cli_bcapi_buffer_pipe_read_get(struct cli_bc_ctx *ctx , int32_t, uint32_t);
int32_t cli_bcapi_buffer_pipe_read_stopped(struct cli_bc_ctx *ctx , int32_t, uint32_t);
uint32_t cli_bcapi_buffer_pipe_write_avail(struct cli_bc_ctx *ctx , int32_t);
uint8_t* cli_bcapi_buffer_pipe_write_get(struct cli_bc_ctx *ctx , int32_t, uint32_t);
int32_t cli_bcapi_buffer_pipe_write_stopped(struct cli_bc_ctx *ctx , int32_t, uint32_t);
int32_t cli_bcapi_buffer_pipe_done(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_inflate_init(struct cli_bc_ctx *ctx , int32_t, int32_t, int32_t);
int32_t cli_bcapi_inflate_process(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_inflate_done(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_bytecode_rt_error(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_jsnorm_init(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_jsnorm_process(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_jsnorm_done(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_ilog2(struct cli_bc_ctx *ctx , uint32_t, uint32_t);
int32_t cli_bcapi_ipow(struct cli_bc_ctx *ctx , int32_t, int32_t, int32_t);
uint32_t cli_bcapi_iexp(struct cli_bc_ctx *ctx , int32_t, int32_t, int32_t);
int32_t cli_bcapi_isin(struct cli_bc_ctx *ctx , int32_t, int32_t, int32_t);
int32_t cli_bcapi_icos(struct cli_bc_ctx *ctx , int32_t, int32_t, int32_t);
int32_t cli_bcapi_memstr(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, const uint8_t*, int32_t);
int32_t cli_bcapi_hex2ui(struct cli_bc_ctx *ctx , uint32_t, uint32_t);
int32_t cli_bcapi_atoi(struct cli_bc_ctx *ctx , const uint8_t*, int32_t);
uint32_t cli_bcapi_debug_print_str_start(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_debug_print_str_nonl(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t);
uint32_t cli_bcapi_entropy_buffer(struct cli_bc_ctx *ctx , uint8_t*, int32_t);
int32_t cli_bcapi_map_new(struct cli_bc_ctx *ctx , int32_t, int32_t);
int32_t cli_bcapi_map_addkey(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, int32_t);
int32_t cli_bcapi_map_setvalue(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, int32_t);
int32_t cli_bcapi_map_remove(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, int32_t);
int32_t cli_bcapi_map_find(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, int32_t);
int32_t cli_bcapi_map_getvaluesize(struct cli_bc_ctx *ctx , int32_t);
uint8_t* cli_bcapi_map_getvalue(struct cli_bc_ctx *ctx , int32_t, int32_t);
int32_t cli_bcapi_map_done(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_file_find_limit(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t, int32_t);
uint32_t cli_bcapi_engine_functionality_level(struct cli_bc_ctx *ctx );
uint32_t cli_bcapi_engine_dconf_level(struct cli_bc_ctx *ctx );
uint32_t cli_bcapi_engine_scan_options(struct cli_bc_ctx *ctx );
uint32_t cli_bcapi_engine_db_options(struct cli_bc_ctx *ctx );
int32_t cli_bcapi_extract_set_container(struct cli_bc_ctx *ctx , uint32_t);
int32_t cli_bcapi_input_switch(struct cli_bc_ctx *ctx , int32_t);
uint32_t cli_bcapi_get_environment(struct cli_bc_ctx *ctx , struct cli_environment*, uint32_t);
uint32_t cli_bcapi_disable_bytecode_if(struct cli_bc_ctx *ctx , const int8_t*, uint32_t, uint32_t);
uint32_t cli_bcapi_disable_jit_if(struct cli_bc_ctx *ctx , const int8_t*, uint32_t, uint32_t);
int32_t cli_bcapi_version_compare(struct cli_bc_ctx *ctx , const uint8_t*, uint32_t, const uint8_t*, uint32_t);
uint32_t cli_bcapi_check_platform(struct cli_bc_ctx *ctx , uint32_t, uint32_t, uint32_t);
int32_t cli_bcapi_pdf_get_obj_num(struct cli_bc_ctx *ctx );
int32_t cli_bcapi_pdf_get_flags(struct cli_bc_ctx *ctx );
int32_t cli_bcapi_pdf_set_flags(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_pdf_lookupobj(struct cli_bc_ctx *ctx , uint32_t);
uint32_t cli_bcapi_pdf_getobjsize(struct cli_bc_ctx *ctx , int32_t);
const uint8_t* cli_bcapi_pdf_getobj(struct cli_bc_ctx *ctx , int32_t, uint32_t);
int32_t cli_bcapi_pdf_getobjid(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_pdf_getobjflags(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_pdf_setobjflags(struct cli_bc_ctx *ctx , int32_t, int32_t);
int32_t cli_bcapi_pdf_get_offset(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_pdf_get_phase(struct cli_bc_ctx *ctx );
int32_t cli_bcapi_pdf_get_dumpedobjid(struct cli_bc_ctx *ctx );
int32_t cli_bcapi_matchicon(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, const uint8_t*, int32_t);
int32_t cli_bcapi_running_on_jit(struct cli_bc_ctx *ctx );
int32_t cli_bcapi_get_file_reliability(struct cli_bc_ctx *ctx );
int32_t cli_bcapi_json_is_active(struct cli_bc_ctx *ctx );
int32_t cli_bcapi_json_get_object(struct cli_bc_ctx *ctx , const int8_t*, int32_t, int32_t);
int32_t cli_bcapi_json_get_type(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_json_get_array_length(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_json_get_array_idx(struct cli_bc_ctx *ctx , int32_t, int32_t);
int32_t cli_bcapi_json_get_string_length(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_json_get_string(struct cli_bc_ctx *ctx , int8_t*, int32_t, int32_t);
int32_t cli_bcapi_json_get_boolean(struct cli_bc_ctx *ctx , int32_t);
int32_t cli_bcapi_json_get_int(struct cli_bc_ctx *ctx , int32_t);

const struct cli_apiglobal cli_globals[] = {
/* Bytecode globals BEGIN */
	{"__clambc_match_offsets", GLOBAL_MATCH_OFFSETS, 76,
	 ((char*)&((struct cli_bc_ctx*)0)->hooks.match_offsets - (char*)NULL)},
	{"__clambc_kind", GLOBAL_KIND, 16,
	 ((char*)&((struct cli_bc_ctx*)0)->hooks.kind - (char*)NULL)},
	{"__clambc_match_counts", GLOBAL_MATCH_COUNTS, 76,
	 ((char*)&((struct cli_bc_ctx*)0)->hooks.match_counts - (char*)NULL)},
	{"__clambc_filesize", GLOBAL_FILESIZE, 75,
	 ((char*)&((struct cli_bc_ctx*)0)->hooks.filesize - (char*)NULL)},
	{"__clambc_pedata", GLOBAL_PEDATA, 69,
	 ((char*)&((struct cli_bc_ctx*)0)->hooks.pedata - (char*)NULL)}
/* Bytecode globals END */
};
const unsigned cli_apicall_maxglobal = _LAST_GLOBAL-1;
static uint16_t cli_tmp0[]={32, 32, 16, 16, 74, 73, 32, 72, 70, 32, 32, 32, 32};
static uint16_t cli_tmp1[]={71};
static uint16_t cli_tmp2[]={32, 32};
static uint16_t cli_tmp3[]={16, 8, 8, 32, 32, 32, 32, 32, 64, 32, 32, 16, 16, 16, 16, 16, 16, 32, 32, 32, 32, 16, 16, 64, 64, 64, 64, 32, 32, 70};
static uint16_t cli_tmp4[]={16, 8, 8, 32, 32, 32, 32, 32, 32, 32, 32, 32, 16, 16, 16, 16, 16, 16, 32, 32, 32, 32, 16, 16, 32, 32, 32, 32, 32, 32, 70};
static uint16_t cli_tmp5[]={32, 16, 16, 32, 32, 32, 16, 16};
static uint16_t cli_tmp6[]={32};
static uint16_t cli_tmp7[]={32};
static uint16_t cli_tmp8[]={32, 32};
static uint16_t cli_tmp9[]={32, 65, 32, 32};
static uint16_t cli_tmp10[]={32, 32, 32};
static uint16_t cli_tmp11[]={32};
static uint16_t cli_tmp12[]={32, 65, 32, 65, 32};
static uint16_t cli_tmp13[]={65, 32, 32};
static uint16_t cli_tmp14[]={32, 32, 32, 32};
static uint16_t cli_tmp15[]={32, 85, 32};
static uint16_t cli_tmp16[]={86};
static uint16_t cli_tmp17[]={32, 32, 32, 32, 32, 32, 32, 87, 87, 87, 87, 87, 87, 87, 8, 8, 8, 8, 8, 8, 8, 8, 8};
static uint16_t cli_tmp18[]={8};
static uint16_t cli_tmp19[]={32, 65, 32};
static uint16_t cli_tmp20[]={32, 65, 32, 32, 32, 32};
static uint16_t cli_tmp21[]={32, 91, 32};
static uint16_t cli_tmp22[]={92};
static uint16_t cli_tmp23[]={32, 32, 32, 32, 32, 32, 32, 32, 32};
static uint16_t cli_tmp24[]={65, 32};
static uint16_t cli_tmp25[]={32, 95, 32};
static uint16_t cli_tmp26[]={96};
static uint16_t cli_tmp27[]={16, 8, 8, 8, 98, 97};
static uint16_t cli_tmp28[]={8};
static uint16_t cli_tmp29[]={99};
static uint16_t cli_tmp30[]={8};

const struct cli_bc_type cli_apicall_types[]={
	{DStructType, cli_tmp0, 13, 0, 0},
	{DArrayType, cli_tmp1, 16, 0, 0},
	{DStructType, cli_tmp2, 2, 0, 0},
	{DStructType, cli_tmp3, 30, 0, 0},
	{DStructType, cli_tmp4, 31, 0, 0},
	{DStructType, cli_tmp5, 8, 0, 0},
	{DArrayType, cli_tmp6, 1, 0, 0},
	{DArrayType, cli_tmp7, 64, 0, 0},
	{DFunctionType, cli_tmp8, 2, 0, 0},
	{DFunctionType, cli_tmp9, 4, 0, 0},
	{DFunctionType, cli_tmp10, 3, 0, 0},
	{DFunctionType, cli_tmp11, 1, 0, 0},
	{DFunctionType, cli_tmp12, 5, 0, 0},
	{DFunctionType, cli_tmp13, 3, 0, 0},
	{DFunctionType, cli_tmp14, 4, 0, 0},
	{DFunctionType, cli_tmp15, 3, 0, 0},
	{DPointerType, cli_tmp16, 1, 0, 0},
	{DStructType, cli_tmp17, 23, 0, 0},
	{DArrayType, cli_tmp18, 65, 0, 0},
	{DFunctionType, cli_tmp19, 3, 0, 0},
	{DFunctionType, cli_tmp20, 6, 0, 0},
	{DFunctionType, cli_tmp21, 3, 0, 0},
	{DPointerType, cli_tmp22, 1, 0, 0},
	{DStructType, cli_tmp23, 9, 0, 0},
	{DFunctionType, cli_tmp24, 2, 0, 0},
	{DFunctionType, cli_tmp25, 3, 0, 0},
	{DPointerType, cli_tmp26, 1, 0, 0},
	{DStructType, cli_tmp27, 6, 0, 0},
	{DArrayType, cli_tmp28, 29, 0, 0},
	{DArrayType, cli_tmp29, 3, 0, 0},
	{DArrayType, cli_tmp30, 10, 0, 0}
};
const unsigned cli_apicall_maxtypes=sizeof(cli_apicall_types)/sizeof(cli_apicall_types[0]);

const struct cli_apicall cli_apicalls[]={
/* Bytecode APIcalls BEGIN */
	{"test1", 10, 0, 0},
	{"read", 19, 0, 1},
	{"write", 19, 1, 1},
	{"seek", 10, 1, 0},
	{"setvirusname", 19, 2, 1},
	{"debug_print_str", 19, 3, 1},
	{"debug_print_uint", 8, 0, 2},
	{"disasm_x86", 25, 4, 1},
	{"trace_directory", 19, 5, 1},
	{"trace_scope", 19, 6, 1},
	{"trace_source", 19, 7, 1},
	{"trace_op", 19, 8, 1},
	{"trace_value", 19, 9, 1},
	{"trace_ptr", 19, 10, 1},
	{"pe_rawaddr", 8, 1, 2},
	{"file_find", 19, 11, 1},
	{"file_byteat", 8, 2, 2},
	{"malloc", 24, 0, 3},
	{"test2", 8, 3, 2},
	{"get_pe_section", 21, 12, 1},
	{"fill_buffer", 20, 0, 4},
	{"extract_new", 8, 4, 2},
	{"read_number", 8, 5, 2},
	{"hashset_new", 11, 0, 5},
	{"hashset_add", 10, 2, 0},
	{"hashset_remove", 10, 3, 0},
	{"hashset_contains", 10, 4, 0},
	{"hashset_done", 8, 6, 2},
	{"hashset_empty", 8, 7, 2},
	{"buffer_pipe_new", 8, 8, 2},
	{"buffer_pipe_new_fromfile", 8, 9, 2},
	{"buffer_pipe_read_avail", 8, 10, 2},
	{"buffer_pipe_read_get", 13, 0, 6},
	{"buffer_pipe_read_stopped", 10, 5, 0},
	{"buffer_pipe_write_avail", 8, 11, 2},
	{"buffer_pipe_write_get", 13, 1, 6},
	{"buffer_pipe_write_stopped", 10, 6, 0},
	{"buffer_pipe_done", 8, 12, 2},
	{"inflate_init", 14, 0, 7},
	{"inflate_process", 8, 13, 2},
	{"inflate_done", 8, 14, 2},
	{"bytecode_rt_error", 8, 15, 2},
	{"jsnorm_init", 8, 16, 2},
	{"jsnorm_process", 8, 17, 2},
	{"jsnorm_done", 8, 18, 2},
	{"ilog2", 10, 7, 0},
	{"ipow", 14, 1, 7},
	{"iexp", 14, 2, 7},
	{"isin", 14, 3, 7},
	{"icos", 14, 4, 7},
	{"memstr", 12, 0, 8},
	{"hex2ui", 10, 8, 0},
	{"atoi", 19, 13, 1},
	{"debug_print_str_start", 19, 14, 1},
	{"debug_print_str_nonl", 19, 15, 1},
	{"entropy_buffer", 19, 16, 1},
	{"map_new", 10, 9, 0},
	{"map_addkey", 9, 0, 9},
	{"map_setvalue", 9, 1, 9},
	{"map_remove", 9, 2, 9},
	{"map_find", 9, 3, 9},
	{"map_getvaluesize", 8, 19, 2},
	{"map_getvalue", 13, 2, 6},
	{"map_done", 8, 20, 2},
	{"file_find_limit", 9, 4, 9},
	{"engine_functionality_level", 11, 1, 5},
	{"engine_dconf_level", 11, 2, 5},
	{"engine_scan_options", 11, 3, 5},
	{"engine_db_options", 11, 4, 5},
	{"extract_set_container", 8, 21, 2},
	{"input_switch", 8, 22, 2},
	{"get_environment", 15, 17, 1},
	{"disable_bytecode_if", 9, 5, 9},
	{"disable_jit_if", 9, 6, 9},
	{"version_compare", 12, 1, 8},
	{"check_platform", 14, 5, 7},
	{"pdf_get_obj_num", 11, 5, 5},
	{"pdf_get_flags", 11, 6, 5},
	{"pdf_set_flags", 8, 23, 2},
	{"pdf_lookupobj", 8, 24, 2},
	{"pdf_getobjsize", 8, 25, 2},
	{"pdf_getobj", 13, 3, 6},
	{"pdf_getobjid", 8, 26, 2},
	{"pdf_getobjflags", 8, 27, 2},
	{"pdf_setobjflags", 10, 10, 0},
	{"pdf_get_offset", 8, 28, 2},
	{"pdf_get_phase", 11, 7, 5},
	{"pdf_get_dumpedobjid", 11, 8, 5},
	{"matchicon", 12, 2, 8},
	{"running_on_jit", 11, 9, 5},
	{"get_file_reliability", 11, 10, 5},
	{"json_is_active", 11, 11, 5},
	{"json_get_object", 9, 7, 9},
	{"json_get_type", 8, 29, 2},
	{"json_get_array_length", 8, 30, 2},
	{"json_get_array_idx", 10, 11, 0},
	{"json_get_string_length", 8, 31, 2},
	{"json_get_string", 9, 8, 9},
	{"json_get_boolean", 8, 32, 2},
	{"json_get_int", 8, 33, 2}
/* Bytecode APIcalls END */
};
const unsigned cli_numapicalls=sizeof(cli_apicalls)/sizeof(cli_apicalls[0]);

const cli_apicall_int2 cli_apicalls0[] = {
	(cli_apicall_int2)cli_bcapi_test1,
	(cli_apicall_int2)cli_bcapi_seek,
	(cli_apicall_int2)cli_bcapi_hashset_add,
	(cli_apicall_int2)cli_bcapi_hashset_remove,
	(cli_apicall_int2)cli_bcapi_hashset_contains,
	(cli_apicall_int2)cli_bcapi_buffer_pipe_read_stopped,
	(cli_apicall_int2)cli_bcapi_buffer_pipe_write_stopped,
	(cli_apicall_int2)cli_bcapi_ilog2,
	(cli_apicall_int2)cli_bcapi_hex2ui,
	(cli_apicall_int2)cli_bcapi_map_new,
	(cli_apicall_int2)cli_bcapi_pdf_setobjflags,
	(cli_apicall_int2)cli_bcapi_json_get_array_idx
};
const cli_apicall_pointer cli_apicalls1[] = {
	(cli_apicall_pointer)cli_bcapi_read,
	(cli_apicall_pointer)cli_bcapi_write,
	(cli_apicall_pointer)cli_bcapi_setvirusname,
	(cli_apicall_pointer)cli_bcapi_debug_print_str,
	(cli_apicall_pointer)cli_bcapi_disasm_x86,
	(cli_apicall_pointer)cli_bcapi_trace_directory,
	(cli_apicall_pointer)cli_bcapi_trace_scope,
	(cli_apicall_pointer)cli_bcapi_trace_source,
	(cli_apicall_pointer)cli_bcapi_trace_op,
	(cli_apicall_pointer)cli_bcapi_trace_value,
	(cli_apicall_pointer)cli_bcapi_trace_ptr,
	(cli_apicall_pointer)cli_bcapi_file_find,
	(cli_apicall_pointer)cli_bcapi_get_pe_section,
	(cli_apicall_pointer)cli_bcapi_atoi,
	(cli_apicall_pointer)cli_bcapi_debug_print_str_start,
	(cli_apicall_pointer)cli_bcapi_debug_print_str_nonl,
	(cli_apicall_pointer)cli_bcapi_entropy_buffer,
	(cli_apicall_pointer)cli_bcapi_get_environment
};
const cli_apicall_int1 cli_apicalls2[] = {
	(cli_apicall_int1)cli_bcapi_debug_print_uint,
	(cli_apicall_int1)cli_bcapi_pe_rawaddr,
	(cli_apicall_int1)cli_bcapi_file_byteat,
	(cli_apicall_int1)cli_bcapi_test2,
	(cli_apicall_int1)cli_bcapi_extract_new,
	(cli_apicall_int1)cli_bcapi_read_number,
	(cli_apicall_int1)cli_bcapi_hashset_done,
	(cli_apicall_int1)cli_bcapi_hashset_empty,
	(cli_apicall_int1)cli_bcapi_buffer_pipe_new,
	(cli_apicall_int1)cli_bcapi_buffer_pipe_new_fromfile,
	(cli_apicall_int1)cli_bcapi_buffer_pipe_read_avail,
	(cli_apicall_int1)cli_bcapi_buffer_pipe_write_avail,
	(cli_apicall_int1)cli_bcapi_buffer_pipe_done,
	(cli_apicall_int1)cli_bcapi_inflate_process,
	(cli_apicall_int1)cli_bcapi_inflate_done,
	(cli_apicall_int1)cli_bcapi_bytecode_rt_error,
	(cli_apicall_int1)cli_bcapi_jsnorm_init,
	(cli_apicall_int1)cli_bcapi_jsnorm_process,
	(cli_apicall_int1)cli_bcapi_jsnorm_done,
	(cli_apicall_int1)cli_bcapi_map_getvaluesize,
	(cli_apicall_int1)cli_bcapi_map_done,
	(cli_apicall_int1)cli_bcapi_extract_set_container,
	(cli_apicall_int1)cli_bcapi_input_switch,
	(cli_apicall_int1)cli_bcapi_pdf_set_flags,
	(cli_apicall_int1)cli_bcapi_pdf_lookupobj,
	(cli_apicall_int1)cli_bcapi_pdf_getobjsize,
	(cli_apicall_int1)cli_bcapi_pdf_getobjid,
	(cli_apicall_int1)cli_bcapi_pdf_getobjflags,
	(cli_apicall_int1)cli_bcapi_pdf_get_offset,
	(cli_apicall_int1)cli_bcapi_json_get_type,
	(cli_apicall_int1)cli_bcapi_json_get_array_length,
	(cli_apicall_int1)cli_bcapi_json_get_string_length,
	(cli_apicall_int1)cli_bcapi_json_get_boolean,
	(cli_apicall_int1)cli_bcapi_json_get_int
};
const cli_apicall_malloclike cli_apicalls3[] = {
	(cli_apicall_malloclike)cli_bcapi_malloc
};
const cli_apicall_ptrbuffdata cli_apicalls4[] = {
	(cli_apicall_ptrbuffdata)cli_bcapi_fill_buffer
};
const cli_apicall_allocobj cli_apicalls5[] = {
	(cli_apicall_allocobj)cli_bcapi_hashset_new,
	(cli_apicall_allocobj)cli_bcapi_engine_functionality_level,
	(cli_apicall_allocobj)cli_bcapi_engine_dconf_level,
	(cli_apicall_allocobj)cli_bcapi_engine_scan_options,
	(cli_apicall_allocobj)cli_bcapi_engine_db_options,
	(cli_apicall_allocobj)cli_bcapi_pdf_get_obj_num,
	(cli_apicall_allocobj)cli_bcapi_pdf_get_flags,
	(cli_apicall_allocobj)cli_bcapi_pdf_get_phase,
	(cli_apicall_allocobj)cli_bcapi_pdf_get_dumpedobjid,
	(cli_apicall_allocobj)cli_bcapi_running_on_jit,
	(cli_apicall_allocobj)cli_bcapi_get_file_reliability,
	(cli_apicall_allocobj)cli_bcapi_json_is_active
};
const cli_apicall_bufget cli_apicalls6[] = {
	(cli_apicall_bufget)cli_bcapi_buffer_pipe_read_get,
	(cli_apicall_bufget)cli_bcapi_buffer_pipe_write_get,
	(cli_apicall_bufget)cli_bcapi_map_getvalue,
	(cli_apicall_bufget)cli_bcapi_pdf_getobj
};
const cli_apicall_int3 cli_apicalls7[] = {
	(cli_apicall_int3)cli_bcapi_inflate_init,
	(cli_apicall_int3)cli_bcapi_ipow,
	(cli_apicall_int3)cli_bcapi_iexp,
	(cli_apicall_int3)cli_bcapi_isin,
	(cli_apicall_int3)cli_bcapi_icos,
	(cli_apicall_int3)cli_bcapi_check_platform
};
const cli_apicall_2bufs cli_apicalls8[] = {
	(cli_apicall_2bufs)cli_bcapi_memstr,
	(cli_apicall_2bufs)cli_bcapi_version_compare,
	(cli_apicall_2bufs)cli_bcapi_matchicon
};
const cli_apicall_ptrbufid cli_apicalls9[] = {
	(cli_apicall_ptrbufid)cli_bcapi_map_addkey,
	(cli_apicall_ptrbufid)cli_bcapi_map_setvalue,
	(cli_apicall_ptrbufid)cli_bcapi_map_remove,
	(cli_apicall_ptrbufid)cli_bcapi_map_find,
	(cli_apicall_ptrbufid)cli_bcapi_file_find_limit,
	(cli_apicall_ptrbufid)cli_bcapi_disable_bytecode_if,
	(cli_apicall_ptrbufid)cli_bcapi_disable_jit_if,
	(cli_apicall_ptrbufid)cli_bcapi_json_get_object,
	(cli_apicall_ptrbufid)cli_bcapi_json_get_string
};
const unsigned cli_apicall_maxapi = sizeof(cli_apicalls)/sizeof(cli_apicalls[0]);