Skip to content

Instantly share code, notes, and snippets.

@BrzVlad
Created May 28, 2020 14:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BrzVlad/1b5a6bdb20205db1c970edae709d337e to your computer and use it in GitHub Desktop.
Save BrzVlad/1b5a6bdb20205db1c970edae709d337e to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
typedef int gint;
typedef unsigned int guint;
typedef short gint16;
typedef unsigned short guint16;
typedef long glong;
typedef unsigned long gulong;
typedef void * gpointer;
typedef const void * gconstpointer;
typedef char gchar;
typedef unsigned char guchar;
/* Types defined in terms of the stdint.h */
typedef int8_t gint8;
typedef uint8_t guint8;
typedef int16_t gint16;
typedef uint16_t guint16;
typedef int32_t gint32;
typedef uint32_t guint32;
typedef int64_t gint64;
typedef uint64_t guint64;
typedef float gfloat;
typedef double gdouble;
typedef int32_t gboolean;
typedef struct {
union {
gint32 i;
gint64 l;
gpointer p;
} data;
} stackval;
typedef struct {
short *code;
guint32 stack_size;
guint32 alloca_size;
} InterpMethod;
typedef struct {
InterpMethod *imethod;
stackval *stack;
stackval *stack_args;
} InterpFrame;
typedef struct {
gpointer vtable;
gpointer sync;
gint64 field1;
gint64 field2;
} TestObject;
#define READ64(x) (*(guint64 *)(x))
#define MINT_LDARGFLD_I8 0x4a
#define MINT_LDC_I8 0x19
#define MINT_REM_I8 0x1a8
#define MINT_BNE_UN_I8_S 0x130
#define MINT_LDARG_O 0x26
#define MINT_DUP 0x5
#define MINT_LDFLD_I8 0x3a
#define MINT_ADD_I8 0x184
#define MINT_STFLD_I8 0x5c
#define MINT_BR_S 0xda
#define MINT_LDARG_O 0x26
#define MINT_RET_VOID 0xa
#define MINT_MAX 0x200
short method_code [] = {
// ldargfld.i8 0,16
0x004a, 0x0000, 0x0010,
// ldc.i8 2
0x0019, 0x0002, 0x0000, 0x0000, 0x0000,
// rem.i8
0x01a8,
// ldc.i8 1
0x0019, 0x0001, 0x0000, 0x0000, 0x0000,
// bne.un.i8.s IR_001d
0x0130, 0x000f,
// ldarg.o 0
0x0026, 0x0000,
// dup
0x0005,
// ldfld.i8 16
0x003a, 0x0010,
// ldargfld.i8 0,24
0x004a, 0x0000, 0x0018,
// add.i8
0x0184,
// stfld.i8 16
0x005c, 0x0010,
// br.s IR_002a
0x00da, 0x000f,
// ldarg.o 0
0x0026, 0x0000,
// dup
0x0005,
// ldfld.i8 16
0x003a, 0x0010,
// ldc.i8 1
0x0019, 0x0001, 0x0000, 0x0000, 0x0000,
// add.i8
0x0184,
// stfld.i8 16
0x005c, 0x0010,
// ret.void
0x000a };
static void interp_exec_method_switch (InterpFrame *iframe);
static void Bench (InterpFrame *iframe, int iterations)
{
for (int i = 0; i < iterations; i++)
interp_exec_method_switch (iframe);
}
int
main (int argc, char *argv[])
{
TestObject *object = malloc (sizeof (TestObject));
memset (object, 0, sizeof (TestObject));
object->field2 = 1;
InterpMethod *imethod = malloc (sizeof (InterpMethod));
imethod->code = method_code;
imethod->stack_size = 40;
imethod->alloca_size = 40;
stackval args;
args.data.p = object;
InterpFrame *iframe = malloc (sizeof (InterpFrame));
iframe->imethod = imethod;
iframe->stack_args = &args;
Bench (iframe, 10000);
Bench (iframe, 100000000);
}
// ------------------------ SWITCH ----------------------------------
static void unreachable_method (const char *string)
{
printf ("You didn't reach me because I'm unreachable %s\n", string);
}
#define SWITCH_CASE(index) case index: unreachable_method (#index); break;
//#define SWITCH_CASE(index)
static void
interp_exec_method_switch (InterpFrame *frame)
{
short *ip = frame->imethod->code;
frame->stack = alloca (frame->imethod->alloca_size);
stackval *sp = frame->stack;
while (1) {
switch (*ip) {
SWITCH_CASE(1)
SWITCH_CASE(2)
SWITCH_CASE(3)
SWITCH_CASE(4)
case MINT_DUP:
sp [0] = sp[-1];
++sp;
++ip;
break;
SWITCH_CASE(6)
SWITCH_CASE(7)
SWITCH_CASE(8)
SWITCH_CASE(9)
case MINT_RET_VOID:
return;
SWITCH_CASE(11)
SWITCH_CASE(12)
SWITCH_CASE(13)
SWITCH_CASE(14)
SWITCH_CASE(15)
SWITCH_CASE(16)
SWITCH_CASE(20)
SWITCH_CASE(21)
SWITCH_CASE(22)
SWITCH_CASE(23)
SWITCH_CASE(24)
case MINT_LDC_I8:
++ip;
sp->data.l = READ64 (ip);
ip += 4;
++sp;
break;
SWITCH_CASE(26)
SWITCH_CASE(27)
SWITCH_CASE(28)
SWITCH_CASE(29)
SWITCH_CASE(30)
SWITCH_CASE(31)
SWITCH_CASE(32)
SWITCH_CASE(33)
SWITCH_CASE(34)
SWITCH_CASE(35)
SWITCH_CASE(36)
SWITCH_CASE(37)
case MINT_LDARG_O:
sp->data.p = frame->stack_args [ip [1]].data.p;
ip += 2;
++sp;
break;
SWITCH_CASE(39)
SWITCH_CASE(40)
SWITCH_CASE(41)
SWITCH_CASE(42)
SWITCH_CASE(43)
SWITCH_CASE(44)
SWITCH_CASE(45)
SWITCH_CASE(46)
SWITCH_CASE(47)
SWITCH_CASE(48)
SWITCH_CASE(49)
SWITCH_CASE(50)
SWITCH_CASE(51)
SWITCH_CASE(52)
SWITCH_CASE(53)
SWITCH_CASE(54)
SWITCH_CASE(55)
SWITCH_CASE(56)
SWITCH_CASE(57)
case MINT_LDFLD_I8: {
gpointer *o = sp [-1].data.p;
if (!o)
return;
sp[-1].data.l = * (gint64*)((char *)o + ip [1]);
ip += 2;
break;
}
SWITCH_CASE(59)
SWITCH_CASE(60)
SWITCH_CASE(61)
SWITCH_CASE(62)
SWITCH_CASE(63)
SWITCH_CASE(64)
SWITCH_CASE(65)
SWITCH_CASE(89)
SWITCH_CASE(90)
SWITCH_CASE(91)
case MINT_STFLD_I8: {
gpointer *o = sp [-2].data.p;
if (!o)
return;
sp -= 2;
*(gint64*)((char *)o + ip [1]) = sp[1].data.l;
ip += 2;
break;
}
SWITCH_CASE(93)
SWITCH_CASE(94)
SWITCH_CASE(95)
SWITCH_CASE(96)
SWITCH_CASE(97)
SWITCH_CASE(98)
SWITCH_CASE(99)
SWITCH_CASE(100)
SWITCH_CASE(101)
SWITCH_CASE(102)
SWITCH_CASE(103)
SWITCH_CASE(104)
SWITCH_CASE(105)
SWITCH_CASE(106)
SWITCH_CASE(107)
SWITCH_CASE(108)
SWITCH_CASE(109)
SWITCH_CASE(110)
SWITCH_CASE(111)
SWITCH_CASE(112)
SWITCH_CASE(113)
SWITCH_CASE(114)
SWITCH_CASE(115)
SWITCH_CASE(116)
SWITCH_CASE(117)
SWITCH_CASE(118)
SWITCH_CASE(119)
SWITCH_CASE(120)
SWITCH_CASE(121)
SWITCH_CASE(122)
SWITCH_CASE(123)
SWITCH_CASE(124)
SWITCH_CASE(125)
SWITCH_CASE(126)
SWITCH_CASE(127)
SWITCH_CASE(128)
SWITCH_CASE(129)
SWITCH_CASE(130)
SWITCH_CASE(131)
SWITCH_CASE(132)
SWITCH_CASE(133)
SWITCH_CASE(134)
SWITCH_CASE(135)
SWITCH_CASE(136)
SWITCH_CASE(137)
SWITCH_CASE(138)
SWITCH_CASE(139)
SWITCH_CASE(140)
SWITCH_CASE(141)
SWITCH_CASE(142)
SWITCH_CASE(143)
SWITCH_CASE(144)
SWITCH_CASE(145)
SWITCH_CASE(146)
SWITCH_CASE(147)
SWITCH_CASE(148)
SWITCH_CASE(149)
SWITCH_CASE(150)
SWITCH_CASE(151)
SWITCH_CASE(152)
SWITCH_CASE(153)
SWITCH_CASE(154)
SWITCH_CASE(155)
SWITCH_CASE(156)
SWITCH_CASE(157)
SWITCH_CASE(158)
SWITCH_CASE(159)
SWITCH_CASE(160)
SWITCH_CASE(161)
SWITCH_CASE(162)
SWITCH_CASE(163)
SWITCH_CASE(164)
SWITCH_CASE(165)
SWITCH_CASE(166)
SWITCH_CASE(167)
SWITCH_CASE(168)
SWITCH_CASE(169)
SWITCH_CASE(170)
SWITCH_CASE(171)
SWITCH_CASE(172)
SWITCH_CASE(173)
SWITCH_CASE(174)
SWITCH_CASE(175)
SWITCH_CASE(176)
SWITCH_CASE(177)
SWITCH_CASE(178)
SWITCH_CASE(179)
SWITCH_CASE(180)
SWITCH_CASE(181)
SWITCH_CASE(182)
SWITCH_CASE(183)
SWITCH_CASE(184)
SWITCH_CASE(185)
SWITCH_CASE(186)
SWITCH_CASE(187)
SWITCH_CASE(188)
SWITCH_CASE(189)
SWITCH_CASE(190)
SWITCH_CASE(191)
SWITCH_CASE(192)
SWITCH_CASE(193)
SWITCH_CASE(194)
SWITCH_CASE(195)
SWITCH_CASE(196)
SWITCH_CASE(197)
SWITCH_CASE(198)
SWITCH_CASE(199)
SWITCH_CASE(200)
SWITCH_CASE(201)
SWITCH_CASE(202)
SWITCH_CASE(203)
SWITCH_CASE(204)
SWITCH_CASE(205)
SWITCH_CASE(206)
SWITCH_CASE(207)
SWITCH_CASE(208)
SWITCH_CASE(209)
SWITCH_CASE(210)
SWITCH_CASE(211)
SWITCH_CASE(212)
SWITCH_CASE(213)
SWITCH_CASE(214)
SWITCH_CASE(215)
SWITCH_CASE(216)
SWITCH_CASE(217)
case MINT_BR_S: {
short br_offset = (short) *(ip + 1);
ip += br_offset;
break;
}
SWITCH_CASE(219)
SWITCH_CASE(220)
SWITCH_CASE(221)
SWITCH_CASE(222)
SWITCH_CASE(223)
SWITCH_CASE(224)
SWITCH_CASE(225)
SWITCH_CASE(226)
SWITCH_CASE(227)
SWITCH_CASE(228)
SWITCH_CASE(229)
SWITCH_CASE(230)
SWITCH_CASE(231)
SWITCH_CASE(232)
SWITCH_CASE(233)
SWITCH_CASE(234)
SWITCH_CASE(235)
SWITCH_CASE(236)
SWITCH_CASE(237)
SWITCH_CASE(247)
SWITCH_CASE(248)
SWITCH_CASE(249)
SWITCH_CASE(250)
SWITCH_CASE(251)
SWITCH_CASE(252)
SWITCH_CASE(253)
SWITCH_CASE(254)
SWITCH_CASE(255)
SWITCH_CASE(256)
SWITCH_CASE(257)
SWITCH_CASE(258)
SWITCH_CASE(259)
SWITCH_CASE(260)
SWITCH_CASE(261)
SWITCH_CASE(262)
SWITCH_CASE(263)
SWITCH_CASE(264)
SWITCH_CASE(265)
SWITCH_CASE(266)
SWITCH_CASE(267)
SWITCH_CASE(268)
SWITCH_CASE(269)
SWITCH_CASE(270)
SWITCH_CASE(271)
SWITCH_CASE(272)
SWITCH_CASE(273)
SWITCH_CASE(274)
SWITCH_CASE(275)
SWITCH_CASE(276)
SWITCH_CASE(277)
SWITCH_CASE(278)
SWITCH_CASE(279)
SWITCH_CASE(280)
SWITCH_CASE(281)
SWITCH_CASE(282)
SWITCH_CASE(283)
SWITCH_CASE(284)
SWITCH_CASE(285)
SWITCH_CASE(286)
SWITCH_CASE(287)
SWITCH_CASE(288)
SWITCH_CASE(289)
SWITCH_CASE(290)
SWITCH_CASE(291)
SWITCH_CASE(292)
SWITCH_CASE(293)
SWITCH_CASE(294)
SWITCH_CASE(295)
SWITCH_CASE(296)
SWITCH_CASE(297)
SWITCH_CASE(298)
SWITCH_CASE(299)
SWITCH_CASE(300)
SWITCH_CASE(301)
SWITCH_CASE(302)
SWITCH_CASE(303)
case MINT_BNE_UN_I8_S:
sp -= 2;
if (sp [0].data.l != sp [1].data.l) {
gint16 br_offset = (gint16) ip [1];
ip += br_offset;
} else {
ip += 2;
}
break;
SWITCH_CASE(305)
SWITCH_CASE(306)
SWITCH_CASE(307)
SWITCH_CASE(308)
SWITCH_CASE(309)
SWITCH_CASE(310)
SWITCH_CASE(311)
SWITCH_CASE(312)
SWITCH_CASE(313)
SWITCH_CASE(314)
SWITCH_CASE(315)
SWITCH_CASE(316)
SWITCH_CASE(317)
SWITCH_CASE(318)
SWITCH_CASE(319)
SWITCH_CASE(320)
SWITCH_CASE(321)
SWITCH_CASE(322)
SWITCH_CASE(323)
SWITCH_CASE(324)
SWITCH_CASE(325)
SWITCH_CASE(326)
SWITCH_CASE(327)
SWITCH_CASE(328)
SWITCH_CASE(329)
SWITCH_CASE(330)
SWITCH_CASE(331)
SWITCH_CASE(332)
SWITCH_CASE(333)
SWITCH_CASE(334)
SWITCH_CASE(335)
SWITCH_CASE(336)
SWITCH_CASE(337)
SWITCH_CASE(338)
SWITCH_CASE(339)
SWITCH_CASE(340)
SWITCH_CASE(341)
SWITCH_CASE(342)
SWITCH_CASE(343)
SWITCH_CASE(344)
SWITCH_CASE(345)
SWITCH_CASE(346)
SWITCH_CASE(347)
SWITCH_CASE(348)
SWITCH_CASE(349)
SWITCH_CASE(350)
SWITCH_CASE(351)
SWITCH_CASE(352)
SWITCH_CASE(353)
SWITCH_CASE(354)
SWITCH_CASE(355)
SWITCH_CASE(356)
SWITCH_CASE(357)
SWITCH_CASE(358)
SWITCH_CASE(359)
SWITCH_CASE(360)
SWITCH_CASE(361)
SWITCH_CASE(362)
SWITCH_CASE(363)
SWITCH_CASE(364)
SWITCH_CASE(365)
SWITCH_CASE(366)
SWITCH_CASE(367)
SWITCH_CASE(368)
SWITCH_CASE(369)
SWITCH_CASE(370)
SWITCH_CASE(371)
SWITCH_CASE(372)
SWITCH_CASE(373)
SWITCH_CASE(374)
SWITCH_CASE(375)
SWITCH_CASE(376)
SWITCH_CASE(377)
SWITCH_CASE(378)
SWITCH_CASE(379)
SWITCH_CASE(380)
SWITCH_CASE(381)
SWITCH_CASE(382)
SWITCH_CASE(383)
SWITCH_CASE(384)
SWITCH_CASE(385)
SWITCH_CASE(386)
SWITCH_CASE(387)
case MINT_ADD_I8:
--sp;
sp [-1].data.l += sp [0].data.l;
++ip;
break;
SWITCH_CASE(389)
SWITCH_CASE(390)
SWITCH_CASE(391)
SWITCH_CASE(392)
SWITCH_CASE(393)
SWITCH_CASE(394)
SWITCH_CASE(395)
SWITCH_CASE(396)
SWITCH_CASE(397)
SWITCH_CASE(398)
SWITCH_CASE(399)
SWITCH_CASE(400)
SWITCH_CASE(401)
SWITCH_CASE(402)
SWITCH_CASE(403)
SWITCH_CASE(404)
SWITCH_CASE(405)
SWITCH_CASE(406)
SWITCH_CASE(407)
SWITCH_CASE(408)
SWITCH_CASE(409)
SWITCH_CASE(410)
SWITCH_CASE(411)
SWITCH_CASE(412)
SWITCH_CASE(413)
SWITCH_CASE(414)
SWITCH_CASE(415)
SWITCH_CASE(416)
SWITCH_CASE(417)
SWITCH_CASE(418)
SWITCH_CASE(419)
SWITCH_CASE(420)
SWITCH_CASE(421)
SWITCH_CASE(422)
SWITCH_CASE(423)
case MINT_REM_I8:
if (sp [-1].data.l == 0)
return;
if (sp [-1].data.l == -1)
return;
--sp;
sp [-1].data.l %= sp [0].data.l;
++ip;
break;
SWITCH_CASE(425)
SWITCH_CASE(426)
SWITCH_CASE(427)
SWITCH_CASE(428)
SWITCH_CASE(429)
SWITCH_CASE(430)
SWITCH_CASE(431)
SWITCH_CASE(432)
SWITCH_CASE(433)
SWITCH_CASE(434)
SWITCH_CASE(435)
SWITCH_CASE(436)
SWITCH_CASE(437)
SWITCH_CASE(438)
SWITCH_CASE(439)
SWITCH_CASE(440)
SWITCH_CASE(441)
SWITCH_CASE(442)
SWITCH_CASE(443)
SWITCH_CASE(444)
SWITCH_CASE(445)
SWITCH_CASE(446)
SWITCH_CASE(447)
SWITCH_CASE(448)
SWITCH_CASE(449)
SWITCH_CASE(450)
SWITCH_CASE(451)
SWITCH_CASE(452)
SWITCH_CASE(453)
SWITCH_CASE(454)
SWITCH_CASE(455)
SWITCH_CASE(456)
SWITCH_CASE(457)
SWITCH_CASE(458)
SWITCH_CASE(459)
SWITCH_CASE(460)
SWITCH_CASE(461)
SWITCH_CASE(462)
SWITCH_CASE(463)
SWITCH_CASE(464)
SWITCH_CASE(465)
SWITCH_CASE(466)
SWITCH_CASE(467)
SWITCH_CASE(468)
SWITCH_CASE(469)
SWITCH_CASE(470)
SWITCH_CASE(471)
SWITCH_CASE(472)
SWITCH_CASE(473)
SWITCH_CASE(474)
SWITCH_CASE(475)
SWITCH_CASE(476)
SWITCH_CASE(477)
SWITCH_CASE(478)
SWITCH_CASE(479)
SWITCH_CASE(480)
SWITCH_CASE(481)
SWITCH_CASE(482)
SWITCH_CASE(483)
SWITCH_CASE(484)
SWITCH_CASE(485)
SWITCH_CASE(486)
SWITCH_CASE(487)
SWITCH_CASE(488)
SWITCH_CASE(489)
SWITCH_CASE(490)
SWITCH_CASE(491)
SWITCH_CASE(492)
SWITCH_CASE(493)
SWITCH_CASE(494)
SWITCH_CASE(495)
SWITCH_CASE(496)
SWITCH_CASE(497)
SWITCH_CASE(498)
SWITCH_CASE(499)
SWITCH_CASE(500)
SWITCH_CASE(501)
SWITCH_CASE(502)
SWITCH_CASE(503)
SWITCH_CASE(504)
SWITCH_CASE(505)
SWITCH_CASE(506)
SWITCH_CASE(507)
SWITCH_CASE(508)
SWITCH_CASE(509)
SWITCH_CASE(510)
SWITCH_CASE(511)
SWITCH_CASE(512)
SWITCH_CASE(513)
SWITCH_CASE(514)
SWITCH_CASE(515)
SWITCH_CASE(516)
SWITCH_CASE(517)
SWITCH_CASE(518)
SWITCH_CASE(519)
SWITCH_CASE(520)
SWITCH_CASE(521)
SWITCH_CASE(522)
SWITCH_CASE(523)
SWITCH_CASE(524)
SWITCH_CASE(525)
SWITCH_CASE(526)
SWITCH_CASE(527)
SWITCH_CASE(528)
SWITCH_CASE(529)
SWITCH_CASE(530)
SWITCH_CASE(531)
SWITCH_CASE(532)
SWITCH_CASE(533)
SWITCH_CASE(534)
SWITCH_CASE(535)
SWITCH_CASE(536)
SWITCH_CASE(537)
SWITCH_CASE(538)
SWITCH_CASE(539)
SWITCH_CASE(540)
SWITCH_CASE(541)
SWITCH_CASE(542)
SWITCH_CASE(543)
SWITCH_CASE(544)
SWITCH_CASE(545)
SWITCH_CASE(546)
SWITCH_CASE(547)
SWITCH_CASE(548)
SWITCH_CASE(549)
SWITCH_CASE(550)
SWITCH_CASE(551)
SWITCH_CASE(552)
SWITCH_CASE(553)
SWITCH_CASE(554)
SWITCH_CASE(555)
SWITCH_CASE(556)
SWITCH_CASE(557)
SWITCH_CASE(558)
SWITCH_CASE(559)
SWITCH_CASE(560)
SWITCH_CASE(561)
SWITCH_CASE(562)
SWITCH_CASE(563)
SWITCH_CASE(564)
SWITCH_CASE(565)
SWITCH_CASE(566)
SWITCH_CASE(567)
SWITCH_CASE(568)
SWITCH_CASE(569)
SWITCH_CASE(570)
SWITCH_CASE(571)
SWITCH_CASE(572)
SWITCH_CASE(573)
SWITCH_CASE(574)
SWITCH_CASE(575)
SWITCH_CASE(576)
SWITCH_CASE(66)
SWITCH_CASE(67)
SWITCH_CASE(68)
SWITCH_CASE(69)
SWITCH_CASE(70)
SWITCH_CASE(71)
SWITCH_CASE(72)
SWITCH_CASE(73)
case MINT_LDARGFLD_I8: {
gpointer *o = frame->stack_args [ip [1]].data.p;
if (!o)
return;
sp [0].data.l = *(gint64*)((char *)o + ip [2]);
sp++;
ip += 3;
break;
}
SWITCH_CASE(75)
SWITCH_CASE(76)
SWITCH_CASE(77)
SWITCH_CASE(78)
SWITCH_CASE(79)
SWITCH_CASE(80)
SWITCH_CASE(81)
SWITCH_CASE(82)
SWITCH_CASE(83)
SWITCH_CASE(84)
SWITCH_CASE(85)
SWITCH_CASE(86)
SWITCH_CASE(87)
SWITCH_CASE(88)
SWITCH_CASE(577)
SWITCH_CASE(578)
SWITCH_CASE(579)
SWITCH_CASE(580)
SWITCH_CASE(581)
SWITCH_CASE(582)
SWITCH_CASE(583)
SWITCH_CASE(584)
SWITCH_CASE(585)
SWITCH_CASE(586)
SWITCH_CASE(587)
SWITCH_CASE(588)
SWITCH_CASE(589)
SWITCH_CASE(590)
SWITCH_CASE(591)
SWITCH_CASE(592)
SWITCH_CASE(593)
SWITCH_CASE(594)
SWITCH_CASE(595)
SWITCH_CASE(596)
SWITCH_CASE(597)
SWITCH_CASE(598)
SWITCH_CASE(599)
SWITCH_CASE(600)
SWITCH_CASE(601)
SWITCH_CASE(602)
SWITCH_CASE(603)
SWITCH_CASE(604)
SWITCH_CASE(605)
SWITCH_CASE(606)
SWITCH_CASE(607)
SWITCH_CASE(608)
SWITCH_CASE(609)
SWITCH_CASE(610)
SWITCH_CASE(611)
SWITCH_CASE(612)
SWITCH_CASE(613)
SWITCH_CASE(614)
SWITCH_CASE(615)
SWITCH_CASE(616)
SWITCH_CASE(617)
SWITCH_CASE(618)
SWITCH_CASE(619)
SWITCH_CASE(620)
SWITCH_CASE(621)
SWITCH_CASE(622)
SWITCH_CASE(623)
SWITCH_CASE(624)
SWITCH_CASE(625)
SWITCH_CASE(626)
SWITCH_CASE(627)
SWITCH_CASE(628)
SWITCH_CASE(629)
SWITCH_CASE(630)
SWITCH_CASE(631)
SWITCH_CASE(632)
SWITCH_CASE(633)
SWITCH_CASE(634)
SWITCH_CASE(635)
SWITCH_CASE(636)
SWITCH_CASE(637)
SWITCH_CASE(638)
SWITCH_CASE(639)
SWITCH_CASE(640)
SWITCH_CASE(641)
SWITCH_CASE(642)
SWITCH_CASE(643)
SWITCH_CASE(644)
SWITCH_CASE(645)
SWITCH_CASE(646)
SWITCH_CASE(647)
SWITCH_CASE(648)
SWITCH_CASE(649)
SWITCH_CASE(650)
SWITCH_CASE(651)
SWITCH_CASE(652)
SWITCH_CASE(653)
SWITCH_CASE(654)
SWITCH_CASE(655)
SWITCH_CASE(656)
SWITCH_CASE(657)
SWITCH_CASE(658)
SWITCH_CASE(659)
SWITCH_CASE(660)
SWITCH_CASE(661)
SWITCH_CASE(662)
SWITCH_CASE(663)
SWITCH_CASE(664)
SWITCH_CASE(682)
SWITCH_CASE(683)
SWITCH_CASE(684)
SWITCH_CASE(685)
SWITCH_CASE(686)
SWITCH_CASE(687)
SWITCH_CASE(688)
SWITCH_CASE(689)
SWITCH_CASE(690)
SWITCH_CASE(691)
SWITCH_CASE(692)
SWITCH_CASE(693)
SWITCH_CASE(694)
SWITCH_CASE(695)
SWITCH_CASE(696)
SWITCH_CASE(697)
SWITCH_CASE(698)
SWITCH_CASE(699)
SWITCH_CASE(700)
SWITCH_CASE(701)
SWITCH_CASE(702)
SWITCH_CASE(703)
SWITCH_CASE(704)
SWITCH_CASE(705)
SWITCH_CASE(706)
SWITCH_CASE(707)
SWITCH_CASE(708)
SWITCH_CASE(709)
SWITCH_CASE(710)
SWITCH_CASE(711)
SWITCH_CASE(712)
SWITCH_CASE(713)
SWITCH_CASE(714)
SWITCH_CASE(715)
SWITCH_CASE(716)
SWITCH_CASE(717)
SWITCH_CASE(718)
SWITCH_CASE(719)
SWITCH_CASE(720)
SWITCH_CASE(721)
SWITCH_CASE(722)
SWITCH_CASE(723)
SWITCH_CASE(724)
SWITCH_CASE(725)
SWITCH_CASE(726)
SWITCH_CASE(727)
SWITCH_CASE(728)
SWITCH_CASE(729)
SWITCH_CASE(730)
SWITCH_CASE(731)
SWITCH_CASE(732)
SWITCH_CASE(733)
SWITCH_CASE(734)
SWITCH_CASE(735)
SWITCH_CASE(736)
SWITCH_CASE(737)
SWITCH_CASE(738)
SWITCH_CASE(739)
SWITCH_CASE(740)
SWITCH_CASE(741)
SWITCH_CASE(742)
SWITCH_CASE(743)
SWITCH_CASE(744)
SWITCH_CASE(745)
SWITCH_CASE(746)
SWITCH_CASE(747)
SWITCH_CASE(748)
SWITCH_CASE(749)
SWITCH_CASE(750)
SWITCH_CASE(751)
SWITCH_CASE(752)
SWITCH_CASE(753)
SWITCH_CASE(754)
SWITCH_CASE(755)
SWITCH_CASE(756)
SWITCH_CASE(757)
SWITCH_CASE(758)
SWITCH_CASE(759)
SWITCH_CASE(760)
SWITCH_CASE(761)
SWITCH_CASE(762)
SWITCH_CASE(763)
SWITCH_CASE(764)
SWITCH_CASE(765)
SWITCH_CASE(766)
SWITCH_CASE(767)
SWITCH_CASE(768)
SWITCH_CASE(769)
SWITCH_CASE(770)
SWITCH_CASE(771)
SWITCH_CASE(772)
SWITCH_CASE(773)
SWITCH_CASE(774)
SWITCH_CASE(775)
SWITCH_CASE(776)
SWITCH_CASE(777)
SWITCH_CASE(778)
SWITCH_CASE(779)
SWITCH_CASE(780)
SWITCH_CASE(781)
SWITCH_CASE(782)
SWITCH_CASE(783)
SWITCH_CASE(784)
SWITCH_CASE(785)
SWITCH_CASE(786)
SWITCH_CASE(787)
SWITCH_CASE(788)
SWITCH_CASE(789)
SWITCH_CASE(790)
SWITCH_CASE(791)
SWITCH_CASE(792)
SWITCH_CASE(793)
SWITCH_CASE(794)
SWITCH_CASE(795)
SWITCH_CASE(796)
SWITCH_CASE(797)
SWITCH_CASE(798)
SWITCH_CASE(799)
SWITCH_CASE(800)
SWITCH_CASE(801)
SWITCH_CASE(802)
SWITCH_CASE(803)
SWITCH_CASE(804)
SWITCH_CASE(805)
SWITCH_CASE(806)
SWITCH_CASE(807)
SWITCH_CASE(808)
SWITCH_CASE(809)
SWITCH_CASE(810)
SWITCH_CASE(811)
SWITCH_CASE(812)
SWITCH_CASE(813)
SWITCH_CASE(814)
SWITCH_CASE(815)
SWITCH_CASE(816)
SWITCH_CASE(817)
SWITCH_CASE(818)
SWITCH_CASE(819)
SWITCH_CASE(820)
SWITCH_CASE(821)
SWITCH_CASE(822)
SWITCH_CASE(823)
SWITCH_CASE(824)
SWITCH_CASE(825)
SWITCH_CASE(826)
SWITCH_CASE(827)
SWITCH_CASE(828)
SWITCH_CASE(829)
SWITCH_CASE(830)
SWITCH_CASE(831)
SWITCH_CASE(832)
SWITCH_CASE(833)
SWITCH_CASE(834)
SWITCH_CASE(835)
SWITCH_CASE(836)
SWITCH_CASE(837)
SWITCH_CASE(838)
SWITCH_CASE(839)
SWITCH_CASE(840)
SWITCH_CASE(841)
SWITCH_CASE(842)
SWITCH_CASE(843)
SWITCH_CASE(844)
SWITCH_CASE(845)
SWITCH_CASE(846)
SWITCH_CASE(847)
SWITCH_CASE(848)
SWITCH_CASE(849)
SWITCH_CASE(850)
SWITCH_CASE(851)
SWITCH_CASE(852)
SWITCH_CASE(853)
SWITCH_CASE(854)
SWITCH_CASE(855)
SWITCH_CASE(856)
SWITCH_CASE(857)
SWITCH_CASE(858)
SWITCH_CASE(859)
SWITCH_CASE(860)
SWITCH_CASE(861)
SWITCH_CASE(862)
SWITCH_CASE(863)
SWITCH_CASE(864)
SWITCH_CASE(865)
SWITCH_CASE(866)
SWITCH_CASE(867)
SWITCH_CASE(868)
SWITCH_CASE(869)
SWITCH_CASE(870)
SWITCH_CASE(871)
SWITCH_CASE(872)
SWITCH_CASE(873)
SWITCH_CASE(874)
SWITCH_CASE(875)
SWITCH_CASE(876)
SWITCH_CASE(877)
SWITCH_CASE(878)
SWITCH_CASE(879)
SWITCH_CASE(880)
SWITCH_CASE(881)
SWITCH_CASE(882)
SWITCH_CASE(883)
SWITCH_CASE(884)
SWITCH_CASE(885)
SWITCH_CASE(886)
SWITCH_CASE(887)
SWITCH_CASE(888)
SWITCH_CASE(889)
SWITCH_CASE(890)
SWITCH_CASE(891)
SWITCH_CASE(892)
SWITCH_CASE(893)
SWITCH_CASE(894)
SWITCH_CASE(895)
SWITCH_CASE(896)
SWITCH_CASE(897)
SWITCH_CASE(898)
SWITCH_CASE(899)
SWITCH_CASE(900)
SWITCH_CASE(901)
SWITCH_CASE(902)
SWITCH_CASE(903)
SWITCH_CASE(904)
SWITCH_CASE(905)
SWITCH_CASE(906)
SWITCH_CASE(907)
SWITCH_CASE(908)
SWITCH_CASE(909)
SWITCH_CASE(910)
SWITCH_CASE(911)
SWITCH_CASE(912)
SWITCH_CASE(913)
SWITCH_CASE(914)
SWITCH_CASE(915)
SWITCH_CASE(916)
SWITCH_CASE(917)
SWITCH_CASE(918)
SWITCH_CASE(919)
SWITCH_CASE(920)
SWITCH_CASE(921)
SWITCH_CASE(922)
SWITCH_CASE(923)
SWITCH_CASE(924)
SWITCH_CASE(925)
SWITCH_CASE(926)
SWITCH_CASE(927)
SWITCH_CASE(928)
SWITCH_CASE(929)
SWITCH_CASE(930)
SWITCH_CASE(931)
SWITCH_CASE(932)
SWITCH_CASE(933)
SWITCH_CASE(934)
SWITCH_CASE(935)
SWITCH_CASE(936)
SWITCH_CASE(937)
SWITCH_CASE(938)
SWITCH_CASE(939)
SWITCH_CASE(940)
SWITCH_CASE(941)
SWITCH_CASE(942)
SWITCH_CASE(943)
SWITCH_CASE(944)
SWITCH_CASE(945)
SWITCH_CASE(946)
SWITCH_CASE(947)
SWITCH_CASE(948)
SWITCH_CASE(949)
SWITCH_CASE(950)
SWITCH_CASE(951)
SWITCH_CASE(952)
SWITCH_CASE(953)
SWITCH_CASE(954)
SWITCH_CASE(955)
SWITCH_CASE(956)
SWITCH_CASE(957)
SWITCH_CASE(958)
SWITCH_CASE(959)
SWITCH_CASE(960)
SWITCH_CASE(961)
SWITCH_CASE(962)
SWITCH_CASE(963)
SWITCH_CASE(964)
SWITCH_CASE(965)
SWITCH_CASE(966)
SWITCH_CASE(967)
SWITCH_CASE(968)
SWITCH_CASE(969)
SWITCH_CASE(970)
SWITCH_CASE(971)
SWITCH_CASE(972)
SWITCH_CASE(973)
SWITCH_CASE(974)
SWITCH_CASE(975)
SWITCH_CASE(976)
SWITCH_CASE(977)
SWITCH_CASE(978)
SWITCH_CASE(979)
SWITCH_CASE(980)
SWITCH_CASE(981)
SWITCH_CASE(982)
SWITCH_CASE(983)
SWITCH_CASE(984)
SWITCH_CASE(985)
SWITCH_CASE(986)
SWITCH_CASE(987)
SWITCH_CASE(988)
SWITCH_CASE(989)
SWITCH_CASE(990)
SWITCH_CASE(991)
SWITCH_CASE(992)
SWITCH_CASE(993)
SWITCH_CASE(994)
SWITCH_CASE(995)
SWITCH_CASE(996)
SWITCH_CASE(997)
SWITCH_CASE(998)
SWITCH_CASE(999)
SWITCH_CASE(1000)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment