summaryrefslogtreecommitdiffstats
path: root/sys/dev/ce
diff options
context:
space:
mode:
authorrik <rik@FreeBSD.org>2006-01-27 09:02:09 +0000
committerrik <rik@FreeBSD.org>2006-01-27 09:02:09 +0000
commitf3230d3762b81ca928bf39feb0cf0b3851ea7aa3 (patch)
tree368e7beda95804d8e2aad23d3d2962109dbac5d5 /sys/dev/ce
parent31d961e34ab55b9ca117095da2a3d29e239b488c (diff)
downloadFreeBSD-src-f3230d3762b81ca928bf39feb0cf0b3851ea7aa3.zip
FreeBSD-src-f3230d3762b81ca928bf39feb0cf0b3851ea7aa3.tar.gz
Initial import of ce(4) driver for Cronyx Tau-PCI/32 adapters.
Not yet connected to the build.
Diffstat (limited to 'sys/dev/ce')
-rw-r--r--sys/dev/ce/ceddk.c1522
-rw-r--r--sys/dev/ce/ceddk.h201
-rw-r--r--sys/dev/ce/if_ce.c2681
-rw-r--r--sys/dev/ce/ng_ce.h31
-rw-r--r--sys/dev/ce/tau32-ddk.c4322
-rw-r--r--sys/dev/ce/tau32-ddk.h514
6 files changed, 9271 insertions, 0 deletions
diff --git a/sys/dev/ce/ceddk.c b/sys/dev/ce/ceddk.c
new file mode 100644
index 0000000..bc98012
--- /dev/null
+++ b/sys/dev/ce/ceddk.c
@@ -0,0 +1,1522 @@
+/*
+ * Middle-level code for Cronyx Tau32-PCI adapters.
+ *
+ * Copyright (C) 2004 Cronyx Engineering
+ * Copyright (C) 2004 Roman Kurakin <rik@FreeBSD.org>
+ *
+ * This software is distributed with NO WARRANTIES, not even the implied
+ * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Authors grant any other persons or organisations a permission to use,
+ * modify and redistribute this software in source and binary forms,
+ * as long as this message is kept with the software, all derivative
+ * works or modified versions.
+ *
+ * $Cronyx: ceddk.c,v 1.2.6.2 2005/11/17 16:04:13 rik Exp $
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <dev/cx/machdep.h>
+#include <dev/ce/ceddk.h>
+
+#undef CE_DDK_DEBUG_ENABLED
+#ifdef CE_DDK_DEBUG_ENABLED
+#ifdef __FreeBSD__
+# define CE_DDK_DEBUG(b,c,s) \
+ do { \
+ if (c) { \
+ printf("ce%d-%d: ",(b)->num,(c)->num); \
+ } else { \
+ printf("ce%d-*: ",(b)->num); \
+ } \
+ printf s; \
+ } while (0)
+#else
+# define CE_DDK_DEBUG(b,c,s) do {} while (0)
+#endif
+#else
+# define CE_DDK_DEBUG(b,c,s) do {} while (0)
+#endif
+
+#if 0
+#define ENTER() \
+ static int enter=0; \
+ do { \
+ enter++; \
+ printf ("%s: >> enter (%16llx) %d\n", __FUNCTION__, rdtsc (), enter); \
+ } while (0)
+
+#define EXIT(val...) \
+ do { \
+ enter--; \
+ printf ("%s: << exit (%16llx) %d line %d\n", __FUNCTION__, rdtsc (), enter, __LINE__); \
+ return val; \
+ } while (0)
+#else
+#define ENTER() \
+ do {} while (0)
+
+#define EXIT(val...) \
+ do {return val;} while (0)
+#endif
+
+#define CE_ENQUEUE(list,item) \
+ do { \
+ TAU32_UserRequest **last; \
+ last = &(list); \
+ while (*last) { \
+ last = &(*last)->next; \
+ } \
+ (*last) = (item); \
+ (item)->next = NULL; \
+ } while (0)
+
+#define CE_ENQUEUE_HEAD(list,item) \
+ do { \
+ (item)->next = list; \
+ list = item; \
+ } while (0)
+
+#define CE_DEQUEUE(list,item) \
+ do { \
+ item = list; \
+ if (list) { \
+ list = (item)->next; \
+ } \
+ } while (0)
+
+#define CE_PREREQUEST(b,c,list,item) \
+ do { \
+ item = list; \
+ if (!item) { \
+ CE_DDK_DEBUG (b, c, ("Fatal error, no free structs " \
+ "for UserRequest (%s:%d)\n", \
+ __FUNCTION__, __LINE__)); \
+ } \
+ } while (0)
+
+#define CE_DUMP_QUEUE(list) \
+ do { \
+ TAU32_UserRequest *item; \
+ int i = 0; \
+ item = list; \
+ while (item) { \
+ printf ("item%d: %p\n", i, item); \
+ item = item->next; \
+ i++; \
+ } \
+ } while (0)
+
+#define CE_FIND_ITEM(list,item,flag) \
+ do { \
+ TAU32_UserRequest *citem; \
+ flag = 0; \
+ for (citem = list; citem; citem = citem->next) { \
+ if (citem == item) { \
+ flag = 1; \
+ break; \
+ } \
+ } \
+ } while (0)
+
+#define CE_LAST_ITEM(list,item) \
+ do { \
+ TAU32_UserRequest **last; \
+ last = &(list); \
+ while ((*last) && (*last)->next) { \
+ last = &(*last)->next; \
+ } \
+ (item) = (*last); \
+ } while (0)
+
+#define CE_ASSERT(a) \
+ do { \
+ if (!(a)) { \
+ printf ("ASSERT: %d %s\n", __LINE__, #a); \
+ __asm __volatile ("int $3"); \
+ } \
+ } while (0)
+
+static void _ce_set_ts (ce_chan_t *c, unsigned long ts);
+static void _ce_submit_configure_e1 (ce_chan_t *c, char *rname);
+
+#ifdef CE_DDK_DEBUG_ENABLED
+static char *ce_err2str (unsigned long err)
+{
+ switch (err) {
+ case TAU32_SUCCESSFUL:
+ return "Successful";
+ case TAU32_ERROR_ALLOCATION:
+ return "Allocation error, not enough tx/rx descriptors";
+ case TAU32_ERROR_BUS:
+ return "PEB could not access to host memory by PCI bus for load/store information";
+ case TAU32_ERROR_FAIL:
+ return "PEB action request failed";
+ case TAU32_ERROR_TIMEOUT:
+ return "PEB action request timeout";
+ case TAU32_ERROR_CANCELLED:
+ return "request has been canceled";
+ case TAU32_ERROR_TX_UNDERFLOW:
+ return "transmission underflow";
+ case TAU32_ERROR_TX_PROTOCOL:
+ return "TX_PROTOCOL";
+ case TAU32_ERROR_RX_OVERFLOW:
+ return "RX_OVERFLOW";
+ case TAU32_ERROR_RX_ABORT:
+ return "RX_ABORT";
+ case TAU32_ERROR_RX_CRC:
+ return "RX_CRC";
+ case TAU32_ERROR_RX_SHORT:
+ return "RX_SHORT";
+ case TAU32_ERROR_RX_SYNC:
+ return "RX_SYNC";
+ case TAU32_ERROR_RX_FRAME:
+ return "RX_FRAME";
+ case TAU32_ERROR_RX_LONG:
+ return "RX_LONG";
+ case TAU32_ERROR_RX_SPLIT:
+ return "frame has splitted between two requests due rx-gap allocation";
+ case TAU32_ERROR_RX_UNFIT:
+ return "frame can't be fit into request buffer";
+ case TAU32_ERROR_TSP:
+ return "ERROR_TSP";
+ case TAU32_ERROR_RSP:
+ return "ERROR_RSP";
+ case TAU32_ERROR_INT_OVER_TX:
+ return "ERROR INT OVER TX";
+ case TAU32_ERROR_INT_OVER_RX:
+ return "ERROR INT OVER RX";
+ case TAU32_ERROR_INT_STORM:
+ return "irq storm";
+ case TAU32_ERROR_INT_E1LOST:
+ return "ERROR_E1LOST";
+ default:
+ return ("Unknown error");
+ }
+}
+#endif
+
+void ce_set_dtr (ce_chan_t *c, int on)
+{
+ c->dtr = on?1:0;
+}
+
+void ce_set_rts (ce_chan_t *c, int on)
+{
+ c->rts = on?1:0;
+}
+
+static void TAU32_CALLBACK_TYPE ce_on_receive
+ (TAU32_UserContext *pContext, TAU32_UserRequest *req)
+{
+ ce_buf_item_t *item = (ce_buf_item_t *)req;
+ ce_chan_t *c;
+ ce_board_t *b;
+ unsigned int error;
+ int len;
+
+ ENTER ();
+ if (!req || !req->sys) {
+ EXIT ();
+ }
+
+ c = (ce_chan_t *)req->sys;
+ b = c->board;
+
+ len = req->Io.Rx.Received;
+ error = req->ErrorCode;
+
+ c->rintr++;
+ if (error == TAU32_SUCCESSFUL) {
+ if (req->Io.Rx.FrameEnd) {
+ c->ipkts++;
+ } else {
+ CE_DDK_DEBUG (b, c, ("No FrameEnd\n"));
+ /* probably do something in some cases*/
+ }
+ c->ibytes += len;
+ if (c->receive)
+ c->receive (c, item->buf, len);
+ } else if (error & TAU32_ERROR_BUS) {
+ c->overrun++;
+ if (c->error)
+ c->error (c, CE_OVERRUN);
+ } else {
+ CE_DDK_DEBUG (b, c, ("Another receive error: %x\n", error));
+ /* Do some procesing */
+ }
+
+ CE_ASSERT (!req->pInternal);
+ CE_ENQUEUE (c->rx_queue, req);
+ while (c->rx_queue) {
+ CE_DEQUEUE (c->rx_queue, req);
+ CE_ASSERT (req);
+ item = (ce_buf_item_t *)req;
+ req->Command = TAU32_Rx_Data;
+ req->Io.Rx.Channel = c->num;
+ req->pCallback = ce_on_receive;
+ req->Io.Rx.BufferLength = BUFSZ+4;
+ req->Io.Rx.PhysicalDataAddress = item->phys;
+ if (!TAU32_SubmitRequest (b->ddk.pControllerObject, req)) {
+ CE_DDK_DEBUG (b, c, ("RX submition failure\n"));
+ c->rx_pending--;
+ CE_ENQUEUE_HEAD (c->rx_queue, req);
+ break;
+ }
+ }
+ EXIT ();
+}
+
+static void TAU32_CALLBACK_TYPE ce_on_transmit
+ (TAU32_UserContext *pContext, TAU32_UserRequest *req)
+{
+ int len;
+ unsigned int error;
+ ce_chan_t *c;
+ ENTER ();
+
+ if (!req || !req->sys) {
+ EXIT ();
+ }
+
+ c = (ce_chan_t *)req->sys;
+
+ len = req->Io.Tx.Transmitted;
+ error = req->ErrorCode;
+
+ c->tintr++;
+ if (error == TAU32_SUCCESSFUL) {
+ c->obytes += len;
+ c->opkts++;
+ } else if (error & TAU32_ERROR_BUS) {
+ c->underrun++;
+ if (c->error)
+ c->error (c, CE_UNDERRUN);
+ } else {
+ CE_DDK_DEBUG (c->board, c, ("Another transmit error: %x\n",
+ error));
+ /* Do some procesing */
+ }
+
+ CE_ENQUEUE (c->tx_queue, req);
+ c->tx_pending--;
+
+ if (c->transmit)
+ c->transmit (c, 0, len);
+ EXIT ();
+}
+
+int ce_transmit_space (ce_chan_t *c)
+{
+ return c->tx_pending < (TAU32_IO_QUEUE);
+}
+
+int ce_send_packet (ce_chan_t *c, unsigned char *buf, int len, void *tag)
+{
+ TAU32_UserRequest *req;
+ ce_buf_item_t *item;
+
+ ENTER ();
+
+ if (!ce_transmit_space (c)) {
+ EXIT (-1);
+ }
+
+ if (len <= 0 || len > BUFSZ) {
+ EXIT (-2);
+ }
+
+ CE_DEQUEUE (c->tx_queue, req);
+ CE_ASSERT (req);
+ item = (ce_buf_item_t *)req;
+
+ if (buf != item->buf)
+ memcpy (item->buf, buf, len);
+
+ CE_ASSERT (!req->pInternal);
+
+ req->Command = TAU32_Tx_Data | TAU32_Tx_FrameEnd;
+ req->Io.Tx.Channel = c->num;
+ req->pCallback = ce_on_transmit;
+ req->Io.Tx.DataLength = len;
+ req->Io.Tx.PhysicalDataAddress = item->phys;
+ c->tx_pending++;
+ if (!TAU32_SubmitRequest (c->board->ddk.pControllerObject, req)) {
+ CE_DDK_DEBUG (c->board, c, ("Can't submit packet for "
+ "transmission\n"));
+ CE_ENQUEUE_HEAD (c->tx_queue, req);
+ c->tx_pending--;
+ EXIT (-3);
+ }
+ EXIT (0);
+}
+
+static void TAU32_CALLBACK_TYPE ce_on_config
+ (TAU32_UserContext *pContext, TAU32_UserRequest *req)
+{
+ ce_board_t *b = (ce_board_t *) pContext;
+ ENTER ();
+ b->cr.pending--;
+ if (req->ErrorCode)
+ CE_DDK_DEBUG (b, (ce_chan_t*)0, ("Config request failure: %lx\n",
+ req->ErrorCode));
+ EXIT ();
+}
+
+static void TAU32_CALLBACK_TYPE ce_on_config_stop
+ (TAU32_UserContext *pContext, TAU32_UserRequest *req)
+{
+ int i, first;
+ TAU32_UserRequest *rreq;
+ ce_board_t *b = (ce_board_t *) pContext;
+ ce_chan_t *c = b->chan + req->Io.ChannelNumber;
+
+ ENTER ();
+ /* Stop all requests */
+ CE_ASSERT (0);/* Buggy */
+ CE_LAST_ITEM (c->rx_queue, rreq);
+ /* A little hacky, try to guess which is a first */
+ first = rreq ? (c->rx_item - (ce_buf_item_t *)rreq) + 1 : 0;
+ for (i = 0; i < TAU32_IO_QUEUE; i++) {
+ int is_pending;
+ rreq = &c->rx_item[(i + first) % TAU32_IO_QUEUE].req;
+ CE_FIND_ITEM (c->rx_queue, rreq, is_pending);
+ if (!is_pending)
+ continue;
+ TAU32_CancelRequest (b->ddk.pControllerObject, rreq, 1);
+ rreq->Command = TAU32_Rx_Data;
+ rreq->Io.Rx.Channel = c->num;
+ rreq->Io.Rx.BufferLength = BUFSZ+4;
+ rreq->Io.Rx.PhysicalDataAddress = ((ce_buf_item_t *)rreq)->phys;
+ c->rx_pending++;
+ if (!TAU32_SubmitRequest (b->ddk.pControllerObject, rreq)) {
+ CE_ASSERT (0);/* Buggy */
+ c->rx_pending--;
+ break;
+ }
+ }
+
+ c->tx_pending = 0;
+/* c->rx_pending = 0;*/
+ EXIT ();
+}
+
+static int ce_cfg_submit (ce_board_t *b)
+{
+ TAU32_UserRequest *req;
+ ENTER ();
+
+ CE_DEQUEUE (b->cr.queue, req);
+ CE_ASSERT (req);
+ CE_ASSERT (!req->pInternal);
+
+ req->pCallback = ce_on_config;
+ b->cr.pending++;
+
+ CE_DDK_DEBUG (b, (ce_chan_t *)0, ("config request pending: %d\n",
+ b->cr.pending));
+
+ if (!TAU32_SubmitRequest (b->ddk.pControllerObject, req)) {
+ CE_ENQUEUE_HEAD (b->cr.queue, req);
+ CE_DDK_DEBUG (b, (ce_chan_t *)0, ("Fail to submit config request\n"));
+ b->cr.pending--;
+ EXIT (0);
+ }
+
+ EXIT (1);
+}
+
+void ce_init_board (ce_board_t *b)
+{
+ int i;
+
+ b->cr.queue = NULL;
+
+ for (i = 0; i < CONFREQSZ; i++) {
+ CE_ENQUEUE (b->cr.queue, b->cr.req + i);
+ }
+
+ b->chan[0].config = TAU32_ais_on_loss;
+
+ /* lloop = off, rloop = off */
+ b->chan[0].config |= TAU32_LineNormal;
+ b->chan[0].lloop = 0;
+ b->chan[0].rloop = 0;
+
+ /* unfram=off, scrambler=off, use16=off, crc4=off,
+ higain=off, monitor=off*/
+ b->chan[0].config |= (b->ddk.Interfaces == 2 ? TAU32_framed_cas_cross :
+ TAU32_framed_cas_set);
+ b->chan[0].unfram = 0;
+ b->chan[0].scrambler = 0;
+ b->chan[0].use16 = 0;
+ b->chan[0].crc4 = 0;
+ b->chan[0].higain = 0;
+ b->chan[0].monitor = 0;
+
+ if (b->ddk.Interfaces == 2) {
+ b->chan[1].config = TAU32_ais_on_loss;
+ /* lloop = off, rloop = off */
+ b->chan[1].config |= TAU32_LineNormal;
+ /* unfram=off, scrambler=off, use16=off, crc4=off,
+ higain=off, monitor=off*/
+ b->chan[1].config |= TAU32_framed_cas_cross;
+ b->chan[1].unfram = 0;
+ b->chan[1].scrambler = 0;
+ b->chan[1].use16 = 0;
+ b->chan[1].crc4 = 0;
+ b->chan[1].higain = 0;
+ b->chan[1].monitor = 0;
+ }
+
+ for (i = 0; i < NCHAN; i++) {
+ /* Chan0 ts=1-15,17-31, Chan1 ts=1-2 */
+ b->chan[i].type = i < b->ddk.Interfaces ? T_E1 : T_DATA;
+ b->chan[i].ts = (i == 0 ? 0xfffefffe :
+ (i != 1 ? 0 :
+ (b->ddk.Interfaces == 2 ? 0x6: 0)));
+ b->chan[i].dir = (b->ddk.Interfaces == 2) ? (i%2) : 0;
+ b->chan[i].mtu = 1504;
+ }
+#if 0
+ /* c->num == 0 */
+ req = b->cr.queue;
+ /* We must have some here */
+ CE_ASSERT (req);
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = TAU32_E1_A;
+ req->Io.InterfaceConfig.Config = b->chan[0].config;
+ req->Io.InterfaceConfig.UnframedTsMask = 0;
+ if (!ce_cfg_submit (b)) {
+ CE_DDK_DEBUG (b, b->chan + 0,
+ ("Submit request failure, line %d\n",
+ __LINE__));
+ }
+ /* c->num == 1 */
+ if (b->ddk.Interfaces == 2) {
+ req = b->cr.queue;
+ /* We must have some here */
+ CE_ASSERT (req);
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = TAU32_E1_B;
+ req->Io.InterfaceConfig.Config = b->chan[1].config;
+ req->Io.InterfaceConfig.UnframedTsMask = 0;
+ if (!ce_cfg_submit (b)) {
+ CE_DDK_DEBUG (b, b->chan + 1,
+ ("Submit request failure, line %d\n",
+ __LINE__));
+ }
+ }
+#endif
+ /* Set default cross matrix */
+ for (i = 0; i < 32; i++) {
+ /* -X-> Peb */
+ b->dxc[i] = TAU32_CROSS_OFF;
+ /* Link2 -> Link1 */
+ b->dxc[i + 32] = i + 64;
+ /* Link1 -> Link2 */
+ b->dxc[i + 64] = i + 32;
+ }
+
+ /* We have only mux mode for now. Later we will also have cross mode */
+ b->mux = 1;
+}
+
+void ce_start_chan (ce_chan_t *c, int tx, int rx, ce_buf_t *cb,
+ unsigned long phys)
+{
+ int i;
+ ce_board_t *b = c->board;
+
+/* c->config = TAU32_ais_on_loss | TAU32_framed_cas_cross;*/
+
+ if (cb) {
+ CE_DDK_DEBUG (b, c, ("ce_buf_t virt:%p phys:%p\n", cb,
+ (void *)phys));
+ c->tx_item = cb->tx_item;
+ c->rx_item = cb->rx_item;
+ c->tx_queue = NULL;
+ c->rx_queue = NULL;
+ for (i = 0; i < TAU32_IO_QUEUE; i++) {
+ c->tx_item[i].phys = phys +
+ ((char *)(c->tx_item[i].buf)-(char *)cb);
+ c->rx_item[i].phys = phys +
+ ((char *)(c->rx_item[i].buf)-(char *)cb);
+ cb->tx_item[i].req.sys = c;
+ cb->rx_item[i].req.sys = c;
+ CE_DDK_DEBUG (b, c, ("tx_item[%d].buf virt:%p phys:%p\n",
+ i, c->tx_item[i].buf,
+ (void *)c->tx_item[i].phys));
+ CE_DDK_DEBUG (b, c, ("rx_item[%d].buf virt:%p phys:%p\n",
+ i, c->rx_item[i].buf,
+ (void *)c->rx_item[i].phys));
+ CE_ENQUEUE (c->rx_queue, &c->rx_item[i].req);
+ CE_ENQUEUE (c->tx_queue, &c->tx_item[i].req);
+ }
+ c->tx_pending = 0;
+ c->rx_pending = 0;
+ }
+
+ /* submit rx */
+ while (1) {
+ ce_buf_item_t *item;
+ TAU32_UserRequest *req;
+
+ CE_DEQUEUE (c->rx_queue, req);
+ if (!req)
+ break;
+ item = (ce_buf_item_t *) req;
+ CE_ASSERT (c->rx_pending < TAU32_IO_QUEUE);
+ req->Command = TAU32_Rx_Data;
+ req->Io.Rx.Channel = c->num;
+ req->pCallback = ce_on_receive;
+ req->Io.Rx.BufferLength = c->mtu + (c->phony ? 0 : 4);
+ req->Io.Rx.PhysicalDataAddress = item->phys;
+ c->rx_pending++;
+ if (!TAU32_SubmitRequest (b->ddk.pControllerObject, req)) {
+ CE_DDK_DEBUG (b, c, ("Faild to submit rx request\n"));
+ /*XXXRIK: shouldn't happen, but ... */
+ CE_ASSERT (0);
+ c->rx_pending--;
+ break;
+ }
+ }
+
+ if (tx | rx) {
+ TAU32_UserRequest *req;
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_Commit |
+ (tx ? TAU32_Tx_Start : 0) |
+ (rx ? TAU32_Rx_Start : 0);
+ req->Io.ChannelNumber = c->num;
+ if (!ce_cfg_submit (b)) {
+ CE_DDK_DEBUG (b, c, ("Can't start chan\n"));
+ /* Do some error processing */
+ return;
+ }
+ }
+
+ /* If we run just after ce_board_init we have prope values.
+ * Else I hope you didn't set ts to incorrect value.
+ */
+ _ce_set_ts (c, c->ts);
+ if (c->num < b->ddk.Interfaces) {
+ /* The same for other modes. We don't check them.
+ * We hope that config is correctly set. Just as we have
+ * after ce_board_init. If channel was stoped we hope that
+ * it's config was not broken just after it and we didn't
+ * brake it before start.
+ */
+ _ce_submit_configure_e1 (c, "start_init");
+ }
+}
+
+void ce_stop_chan (ce_chan_t *c)
+{
+ ce_board_t *b = c->board;
+ TAU32_UserRequest *req;
+ CE_DEQUEUE (b->cr.queue, req);
+
+ /* XXXRIK: This function should be for comleteness, but for now I
+ * don't use it. So I just start to write and didn't finished it yet.
+ * It and it is VERY BUGGY!!! Do not use it. If you realy
+ * need it ask me to fix it or rewrite it by your self.
+ * Note: most buggy part of it in ce_on_config_stop!
+ */
+ if (!req) {
+ CE_DDK_DEBUG (b, c, ("Fatal error, no free structs for "
+ "UserRequest (%s:%d)\n", __FUNCTION__, __LINE__));
+ return;
+ }
+ req->Command = TAU32_Configure_Commit |
+ TAU32_Tx_Stop | TAU32_Rx_Stop;
+ req->Command = 0;
+ req->Io.ChannelNumber = c->num;
+ req->pCallback = ce_on_config_stop;
+ b->cr.pending++;
+
+ if (!TAU32_SubmitRequest (b->ddk.pControllerObject, req)) {
+ CE_ENQUEUE_HEAD (b->cr.queue, req);
+ CE_DDK_DEBUG (b, c, ("Can't stop chan\n"));
+ b->cr.pending--;
+ }
+}
+
+
+void ce_register_transmit (ce_chan_t *c,
+ void (*func) (ce_chan_t*, void*, int))
+{
+ c->transmit = func;
+}
+
+void ce_register_receive (ce_chan_t *c,
+ void (*func) (ce_chan_t*, unsigned char*, int))
+{
+ c->receive = func;
+}
+
+void ce_register_error (ce_chan_t *c,
+ void (*func) (ce_chan_t*, int))
+{
+ c->error = func;
+}
+
+void TAU32_CALLBACK_TYPE ce_error_callback (TAU32_UserContext *pContext,
+ int Item, unsigned NotifyBits)
+{
+ ce_board_t *b = (ce_board_t *) pContext;
+ ENTER ();
+ if (NotifyBits & (TAU32_ERROR_FAIL | TAU32_ERROR_TIMEOUT
+ | TAU32_ERROR_INT_OVER_TX | TAU32_ERROR_INT_OVER_RX
+ | TAU32_ERROR_INT_STORM)) {
+ /* Fatal: adapter failure, need reset & restart */
+ /* RIKXXX: probably I should add CE_FAILURE for ce_error */
+ CE_DDK_DEBUG (b, (ce_chan_t *)0, ("Err, disable interrupts: %s\n",
+ ce_err2str (NotifyBits)));
+/* TAU32_DisableInterrupts (b->ddk.pControllerObject);*/
+ EXIT ();
+ }
+ if (Item >= 0) {
+ /* channel error */
+ ce_chan_t *c = b->chan + Item;
+ if (NotifyBits & TAU32_ERROR_TX_UNDERFLOW) {
+ c->underrun++;
+ if (c->error)
+ c->error (c, CE_UNDERRUN);
+ }
+ if (NotifyBits & TAU32_ERROR_RX_OVERFLOW) {
+ c->overrun++;
+ if (c->error)
+ c->error (c, CE_OVERFLOW);
+ }
+ if (NotifyBits & (TAU32_ERROR_RX_FRAME | TAU32_ERROR_RX_ABORT |
+ TAU32_ERROR_RX_SHORT | TAU32_ERROR_RX_LONG |
+ TAU32_ERROR_RX_SYNC | TAU32_ERROR_RX_SPLIT |
+ TAU32_ERROR_RX_UNFIT)) {
+ c->frame++;
+ CE_DDK_DEBUG (b, c, ("Frame error: %x\n", NotifyBits));
+ if (c->error)
+ c->error (c, CE_FRAME);
+ }
+ if(NotifyBits & TAU32_ERROR_RX_CRC) {
+ c->crc++;
+ if (c->error)
+ c->error (c, CE_CRC);
+ }
+ } else {
+ CE_DDK_DEBUG (b, (ce_chan_t *)0, ("Another error: %x\n",
+ NotifyBits));
+ /* Adapter error, do smth */
+ }
+ EXIT ();
+}
+
+void TAU32_CALLBACK_TYPE ce_status_callback(TAU32_UserContext *pContext,
+ int Item, unsigned NotifyBits)
+{
+ ce_board_t *b = (ce_board_t *) pContext;
+ ENTER ();
+ if(Item >= 0) {
+ /* e1 status */
+ ce_chan_t *c = b->chan + Item;
+ c->acc_status |= b->ddk.InterfacesInfo[Item].Status;
+/* CE_DDK_DEBUG (b, c, ("Current status: %x\n", c->acc_status));*/
+ } else {
+ CE_DDK_DEBUG (b, (ce_chan_t *)0, ("Another status: %x\n", NotifyBits));
+ /* Adapter status, do smth. */
+ }
+ EXIT ();
+}
+
+int ce_get_cd (ce_chan_t *c)
+{
+ unsigned int e1status = c->board->ddk.InterfacesInfo[c->dir].Status;
+
+ return (c->ts && !(e1status & (TAU32_RCL | TAU32_E1OFF)));
+}
+
+int ce_get_cts (ce_chan_t *c)
+{
+ return 0;
+}
+
+int ce_get_dsr (ce_chan_t *c)
+{
+ return 0;
+}
+
+void ce_e1_timer (ce_chan_t *c)
+{
+ unsigned bpv, fas, crc4, ebit, pcv, oof, css;
+ unsigned int acc_status;
+ ce_board_t *b = c->board;
+ TAU32_E1_State *state;
+
+ if (c->num >= b->ddk.Interfaces)
+ return;
+
+ state = &b->ddk.InterfacesInfo[c->num];
+ acc_status = c->acc_status;
+
+ /* Clear acc_status */
+ c->acc_status = b->ddk.InterfacesInfo[c->num].Status;
+
+ /* Count seconds.
+ * During the first second after the channel startup
+ * the status registers are not stable yet,
+ * we will so skip the first second. */
+ ++c->cursec;
+ if (! c->totsec && c->cursec <= 1)
+ return;
+
+ c->status = 0;
+
+ /* Compute the SNMP-compatible channel status. */
+ oof = 0;
+
+ if (acc_status & TAU32_RCL)
+ c->status |= ESTS_LOS; /* loss of signal */
+ if (acc_status & TAU32_RUA1)
+ c->status |= ESTS_AIS; /* receiving all ones */
+
+ /* Get error counters. */
+ bpv = state->RxViolations;
+ fas = 0;
+ crc4 = 0;
+ ebit = 0;
+ css = 0;
+
+ if (! c->unfram) {
+ if (! c->use16 && (acc_status & TAU32_RSA1))
+ c->status |= ESTS_AIS16; /* signaling all ones */
+ if (! c->use16 && (acc_status & TAU32_RDMA))
+ c->status |= ESTS_FARLOMF; /* alarm in timeslot 16 */
+ if (acc_status & TAU32_RRA)
+ c->status |= ESTS_FARLOF; /* far loss of framing */
+
+ if (acc_status & TAU32_RFAS) {
+ c->status |= ESTS_LOF; /* loss of framing */
+ ++oof; /* out of framing */
+ }
+ if ((! c->use16 && (acc_status & TAU32_RCAS)) ||
+ (c->crc4 && (acc_status & TAU32_RCRC4))) {
+ c->status |= ESTS_LOMF; /* loss of multiframing */
+ ++oof; /* out of framing */
+ }
+ fas = state->FasErrors;
+ crc4 = state->Crc4Errors;
+ ebit = state->FarEndBlockErrors;
+
+ /* Controlled slip second -- any slip event. */
+ css = state->TransmitSlips + state->ReceiveSlips;
+ }
+
+ /* Clear state */
+ state->RxViolations = 0;
+ state->FasErrors = 0;
+ state->Crc4Errors = 0;
+ state->FarEndBlockErrors = 0;
+ state->TransmitSlips = 0;
+ state->ReceiveSlips = 0;
+
+ if (c->status & ESTS_LOS)
+ c->status = ESTS_LOS;
+ else if (c->status & ESTS_AIS)
+ c->status = ESTS_AIS;
+ else if (c->status & ESTS_LOF)
+ c->status = ESTS_LOF;
+ else if (c->status & ESTS_LOMF)
+ c->status &= ~(ESTS_FARLOMF | ESTS_AIS16);
+
+ if (! c->status)
+ c->status = ESTS_NOALARM;
+
+ c->currnt.bpv += bpv;
+ c->currnt.fse += fas;
+ if (c->crc4) {
+ c->currnt.crce += crc4;
+ c->currnt.rcrce += ebit;
+ }
+
+ /* Path code violation is frame sync error if CRC4 disabled,
+ * or CRC error if CRC4 enabled. */
+ pcv = fas;
+ if (c->crc4)
+ pcv += crc4;
+
+ /* Unavaiable second -- receiving all ones, or
+ * loss of carrier, or loss of signal. */
+ if (acc_status & (TAU32_RUA1 | TAU32_RCL))
+ /* Unavailable second -- no other counters. */
+ ++c->currnt.uas;
+ else {
+ /* Line errored second -- any BPV. */
+ if (bpv)
+ ++c->currnt.les;
+
+ /* Errored second -- any PCV, or out of frame sync,
+ * or any slip events. */
+ if (pcv || oof || css)
+ ++c->currnt.es;
+
+ /* Severely errored framing second -- out of frame sync. */
+ if (oof)
+ ++c->currnt.oofs;
+
+ /* Severely errored seconds --
+ * 832 or more PCVs, or 2048 or more BPVs. */
+ if (bpv >= 2048 || pcv >= 832)
+ ++c->currnt.ses;
+ else {
+ /* Bursty errored seconds --
+ * no SES and more than 1 PCV. */
+ if (pcv > 1)
+ ++c->currnt.bes;
+
+ /* Collect data for computing
+ * degraded minutes. */
+ ++c->degsec;
+ c->degerr += bpv + pcv;
+ }
+ }
+
+ /* Degraded minutes -- having error rate more than 10e-6,
+ * not counting unavailable and severely errored seconds. */
+ if (c->cursec % 60 == 0) {
+ if (c->degerr > c->degsec * 2048 / 1000)
+ ++c->currnt.dm;
+ c->degsec = 0;
+ c->degerr = 0;
+ }
+
+ /* Rotate statistics every 15 minutes. */
+ if (c->cursec > 15*60) {
+ int i;
+
+ for (i=47; i>0; --i)
+ c->interval[i] = c->interval[i-1];
+ c->interval[0] = c->currnt;
+
+ /* Accumulate total statistics. */
+ c->total.bpv += c->currnt.bpv;
+ c->total.fse += c->currnt.fse;
+ c->total.crce += c->currnt.crce;
+ c->total.rcrce += c->currnt.rcrce;
+ c->total.uas += c->currnt.uas;
+ c->total.les += c->currnt.les;
+ c->total.es += c->currnt.es;
+ c->total.bes += c->currnt.bes;
+ c->total.ses += c->currnt.ses;
+ c->total.oofs += c->currnt.oofs;
+ c->total.css += c->currnt.css;
+ c->total.dm += c->currnt.dm;
+ c->currnt.bpv = 0;
+ c->currnt.fse = 0;
+ c->currnt.crce = 0;
+ c->currnt.rcrce = 0;
+ c->currnt.uas = 0;
+ c->currnt.les = 0;
+ c->currnt.es = 0;
+ c->currnt.bes = 0;
+ c->currnt.ses = 0;
+ c->currnt.oofs = 0;
+ c->currnt.css = 0;
+ c->currnt.dm = 0;
+
+ c->totsec += c->cursec;
+ c->cursec = 0;
+ }
+}
+
+void ce_set_baud (ce_chan_t *c, unsigned long baud)
+{
+ TAU32_UserRequest *req;
+ ce_board_t *b = c->board;
+ unsigned long cfg = c->config & ~TAU32_framing_mode_mask;
+ unsigned long ts;
+ unsigned long kbps = (baud + 32000) / 64000 * 64;
+
+ if (!c->unfram || c->num != 0 ||
+ baud == c->baud || b->cr.pending >= CONFREQSZ)
+ return;
+
+ if (!kbps || kbps > 1024) {
+ ts = 0xffffffffUL;
+ cfg |= TAU32_unframed_2048;
+ } else if (kbps > 512) {
+ ts = 0x0000ffffUL;
+ cfg |= TAU32_unframed_1024;
+ } else if (kbps > 256) {
+ ts = 0x000000ffUL;
+ cfg |= TAU32_unframed_512;
+ } else if (kbps > 128) {
+ ts = 0x0000000fUL;
+ cfg |= TAU32_unframed_256;
+ } else if (kbps > 64) {
+ ts = 0x00000003UL;
+ cfg |= TAU32_unframed_128;
+ } else {
+ ts = 0x00000001UL;
+ cfg |= TAU32_unframed_64;
+ }
+
+ /* _ce_set_ts () will set proper baud */
+ _ce_set_ts (c, ts);
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = TAU32_E1_A;
+ req->Io.InterfaceConfig.Config = cfg;
+ req->Io.InterfaceConfig.UnframedTsMask = ts;
+ if (ce_cfg_submit (b)) {
+ c->baud = baud;
+ c->ts = ts;
+ c->config = cfg;
+ }
+}
+
+void ce_set_lloop (ce_chan_t *c, unsigned char on)
+{
+ TAU32_UserRequest *req;
+ unsigned long cfg = c->config & ~(TAU32_line_mode_mask | TAU32_ais_on_loss);
+ ce_board_t *b = c->board;
+
+ if (c->num >= b->ddk.Interfaces || b->cr.pending >= CONFREQSZ)
+ return;
+ on = on ? 1 : 0;
+ if (on == c->lloop)
+ return;
+
+ cfg |= on ? TAU32_LineLoopInt : (TAU32_LineNormal | TAU32_ais_on_loss);
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = c->num ? TAU32_E1_B : TAU32_E1_A;
+ req->Io.InterfaceConfig.Config = cfg;
+ req->Io.InterfaceConfig.UnframedTsMask = c->ts;
+ CE_DDK_DEBUG (b, c, ("Submit lloop\n"));
+ if (ce_cfg_submit (b)) {
+ c->lloop = on ? 1 : 0;
+ c->config = cfg;
+ }
+}
+
+void ce_set_rloop (ce_chan_t *c, unsigned char on)
+{
+ TAU32_UserRequest *req;
+ unsigned long cfg = c->config & ~TAU32_line_mode_mask;
+ ce_board_t *b = c->board;
+
+ if (c->num >= b->ddk.Interfaces || b->cr.pending >= CONFREQSZ)
+ return;
+ on = on ? 1 : 0;
+ if (on == c->rloop)
+ return;
+
+ cfg |= on ? TAU32_LineLoopExt : TAU32_LineNormal;
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = c->num ? TAU32_E1_B : TAU32_E1_A;
+ req->Io.InterfaceConfig.Config = cfg;
+ req->Io.InterfaceConfig.UnframedTsMask = c->ts;
+ CE_DDK_DEBUG (b, c, ("Submit rloop\n"));
+ if (ce_cfg_submit (b)) {
+ c->rloop = on ? 1 : 0;
+ c->config = cfg;
+ }
+}
+
+void ce_set_higain (ce_chan_t *c, unsigned char on)
+{
+ TAU32_UserRequest *req;
+ unsigned long cfg = c->config & ~TAU32_higain;
+ ce_board_t *b = c->board;
+
+ if (c->num >= b->ddk.Interfaces || b->cr.pending >= CONFREQSZ)
+ return;
+ on = on ? 1 : 0;
+ if (on == c->higain)
+ return;
+
+ cfg |= on ? TAU32_higain : 0;
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = c->num ? TAU32_E1_B : TAU32_E1_A;
+ req->Io.InterfaceConfig.Config = cfg;
+ req->Io.InterfaceConfig.UnframedTsMask = c->ts;
+ CE_DDK_DEBUG (b, c, ("Submit higain\n"));
+ if (ce_cfg_submit (b)) {
+ c->higain = on ? 1 : 0;
+ c->config = cfg;
+ }
+}
+
+static void _ce_set_ts (ce_chan_t *c, unsigned long ts)
+{
+ TAU32_UserRequest *req;
+ ce_board_t *b = c->board;
+ unsigned long mask = 0, omask = 0;
+ int nts = 0, ots = 0, pts = 0;
+ int i, k;
+
+ if (b->cr.pending >= CONFREQSZ)
+ return;
+
+ /*
+ * pts - number of busy "peb" ts
+ * ots - current (old) busy ts
+ * nts - new busy ts
+ */
+ for (i = 0; i < 32; i++) {
+ if (c->ts & (1ul << i))
+ ots++;
+ if (ts & (1ul << i))
+ nts++;
+ if (b->dxc[i] != TAU32_CROSS_OFF)
+ pts++;
+ }
+
+ CE_DDK_DEBUG (b, c, ("pts: %d ots: %d nts: %d ts: %lx\n", pts, ots, nts,
+ ts));
+ /* 32 - all busy + my old busy == free */
+ if (32 - pts + ots - nts < 0)
+ return;
+
+ /* Ok. We have enougth "peb" ts. Clean old. */
+ /* We start from zero, cause this is peb cells */
+ for (i = 0; i < 32; i++) {
+ int tin = b->dxc[i];
+ int t = tin % 32;
+ if (tin < (c->dir?64:32) || tin > (c->dir?95:63))
+ continue;
+ if (c->ts & (1ul << t)) {
+ b->dxc[tin] = TAU32_CROSS_OFF;
+ b->dxc[i] = TAU32_CROSS_OFF;
+ if (b->dxc[t + 32] == TAU32_CROSS_OFF &&
+ b->dxc[t + 64] == TAU32_CROSS_OFF) {
+ b->dxc[t + 32] = t + 64;
+ b->dxc[t + 64] = t + 32;
+ }
+ omask |= (1ul << t);
+ }
+ }
+
+ k = 0;
+ /* Set */
+ for (i = 0; i < 32; i++) {
+ if ((ts & (1ul << i)) == 0)
+ continue;
+ while (b->dxc[k] != TAU32_CROSS_OFF) {
+ k++;
+ /* Paranoic */
+ if (k >= 32) {
+ CE_DDK_DEBUG (b, c, ("TS count overflow\n"));
+ return;
+ }
+ }
+ b->dxc[k] = (c->dir?64:32) + i;
+ b->dxc[(c->dir?64:32) + i] = k;
+ if (b->dxc[(c->dir?32:64) + i] == (c->dir?64:32) + i)
+ b->dxc[(c->dir?32:64) + i] = TAU32_CROSS_OFF;
+ mask |= (1ul << k);
+ }
+
+ c->ts = ts;
+ c->baud = nts*64000;
+
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+
+ req->Command = TAU32_Timeslots_Channel | TAU32_Configure_Commit;
+ req->Io.ChannelNumber = c->num;
+ req->Io.ChannelConfig.AssignedTsMask = mask;
+
+ if (c->phony) {
+ b->pmask &= ~omask;
+ b->pmask |= mask;
+ }
+
+ CE_DDK_DEBUG (b, c, ("ts=%lx mask=%lx omask=%lx pmask=%lx\n", c->ts,
+ mask, omask, b->pmask));
+ CE_DDK_DEBUG (b, c, ("Crossmatrix table:\n"));
+
+#ifdef CE_DDK_DEBUG_ENABLED
+ for (i = 0; i < 32*3; i++) {
+ printf ("%3d\t%s", b->dxc[i], (i%8==7)?"\n":"");
+ printf ("%s",(i%32==31)?"\n":"");
+ }
+#endif
+
+ CE_DDK_DEBUG (b, c, ("Submit tsmask\n"));
+ if (!ce_cfg_submit (b)) {
+ CE_DDK_DEBUG (b, c, ("Fail to submit tsmask\n"));
+ /* Do some error processing */
+ return;
+ }
+
+ CE_DDK_DEBUG (b, c, ("SetCrossMatrix\n"));
+ if (!TAU32_SetCrossMatrix(b->ddk.pControllerObject, b->dxc, b->pmask)) {
+ CE_DDK_DEBUG (b, c, ("Faild to SetCrossMatrix\n"));
+ /* Do some error processing */
+ return;
+ }
+}
+
+void ce_set_ts (ce_chan_t *c, unsigned long ts)
+{
+ ce_board_t *b = c->board;
+ ce_chan_t *x;
+
+ if (c->ts == ts || b->chan->unfram)
+ return;
+
+ ts &= ~(1ul);
+
+ if (!b->chan[c->dir].use16)
+ ts &= ~(1ul << 16);
+
+ for (x = b->chan; x < b->chan + NCHAN; x++) {
+ if (x == c || x->dir != c->dir)
+ continue;
+ ts &= ~x->ts;
+ }
+
+ _ce_set_ts (c, ts);
+}
+
+void ce_set_unfram (ce_chan_t *c, unsigned char on)
+{
+ TAU32_UserRequest *req;
+ ce_board_t *b = c->board;
+ unsigned long cfg = c->config & ~TAU32_framing_mode_mask;
+ unsigned long i;
+
+ if (c->num != 0 || b->cr.pending + 2*32 + 3>= CONFREQSZ)
+ return;
+
+ on = on ? 1 : 0;
+
+ if (on == c->unfram)
+ return;
+
+ if (on) {
+ ce_set_dir (c, 0);
+ for (i = 1; i < TAU32_CHANNELS; i++) {
+ ce_set_ts (b->chan + i, 0);
+ ce_set_phony (b->chan + i, 0);
+ }
+ ce_set_use16 (b->chan + 0, 0);
+ ce_set_use16 (b->chan + 1, 0);
+ /* Get current value, previous ce_set request may change it */
+ cfg = c->config & ~TAU32_framing_mode_mask;
+ cfg |= TAU32_unframed_2048;
+ c->unfram = on;
+ _ce_set_ts (b->chan, ~0ul);
+ c->config = cfg;
+ /* XXXRIK: Do extra checks on config queue size*/
+ if (b->ddk.Interfaces) {
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = TAU32_E1_B;
+ req->Io.InterfaceConfig.Config = TAU32_LineOff;
+ req->Io.InterfaceConfig.UnframedTsMask = 0;
+ CE_DDK_DEBUG (b, c, ("unfram: B line off\n"));
+ ce_cfg_submit (b);
+ }
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = TAU32_E1_A;
+ req->Io.InterfaceConfig.Config = cfg;
+ req->Io.InterfaceConfig.UnframedTsMask = c->ts;
+ CE_DDK_DEBUG (b, c, ("Submit unfram\n"));
+ ce_cfg_submit (b);
+ } else {
+ cfg |= TAU32_framed_cas_cross;
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = TAU32_E1_ALL;
+ req->Io.InterfaceConfig.Config = cfg;
+ req->Io.InterfaceConfig.UnframedTsMask = 0;
+ CE_DDK_DEBUG (b, c, ("Submit framed\n"));
+ ce_cfg_submit (b);
+ ce_set_ts (c, 0);
+ }
+ c->unfram = on;
+}
+
+void ce_set_phony (ce_chan_t *c, unsigned char on)
+{
+ TAU32_UserRequest *req;
+ ce_board_t *b = c->board;
+ unsigned long mask = 0;
+ int i;
+
+ if ((c->phony && on) || (c->phony == 0 && on == 0) ||
+ b->cr.pending >= CONFREQSZ)
+ return;
+
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+
+ req->Command = TAU32_Configure_Channel;
+ req->Io.InterfaceConfig.Config = on ? TAU32_TMA :
+ (TAU32_HDLC | TAU32_fr_rx_splitcheck | TAU32_fr_rx_fitcheck);
+ req->Io.ChannelNumber = c->num;
+ CE_DDK_DEBUG (b, c, ("Submit phony\n"));
+ if (!ce_cfg_submit (b)) {
+ /* Do some error processing */
+ return;
+ }
+
+ for (i = 0; i < 32; i++) {
+ int t = b->dxc[i] % 32;
+ if (b->dxc[i] < (c->dir?64:32) || b->dxc[i] > (c->dir?95:63))
+ continue;
+ if (c->ts & (1ul << t))
+ mask |= (1ul << t);
+ }
+
+ CE_DDK_DEBUG (b, c, ("phony mask:%lx\n", mask));
+
+ if (on) {
+ b->pmask |= mask;
+ } else {
+ b->pmask &= ~mask;
+ }
+
+ c->phony = on ? 1 : 0;
+
+ CE_DDK_DEBUG (b, c, ("Submit (setcrosmatrix) phony\n"));
+ if (!TAU32_SetCrossMatrix(b->ddk.pControllerObject, b->dxc, b->pmask)) {
+ /* Do some error processing */
+ return;
+ }
+}
+
+void ce_set_scrambler (ce_chan_t *c, unsigned char on)
+{
+ TAU32_UserRequest *req;
+ unsigned long cfg = c->config & ~TAU32_scrambler;
+ ce_board_t *b = c->board;
+
+ if (c->num != 0 || c->unfram == 0 || b->cr.pending >= CONFREQSZ)
+ return;
+ on = on ? 1 : 0;
+ if (on == c->scrambler)
+ return;
+
+ cfg |= on ? TAU32_scrambler : 0;
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = c->num ? TAU32_E1_B : TAU32_E1_A;
+ req->Io.InterfaceConfig.Config = cfg;
+ req->Io.InterfaceConfig.UnframedTsMask = c->ts;
+ CE_DDK_DEBUG (b, c, ("Submit scrambler\n"));
+ if (ce_cfg_submit (b)) {
+ c->scrambler = on ? 1 : 0;
+ c->config = cfg;
+ }
+}
+
+void ce_set_monitor (ce_chan_t *c, unsigned char on)
+{
+ TAU32_UserRequest *req;
+ unsigned long cfg = c->config & ~TAU32_monitor;
+ ce_board_t *b = c->board;
+
+ if (c->num >= b->ddk.Interfaces || b->cr.pending >= CONFREQSZ)
+ return;
+ on = on ? 1 : 0;
+ if (on == c->monitor)
+ return;
+
+ cfg |= on ? TAU32_monitor : 0;
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = c->num ? TAU32_E1_B : TAU32_E1_A;
+ req->Io.InterfaceConfig.Config = cfg;
+ req->Io.InterfaceConfig.UnframedTsMask = c->ts;
+ CE_DDK_DEBUG (b, c, ("Submit monitor\n"));
+ if (ce_cfg_submit (b)) {
+ c->monitor = on ? 1 : 0;
+ c->config = cfg;
+ }
+}
+
+static void _ce_submit_configure_e1 (ce_chan_t *c, char *rname)
+{
+ TAU32_UserRequest *req;
+ ce_board_t *b = c->board;
+
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = c->num == 0 ? TAU32_E1_A : TAU32_E1_B;
+ req->Io.InterfaceConfig.Config = c->config;
+ req->Io.InterfaceConfig.UnframedTsMask = c->ts;
+ CE_DDK_DEBUG (b, c, ("Submit %s\n", rname ? rname : ""));
+ if (!ce_cfg_submit (b)) {
+ CE_DDK_DEBUG (b, c, ("Fail to submit %s\n", rname?rname:""));
+ /* Do some error processing */
+ return;
+ }
+}
+
+void ce_set_use16 (ce_chan_t *c, unsigned char on)
+{
+ ce_board_t *b = c->board;
+ ce_chan_t *x;
+ unsigned long cfg[2];
+ int use[2];
+
+ if (c->num >= b->ddk.Interfaces || b->cr.pending + 2 >= CONFREQSZ)
+ return;
+
+ cfg[0] = b->chan[0].config & ~TAU32_framing_mode_mask;
+ cfg[1] = b->chan[1].config & ~TAU32_framing_mode_mask;
+
+ on = on ? 1 : 0;
+
+ if (c->use16 == on || b->chan->unfram)
+ return;
+
+ use[0] = b->chan[0].use16;
+ use[1] = b->chan[1].use16;
+
+ /* Correct value */
+ use[c->num] = on;
+
+ if (b->ddk.Interfaces == 1) {
+ cfg[0] |= on ? TAU32_framed_cas_set : TAU32_framed_no_cas;
+ } else {
+ if (use[0] == 0 && use[1] == 0) {
+ cfg[0] |= TAU32_framed_cas_cross;
+ cfg[1] |= TAU32_framed_cas_cross;
+ } else if (use[0] == 0) {
+ cfg[0] |= TAU32_framed_cas_set;
+ cfg[1] |= TAU32_framed_no_cas;
+ } else if (use[1] == 0) {
+ cfg[0] |= TAU32_framed_no_cas;
+ cfg[1] |= TAU32_framed_cas_set;
+ } else {
+ cfg[0] |= TAU32_framed_no_cas;
+ cfg[1] |= TAU32_framed_no_cas;
+ }
+ }
+
+ c->use16 = on;
+
+ for (x = b->chan; !on && x < b->chan + NCHAN; x++) {
+ if (x->dir == c->num && x->ts & (1ul<<16)) {
+ ce_set_ts (x, x->ts);
+ break;
+ }
+ }
+
+ if (cfg[0] != b->chan[0].config) {
+ b->chan[0].config = cfg[0];
+ _ce_submit_configure_e1 (b->chan + 0, "use16");
+ }
+
+ if (cfg[1] != b->chan[1].config) {
+ b->chan[1].config = cfg[1];
+ _ce_submit_configure_e1 (b->chan + 1, "use16");
+ }
+}
+
+void ce_set_crc4 (ce_chan_t *c, unsigned char on)
+{
+ TAU32_UserRequest *req;
+ unsigned long cfg = c->config & ~TAU32_crc4_mf;
+ ce_board_t *b = c->board;
+
+ if (c->num >= b->ddk.Interfaces || b->cr.pending >= CONFREQSZ)
+ return;
+ on = on ? 1 : 0;
+ if (on == c->crc4 || b->chan->unfram)
+ return;
+
+ cfg |= on ? TAU32_crc4_mf : 0;
+ CE_PREREQUEST (b, c, b->cr.queue, req);
+ if (!req)
+ return;
+ req->Command = TAU32_Configure_E1;
+ req->Io.InterfaceConfig.Interface = c->num ? TAU32_E1_B : TAU32_E1_A;
+ req->Io.InterfaceConfig.Config = cfg;
+ req->Io.InterfaceConfig.UnframedTsMask = c->ts;
+ CE_DDK_DEBUG (b, c, ("Submit crc4\n"));
+ if (ce_cfg_submit (b)) {
+ c->crc4 = on ? 1 : 0;
+ c->config = cfg;
+ }
+}
+
+void ce_set_gsyn (ce_chan_t *c, int syn)
+{
+ ce_board_t *b = c->board;
+ unsigned int mode;
+
+ if (c->num >= b->ddk.Interfaces)
+ return;
+
+ if (syn == GSYN_RCV)
+ syn = c->num ? GSYN_RCV1 : GSYN_RCV0;
+
+ switch (syn) {
+ default: mode = TAU32_SYNC_INTERNAL; break;
+ case GSYN_RCV0: mode = TAU32_SYNC_RCV_A; break;
+ case GSYN_RCV1: mode = TAU32_SYNC_RCV_B; break;
+ }
+
+ CE_DDK_DEBUG (b, c, ("Set Sync Mode\n"));
+ if (TAU32_SetSyncMode (b->ddk.pControllerObject, mode)) {
+ b->chan->gsyn = syn;
+ if (b->ddk.Interfaces > 1)
+ (b->chan + 1)->gsyn = syn;
+ }
+}
+
+int ce_get_cable (ce_chan_t *c)
+{
+ ce_board_t *b = c->board;
+ if (c->num >= b->ddk.Interfaces)
+ return 0;
+
+ return CABLE_TP;
+}
+
+void ce_set_dir (ce_chan_t *c, int dir)
+{
+ ce_board_t *b = c->board;
+ unsigned long ts;
+ if (b->cr.pending + 1>= CONFREQSZ || c->dir == dir)
+ return;
+
+ ts = c->ts;
+ ce_set_ts (c, 0);
+ c->dir = dir;
+ ce_set_ts (c, ts);
+}
diff --git a/sys/dev/ce/ceddk.h b/sys/dev/ce/ceddk.h
new file mode 100644
index 0000000..8cd8c67
--- /dev/null
+++ b/sys/dev/ce/ceddk.h
@@ -0,0 +1,201 @@
+/*
+ * Middle-level code for Cronyx Tau32-PCI adapters.
+ *
+ * Copyright (C) 2004 Cronyx Engineering
+ * Copyright (C) 2004 Roman Kurakin <rik@FreeBSD.org>
+ *
+ * This software is distributed with NO WARRANTIES, not even the implied
+ * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Authors grant any other persons or organisations a permission to use,
+ * modify and redistribute this software in source and binary forms,
+ * as long as this message is kept with the software, all derivative
+ * works or modified versions.
+ *
+ * $Cronyx: ceddk.h,v 1.2.6.1 2005/11/09 13:01:39 rik Exp $
+ * $FreeBSD$
+ */
+
+#define TAU32_UserContext_Add void *sys;
+#define TAU32_UserRequest_Add void *sys; TAU32_UserRequest *next;
+
+#include <dev/ce/tau32-ddk.h>
+
+#define NCHAN TAU32_CHANNELS
+#ifndef NBRD
+# define NBRD 6
+#endif
+#if NBRD != 6
+# error "NBRD != 6"
+#endif
+
+#define BUFSZ 1664
+
+typedef struct _ce_buf_item_t {
+ TAU32_UserRequest req;
+ unsigned char buf [BUFSZ+4];
+ unsigned long phys;
+} ce_buf_item_t;
+
+typedef struct _ce_buf_t {
+ ce_buf_item_t tx_item[TAU32_IO_QUEUE];
+ ce_buf_item_t rx_item[TAU32_IO_QUEUE];
+} ce_buf_t;
+
+typedef struct {
+ unsigned long bpv; /* bipolar violations */
+ unsigned long fse; /* frame sync errors */
+ unsigned long crce; /* CRC errors */
+ unsigned long rcrce; /* remote CRC errors (E-bit) */
+ unsigned long uas; /* unavailable seconds */
+ unsigned long les; /* line errored seconds */
+ unsigned long es; /* errored seconds */
+ unsigned long bes; /* bursty errored seconds */
+ unsigned long ses; /* severely errored seconds */
+ unsigned long oofs; /* out of frame seconds */
+ unsigned long css; /* controlled slip seconds */
+ unsigned long dm; /* degraded minutes */
+} ce_gstat_t;
+
+typedef struct _ce_chan_t {
+ unsigned char num;
+ unsigned char type;
+#define T_NONE 0 /* no channel */
+#define T_E1 3 /* E1 */
+#define T_DATA 6 /* no physical interface */
+
+ struct _ce_board_t *board;
+ unsigned char dtr;
+ unsigned char rts;
+ ce_buf_item_t *tx_item;
+ ce_buf_item_t *rx_item;
+ TAU32_UserRequest *rx_queue;
+ TAU32_UserRequest *tx_queue;
+ unsigned char debug;
+ void (*transmit) (struct _ce_chan_t*, void*, int);
+ void (*receive) (struct _ce_chan_t*, unsigned char*, int);
+ void (*error) (struct _ce_chan_t*, int);
+#define CE_FRAME 1
+#define CE_CRC 2
+#define CE_UNDERRUN 3
+#define CE_OVERRUN 4
+#define CE_OVERFLOW 5
+ int tx_pending;
+ int rx_pending;
+ unsigned long rintr;
+ unsigned long tintr;
+ ulong64 ibytes;
+ ulong64 obytes;
+ unsigned long ipkts;
+ unsigned long opkts;
+ unsigned long underrun;
+ unsigned long overrun;
+ unsigned long frame;
+ unsigned long crc;
+
+ unsigned short status; /* E1/G.703 line status bit mask */
+#define ESTS_NOALARM 0x0001 /* no alarm present */
+#define ESTS_FARLOF 0x0002 /* receiving far loss of framing */
+#define ESTS_AIS 0x0008 /* receiving all ones */
+#define ESTS_LOF 0x0020 /* loss of framing */
+#define ESTS_LOS 0x0040 /* loss of signal */
+#define ESTS_AIS16 0x0100 /* receiving all ones in timeslot 16 */
+#define ESTS_FARLOMF 0x0200 /* receiving alarm in timeslot 16 */
+#define ESTS_LOMF 0x0400 /* loss of multiframe sync */
+#define ESTS_TSTREQ 0x0800 /* test code detected */
+#define ESTS_TSTERR 0x1000 /* test error */
+
+ unsigned long totsec; /* total seconds elapsed */
+ unsigned long cursec; /* current seconds elapsed */
+ unsigned long degsec; /* degraded seconds */
+ unsigned long degerr; /* errors during degraded seconds */
+ ce_gstat_t currnt; /* current 15-min interval data */
+ ce_gstat_t total; /* total statistics data */
+ ce_gstat_t interval [48]; /* 12 hour period data */
+
+ unsigned int acc_status;
+ unsigned long config;
+ unsigned long baud;
+ unsigned long ts;
+ unsigned long ts_mask;
+ unsigned char dir;
+ unsigned char lloop;
+ unsigned char rloop;
+ unsigned char higain;
+ unsigned char phony;
+ unsigned char scrambler;
+ unsigned char unfram;
+ unsigned char monitor;
+ unsigned char crc4;
+ unsigned char use16;
+ unsigned char gsyn; /* G.703 clock mode */
+#define GSYN_INT 0 /* internal transmit clock source */
+#define GSYN_RCV 1 /* transmit clock source = receive */
+#define GSYN_RCV0 2 /* tclk = rclk from channel 0 */
+#define GSYN_RCV1 3 /* ...from channel 1 */
+ unsigned long mtu;
+ void *sys;
+} ce_chan_t;
+
+#define CONFREQSZ 128
+typedef struct _ce_conf_req {
+ TAU32_UserRequest req[CONFREQSZ+10];
+ TAU32_UserRequest *queue;
+ int pending;
+} ce_conf_req;
+
+typedef struct _ce_board_t {
+ TAU32_UserContext ddk;
+ ce_chan_t chan[NCHAN];
+ int num;
+ int mux;
+#define TAU32_BASE_NAME "Tau-PCI-32"
+#define TAU32_LITE_NAME "Tau-PCI-32/Lite"
+#define TAU32_ADPCM_NAME "Tau-PCI-32/ADPCM"
+#define TAU32_UNKNOWN_NAME "Unknown Tau-PCI-32"
+ char name [32];
+ ce_conf_req cr;
+ TAU32_CrossMatrix dxc;
+ unsigned long pmask;
+ void *sys;
+} ce_board_t;
+
+void ce_set_dtr (ce_chan_t *c, int on);
+void ce_set_rts (ce_chan_t *c, int on);
+int ce_get_cd (ce_chan_t *c);
+int ce_get_cts (ce_chan_t *c);
+int ce_get_dsr (ce_chan_t *c);
+
+int ce_transmit_space (ce_chan_t *c);
+int ce_send_packet (ce_chan_t *c, unsigned char *buf, int len, void *tag);
+void ce_start_chan (ce_chan_t *c, int tx, int rx, ce_buf_t *cb, unsigned long phys);
+void ce_stop_chan (ce_chan_t *c);
+void ce_register_transmit (ce_chan_t *c, void (*func) (ce_chan_t*, void*, int));
+void ce_register_receive (ce_chan_t *c, void (*func) (ce_chan_t*,
+ unsigned char*, int));
+void ce_register_error (ce_chan_t *c, void (*func) (ce_chan_t*, int));
+
+void TAU32_CALLBACK_TYPE
+ ce_error_callback(TAU32_UserContext *pContext, int Item,
+ unsigned NotifyBits);
+void TAU32_CALLBACK_TYPE
+ ce_status_callback(TAU32_UserContext *pContext, int Item,
+ unsigned NotifyBits);
+
+void ce_set_baud (ce_chan_t *c, unsigned long baud);
+void ce_set_lloop (ce_chan_t *c, unsigned char on);
+void ce_set_rloop (ce_chan_t *c, unsigned char on);
+void ce_set_higain (ce_chan_t *c, unsigned char on);
+void ce_set_unfram (ce_chan_t *c, unsigned char on);
+void ce_set_ts (ce_chan_t *c, unsigned long ts);
+void ce_set_phony (ce_chan_t *c, unsigned char on);
+void ce_set_scrambler (ce_chan_t *c, unsigned char on);
+void ce_set_monitor (ce_chan_t *c, unsigned char on);
+void ce_set_use16 (ce_chan_t *c, unsigned char on);
+void ce_set_crc4 (ce_chan_t *c, unsigned char on);
+void ce_set_gsyn (ce_chan_t *c, int syn);
+#define CABLE_TP 11
+int ce_get_cable (ce_chan_t *c);
+void ce_set_dir (ce_chan_t *c, int dir);
+void ce_e1_timer (ce_chan_t *c);
+void ce_init_board (ce_board_t *b);
diff --git a/sys/dev/ce/if_ce.c b/sys/dev/ce/if_ce.c
new file mode 100644
index 0000000..1735169
--- /dev/null
+++ b/sys/dev/ce/if_ce.c
@@ -0,0 +1,2681 @@
+/*
+ * Cronyx-Tau32-PCI adapter driver for FreeBSD.
+ *
+ * Copyright (C) 2003-2005 Cronyx Engineering.
+ * Copyright (C) 2003-2005 Kurakin Roman, <rik@FreeBSD.org>
+ *
+ * This software is distributed with NO WARRANTIES, not even the implied
+ * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Authors grant any other persons or organisations a permission to use,
+ * modify and redistribute this software in source and binary forms,
+ * as long as this message is kept with the software, all derivative
+ * works or modified versions.
+ *
+ * $Cronyx: if_ce.c,v 1.9.2.8 2005/11/21 14:17:44 rik Exp $
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+
+#if __FreeBSD_version >= 500000
+# define NPCI 1
+#else
+# include "pci.h"
+#endif
+
+#if NPCI > 0
+
+#include <sys/ucred.h>
+#include <sys/proc.h>
+#include <sys/systm.h>
+#include <sys/mbuf.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/conf.h>
+#include <sys/malloc.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#if __FreeBSD_version >= 504000
+#include <sys/sysctl.h>
+#endif
+#include <sys/tty.h>
+#include <sys/bus.h>
+#include <vm/vm.h>
+#include <vm/pmap.h>
+#include <net/if.h>
+#if __FreeBSD_version > 501000
+# include <dev/pci/pcivar.h>
+# include <dev/pci/pcireg.h>
+#else
+# include <pci/pcivar.h>
+# include <pci/pcireg.h>
+#endif
+#include <machine/bus.h>
+#include <sys/rman.h>
+#include "opt_ng_cronyx.h"
+#ifdef NETGRAPH_CRONYX
+# include "opt_netgraph.h"
+# ifndef NETGRAPH
+# error #option NETGRAPH missed from configuration
+# endif
+# include <netgraph/ng_message.h>
+# include <netgraph/netgraph.h>
+# include <dev/ce/ng_ce.h>
+#else
+# include <net/if_types.h>
+# include <net/if_sppp.h>
+# define PP_CISCO IFF_LINK2
+# if __FreeBSD_version < 500000
+# include <bpf.h>
+# endif
+# include <net/bpf.h>
+# define NBPFILTER NBPF
+#endif
+#include <dev/cx/machdep.h>
+#include <dev/ce/ceddk.h>
+#include <machine/cserial.h>
+#include <machine/resource.h>
+#include <machine/pmap.h>
+
+/* If we don't have Cronyx's sppp version, we don't have fr support via sppp */
+#ifndef PP_FR
+#define PP_FR 0
+#endif
+
+#ifndef IFP2SP
+#define IFP2SP(ifp) ((struct sppp*)ifp)
+#endif
+#ifndef SP2IFP
+#define SP2IFP(sp) ((struct ifnet*)sp)
+#endif
+
+#ifndef PCIR_BAR
+#define PCIR_BAR(x) (PCIR_MAPS + (x) * 4)
+#endif
+
+/* define as our previous return value */
+#ifndef BUS_PROBE_DEFAULT
+#define BUS_PROBE_DEFAULT 0
+#endif
+
+#define CE_DEBUG(d,s) ({if (d->chan->debug) {\
+ printf ("%s: ", d->name); printf s;}})
+#define CE_DEBUG2(d,s) ({if (d->chan->debug>1) {\
+ printf ("%s: ", d->name); printf s;}})
+
+#ifndef CALLOUT_MPSAFE
+#define CALLOUT_MPSAFE 0
+#endif
+
+#ifndef IF_DRAIN
+#define IF_DRAIN(ifq) do { \
+ struct mbuf *m; \
+ for (;;) { \
+ IF_DEQUEUE(ifq, m); \
+ if (m == NULL) \
+ break; \
+ m_freem(m); \
+ } \
+} while (0)
+#endif
+
+#ifndef _IF_QLEN
+#define _IF_QLEN(ifq) ((ifq)->ifq_len)
+#endif
+
+#ifndef callout_drain
+#define callout_drain callout_stop
+#endif
+
+#if __FreeBSD_version >= 504000
+#define CE_LOCK_NAME "ceX"
+
+static int ce_mpsafenet = 1;
+TUNABLE_INT("debug.ce.mpsafenet", &ce_mpsafenet);
+SYSCTL_NODE(_debug, OID_AUTO, ce, CTLFLAG_RD, 0, "Cronyx Tau32-PCI Adapters");
+SYSCTL_INT(_debug_ce, OID_AUTO, mpsafenet, CTLFLAG_RD, &ce_mpsafenet, 0,
+ "Enable/disable MPSAFE network support for Cronyx Tau32-PCI Adapters");
+
+#define CE_LOCK(_bd) do { \
+ if (ce_mpsafenet) \
+ mtx_lock (&(_bd)->ce_mtx); \
+ } while (0)
+#define CE_UNLOCK(_bd) do { \
+ if (ce_mpsafenet) \
+ mtx_unlock (&(_bd)->ce_mtx); \
+ } while (0)
+
+#define CE_LOCK_ASSERT(_bd) do { \
+ if (ce_mpsafenet) \
+ mtx_assert (&(_bd)->ce_mtx, MA_OWNED); \
+ } while (0)
+#else
+static int ce_mpsafenet = 0;
+
+#define CE_LOCK(_bd) do {} while (0 && (_bd) && ce_mpsafenet)
+#define CE_UNLOCK(_bd) do {} while (0 && (_bd) && ce_mpsafenet)
+#define CE_LOCK_ASSERT(_bd) do {} while (0 && (_bd) && ce_mpsafenet)
+#endif
+
+#define CDEV_MAJOR 185
+
+static int ce_probe __P((device_t));
+static int ce_attach __P((device_t));
+static int ce_detach __P((device_t));
+
+static device_method_t ce_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, ce_probe),
+ DEVMETHOD(device_attach, ce_attach),
+ DEVMETHOD(device_detach, ce_detach),
+
+ {0, 0}
+};
+
+typedef struct _ce_dma_mem_t {
+ unsigned long phys;
+ void *virt;
+ size_t size;
+#if __FreeBSD_version >= 500000
+ bus_dma_tag_t dmat;
+ bus_dmamap_t mapp;
+#endif
+} ce_dma_mem_t;
+
+typedef struct _drv_t {
+ char name [8];
+ int running;
+ ce_board_t *board;
+ ce_chan_t *chan;
+ struct ifqueue rqueue;
+#ifdef NETGRAPH
+ char nodename [NG_NODELEN+1];
+ hook_p hook;
+ hook_p debug_hook;
+ node_p node;
+ struct ifqueue queue;
+ struct ifqueue hi_queue;
+ short timeout;
+ struct callout timeout_handle;
+#else
+ struct ifnet *ifp;
+#endif
+#if __FreeBSD_version >= 500000
+ struct cdev *devt;
+#else /* __FreeBSD_version < 500000 */
+ dev_t devt;
+#endif
+ ce_dma_mem_t dmamem;
+} drv_t;
+
+typedef struct _bdrv_t {
+ ce_board_t *board;
+ struct resource *ce_res;
+ struct resource *ce_irq;
+ void *ce_intrhand;
+ ce_dma_mem_t dmamem;
+ drv_t channel [NCHAN];
+#if __FreeBSD_version >= 504000
+ struct mtx ce_mtx;
+#endif
+} bdrv_t;
+
+static driver_t ce_driver = {
+ "ce",
+ ce_methods,
+ sizeof(bdrv_t),
+};
+
+static devclass_t ce_devclass;
+
+static void ce_receive (ce_chan_t *c, unsigned char *data, int len);
+static void ce_transmit (ce_chan_t *c, void *attachment, int len);
+static void ce_error (ce_chan_t *c, int data);
+static void ce_up (drv_t *d);
+static void ce_start (drv_t *d);
+static void ce_down (drv_t *d);
+static void ce_watchdog (drv_t *d);
+#ifdef NETGRAPH
+extern struct ng_type typestruct;
+#else
+static void ce_ifstart (struct ifnet *ifp);
+static void ce_tlf (struct sppp *sp);
+static void ce_tls (struct sppp *sp);
+static void ce_ifwatchdog (struct ifnet *ifp);
+static int ce_sioctl (struct ifnet *ifp, u_long cmd, caddr_t data);
+static void ce_initialize (void *softc);
+#endif
+
+static ce_board_t *adapter [NBRD];
+static drv_t *channel [NBRD*NCHAN];
+static struct callout led_timo [NBRD];
+static struct callout timeout_handle;
+
+static int ce_destroy = 0;
+
+/*
+ * Print the mbuf chain, for debug purposes only.
+ */
+static void printmbuf (struct mbuf *m)
+{
+ printf ("mbuf:");
+ for (; m; m=m->m_next) {
+ if (m->m_flags & M_PKTHDR)
+ printf (" HDR %d:", m->m_pkthdr.len);
+ if (m->m_flags & M_EXT)
+ printf (" EXT:");
+ printf (" %d", m->m_len);
+ }
+ printf ("\n");
+}
+
+/*
+ * Make an mbuf from data.
+ */
+static struct mbuf *makembuf (void *buf, unsigned len)
+{
+ struct mbuf *m;
+
+ MGETHDR (m, M_DONTWAIT, MT_DATA);
+ if (! m)
+ return 0;
+ MCLGET (m, M_DONTWAIT);
+ if (! (m->m_flags & M_EXT)) {
+ m_freem (m);
+ return 0;
+ }
+ m->m_pkthdr.len = m->m_len = len;
+ bcopy (buf, mtod (m, caddr_t), len);
+ return m;
+}
+
+static int ce_probe (device_t dev)
+{
+ if ((pci_get_vendor (dev) == TAU32_PCI_VENDOR_ID) &&
+ (pci_get_device (dev) == TAU32_PCI_DEVICE_ID)) {
+ device_set_desc (dev, "Cronyx-Tau32-PCI serial adapter");
+ return BUS_PROBE_DEFAULT;
+ }
+ return ENXIO;
+}
+
+static void ce_timeout (void *arg)
+{
+ drv_t *d;
+ int s, i, k;
+
+ for (i = 0; i < NBRD; ++i) {
+ if (adapter[i] == NULL)
+ continue;
+ for (k = 0; k < NCHAN; ++k) {
+ s = splimp ();
+ if (ce_destroy) {
+ splx (s);
+ return;
+ }
+ d = channel[i * NCHAN + k];
+ if (!d) {
+ splx (s);
+ continue;
+ }
+ CE_LOCK ((bdrv_t *)d->board->sys);
+ switch (d->chan->type) {
+ case T_E1:
+ ce_e1_timer (d->chan);
+ break;
+ default:
+ break;
+ }
+ CE_UNLOCK ((bdrv_t *)d->board->sys);
+ splx (s);
+ }
+ }
+ s = splimp ();
+ if (!ce_destroy)
+ callout_reset (&timeout_handle, hz, ce_timeout, 0);
+ splx (s);
+}
+
+static void ce_led_off (void *arg)
+{
+ ce_board_t *b = arg;
+ bdrv_t *bd = (bdrv_t *) b->sys;
+ int s;
+ s = splimp ();
+ if (ce_destroy) {
+ splx (s);
+ return;
+ }
+ CE_LOCK (bd);
+ TAU32_LedSet (b->ddk.pControllerObject, 0);
+ CE_UNLOCK (bd);
+ splx (s);
+}
+
+static void ce_intr (void *arg)
+{
+ bdrv_t *bd = arg;
+ ce_board_t *b = bd->board;
+ int s;
+ int i;
+#if __FreeBSD_version >= 500000 && defined NETGRAPH
+ int error;
+#endif
+ s = splimp ();
+ if (ce_destroy) {
+ splx (s);
+ return;
+ }
+ CE_LOCK (bd);
+ /* Turn LED on. */
+ TAU32_LedSet (b->ddk.pControllerObject, 1);
+
+ TAU32_HandleInterrupt (b->ddk.pControllerObject);
+
+ /* Turn LED off 50 msec later. */
+ callout_reset (&led_timo[b->num], hz/20, ce_led_off, b);
+ CE_UNLOCK (bd);
+ splx (s);
+
+ /* Pass packets in a lock-free state */
+ for (i = 0; i < NCHAN && b->chan[i].type; i++) {
+ drv_t *d = b->chan[i].sys;
+ struct mbuf *m;
+ if (!d || !d->running)
+ continue;
+ while (_IF_QLEN(&d->rqueue)) {
+ IF_DEQUEUE (&d->rqueue,m);
+ if (!m)
+ continue;
+#ifdef NETGRAPH
+ if (d->hook) {
+#if __FreeBSD_version >= 500000
+ NG_SEND_DATA_ONLY (error, d->hook, m);
+#else
+ ng_queue_data (d->hook, m, 0);
+#endif
+ } else {
+ IF_DRAIN (&d->rqueue);
+ }
+#else
+ sppp_input (d->ifp, m);
+#endif
+ }
+ }
+}
+
+extern struct cdevsw ce_cdevsw;
+
+#if __FreeBSD_version >= 500000
+static void
+ce_bus_dmamap_addr (void *arg, bus_dma_segment_t *segs, int nseg, int error)
+{
+ unsigned long *addr;
+
+ if (error)
+ return;
+
+ KASSERT(nseg == 1, ("too many DMA segments, %d should be 1", nseg));
+ addr = arg;
+ *addr = segs->ds_addr;
+}
+
+#ifndef BUS_DMA_ZERO
+#define BUS_DMA_ZERO 0
+#endif
+
+static int
+ce_bus_dma_mem_alloc (int bnum, int cnum, ce_dma_mem_t *dmem)
+{
+ int error;
+
+ error = bus_dma_tag_create (NULL, 16, 0, BUS_SPACE_MAXADDR_32BIT,
+ BUS_SPACE_MAXADDR, NULL, NULL, dmem->size, 1,
+ dmem->size, 0,
+#if __FreeBSD_version >= 502000
+ NULL, NULL,
+#endif
+ &dmem->dmat);
+ if (error) {
+ if (cnum >= 0) printf ("ce%d-%d: ", bnum, cnum);
+ else printf ("ce%d: ", bnum);
+ printf ("couldn't allocate tag for dma memory\n");
+ return 0;
+ }
+ error = bus_dmamem_alloc (dmem->dmat, (void **)&dmem->virt,
+ BUS_DMA_NOWAIT | BUS_DMA_ZERO, &dmem->mapp);
+ if (error) {
+ if (cnum >= 0) printf ("ce%d-%d: ", bnum, cnum);
+ else printf ("ce%d: ", bnum);
+ printf ("couldn't allocate mem for dma memory\n");
+ bus_dma_tag_destroy (dmem->dmat);
+ return 0;
+ }
+ error = bus_dmamap_load (dmem->dmat, dmem->mapp, dmem->virt,
+ dmem->size, ce_bus_dmamap_addr, &dmem->phys, 0);
+ if (error) {
+ if (cnum >= 0) printf ("ce%d-%d: ", bnum, cnum);
+ else printf ("ce%d: ", bnum);
+ printf ("couldn't load mem map for dma memory\n");
+ bus_dmamem_free (dmem->dmat, dmem->virt, dmem->mapp);
+ bus_dma_tag_destroy (dmem->dmat);
+ return 0;
+ }
+#if __FreeBSD_version >= 502000
+ bzero (dmem->virt, dmem->size);
+#endif
+ return 1;
+}
+
+static void
+ce_bus_dma_mem_free (ce_dma_mem_t *dmem)
+{
+ bus_dmamap_unload (dmem->dmat, dmem->mapp);
+ bus_dmamem_free (dmem->dmat, dmem->virt, dmem->mapp);
+ bus_dma_tag_destroy (dmem->dmat);
+}
+#else
+static int
+ce_bus_dma_mem_alloc (int bnum, int cnum, ce_dma_mem_t *dmem)
+{
+ dmem->virt = contigmalloc (dmem->size, M_DEVBUF, M_WAITOK,
+ 0x100000, 0xffffffff, 16, 0);
+ if (dmem->virt == NULL) {
+ if (cnum >= 0) printf ("ce%d-%d: ", bnum, cnum);
+ else printf ("ce%d: ", bnum);
+ printf ("couldn't allocate dma memory\n");
+ return 0;
+ }
+ dmem->phys = vtophys (dmem->virt);
+ bzero (dmem->virt, dmem->size);
+ return 1;
+}
+
+static void
+ce_bus_dma_mem_free (ce_dma_mem_t *dmem)
+{
+ contigfree (dmem->virt, dmem->size, M_DEVBUF);
+}
+#endif
+
+/*
+ * Called if the probe succeeded.
+ */
+static int ce_attach (device_t dev)
+{
+ bdrv_t *bd = device_get_softc (dev);
+ int unit = device_get_unit (dev);
+#if __FreeBSD_version >= 504000
+ char *ce_ln = CE_LOCK_NAME;
+#endif
+ vm_offset_t vbase;
+ int rid, error;
+ ce_board_t *b;
+ ce_chan_t *c;
+ drv_t *d;
+ int s;
+
+ b = malloc (sizeof(ce_board_t), M_DEVBUF, M_WAITOK);
+ if (!b) {
+ printf ("ce%d: couldn't allocate memory\n", unit);
+ return (ENXIO);
+ }
+ bzero (b, sizeof(ce_board_t));
+
+ b->ddk.sys = &b;
+
+#if __FreeBSD_version >= 440000
+ pci_enable_busmaster (dev);
+#endif
+
+ bd->dmamem.size = TAU32_ControllerObjectSize;
+ if (! ce_bus_dma_mem_alloc (unit, -1, &bd->dmamem)) {
+ free (b, M_DEVBUF);
+ return (ENXIO);
+ }
+ b->ddk.pControllerObject = bd->dmamem.virt;
+
+ bd->board = b;
+ b->sys = bd;
+ rid = PCIR_BAR(0);
+ bd->ce_res = bus_alloc_resource (dev, SYS_RES_MEMORY, &rid,
+ 0, ~0, 1, RF_ACTIVE);
+ if (! bd->ce_res) {
+ printf ("ce%d: cannot map memory\n", unit);
+ ce_bus_dma_mem_free (&bd->dmamem);
+ free (b, M_DEVBUF);
+ return (ENXIO);
+ }
+ vbase = (vm_offset_t) rman_get_virtual (bd->ce_res);
+
+ b->ddk.PciBar1VirtualAddress = (void *)vbase;
+ b->ddk.ControllerObjectPhysicalAddress = bd->dmamem.phys;
+ b->ddk.pErrorNotifyCallback = ce_error_callback;
+ b->ddk.pStatusNotifyCallback = ce_status_callback;
+ b->num = unit;
+
+ TAU32_BeforeReset(&b->ddk);
+ pci_write_config (dev, TAU32_PCI_RESET_ADDRESS, TAU32_PCI_RESET_ON, 4);
+ pci_write_config (dev, TAU32_PCI_RESET_ADDRESS, TAU32_PCI_RESET_OFF, 4);
+
+ if(!TAU32_Initialize(&b->ddk, 0))
+ {
+ printf ("ce%d: init adapter error 0x%08x, bus dead bits 0x%08lx\n",
+ unit, b->ddk.InitErrors, b->ddk.DeadBits);
+ bus_release_resource (dev, SYS_RES_MEMORY, PCIR_BAR(0), bd->ce_res);
+ ce_bus_dma_mem_free (&bd->dmamem);
+ free (b, M_DEVBUF);
+ return (ENXIO);
+ }
+
+ s = splimp ();
+
+ ce_init_board (b);
+
+ rid = 0;
+ bd->ce_irq = bus_alloc_resource (dev, SYS_RES_IRQ, &rid, 0, ~0, 1,
+ RF_SHAREABLE | RF_ACTIVE);
+ if (! bd->ce_irq) {
+ printf ("ce%d: cannot map interrupt\n", unit);
+ bus_release_resource (dev, SYS_RES_MEMORY, PCIR_BAR(0), bd->ce_res);
+ ce_bus_dma_mem_free (&bd->dmamem);
+ free (b, M_DEVBUF);
+ splx (s);
+ return (ENXIO);
+ }
+#if __FreeBSD_version >= 500000
+ callout_init (&led_timo[unit], ce_mpsafenet ? CALLOUT_MPSAFE : 0);
+#else
+ callout_init (&led_timo[unit]);
+#endif
+ error = bus_setup_intr (dev, bd->ce_irq,
+#if __FreeBSD_version >= 500013
+ INTR_TYPE_NET|(ce_mpsafenet?INTR_MPSAFE:0),
+#else
+ INTR_TYPE_NET,
+#endif
+ ce_intr, bd, &bd->ce_intrhand);
+ if (error) {
+ printf ("ce%d: cannot set up irq\n", unit);
+ bus_release_resource (dev, SYS_RES_IRQ, 0, bd->ce_irq);
+ bus_release_resource (dev, SYS_RES_MEMORY,
+ PCIR_BAR(0), bd->ce_res);
+ ce_bus_dma_mem_free (&bd->dmamem);
+ free (b, M_DEVBUF);
+ splx (s);
+ return (ENXIO);
+ }
+
+ switch (b->ddk.Model) {
+ case 1: strcpy (b->name, TAU32_BASE_NAME); break;
+ case 2: strcpy (b->name, TAU32_LITE_NAME); break;
+ case 3: strcpy (b->name, TAU32_ADPCM_NAME); break;
+ default: strcpy (b->name, TAU32_UNKNOWN_NAME); break;
+ }
+
+ printf ("ce%d: %s\n", unit, b->name);
+
+ for (c = b->chan; c < b->chan + NCHAN; ++c) {
+ c->num = (c - b->chan);
+ c->board = b;
+
+ d = &bd->channel[c->num];
+ d->dmamem.size = sizeof(ce_buf_t);
+ if (! ce_bus_dma_mem_alloc (unit, c->num, &d->dmamem))
+ continue;
+
+ channel [b->num * NCHAN + c->num] = d;
+ sprintf (d->name, "ce%d.%d", b->num, c->num);
+ d->board = b;
+ d->chan = c;
+ c->sys = d;
+ }
+
+ for (c = b->chan; c < b->chan + NCHAN; ++c) {
+ if (c->sys == NULL)
+ continue;
+ d = c->sys;
+
+#ifdef NETGRAPH
+ if (ng_make_node_common (&typestruct, &d->node) != 0) {
+ printf ("%s: cannot make common node\n", d->name);
+ d->node = NULL;
+ continue;
+ }
+#if __FreeBSD_version >= 500000
+ NG_NODE_SET_PRIVATE (d->node, d);
+ callout_init (&d->timeout_handle,
+ ce_mpsafenet ? CALLOUT_MPSAFE : 0);
+#else
+ d->node->private = d;
+#endif
+ sprintf (d->nodename, "%s%d", NG_CE_NODE_TYPE,
+ c->board->num * NCHAN + c->num);
+ if (ng_name_node (d->node, d->nodename)) {
+ printf ("%s: cannot name node\n", d->nodename);
+#if __FreeBSD_version >= 500000
+ NG_NODE_UNREF (d->node);
+#else
+ ng_rmnode (d->node);
+ ng_unref (d->node);
+#endif
+ continue;
+ }
+ d->queue.ifq_maxlen = IFQ_MAXLEN;
+ d->hi_queue.ifq_maxlen = IFQ_MAXLEN;
+ d->rqueue.ifq_maxlen = IFQ_MAXLEN;
+#if __FreeBSD_version >= 500000
+ mtx_init (&d->queue.ifq_mtx, "ce_queue", NULL, MTX_DEF);
+ mtx_init (&d->hi_queue.ifq_mtx, "ce_queue_hi", NULL, MTX_DEF);
+ mtx_init (&d->rqueue.ifq_mtx, "ce_rqueue", NULL, MTX_DEF);
+#endif
+#else /*NETGRAPH*/
+#if __FreeBSD_version >= 600031
+ d->ifp = if_alloc(IFT_PPP);
+#else
+ d->ifp = malloc (sizeof(struct sppp), M_DEVBUF, M_WAITOK);
+ bzero (d->ifp, sizeof(struct sppp));
+#endif
+ if (!d->ifp) {
+ printf ("%s: cannot if_alloc() interface\n", d->name);
+ continue;
+ }
+ d->ifp->if_softc = d;
+#if __FreeBSD_version > 501000
+ if_initname (d->ifp, "ce", b->num * NCHAN + c->num);
+#else
+ d->ifp->if_unit = b->num * NCHAN + c->num;
+ d->ifp->if_name = "ce";
+#endif
+ d->ifp->if_mtu = PP_MTU;
+ d->ifp->if_flags = IFF_POINTOPOINT | IFF_MULTICAST;
+#if __FreeBSD_version >= 502125
+ if (!ce_mpsafenet)
+ d->ifp->if_flags |= IFF_NEEDSGIANT;
+#endif
+ d->ifp->if_ioctl = ce_sioctl;
+ d->ifp->if_start = ce_ifstart;
+ d->ifp->if_watchdog = ce_ifwatchdog;
+ d->ifp->if_init = ce_initialize;
+ d->rqueue.ifq_maxlen = IFQ_MAXLEN;
+#if __FreeBSD_version >= 500000
+ mtx_init (&d->rqueue.ifq_mtx, "ce_rqueue", NULL, MTX_DEF);
+#endif
+ sppp_attach (d->ifp);
+ if_attach (d->ifp);
+ IFP2SP(d->ifp)->pp_tlf = ce_tlf;
+ IFP2SP(d->ifp)->pp_tls = ce_tls;
+ /* If BPF is in the kernel, call the attach for it.
+ * The header size of PPP or Cisco/HDLC is 4 bytes. */
+ bpfattach (d->ifp, DLT_PPP, 4);
+#endif /*NETGRAPH*/
+ ce_start_chan (c, 1, 1, d->dmamem.virt, d->dmamem.phys);
+
+ /* Register callback functions. */
+ ce_register_transmit (c, &ce_transmit);
+ ce_register_receive (c, &ce_receive);
+ ce_register_error (c, &ce_error);
+ d->devt = make_dev (&ce_cdevsw, b->num*NCHAN+c->num, UID_ROOT,
+ GID_WHEEL, 0600, "ce%d", b->num*NCHAN+c->num);
+ }
+
+#if __FreeBSD_version >= 504000
+ ce_ln[2] = '0' + unit;
+ mtx_init (&bd->ce_mtx, ce_ln, MTX_NETWORK_LOCK, MTX_DEF|MTX_RECURSE);
+#endif
+ CE_LOCK (bd);
+ TAU32_EnableInterrupts(b->ddk.pControllerObject);
+ adapter[unit] = b;
+ CE_UNLOCK (bd);
+ splx (s);
+
+ return 0;
+}
+
+static int ce_detach (device_t dev)
+{
+ bdrv_t *bd = device_get_softc (dev);
+ ce_board_t *b = bd->board;
+ ce_chan_t *c;
+ int s;
+
+#if __FreeBSD_version >= 504000
+ KASSERT (mtx_initialized (&bd->ce_mtx), ("ce mutex not initialized"));
+#endif
+ s = splimp ();
+ CE_LOCK (bd);
+ /* Check if the device is busy (open). */
+ for (c = b->chan; c < b->chan + NCHAN; ++c) {
+ drv_t *d = (drv_t*) c->sys;
+
+ /* XXX Non existen chan! */
+ if (! d || ! d->chan)
+ continue;
+ if (d->running) {
+ CE_UNLOCK (bd);
+ splx (s);
+ return EBUSY;
+ }
+ }
+
+ /* Ok, we can unload driver */
+ /* At first we should disable interrupts */
+ ce_destroy = 1;
+ TAU32_DisableInterrupts(b->ddk.pControllerObject);
+
+ callout_stop (&led_timo[b->num]);
+
+ for (c = b->chan; c < b->chan + NCHAN; ++c) {
+ drv_t *d = (drv_t*) c->sys;
+
+ if (! d || ! d->chan)
+ continue;
+#ifndef NETGRAPH
+#if __FreeBSD_version >= 410000 && NBPFILTER > 0
+ /* Detach from the packet filter list of interfaces. */
+ bpfdetach (d->ifp);
+#endif
+ /* Detach from the sync PPP list. */
+ sppp_detach (d->ifp);
+
+ /* Detach from the system list of interfaces. */
+ if_detach (d->ifp);
+#if __FreeBSD_version > 600031
+ if_free(d->ifp);
+#else
+ free (d->ifp, M_DEVBUF);
+#endif
+
+ IF_DRAIN (&d->rqueue);
+#if __FreeBSD_version >= 500000
+ mtx_destroy (&d->rqueue.ifq_mtx);
+#endif
+#else
+#if __FreeBSD_version >= 500000
+ if (d->node) {
+ ng_rmnode_self (d->node);
+ NG_NODE_UNREF (d->node);
+ d->node = NULL;
+ }
+ IF_DRAIN (&d->rqueue);
+ mtx_destroy (&d->queue.ifq_mtx);
+ mtx_destroy (&d->hi_queue.ifq_mtx);
+ mtx_destroy (&d->rqueue.ifq_mtx);
+#else
+ ng_rmnode (d->node);
+ d->node = 0;
+#endif
+#endif
+ destroy_dev (d->devt);
+ }
+
+ CE_UNLOCK (bd);
+ splx (s);
+
+ callout_drain (&led_timo[b->num]);
+
+ /* Disable the interrupt request. */
+ bus_teardown_intr (dev, bd->ce_irq, bd->ce_intrhand);
+ bus_deactivate_resource (dev, SYS_RES_IRQ, 0, bd->ce_irq);
+ bus_release_resource (dev, SYS_RES_IRQ, 0, bd->ce_irq);
+ TAU32_DestructiveHalt (b->ddk.pControllerObject, 0);
+ bus_release_resource (dev, SYS_RES_MEMORY, PCIR_BAR(0), bd->ce_res);
+
+ s = splimp ();
+ CE_LOCK (bd);
+ for (c = b->chan; c < b->chan + NCHAN; ++c) {
+ drv_t *d = (drv_t*) c->sys;
+
+ if (! d || ! d->chan)
+ continue;
+ channel [b->num * NCHAN + c->num] = 0;
+ /* Deallocate buffers. */
+ ce_bus_dma_mem_free (&d->dmamem);
+ }
+ adapter [b->num] = 0;
+ ce_bus_dma_mem_free (&bd->dmamem);
+ free (b, M_DEVBUF);
+ CE_UNLOCK (bd);
+ splx (s);
+#if __FreeBSD_version >= 504000
+ mtx_destroy (&bd->ce_mtx);
+#endif
+ return 0;
+}
+
+#ifndef NETGRAPH
+static void ce_ifstart (struct ifnet *ifp)
+{
+ drv_t *d = ifp->if_softc;
+ bdrv_t *bd = d->board->sys;
+
+ CE_LOCK (bd);
+ ce_start (d);
+ CE_UNLOCK (bd);
+}
+
+static void ce_ifwatchdog (struct ifnet *ifp)
+{
+ drv_t *d = ifp->if_softc;
+
+ ce_watchdog (d);
+}
+
+static void ce_tlf (struct sppp *sp)
+{
+ drv_t *d = SP2IFP(sp)->if_softc;
+
+ CE_DEBUG2 (d, ("ce_tlf\n"));
+ sp->pp_down (sp);
+}
+
+static void ce_tls (struct sppp *sp)
+{
+ drv_t *d = SP2IFP(sp)->if_softc;
+
+ CE_DEBUG2 (d, ("ce_tls\n"));
+ sp->pp_up (sp);
+}
+
+/*
+ * Process an ioctl request.
+ */
+static int ce_sioctl (struct ifnet *ifp, u_long cmd, caddr_t data)
+{
+ drv_t *d = ifp->if_softc;
+ bdrv_t *bd = d->board->sys;
+ int error, s, was_up, should_be_up;
+
+#if __FreeBSD_version >= 600034
+ was_up = (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0;
+#else
+ was_up = (ifp->if_flags & IFF_RUNNING) != 0;
+#endif
+ error = sppp_ioctl (ifp, cmd, data);
+
+ if (error)
+ return error;
+
+ if (! (ifp->if_flags & IFF_DEBUG))
+ d->chan->debug = 0;
+ else if (! d->chan->debug)
+ d->chan->debug = 1;
+
+ switch (cmd) {
+ default: CE_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0;
+ case SIOCADDMULTI: CE_DEBUG2 (d, ("ioctl SIOCADDMULTI\n")); return 0;
+ case SIOCDELMULTI: CE_DEBUG2 (d, ("ioctl SIOCDELMULTI\n")); return 0;
+ case SIOCSIFFLAGS: CE_DEBUG2 (d, ("ioctl SIOCSIFFLAGS\n")); break;
+ case SIOCSIFADDR: CE_DEBUG2 (d, ("ioctl SIOCSIFADDR\n")); break;
+ }
+
+ /* We get here only in case of SIFFLAGS or SIFADDR. */
+ s = splimp ();
+ CE_LOCK (bd);
+#if __FreeBSD_version >= 600034
+ should_be_up = (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0;
+#else
+ should_be_up = (ifp->if_flags & IFF_RUNNING) != 0;
+#endif
+ if (! was_up && should_be_up) {
+ /* Interface goes up -- start it. */
+ ce_up (d);
+ ce_start (d);
+ } else if (was_up && ! should_be_up) {
+ /* Interface is going down -- stop it. */
+/* if ((IFP2SP(ifp)->pp_flags & PP_FR) || (ifp->if_flags & PP_CISCO))*/
+ ce_down (d);
+ }
+ CE_DEBUG (d, ("ioctl 0x%lx p4\n", cmd));
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+}
+
+/*
+ * Initialization of interface.
+ * It seems to be never called by upper level?
+ */
+static void ce_initialize (void *softc)
+{
+ drv_t *d = softc;
+
+ CE_DEBUG (d, ("ce_initialize\n"));
+}
+#endif /*NETGRAPH*/
+
+/*
+ * Stop the interface. Called on splimp().
+ */
+static void ce_down (drv_t *d)
+{
+ CE_DEBUG (d, ("ce_down\n"));
+ /* Interface is going down -- stop it. */
+ ce_set_dtr (d->chan, 0);
+ ce_set_rts (d->chan, 0);
+
+ d->running = 0;
+}
+
+/*
+ * Start the interface. Called on splimp().
+ */
+static void ce_up (drv_t *d)
+{
+ CE_DEBUG (d, ("ce_up\n"));
+ ce_set_dtr (d->chan, 1);
+ ce_set_rts (d->chan, 1);
+
+ d->running = 1;
+}
+
+/*
+ * Start output on the interface. Get another datagram to send
+ * off of the interface queue, and copy it to the interface
+ * before starting the output.
+ */
+static void ce_send (drv_t *d)
+{
+ struct mbuf *m;
+ u_short len;
+
+ CE_DEBUG2 (d, ("ce_send\n"));
+
+ /* No output if the interface is down. */
+ if (! d->running)
+ return;
+
+ while (ce_transmit_space (d->chan)) {
+ /* Get the packet to send. */
+#ifdef NETGRAPH
+ IF_DEQUEUE (&d->hi_queue, m);
+ if (! m)
+ IF_DEQUEUE (&d->queue, m);
+#else
+ m = sppp_dequeue (d->ifp);
+#endif
+ if (! m)
+ return;
+#ifndef NETGRAPH
+ if (d->ifp->if_bpf)
+#if __FreeBSD_version >= 500000
+ BPF_MTAP (d->ifp, m);
+#else
+ bpf_mtap (d->ifp, m);
+#endif
+#endif
+#if __FreeBSD_version >= 490000
+ len = m_length (m, NULL);
+#else
+ len = m->m_pkthdr.len;
+#endif
+ if (len >= BUFSZ)
+ printf ("%s: too long packet: %d bytes: ",
+ d->name, len);
+ else if (! m->m_next)
+ ce_send_packet (d->chan, (u_char*) mtod (m, caddr_t), len, 0);
+ else {
+ ce_buf_item_t *item = (ce_buf_item_t*)d->chan->tx_queue;
+ m_copydata (m, 0, len, item->buf);
+ ce_send_packet (d->chan, item->buf, len, 0);
+ }
+ m_freem (m);
+ /* Set up transmit timeout, if the transmit ring is not empty.*/
+#ifdef NETGRAPH
+ d->timeout = 10;
+#else
+ d->ifp->if_timer = 10;
+#endif
+ }
+#ifndef NETGRAPH
+#if __FreeBSD_version >= 600034
+ d->ifp->if_flags |= IFF_DRV_OACTIVE;
+#else
+ d->ifp->if_flags |= IFF_OACTIVE;
+#endif
+#endif
+}
+
+/*
+ * Start output on the interface.
+ * Always called on splimp().
+ */
+static void ce_start (drv_t *d)
+{
+ if (d->running) {
+ if (! d->chan->dtr)
+ ce_set_dtr (d->chan, 1);
+ if (! d->chan->rts)
+ ce_set_rts (d->chan, 1);
+ ce_send (d);
+ }
+}
+
+/*
+ * Handle transmit timeouts.
+ * Recover after lost transmit interrupts.
+ * Always called on splimp().
+ */
+static void ce_watchdog (drv_t *d)
+{
+ bdrv_t *bd = d->board->sys;
+ CE_DEBUG (d, ("device timeout\n"));
+ if (d->running) {
+ int s = splimp ();
+ CE_LOCK (bd);
+ ce_set_dtr (d->chan, 0);
+ ce_set_rts (d->chan, 0);
+/* ce_stop_chan (d->chan);*/
+/* ce_start_chan (d->chan, 1, 1, 0, 0);*/
+ ce_set_dtr (d->chan, 1);
+ ce_set_rts (d->chan, 1);
+ ce_start (d);
+ CE_UNLOCK (bd);
+ splx (s);
+ }
+}
+
+static void ce_transmit (ce_chan_t *c, void *attachment, int len)
+{
+ drv_t *d = c->sys;
+
+#ifdef NETGRAPH
+ d->timeout = 0;
+#else
+ ++d->ifp->if_opackets;
+#if __FreeBSD_version >= 600034
+ d->ifp->if_flags &= ~IFF_DRV_OACTIVE;
+#else
+ d->ifp->if_flags &= ~IFF_OACTIVE;
+#endif
+ d->ifp->if_timer = 0;
+#endif
+ ce_start (d);
+}
+
+static void ce_receive (ce_chan_t *c, unsigned char *data, int len)
+{
+ drv_t *d = c->sys;
+ struct mbuf *m;
+
+ if (! d->running)
+ return;
+
+ m = makembuf (data, len);
+ if (! m) {
+ CE_DEBUG (d, ("no memory for packet\n"));
+#ifndef NETGRAPH
+ ++d->ifp->if_iqdrops;
+#endif
+ return;
+ }
+ if (c->debug > 1)
+ printmbuf (m);
+#ifdef NETGRAPH
+ m->m_pkthdr.rcvif = 0;
+ IF_ENQUEUE(&d->rqueue, m);
+#else
+ ++d->ifp->if_ipackets;
+ m->m_pkthdr.rcvif = d->ifp;
+ /* Check if there's a BPF listener on this interface.
+ * If so, hand off the raw packet to bpf. */
+ if (d->ifp->if_bpf)
+#if __FreeBSD_version >= 500000
+ BPF_TAP (d->ifp, data, len);
+#else
+ bpf_tap (d->ifp, data, len);
+#endif
+ IF_ENQUEUE(&d->rqueue, m);
+#endif
+}
+
+static void ce_error (ce_chan_t *c, int data)
+{
+ drv_t *d = c->sys;
+
+ switch (data) {
+ case CE_FRAME:
+ CE_DEBUG (d, ("frame error\n"));
+#ifndef NETGRAPH
+ ++d->ifp->if_ierrors;
+#endif
+ break;
+ case CE_CRC:
+ CE_DEBUG (d, ("crc error\n"));
+#ifndef NETGRAPH
+ ++d->ifp->if_ierrors;
+#endif
+ break;
+ case CE_OVERRUN:
+ CE_DEBUG (d, ("overrun error\n"));
+#ifndef NETGRAPH
+ ++d->ifp->if_collisions;
+ ++d->ifp->if_ierrors;
+#endif
+ break;
+ case CE_OVERFLOW:
+ CE_DEBUG (d, ("overflow error\n"));
+#ifndef NETGRAPH
+ ++d->ifp->if_ierrors;
+#endif
+ break;
+ case CE_UNDERRUN:
+ CE_DEBUG (d, ("underrun error\n"));
+#ifdef NETGRAPH
+ d->timeout = 0;
+#else
+ ++d->ifp->if_oerrors;
+#if __FreeBSD_version >= 600034
+ d->ifp->if_flags &= ~IFF_DRV_OACTIVE;
+#else
+ d->ifp->if_flags &= ~IFF_OACTIVE;
+#endif
+ d->ifp->if_timer = 0;
+#endif
+ ce_start (d);
+ break;
+ default:
+ CE_DEBUG (d, ("error #%d\n", data));
+ break;
+ }
+}
+
+/*
+ * You also need read, write, open, close routines.
+ * This should get you started
+ */
+#if __FreeBSD_version < 500000
+static int ce_open (dev_t dev, int oflags, int devtype, struct proc *p)
+#else
+static int ce_open (struct cdev *dev, int oflags, int devtype, struct thread *td)
+#endif
+{
+ int unit = minor (dev);
+ drv_t *d;
+
+ if (unit >= NBRD*NCHAN || ! (d = channel[unit]))
+ return ENXIO;
+ CE_DEBUG2 (d, ("ce_open\n"));
+ return 0;
+}
+
+/*
+ * Only called on the LAST close.
+ */
+#if __FreeBSD_version < 500000
+static int ce_close (dev_t dev, int fflag, int devtype, struct proc *p)
+#else
+static int ce_close (struct cdev *dev, int fflag, int devtype, struct thread *td)
+#endif
+{
+ drv_t *d = channel [minor (dev)];
+
+ CE_DEBUG2 (d, ("ce_close\n"));
+ return 0;
+}
+
+static int ce_modem_status (ce_chan_t *c)
+{
+ drv_t *d = c->sys;
+ bdrv_t *bd = d->board->sys;
+ int status, s;
+
+ status = d->running ? TIOCM_LE : 0;
+ s = splimp ();
+ CE_LOCK (bd);
+ if (ce_get_cd (c)) status |= TIOCM_CD;
+ if (ce_get_cts (c)) status |= TIOCM_CTS;
+ if (ce_get_dsr (c)) status |= TIOCM_DSR;
+ if (c->dtr) status |= TIOCM_DTR;
+ if (c->rts) status |= TIOCM_RTS;
+ CE_UNLOCK (bd);
+ splx (s);
+ return status;
+}
+
+#if __FreeBSD_version < 500000
+static int ce_ioctl (dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
+#else
+static int ce_ioctl (struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td)
+#endif
+{
+ drv_t *d = channel [minor (dev)];
+ bdrv_t *bd = d->board->sys;
+ ce_chan_t *c = d->chan;
+ struct serial_statistics *st;
+ struct e1_statistics *opte1;
+ int error, s;
+ char mask[16];
+
+ switch (cmd) {
+ case SERIAL_GETREGISTERED:
+ CE_DEBUG2 (d, ("ioctl: getregistered\n"));
+ bzero (mask, sizeof(mask));
+ for (s=0; s<NBRD*NCHAN; ++s)
+ if (channel [s])
+ mask [s/8] |= 1 << (s & 7);
+ bcopy (mask, data, sizeof (mask));
+ return 0;
+
+#ifndef NETGRAPH
+ case SERIAL_GETPROTO:
+ CE_DEBUG2 (d, ("ioctl: getproto\n"));
+ strcpy ((char*)data, (IFP2SP(d->ifp)->pp_flags & PP_FR) ? "fr" :
+ (d->ifp->if_flags & PP_CISCO) ? "cisco" : "ppp");
+ return 0;
+
+ case SERIAL_SETPROTO:
+ CE_DEBUG2 (d, ("ioctl: setproto\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else /* __FreeBSD_version >= 500000 */
+ error = suser (td);
+#endif /* __FreeBSD_version >= 500000 */
+ if (error)
+ return error;
+#if __FreeBSD_version >= 600034
+ if (d->ifp->if_flags & IFF_DRV_RUNNING)
+#else
+ if (d->ifp->if_flags & IFF_RUNNING)
+#endif
+ return EBUSY;
+ if (! strcmp ("cisco", (char*)data)) {
+ IFP2SP(d->ifp)->pp_flags &= ~(PP_FR);
+ IFP2SP(d->ifp)->pp_flags |= PP_KEEPALIVE;
+ d->ifp->if_flags |= PP_CISCO;
+ } else if (! strcmp ("fr", (char*)data) && PP_FR) {
+ d->ifp->if_flags &= ~(PP_CISCO);
+ IFP2SP(d->ifp)->pp_flags |= PP_FR | PP_KEEPALIVE;
+ } else if (! strcmp ("ppp", (char*)data)) {
+ IFP2SP(d->ifp)->pp_flags &= ~PP_FR;
+ IFP2SP(d->ifp)->pp_flags &= ~PP_KEEPALIVE;
+ d->ifp->if_flags &= ~(PP_CISCO);
+ } else
+ return EINVAL;
+ return 0;
+
+ case SERIAL_GETKEEPALIVE:
+ CE_DEBUG2 (d, ("ioctl: getkeepalive\n"));
+ if ((IFP2SP(d->ifp)->pp_flags & PP_FR) ||
+ (d->ifp->if_flags & PP_CISCO))
+ return EINVAL;
+ *(int*)data = (IFP2SP(d->ifp)->pp_flags & PP_KEEPALIVE) ? 1 : 0;
+ return 0;
+
+ case SERIAL_SETKEEPALIVE:
+ CE_DEBUG2 (d, ("ioctl: setkeepalive\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ if ((IFP2SP(d->ifp)->pp_flags & PP_FR) ||
+ (d->ifp->if_flags & PP_CISCO))
+ return EINVAL;
+ s = splimp ();
+ CE_LOCK (bd);
+ if (*(int*)data)
+ IFP2SP(d->ifp)->pp_flags |= PP_KEEPALIVE;
+ else
+ IFP2SP(d->ifp)->pp_flags &= ~PP_KEEPALIVE;
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+#endif /*NETGRAPH*/
+
+ case SERIAL_GETMODE:
+ CE_DEBUG2 (d, ("ioctl: getmode\n"));
+ *(int*)data = SERIAL_HDLC;
+ return 0;
+
+ case SERIAL_SETMODE:
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ if (*(int*)data != SERIAL_HDLC)
+ return EINVAL;
+ return 0;
+
+ case SERIAL_GETCFG:
+ CE_DEBUG2 (d, ("ioctl: getcfg\n"));
+ *(char*)data = 'c';
+ return 0;
+
+ case SERIAL_SETCFG:
+ CE_DEBUG2 (d, ("ioctl: setcfg\n"));
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ if (*((char*)data) != 'c')
+ return EINVAL;
+ return 0;
+
+ case SERIAL_GETSTAT:
+ CE_DEBUG2 (d, ("ioctl: getstat\n"));
+ st = (struct serial_statistics*) data;
+ st->rintr = c->rintr;
+ st->tintr = c->tintr;
+ st->mintr = 0;
+ st->ibytes = c->ibytes;
+ st->ipkts = c->ipkts;
+ st->obytes = c->obytes;
+ st->opkts = c->opkts;
+ st->ierrs = c->overrun + c->frame + c->crc;
+ st->oerrs = c->underrun;
+ return 0;
+
+ case SERIAL_GETESTAT:
+ CE_DEBUG2 (d, ("ioctl: getestat\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ opte1 = (struct e1_statistics*) data;
+
+ opte1->status = 0;
+ if (c->status & ESTS_NOALARM)
+ opte1->status |= E1_NOALARM;
+ if (c->status & ESTS_LOS)
+ opte1->status |= E1_LOS;
+ if (c->status & ESTS_LOF)
+ opte1->status |= E1_LOF;
+ if (c->status & ESTS_AIS)
+ opte1->status |= E1_AIS;
+ if (c->status & ESTS_LOMF)
+ opte1->status |= E1_LOMF;
+ if (c->status & ESTS_AIS16)
+ opte1->status |= E1_AIS16;
+ if (c->status & ESTS_FARLOF)
+ opte1->status |= E1_FARLOF;
+ if (c->status & ESTS_FARLOMF)
+ opte1->status |= E1_FARLOMF;
+ if (c->status & ESTS_TSTREQ)
+ opte1->status |= E1_TSTREQ;
+ if (c->status & ESTS_TSTERR)
+ opte1->status |= E1_TSTERR;
+
+ opte1->cursec = c->cursec;
+ opte1->totsec = c->totsec + c->cursec;
+
+ opte1->currnt.bpv = c->currnt.bpv;
+ opte1->currnt.fse = c->currnt.fse;
+ opte1->currnt.crce = c->currnt.crce;
+ opte1->currnt.rcrce = c->currnt.rcrce;
+ opte1->currnt.uas = c->currnt.uas;
+ opte1->currnt.les = c->currnt.les;
+ opte1->currnt.es = c->currnt.es;
+ opte1->currnt.bes = c->currnt.bes;
+ opte1->currnt.ses = c->currnt.ses;
+ opte1->currnt.oofs = c->currnt.oofs;
+ opte1->currnt.css = c->currnt.css;
+ opte1->currnt.dm = c->currnt.dm;
+
+ opte1->total.bpv = c->total.bpv + c->currnt.bpv;
+ opte1->total.fse = c->total.fse + c->currnt.fse;
+ opte1->total.crce = c->total.crce + c->currnt.crce;
+ opte1->total.rcrce = c->total.rcrce + c->currnt.rcrce;
+ opte1->total.uas = c->total.uas + c->currnt.uas;
+ opte1->total.les = c->total.les + c->currnt.les;
+ opte1->total.es = c->total.es + c->currnt.es;
+ opte1->total.bes = c->total.bes + c->currnt.bes;
+ opte1->total.ses = c->total.ses + c->currnt.ses;
+ opte1->total.oofs = c->total.oofs + c->currnt.oofs;
+ opte1->total.css = c->total.css + c->currnt.css;
+ opte1->total.dm = c->total.dm + c->currnt.dm;
+ for (s=0; s<48; ++s) {
+ opte1->interval[s].bpv = c->interval[s].bpv;
+ opte1->interval[s].fse = c->interval[s].fse;
+ opte1->interval[s].crce = c->interval[s].crce;
+ opte1->interval[s].rcrce = c->interval[s].rcrce;
+ opte1->interval[s].uas = c->interval[s].uas;
+ opte1->interval[s].les = c->interval[s].les;
+ opte1->interval[s].es = c->interval[s].es;
+ opte1->interval[s].bes = c->interval[s].bes;
+ opte1->interval[s].ses = c->interval[s].ses;
+ opte1->interval[s].oofs = c->interval[s].oofs;
+ opte1->interval[s].css = c->interval[s].css;
+ opte1->interval[s].dm = c->interval[s].dm;
+ }
+ return 0;
+
+ case SERIAL_CLRSTAT:
+ CE_DEBUG2 (d, ("ioctl: clrstat\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ c->rintr = 0;
+ c->tintr = 0;
+ c->ibytes = 0;
+ c->obytes = 0;
+ c->ipkts = 0;
+ c->opkts = 0;
+ c->overrun = 0;
+ c->frame = 0;
+ c->crc = 0;
+ c->underrun = 0;
+ bzero (&c->currnt, sizeof (c->currnt));
+ bzero (&c->total, sizeof (c->total));
+ bzero (c->interval, sizeof (c->interval));
+ return 0;
+
+ case SERIAL_GETLOOP:
+ CE_DEBUG2 (d, ("ioctl: getloop\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ *(int*)data = c->lloop;
+ return 0;
+
+ case SERIAL_SETLOOP:
+ CE_DEBUG2 (d, ("ioctl: setloop\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_lloop (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETRLOOP:
+ CE_DEBUG2 (d, ("ioctl: getrloop\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ *(int*)data = c->rloop;
+ return 0;
+
+ case SERIAL_SETRLOOP:
+ CE_DEBUG2 (d, ("ioctl: setloop\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_rloop (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETDEBUG:
+ CE_DEBUG2 (d, ("ioctl: getdebug\n"));
+ *(int*)data = d->chan->debug;
+ return 0;
+
+ case SERIAL_SETDEBUG:
+ CE_DEBUG2 (d, ("ioctl: setdebug\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ d->chan->debug = *(int*)data;
+#ifndef NETGRAPH
+ if (d->chan->debug)
+ d->ifp->if_flags |= IFF_DEBUG;
+ else
+ d->ifp->if_flags &= ~IFF_DEBUG;
+#endif
+ return 0;
+
+ case SERIAL_GETBAUD:
+ CE_DEBUG2 (d, ("ioctl: getbaud\n"));
+ *(long*)data = c->baud;
+ return 0;
+
+ case SERIAL_SETBAUD:
+ CE_DEBUG2 (d, ("ioctl: setbaud\n"));
+ if (c->type != T_E1 || !c->unfram)
+ return EINVAL;
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_baud (c, *(long*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETTIMESLOTS:
+ CE_DEBUG2 (d, ("ioctl: gettimeslots\n"));
+ if ((c->type != T_E1 || c->unfram) && c->type != T_DATA)
+ return EINVAL;
+ *(u_long*)data = c->ts;
+ return 0;
+
+ case SERIAL_SETTIMESLOTS:
+ CE_DEBUG2 (d, ("ioctl: settimeslots\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ if ((c->type != T_E1 || c->unfram) && c->type != T_DATA)
+ return EINVAL;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_ts (c, *(u_long*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETHIGAIN:
+ CE_DEBUG2 (d, ("ioctl: gethigain\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ *(int*)data = c->higain;
+ return 0;
+
+ case SERIAL_SETHIGAIN:
+ CE_DEBUG2 (d, ("ioctl: sethigain\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_higain (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETPHONY:
+ CE_DEBUG2 (d, ("ioctl: getphony\n"));
+ *(int*)data = c->phony;
+ return 0;
+
+ case SERIAL_SETPHONY:
+ CE_DEBUG2 (d, ("ioctl: setphony\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_phony (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETUNFRAM:
+ CE_DEBUG2 (d, ("ioctl: getunfram\n"));
+ if (c->type != T_E1 || c->num != 0)
+ return EINVAL;
+ *(int*)data = c->unfram;
+ return 0;
+
+ case SERIAL_SETUNFRAM:
+ CE_DEBUG2 (d, ("ioctl: setunfram\n"));
+ if (c->type != T_E1 || c->num != 0)
+ return EINVAL;
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_unfram (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETSCRAMBLER:
+ CE_DEBUG2 (d, ("ioctl: getscrambler\n"));
+ if (!c->unfram)
+ return EINVAL;
+ *(int*)data = c->scrambler;
+ return 0;
+
+ case SERIAL_SETSCRAMBLER:
+ CE_DEBUG2 (d, ("ioctl: setscrambler\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ if (!c->unfram)
+ return EINVAL;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_scrambler (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETMONITOR:
+ CE_DEBUG2 (d, ("ioctl: getmonitor\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ *(int*)data = c->monitor;
+ return 0;
+
+ case SERIAL_SETMONITOR:
+ CE_DEBUG2 (d, ("ioctl: setmonitor\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ if (c->type != T_E1)
+ return EINVAL;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_monitor (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETUSE16:
+ CE_DEBUG2 (d, ("ioctl: getuse16\n"));
+ if (c->type != T_E1 || c->unfram)
+ return EINVAL;
+ *(int*)data = c->use16;
+ return 0;
+
+ case SERIAL_SETUSE16:
+ CE_DEBUG2 (d, ("ioctl: setuse16\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ if (c->type != T_E1)
+ return EINVAL;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_use16 (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETCRC4:
+ CE_DEBUG2 (d, ("ioctl: getcrc4\n"));
+ if (c->type != T_E1 || c->unfram)
+ return EINVAL;
+ *(int*)data = c->crc4;
+ return 0;
+
+ case SERIAL_SETCRC4:
+ CE_DEBUG2 (d, ("ioctl: setcrc4\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ if (c->type != T_E1 || c->unfram)
+ return EINVAL;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_crc4 (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETCLK:
+ CE_DEBUG2 (d, ("ioctl: getclk\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ switch (c->gsyn) {
+ default: *(int*)data = E1CLK_INTERNAL; break;
+ case GSYN_RCV: *(int*)data = E1CLK_RECEIVE; break;
+ case GSYN_RCV0: *(int*)data = E1CLK_RECEIVE_CHAN0; break;
+ case GSYN_RCV1: *(int*)data = E1CLK_RECEIVE_CHAN1; break;
+ }
+ return 0;
+
+ case SERIAL_SETCLK:
+ CE_DEBUG2 (d, ("ioctl: setclk\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ if (c->type != T_E1)
+ return EINVAL;
+ s = splimp ();
+ CE_LOCK (bd);
+ switch (*(int*)data) {
+ default: ce_set_gsyn (c, GSYN_INT); break;
+ case E1CLK_RECEIVE: ce_set_gsyn (c, GSYN_RCV); break;
+ case E1CLK_RECEIVE_CHAN0: ce_set_gsyn (c, GSYN_RCV0); break;
+ case E1CLK_RECEIVE_CHAN1: ce_set_gsyn (c, GSYN_RCV1); break;
+ }
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+#if 0
+ case SERIAL_RESET:
+ CE_DEBUG2 (d, ("ioctl: reset\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ s = splimp ();
+ CE_LOCK (bd);
+/* ce_reset (c->board, 0, 0);*/
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_HARDRESET:
+ CE_DEBUG2 (d, ("ioctl: hardreset\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ s = splimp ();
+ CE_LOCK (bd);
+ /* hard_reset (c->board); */
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+#endif
+
+ case SERIAL_GETCABLE:
+ CE_DEBUG2 (d, ("ioctl: getcable\n"));
+ if (c->type != T_E1)
+ return EINVAL;
+ s = splimp ();
+ CE_LOCK (bd);
+ *(int*)data = CABLE_TP;
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case SERIAL_GETDIR:
+ CE_DEBUG2 (d, ("ioctl: getdir\n"));
+ if (c->type != T_E1 && c->type != T_DATA)
+ return EINVAL;
+ *(int*)data = c->dir;
+ return 0;
+
+ case SERIAL_SETDIR:
+ CE_DEBUG2 (d, ("ioctl: setdir\n"));
+ /* Only for superuser! */
+#if __FreeBSD_version < 500000
+ error = suser (p);
+#else
+ error = suser (td);
+#endif
+ if (error)
+ return error;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_dir (c, *(int*)data);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case TIOCSDTR: /* Set DTR */
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_dtr (c, 1);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case TIOCCDTR: /* Clear DTR */
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_dtr (c, 0);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case TIOCMSET: /* Set DTR/RTS */
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_set_dtr (c, (*(int*)data & TIOCM_DTR) ? 1 : 0);
+ ce_set_rts (c, (*(int*)data & TIOCM_RTS) ? 1 : 0);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case TIOCMBIS: /* Add DTR/RTS */
+ s = splimp ();
+ CE_LOCK (bd);
+ if (*(int*)data & TIOCM_DTR) ce_set_dtr (c, 1);
+ if (*(int*)data & TIOCM_RTS) ce_set_rts (c, 1);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case TIOCMBIC: /* Clear DTR/RTS */
+ s = splimp ();
+ CE_LOCK (bd);
+ if (*(int*)data & TIOCM_DTR) ce_set_dtr (c, 0);
+ if (*(int*)data & TIOCM_RTS) ce_set_rts (c, 0);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+
+ case TIOCMGET: /* Get modem status */
+ *(int*)data = ce_modem_status (c);
+ return 0;
+ }
+ return ENOTTY;
+}
+
+#if __FreeBSD_version < 500000
+static struct cdevsw ce_cdevsw = {
+ ce_open, ce_close, noread, nowrite,
+ ce_ioctl, nopoll, nommap, nostrategy,
+ "ce", CDEV_MAJOR, nodump, nopsize,
+ D_NAGGED, -1
+ };
+#elif __FreeBSD_version == 500000
+static struct cdevsw ce_cdevsw = {
+ ce_open, ce_close, noread, nowrite,
+ ce_ioctl, nopoll, nommap, nostrategy,
+ "ce", CDEV_MAJOR, nodump, nopsize,
+ D_NAGGED,
+ };
+#elif __FreeBSD_version <= 501000
+static struct cdevsw ce_cdevsw = {
+ .d_open = ce_open,
+ .d_close = ce_close,
+ .d_read = noread,
+ .d_write = nowrite,
+ .d_ioctl = ce_ioctl,
+ .d_poll = nopoll,
+ .d_mmap = nommap,
+ .d_strategy = nostrategy,
+ .d_name = "ce",
+ .d_maj = CDEV_MAJOR,
+ .d_dump = nodump,
+ .d_flags = D_NAGGED,
+};
+#elif __FreeBSD_version < 502103
+static struct cdevsw ce_cdevsw = {
+ .d_open = ce_open,
+ .d_close = ce_close,
+ .d_ioctl = ce_ioctl,
+ .d_name = "ce",
+ .d_maj = CDEV_MAJOR,
+ .d_flags = D_NAGGED,
+};
+#elif __FreeBSD_version < 600000
+static struct cdevsw ce_cdevsw = {
+ .d_version = D_VERSION,
+ .d_open = ce_open,
+ .d_close = ce_close,
+ .d_ioctl = ce_ioctl,
+ .d_name = "ce",
+ .d_maj = CDEV_MAJOR,
+ .d_flags = D_NEEDGIANT,
+};
+#else /* __FreeBSD_version >= 600000 */
+static struct cdevsw ce_cdevsw = {
+ .d_version = D_VERSION,
+ .d_open = ce_open,
+ .d_close = ce_close,
+ .d_ioctl = ce_ioctl,
+ .d_name = "ce",
+ .d_flags = D_NEEDGIANT,
+};
+#endif
+
+#ifdef NETGRAPH
+#if __FreeBSD_version >= 500000
+static int ng_ce_constructor (node_p node)
+{
+ drv_t *d = NG_NODE_PRIVATE (node);
+#else
+static int ng_ce_constructor (node_p *node)
+{
+ drv_t *d = (*node)->private;
+#endif
+ CE_DEBUG (d, ("Constructor\n"));
+ return EINVAL;
+}
+
+static int ng_ce_newhook (node_p node, hook_p hook, const char *name)
+{
+ int s;
+#if __FreeBSD_version >= 500000
+ drv_t *d = NG_NODE_PRIVATE (node);
+#else
+ drv_t *d = node->private;
+#endif
+ bdrv_t *bd = d->board->sys;
+
+ CE_DEBUG (d, ("Newhook\n"));
+ /* Attach debug hook */
+ if (strcmp (name, NG_CE_HOOK_DEBUG) == 0) {
+#if __FreeBSD_version >= 500000
+ NG_HOOK_SET_PRIVATE (hook, NULL);
+#else
+ hook->private = 0;
+#endif
+ d->debug_hook = hook;
+ return 0;
+ }
+
+ /* Check for raw hook */
+ if (strcmp (name, NG_CE_HOOK_RAW) != 0)
+ return EINVAL;
+
+#if __FreeBSD_version >= 500000
+ NG_HOOK_SET_PRIVATE (hook, d);
+#else
+ hook->private = d;
+#endif
+ d->hook = hook;
+ s = splimp ();
+ CE_LOCK (bd);
+ ce_up (d);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+}
+
+static char *format_timeslots (u_long s)
+{
+ static char buf [100];
+ char *p = buf;
+ int i;
+
+ for (i=1; i<32; ++i)
+ if ((s >> i) & 1) {
+ int prev = (i > 1) & (s >> (i-1));
+ int next = (i < 31) & (s >> (i+1));
+
+ if (prev) {
+ if (next)
+ continue;
+ *p++ = '-';
+ } else if (p > buf)
+ *p++ = ',';
+
+ if (i >= 10)
+ *p++ = '0' + i / 10;
+ *p++ = '0' + i % 10;
+ }
+ *p = 0;
+ return buf;
+}
+
+static int print_modems (char *s, ce_chan_t *c, int need_header)
+{
+ int status = ce_modem_status (c);
+ int length = 0;
+
+ if (need_header)
+ length += sprintf (s + length, " LE DTR DSR RTS CTS CD\n");
+ length += sprintf (s + length, "%4s %4s %4s %4s %4s %4s\n",
+ status & TIOCM_LE ? "On" : "-",
+ status & TIOCM_DTR ? "On" : "-",
+ status & TIOCM_DSR ? "On" : "-",
+ status & TIOCM_RTS ? "On" : "-",
+ status & TIOCM_CTS ? "On" : "-",
+ status & TIOCM_CD ? "On" : "-");
+ return length;
+}
+
+static int print_stats (char *s, ce_chan_t *c, int need_header)
+{
+ int length = 0;
+
+ if (need_header)
+ length += sprintf (s + length, " Rintr Tintr Mintr Ibytes Ipkts Ierrs Obytes Opkts Oerrs\n");
+ length += sprintf (s + length, "%7ld %7ld %7ld %8lu %7ld %7ld %8lu %7ld %7ld\n",
+ c->rintr, c->tintr, 0l, (unsigned long) c->ibytes,
+ c->ipkts, c->overrun + c->frame + c->crc,
+ (unsigned long) c->obytes, c->opkts, c->underrun);
+ return length;
+}
+
+static char *format_e1_status (u_char status)
+{
+ static char buf [80];
+
+ if (status & E1_NOALARM)
+ return "Ok";
+ buf[0] = 0;
+ if (status & E1_LOS) strcat (buf, ",LOS");
+ if (status & E1_AIS) strcat (buf, ",AIS");
+ if (status & E1_LOF) strcat (buf, ",LOF");
+ if (status & E1_LOMF) strcat (buf, ",LOMF");
+ if (status & E1_FARLOF) strcat (buf, ",FARLOF");
+ if (status & E1_AIS16) strcat (buf, ",AIS16");
+ if (status & E1_FARLOMF) strcat (buf, ",FARLOMF");
+ if (status & E1_TSTREQ) strcat (buf, ",TSTREQ");
+ if (status & E1_TSTERR) strcat (buf, ",TSTERR");
+ if (buf[0] == ',')
+ return buf+1;
+ return "Unknown";
+}
+
+static int print_frac (char *s, int leftalign, u_long numerator, u_long divider)
+{
+ int n, length = 0;
+
+ if (numerator < 1 || divider < 1) {
+ length += sprintf (s+length, leftalign ? "/- " : " -");
+ return length;
+ }
+ n = (int) (0.5 + 1000.0 * numerator / divider);
+ if (n < 1000) {
+ length += sprintf (s+length, leftalign ? "/.%-3d" : " .%03d", n);
+ return length;
+ }
+ *(s + length) = leftalign ? '/' : ' ';
+ length ++;
+
+ if (n >= 1000000) n = (n+500) / 1000 * 1000;
+ else if (n >= 100000) n = (n+50) / 100 * 100;
+ else if (n >= 10000) n = (n+5) / 10 * 10;
+
+ switch (n) {
+ case 1000: length += printf (s+length, ".999"); return length;
+ case 10000: n = 9990; break;
+ case 100000: n = 99900; break;
+ case 1000000: n = 999000; break;
+ }
+ if (n < 10000) length += sprintf (s+length, "%d.%d", n/1000, n/10%100);
+ else if (n < 100000) length += sprintf (s+length, "%d.%d", n/1000, n/100%10);
+ else if (n < 1000000) length += sprintf (s+length, "%d.", n/1000);
+ else length += sprintf (s+length, "%d", n/1000);
+
+ return length;
+}
+
+static int print_e1_stats (char *s, ce_chan_t *c)
+{
+ struct e1_counters total;
+ u_long totsec;
+ int length = 0;
+
+ totsec = c->totsec + c->cursec;
+ total.bpv = c->total.bpv + c->currnt.bpv;
+ total.fse = c->total.fse + c->currnt.fse;
+ total.crce = c->total.crce + c->currnt.crce;
+ total.rcrce = c->total.rcrce + c->currnt.rcrce;
+ total.uas = c->total.uas + c->currnt.uas;
+ total.les = c->total.les + c->currnt.les;
+ total.es = c->total.es + c->currnt.es;
+ total.bes = c->total.bes + c->currnt.bes;
+ total.ses = c->total.ses + c->currnt.ses;
+ total.oofs = c->total.oofs + c->currnt.oofs;
+ total.css = c->total.css + c->currnt.css;
+ total.dm = c->total.dm + c->currnt.dm;
+
+ length += sprintf (s + length, " Unav/Degr Bpv/Fsyn CRC/RCRC Err/Lerr Sev/Bur Oof/Slp Status\n");
+
+ /* Unavailable seconds, degraded minutes */
+ length += print_frac (s + length, 0, c->currnt.uas, c->cursec);
+ length += print_frac (s + length, 1, 60 * c->currnt.dm, c->cursec);
+
+ /* Bipolar violations, frame sync errors */
+ length += print_frac (s + length, 0, c->currnt.bpv, c->cursec);
+ length += print_frac (s + length, 1, c->currnt.fse, c->cursec);
+
+ /* CRC errors, remote CRC errors (E-bit) */
+ length += print_frac (s + length, 0, c->currnt.crce, c->cursec);
+ length += print_frac (s + length, 1, c->currnt.rcrce, c->cursec);
+
+ /* Errored seconds, line errored seconds */
+ length += print_frac (s + length, 0, c->currnt.es, c->cursec);
+ length += print_frac (s + length, 1, c->currnt.les, c->cursec);
+
+ /* Severely errored seconds, burst errored seconds */
+ length += print_frac (s + length, 0, c->currnt.ses, c->cursec);
+ length += print_frac (s + length, 1, c->currnt.bes, c->cursec);
+
+ /* Out of frame seconds, controlled slip seconds */
+ length += print_frac (s + length, 0, c->currnt.oofs, c->cursec);
+ length += print_frac (s + length, 1, c->currnt.css, c->cursec);
+
+ length += sprintf (s + length, " %s\n", format_e1_status (c->status));
+
+ /* Print total statistics. */
+ length += print_frac (s + length, 0, total.uas, totsec);
+ length += print_frac (s + length, 1, 60 * total.dm, totsec);
+
+ length += print_frac (s + length, 0, total.bpv, totsec);
+ length += print_frac (s + length, 1, total.fse, totsec);
+
+ length += print_frac (s + length, 0, total.crce, totsec);
+ length += print_frac (s + length, 1, total.rcrce, totsec);
+
+ length += print_frac (s + length, 0, total.es, totsec);
+ length += print_frac (s + length, 1, total.les, totsec);
+
+ length += print_frac (s + length, 0, total.ses, totsec);
+ length += print_frac (s + length, 1, total.bes, totsec);
+
+ length += print_frac (s + length, 0, total.oofs, totsec);
+ length += print_frac (s + length, 1, total.css, totsec);
+
+ length += sprintf (s + length, " -- Total\n");
+ return length;
+}
+
+static int print_chan (char *s, ce_chan_t *c)
+{
+ drv_t *d = c->sys;
+ int length = 0;
+
+ length += sprintf (s + length, "ce%d", c->board->num * NCHAN + c->num);
+ if (d->chan->debug)
+ length += sprintf (s + length, " debug=%d", d->chan->debug);
+
+ if (c->board->mux) {
+ length += sprintf (s + length, " cfg=C");
+ } else {
+ length += sprintf (s + length, " cfg=A");
+ }
+
+ if (c->baud)
+ length += sprintf (s + length, " %ld", c->baud);
+ else
+ length += sprintf (s + length, " extclock");
+
+ if (c->type == T_E1)
+ switch (c->gsyn) {
+ case GSYN_INT : length += sprintf (s + length, " syn=int"); break;
+ case GSYN_RCV : length += sprintf (s + length, " syn=rcv"); break;
+ case GSYN_RCV0 : length += sprintf (s + length, " syn=rcv0"); break;
+ case GSYN_RCV1 : length += sprintf (s + length, " syn=rcv1"); break;
+ }
+ if (c->type == T_E1)
+ length += sprintf (s + length, " higain=%s", c->higain ? "on" : "off");
+
+ length += sprintf (s + length, " loop=%s", c->lloop ? "on" : "off");
+
+ if (c->type == T_E1)
+ length += sprintf (s + length, " ts=%s", format_timeslots (c->ts));
+ length += sprintf (s + length, "\n");
+ return length;
+}
+
+#if __FreeBSD_version >= 500000
+static int ng_ce_rcvmsg (node_p node, item_p item, hook_p lasthook)
+{
+ drv_t *d = NG_NODE_PRIVATE (node);
+ struct ng_mesg *msg;
+#else
+static int ng_ce_rcvmsg (node_p node, struct ng_mesg *msg,
+ const char *retaddr, struct ng_mesg **rptr)
+{
+ drv_t *d = node->private;
+#endif
+ struct ng_mesg *resp = NULL;
+ int error = 0;
+
+ CE_DEBUG (d, ("Rcvmsg\n"));
+#if __FreeBSD_version >= 500000
+ NGI_GET_MSG (item, msg);
+#endif
+ switch (msg->header.typecookie) {
+ default:
+ error = EINVAL;
+ break;
+
+ case NGM_CE_COOKIE:
+ printf ("Not implemented yet\n");
+ error = EINVAL;
+ break;
+
+ case NGM_GENERIC_COOKIE:
+ switch (msg->header.cmd) {
+ default:
+ error = EINVAL;
+ break;
+
+ case NGM_TEXT_STATUS: {
+ char *s;
+ int l = 0;
+ int dl = sizeof (struct ng_mesg) + 730;
+
+#if __FreeBSD_version >= 500000
+ NG_MKRESPONSE (resp, msg, dl, M_NOWAIT);
+ if (! resp) {
+ error = ENOMEM;
+ break;
+ }
+#else
+ MALLOC (resp, struct ng_mesg *, dl,
+ M_NETGRAPH, M_NOWAIT);
+ if (! resp) {
+ error = ENOMEM;
+ break;
+ }
+ bzero (resp, dl);
+#endif
+ s = (resp)->data;
+ if (d) {
+ l += print_chan (s + l, d->chan);
+ l += print_stats (s + l, d->chan, 1);
+ l += print_modems (s + l, d->chan, 1);
+ l += print_e1_stats (s + l, d->chan);
+ } else
+ l += sprintf (s + l, "Error: node not connect to channel");
+#if __FreeBSD_version < 500000
+ (resp)->header.version = NG_VERSION;
+ (resp)->header.arglen = strlen (s) + 1;
+ (resp)->header.token = msg->header.token;
+ (resp)->header.typecookie = NGM_CE_COOKIE;
+ (resp)->header.cmd = msg->header.cmd;
+#endif
+ strncpy ((resp)->header.cmdstr, "status", NG_CMDSTRLEN);
+ }
+ break;
+ }
+ break;
+ }
+#if __FreeBSD_version >= 500000
+ NG_RESPOND_MSG (error, node, item, resp);
+ NG_FREE_MSG (msg);
+#else
+ *rptr = resp;
+ FREE (msg, M_NETGRAPH);
+#endif
+ return error;
+}
+
+#if __FreeBSD_version >= 500000
+static int ng_ce_rcvdata (hook_p hook, item_p item)
+{
+ drv_t *d = NG_NODE_PRIVATE (NG_HOOK_NODE(hook));
+ struct mbuf *m;
+#if __FreeBSD_version < 502120
+ meta_p meta;
+#else
+ struct ng_tag_prio *ptag;
+#endif
+#else
+static int ng_ce_rcvdata (hook_p hook, struct mbuf *m, meta_p meta)
+{
+ drv_t *d = hook->node->private;
+#endif
+ bdrv_t *bd = d->board->sys;
+ struct ifqueue *q;
+ int s;
+
+ CE_DEBUG2 (d, ("Rcvdata\n"));
+#if __FreeBSD_version >= 500000
+ NGI_GET_M (item, m);
+#if __FreeBSD_version < 502120
+ NGI_GET_META (item, meta);
+#endif
+ NG_FREE_ITEM (item);
+ if (! NG_HOOK_PRIVATE (hook) || ! d) {
+ NG_FREE_M (m);
+#if __FreeBSD_version < 502120
+ NG_FREE_META (meta);
+#endif
+#else
+ if (! hook->private || ! d) {
+ NG_FREE_DATA (m,meta);
+#endif
+ return ENETDOWN;
+ }
+
+#if __FreeBSD_version >= 502120
+ /* Check for high priority data */
+ if ((ptag = (struct ng_tag_prio *)m_tag_locate(m, NGM_GENERIC_COOKIE,
+ NG_TAG_PRIO, NULL)) != NULL && (ptag->priority > NG_PRIO_CUTOFF) )
+ q = &d->hi_queue;
+ else
+ q = &d->queue;
+#else
+ q = (meta && meta->priority > 0) ? &d->hi_queue : &d->queue;
+#endif
+
+ s = splimp ();
+ CE_LOCK (bd);
+#if __FreeBSD_version >= 500000
+ IF_LOCK (q);
+ if (_IF_QFULL (q)) {
+ _IF_DROP (q);
+ IF_UNLOCK (q);
+ CE_UNLOCK (bd);
+ splx (s);
+ NG_FREE_M (m);
+#if __FreeBSD_version < 502120
+ NG_FREE_META (meta);
+#endif
+ return ENOBUFS;
+ }
+ _IF_ENQUEUE (q, m);
+ IF_UNLOCK (q);
+#else
+ if (IF_QFULL (q)) {
+ IF_DROP (q);
+ CE_UNLOCK (bd);
+ splx (s);
+ NG_FREE_DATA (m, meta);
+ return ENOBUFS;
+ }
+ IF_ENQUEUE (q, m);
+#endif
+ ce_start (d);
+ CE_UNLOCK (bd);
+ splx (s);
+ return 0;
+}
+
+static int ng_ce_rmnode (node_p node)
+{
+#if __FreeBSD_version >= 500000
+ drv_t *d = NG_NODE_PRIVATE (node);
+
+ CE_DEBUG (d, ("Rmnode\n"));
+ if (d && d->running) {
+ bdrv_t *bd = d->board->sys;
+ int s = splimp ();
+ CE_LOCK (bd);
+ ce_down (d);
+ CE_UNLOCK (bd);
+ splx (s);
+ }
+#ifdef KLD_MODULE
+#if __FreeBSD_version >= 502120
+ if (node->nd_flags & NGF_REALLY_DIE) {
+#else
+ if (node->nd_flags & NG_REALLY_DIE) {
+#endif
+ NG_NODE_SET_PRIVATE (node, NULL);
+ NG_NODE_UNREF (node);
+ }
+#if __FreeBSD_version >= 502120
+ NG_NODE_REVIVE(node); /* Persistant node */
+#else
+ node->nd_flags &= ~NG_INVALID;
+#endif
+#endif
+#else /* __FreeBSD_version < 500000 */
+ drv_t *d = node->private;
+
+ if (d && d->running) {
+ bdrv_t *bd = d->board->sys;
+ int s = splimp ();
+ CE_LOCK (bd);
+ ce_down (d);
+ CE_UNLOCK (bd);
+ splx (s);
+ }
+
+ node->flags |= NG_INVALID;
+ ng_cutlinks (node);
+#ifdef KLD_MODULE
+ ng_unname (node);
+ ng_unref (node);
+#endif
+#endif
+ return 0;
+}
+
+static void ng_ce_watchdog (void *arg)
+{
+ drv_t *d = arg;
+
+ if (d) {
+ if (d->timeout == 1)
+ ce_watchdog (d);
+ if (d->timeout)
+ d->timeout--;
+ callout_reset (&d->timeout_handle, hz, ng_ce_watchdog, d);
+ }
+}
+
+static int ng_ce_connect (hook_p hook)
+{
+#if __FreeBSD_version >= 500000
+ drv_t *d = NG_NODE_PRIVATE (NG_HOOK_NODE (hook));
+#else
+ drv_t *d = hook->node->private;
+#endif
+
+ if (d) {
+ CE_DEBUG (d, ("Connect\n"));
+ callout_reset (&d->timeout_handle, hz, ng_ce_watchdog, d);
+ }
+
+ return 0;
+}
+
+static int ng_ce_disconnect (hook_p hook)
+{
+#if __FreeBSD_version >= 500000
+ drv_t *d = NG_NODE_PRIVATE (NG_HOOK_NODE (hook));
+#else
+ drv_t *d = hook->node->private;
+#endif
+
+ if (d) {
+ CE_DEBUG (d, ("Disconnect\n"));
+#if __FreeBSD_version >= 500000
+ if (NG_HOOK_PRIVATE (hook))
+#else
+ if (hook->private)
+#endif
+ {
+ bdrv_t *bd = d->board->sys;
+ int s = splimp ();
+ CE_LOCK (bd);
+ ce_down (d);
+ CE_UNLOCK (bd);
+ splx (s);
+ }
+ /* If we were wait it than it reasserted now, just stop it. */
+ if (!callout_drain (&d->timeout_handle))
+ callout_stop (&d->timeout_handle);
+ }
+ return 0;
+}
+#endif
+
+static int ce_modevent (module_t mod, int type, void *unused)
+{
+#if __FreeBSD_version < 500000
+ dev_t dev;
+ struct cdevsw *cdsw;
+#endif
+ static int load_count = 0;
+
+#if __FreeBSD_version < 500000
+ dev = makedev (CDEV_MAJOR, 0);
+#endif
+#if __FreeBSD_version >= 501114
+ if (!debug_mpsafenet && ce_mpsafenet) {
+ printf ("WORNING! Network stack is not MPSAFE. "
+ "Turning off debug.ce.mpsafenet.\n");
+ ce_mpsafenet = 0;
+ }
+#endif
+#if __FreeBSD_version >= 502103
+ if (ce_mpsafenet)
+ ce_cdevsw.d_flags &= ~D_NEEDGIANT;
+#endif
+
+ switch (type) {
+ case MOD_LOAD:
+#if __FreeBSD_version < 500000
+ if (dev != NODEV &&
+ (cdsw = devsw (dev)) &&
+ cdsw->d_maj == CDEV_MAJOR) {
+ printf ("Tau32-PCI driver is already in system\n");
+ return (ENXIO);
+ }
+#endif
+#if __FreeBSD_version >= 500000 && defined NETGRAPH
+ if (ng_newtype (&typestruct))
+ printf ("Failed to register ng_ce\n");
+#endif
+ ++load_count;
+#if __FreeBSD_version <= 500000
+ cdevsw_add (&ce_cdevsw);
+#endif
+#if __FreeBSD_version >= 500000
+ callout_init (&timeout_handle, ce_mpsafenet?CALLOUT_MPSAFE:0);
+#else
+ callout_init (&timeout_handle);
+#endif
+ callout_reset (&timeout_handle, hz*5, ce_timeout, 0);
+ break;
+ case MOD_UNLOAD:
+ if (load_count == 1) {
+ printf ("Removing device entry for Tau32-PCI\n");
+#if __FreeBSD_version <= 500000
+ cdevsw_remove (&ce_cdevsw);
+#endif
+#if __FreeBSD_version >= 500000 && defined NETGRAPH
+ ng_rmtype (&typestruct);
+#endif
+ }
+ /* If we were wait it than it reasserted now, just stop it.
+ * Actually we shouldn't get this condition. But code could be
+ * changed in the future, so just be a litle paranoid.
+ */
+ if (!callout_drain (&timeout_handle))
+ callout_stop (&timeout_handle);
+ --load_count;
+ break;
+ case MOD_SHUTDOWN:
+ break;
+ }
+ return 0;
+}
+
+#ifdef NETGRAPH
+#if __FreeBSD_version >= 502100
+static struct ng_type typestruct = {
+ .version = NG_ABI_VERSION,
+ .name = NG_CE_NODE_TYPE,
+ .constructor = ng_ce_constructor,
+ .rcvmsg = ng_ce_rcvmsg,
+ .shutdown = ng_ce_rmnode,
+ .newhook = ng_ce_newhook,
+ .connect = ng_ce_connect,
+ .rcvdata = ng_ce_rcvdata,
+ .disconnect = ng_ce_disconnect,
+};
+#else /* __FreeBSD_version < 502100 */
+static struct ng_type typestruct = {
+#if __FreeBSD_version >= 500000
+ NG_ABI_VERSION,
+#else
+ NG_VERSION,
+#endif
+ NG_CE_NODE_TYPE,
+ ce_modevent,
+ ng_ce_constructor,
+ ng_ce_rcvmsg,
+ ng_ce_rmnode,
+ ng_ce_newhook,
+ NULL,
+ ng_ce_connect,
+ ng_ce_rcvdata,
+#if __FreeBSD_version < 500000
+ NULL,
+#endif
+ ng_ce_disconnect,
+ NULL
+};
+#endif /* __FreeBSD_version < 502100 */
+
+#endif /*NETGRAPH*/
+
+#if __FreeBSD_version >= 500000
+#ifdef NETGRAPH
+MODULE_DEPEND (ng_ce, netgraph, NG_ABI_VERSION, NG_ABI_VERSION, NG_ABI_VERSION);
+#else
+MODULE_DEPEND (ce, sppp, 1, 1, 1);
+#endif
+#ifdef KLD_MODULE
+DRIVER_MODULE (cemod, pci, ce_driver, ce_devclass, ce_modevent, NULL);
+#else
+DRIVER_MODULE (ce, pci, ce_driver, ce_devclass, ce_modevent, NULL);
+#endif
+#else /* if __FreeBSD_version < 500000*/
+#ifdef NETGRAPH
+DRIVER_MODULE (ce, pci, ce_driver, ce_devclass, ng_mod_event, &typestruct);
+#else
+DRIVER_MODULE (ce, pci, ce_driver, ce_devclass, ce_modevent, NULL);
+#endif
+#endif /* __FreeBSD_version < 500000 */
+#endif /* NPCI */
diff --git a/sys/dev/ce/ng_ce.h b/sys/dev/ce/ng_ce.h
new file mode 100644
index 0000000..b8e9604
--- /dev/null
+++ b/sys/dev/ce/ng_ce.h
@@ -0,0 +1,31 @@
+/*
+ * Defines for Cronyx Tau32-PCI adapter driver.
+ *
+ * Copyright (C) 2004 Cronyx Engineering.
+ * Copyright (C) 2004 Kurakin Roman, <rik@FreeBSD.org>
+ *
+ * This software is distributed with NO WARRANTIES, not even the implied
+ * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Authors grant any other persons or organisations a permission to use,
+ * modify and redistribute this software in source and binary forms,
+ * as long as this message is kept with the software, all derivative
+ * works or modified versions.
+ *
+ * $Cronyx: ng_ce.h,v 1.2 2005/04/23 20:11:57 rik Exp $
+ * $FreeBSD$
+ */
+
+#ifdef NETGRAPH
+
+#ifndef _CE_NETGRAPH_H_
+#define _CE_NETGRAPH_H_
+
+#define NG_CE_NODE_TYPE "ce"
+#define NGM_CE_COOKIE 1083172653
+#define NG_CE_HOOK_RAW "rawdata"
+#define NG_CE_HOOK_DEBUG "debug"
+
+#endif /* _CE_NETGRAPH_H_ */
+
+#endif /* NETGRAPH */
diff --git a/sys/dev/ce/tau32-ddk.c b/sys/dev/ce/tau32-ddk.c
new file mode 100644
index 0000000..ee27874
--- /dev/null
+++ b/sys/dev/ce/tau32-ddk.c
@@ -0,0 +1,4322 @@
+/*
+ * DDK (Driver Development Kit) for Cronyx Tau32-PCI adapter.
+ *
+ * Copyright (C) 2003-2005 Cronyx Engineering, http://www.cronyx.ru
+ * All rights reserved.
+ *
+ * Author: Leo Yuriev <ly@cronyx.ru>, http://leo.yuriev.ru
+ *
+ * This software is distributed with NO WARRANTIES, not even the implied
+ * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Authors grant any other persons or organisations a permission to use,
+ * modify and redistribute this software in source and binary forms,
+ * as long as this message is kept with the software, all derivative
+ * works or modified versions.
+ *
+ * !!! DO NOT EDIT THIS FILE,
+ * IT IS GENERATED AUTOMATICALY FROM DDK SOURCES !!!
+ *
+ * $Cronyx: tau32-ddk.c,v 1.7 2005/07/20 15:28:18 rik Exp $
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#ifndef __noinline
+# ifdef __GNUC__
+# if __GNUC__ >= 3
+# define __noinline __attribute__((noinline))
+# else
+# define __noinline
+# endif
+# else
+# define __noinline __declspec(noinline)
+# endif
+#endif
+
+#ifdef __GNUC__
+# ifndef __stdcall
+# define __stdcall __attribute__((stdcall))
+# endif
+# ifndef __fastcall
+# define __fastcall __attribute__((stdcall, regparm(3)))
+# endif
+# ifndef __forceinline
+# if __GNUC__ >= 3
+# define __forceinline __inline__ __attribute__((always_inline))
+# else
+# define __forceinline __inline__
+# endif
+# endif
+# ifndef ASSUME
+# define ASSUME(x) {}
+# endif
+#else
+# ifndef ASSUME
+# define ASSUME(x) __assume(x)
+# endif
+#endif
+
+#if !defined(__builtin_expect) || !defined(__GNUC__) || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
+# define __builtin_expect(x,y) (x)
+#endif
+/*
+ 'tmp-b' Obfuscated by COBF (Version 1.06 2004-09-09 by BB/Ly) at Wed Jul 20 19:18:34 2005
+*/
+typedef struct Ec784{unsigned char gfIP34,_kIQv4;unsigned char MhiF14
+,JVax01;}nIR_D4;typedef unsigned char vEeS92[0140];typedef struct
+dbQ794{unsigned char ADRH25,vC4oo;unsigned char u6eGG1;}jK7VQ3;
+typedef struct crTL73 kWMzp1;typedef struct erjzp3 Os1bA3;typedef
+struct Zh7nv2 nvFyD4;typedef union Gl7nf HJfJJ;typedef struct RguOm
+E8X83;typedef void(__attribute__((cdecl)) *gU0RO)(nvFyD4*mthh13,
+Os1bA3*a02Gz4);typedef void(__attribute__((cdecl)) *CvU4o2)(nvFyD4*
+mthh13,int KrGIB1,unsigned zwLFt3);typedef void(__attribute__((cdecl)) *
+Ei5yG)(nvFyD4*mthh13,int b9Zs_,unsigned jfimS4,unsigned F46242);
+typedef void(__attribute__((cdecl)) *SKVej1)(nvFyD4*mthh13,E8X83*
+p0241);union Gl7nf{unsigned long pWarO3,ujVVT;};struct RguOm{void*
+zM0Qt3;unsigned long h5sB05;unsigned LigBO2,Se_Ax2,s6cvt3;unsigned
+USKhR2,NvHo73,tRnkz1;SKVej1 bHzh05;};typedef struct _yZbF3{unsigned
+long inWLN1;unsigned long sN5Zi1;unsigned long cWGy25;unsigned long
+xnb4g3;unsigned long oU5TM;unsigned long k18ZY3;unsigned long FAUQ42;
+unsigned long H4ghS2;unsigned long ouy3Q[4u];}sZ3K45;struct Zh7nv2{
+kWMzp1*kK4Tl;unsigned long yMivT1;void*BhIif3;CvU4o2 cJw4g2;CvU4o2
+G7h9S3;void*_xj3V4;unsigned l4W8X;int JbjvO4;int Xx6Ti3;unsigned
+Be1a54;unsigned long OgFMa4;unsigned UYtd71;unsigned NeqBE4;unsigned
+Psq0V3;unsigned ZCWMs2;sZ3K45 io7IZ3[02];};struct erjzp3{void*zM0Qt3;
+unsigned QvZLK;gU0RO bHzh05;unsigned long j5MYx;union{unsigned ApfDT4
+;struct{unsigned LigBO2;unsigned long CUhqx4;unsigned long Oo9ZQ2;}
+IoSy32;struct{int b9Zs_;unsigned long CUhqx4;unsigned long DnIa91;}
+gMQg82;struct{unsigned LigBO2;unsigned long OWsiH1;unsigned r9yJB;
+unsigned YkQWU;}xRh664;struct{unsigned LigBO2;unsigned long OWsiH1;
+unsigned r_RoY4;unsigned USKhR2;int WMRMP4;}qXXnD2;int MbSIY;union{
+nIR_D4 QB6LL[32];unsigned long Br68q1[32];}fk7g83;}NpyOc1;};void
+__attribute__((cdecl))TAU32_BeforeReset(nvFyD4*YRHFy);int
+__attribute__((cdecl))TAU32_Initialize(nvFyD4*YRHFy,int VPJzO1);void
+__attribute__((cdecl))TAU32_DestructiveHalt(kWMzp1*kK4Tl,int N4LX53);
+int __attribute__((cdecl))TAU32_IsInterruptPending(kWMzp1*kK4Tl);int
+__attribute__((cdecl))TAU32_HandleInterrupt(kWMzp1*kK4Tl);extern
+unsigned const TAU32_ControllerObjectSize;void __attribute__((cdecl))TAU32_EnableInterrupts
+(kWMzp1*kK4Tl);void __attribute__((cdecl))TAU32_DisableInterrupts(
+kWMzp1*kK4Tl);int __attribute__((cdecl))TAU32_SubmitRequest(kWMzp1*
+kK4Tl,Os1bA3*wkiYO4);int __attribute__((cdecl))TAU32_CancelRequest(
+kWMzp1*kK4Tl,Os1bA3*wkiYO4,int hj5891);void __attribute__((cdecl))TAU32_LedBlink
+(kWMzp1*kK4Tl);void __attribute__((cdecl))TAU32_LedSet(kWMzp1*kK4Tl,
+int y3yr7);int __attribute__((cdecl))TAU32_SetCasIo(kWMzp1*kK4Tl,int
+t0Vn23);unsigned long long __attribute__((cdecl))TAU32_ProbeGeneratorFrequency
+(unsigned long long ugSn31);unsigned long long __attribute__((cdecl))TAU32_SetGeneratorFrequency
+(kWMzp1*kK4Tl,unsigned long long ugSn31);int __attribute__((cdecl))TAU32_SetSyncMode
+(kWMzp1*kK4Tl,unsigned ZDwa01);int __attribute__((cdecl))TAU32_SetCrossMatrix
+(kWMzp1*kK4Tl,unsigned char*WQjAp4,unsigned long hObSM4);int
+__attribute__((cdecl))TAU32_SetIdleCodes(kWMzp1*kK4Tl,unsigned char*
+dQ5DX);int __attribute__((cdecl))TAU32_UpdateIdleCodes(kWMzp1*kK4Tl,
+int b9Zs_,unsigned long BLFVJ4,unsigned char pSVTD);int __attribute__
+((cdecl))TAU32_SetSaCross(kWMzp1*kK4Tl,jK7VQ3 hzXIT2);int
+__attribute__((cdecl))TAU32_FifoPutCasAppend(kWMzp1*kK4Tl,int b9Zs_,
+unsigned char*X3ca,unsigned IOwwG2);int __attribute__((cdecl))TAU32_FifoPutCasAhead
+(kWMzp1*kK4Tl,int b9Zs_,unsigned char*X3ca,unsigned IOwwG2);int
+__attribute__((cdecl))TAU32_FifoGetCas(kWMzp1*kK4Tl,int b9Zs_,
+unsigned char*X3ca,unsigned IOwwG2);int __attribute__((cdecl))TAU32_FifoPutFasAppend
+(kWMzp1*kK4Tl,int b9Zs_,unsigned char*X3ca,unsigned IOwwG2);int
+__attribute__((cdecl))TAU32_FifoPutFasAhead(kWMzp1*kK4Tl,int b9Zs_,
+unsigned char*X3ca,unsigned IOwwG2);int __attribute__((cdecl))TAU32_FifoGetFas
+(kWMzp1*kK4Tl,int b9Zs_,unsigned char*X3ca,unsigned IOwwG2);int
+__attribute__((cdecl))TAU32_SetFifoTrigger(kWMzp1*kK4Tl,int b9Zs_,
+unsigned jfimS4,unsigned F46242,Ei5yG Yj6gL2);void __attribute__((
+cdecl))TAU32_ReadTsc(kWMzp1*kK4Tl,HJfJJ*TFC2u3);unsigned long
+__attribute__((cdecl))TAU32_Diag(kWMzp1*kK4Tl,unsigned jwgpJ2,
+unsigned long a0Zcs);typedef struct C9HLP2{unsigned char E7Ual2,
+PGh3e4,KZp71,ikuha3,daUKU2,PBtXm1,rGUtq3,AuCs73;unsigned char TrqaA,
+PnawH,gQf6j1,aKuBh3;unsigned char RcNOn;unsigned long nDLY04,aW7n84;}
+eU6Lk2;typedef struct UOGcT2{unsigned char E7Ual2,PGh3e4,KZp71,ikuha3
+,daUKU2,PBtXm1,rGUtq3,AuCs73;unsigned char TrqaA,PnawH,gQf6j1,aKuBh3;
+unsigned char RcNOn;unsigned long nDLY04,aW7n84;unsigned long WtICk3,
+M782F4;unsigned char oWLOw3[32],FNU7M3[16],DvwSz1;}U28L81;typedef
+struct HLLm6{unsigned long lxfqy2,ELKAp3,spClj2, *uyKJn2;volatile
+unsigned long kueUq2;unsigned long L8vCo2;Ei5yG Yj6gL2;unsigned char
+c5SHY1[256];}qwUGv3;__forceinline static unsigned gSjrH4(volatile
+unsigned long*RdZoN,const unsigned char*g5zpH4,unsigned QiJJ6);
+__forceinline static unsigned RtiEy4(volatile unsigned long*RdZoN,
+unsigned C6yEr1);__forceinline static void AUUSL3(volatile unsigned
+long*RdZoN,unsigned C6yEr1,unsigned vgKFx2);__forceinline static void
+oSdJm(unsigned jYvNM3,volatile unsigned long*RdZoN,unsigned C6yEr1,
+unsigned vgKFx2);__forceinline static unsigned NmrSW4(unsigned jYvNM3
+,volatile unsigned long*RdZoN,unsigned C6yEr1);__forceinline static
+unsigned V4Eg_2(unsigned jYvNM3,volatile unsigned long*RdZoN,unsigned
+C6yEr1);__noinline static void __fastcall s3sCI1(volatile unsigned
+long*RdZoN,unsigned C6yEr1,unsigned vgKFx2);__noinline static unsigned
+__fastcall fFvjz3(volatile unsigned long*RdZoN,unsigned C6yEr1);
+__noinline static unsigned __fastcall dMM0e1(volatile unsigned long*
+RdZoN,unsigned C6yEr1);__noinline static void __fastcall WdFDP4(
+volatile unsigned long*RdZoN,unsigned C6yEr1,unsigned long vgKFx2);
+__noinline static unsigned long __fastcall kvBl65(volatile unsigned
+long*RdZoN,unsigned C6yEr1);__noinline static void __fastcall gw6c82(
+kWMzp1*J7Iki4);__noinline static void __fastcall dZK6h3(volatile
+unsigned long*RdZoN,unsigned C6yEr1,unsigned vgKFx2);__noinline static
+unsigned __fastcall x2akp(volatile unsigned long*RdZoN,unsigned C6yEr1
+);__noinline static unsigned __fastcall EIMqn1(volatile unsigned long
+ *RdZoN,unsigned C6yEr1);__noinline static void __fastcall dAXWu2(
+volatile unsigned long*RdZoN,unsigned C6yEr1,unsigned long vgKFx2);
+__noinline static unsigned long __fastcall FqrfM3(volatile unsigned
+long*RdZoN,unsigned C6yEr1);__noinline static void __fastcall lmuOy2(
+kWMzp1*J7Iki4);__noinline static void __fastcall Y81UE3(kWMzp1*J7Iki4
+,unsigned C6yEr1,unsigned vgKFx2);__noinline static void __fastcall
+cw78L3(kWMzp1*kK4Tl);__forceinline static int Y3IxL2(unsigned gMQg82,
+unsigned long jW2b04,eU6Lk2*iO1iw4);__forceinline static void kvYKl(
+kWMzp1*J7Iki4);static int p9baI3(kWMzp1*J7Iki4);static void w_2xo4(
+kWMzp1*_oAId);__noinline static void M1Kp62(kWMzp1*kK4Tl,int Xx6Ti3);
+__forceinline static int Ji6_v2(unsigned jfimS4,qwUGv3*xb5nq1,
+unsigned char*X3ca,unsigned IOwwG2);__forceinline static int a6vkI2(
+unsigned jfimS4,qwUGv3*xb5nq1,unsigned char*X3ca,unsigned IOwwG2);
+__forceinline static int zfjz55(unsigned jfimS4,qwUGv3*xb5nq1,
+unsigned char*X3ca,unsigned IOwwG2);__forceinline static void o0Fou4(
+unsigned jfimS4,qwUGv3*xb5nq1);__forceinline static int tsz3n4(
+unsigned jfimS4,qwUGv3*xb5nq1);__forceinline static void Uwhrn4(
+unsigned jfimS4,unsigned A7Lph2,qwUGv3*xb5nq1,kWMzp1*_oAId,int b9Zs_);
+__forceinline static void aUfOe1(unsigned jfimS4,qwUGv3*xb5nq1);
+__forceinline static void aeA8v(qwUGv3*xb5nq1,unsigned F46242,Ei5yG
+Yj6gL2);__noinline static void zyF2Y3(kWMzp1*kK4Tl,volatile unsigned
+long*RdZoN,int NNm8q);__noinline static unsigned long __fastcall XpfBS
+(volatile unsigned long*RdZoN);__noinline static unsigned __fastcall
+d5Rc74(kWMzp1*_oAId);__forceinline static void h2LrH3(volatile long*
+rT0fp2){__asm __volatile("lock; decl %0;":"=m"(rT0fp2[0]):"m"(rT0fp2[
+0]));}__forceinline static void Sqi0T3(volatile long*rT0fp2){__asm
+__volatile("lock; decl %0;" "je 1f;" "int $3;" "1:":"=m"(rT0fp2[0]):
+"m"(rT0fp2[0]));}__forceinline static void QD7sk4(volatile long*
+rT0fp2){__asm __volatile("lock; incl %0":"=m"(rT0fp2[0]):"m"(rT0fp2[0
+]));}__forceinline static void Kf8n_4(volatile long*rT0fp2){__asm
+__volatile("cmpl $1, %0;" "je 1f;" "int $3;" "1:":"=m"(rT0fp2[0]):"m"
+(rT0fp2[0]));}enum PSlSv3{KZEMj4=01u<<0,UsDI23=01u<<02,cfJmy1=01u<<
+0x4,DEVTm4=1u<<6,CeDcj3=1u<<0x8,GISTQ2=01u<<012,CUmDv=01u<<014,iBs7A2
+=1u<<14,qWaP5=DEVTm4|CeDcj3|GISTQ2};struct Z6YCM;static int Vdg6P1(
+kWMzp1*J7Iki4,Os1bA3*a02Gz4,struct Z6YCM*esWTk2);static int K5XcD(
+kWMzp1*J7Iki4,Os1bA3*a02Gz4,struct Z6YCM*esWTk2);__forceinline static
+void dyDHu2(kWMzp1*_oAId){M1Kp62(_oAId,(-01));}__forceinline static
+void Nq5gq(kWMzp1*_oAId){M1Kp62(_oAId,(-01));}__forceinline static
+void J99ok3(kWMzp1*_oAId){M1Kp62(_oAId,(-0x1));}typedef struct wSkbG1
+{void*Rc7LY4, *WHQ_F1;}VUIQl;
+#pragma pack(4)
+enum o1L6S1{KahAO3=0,nij914=1,eR4Uq4=2,Mrgr62=3,cRMcR4=0x5,gRNgc2=0x6
+};typedef union v92wp{struct{unsigned:0x2;unsigned ahkN84:01;unsigned
+vUYb92:03;unsigned M9dD24:01;unsigned:0x1;unsigned Plb1C3:0x5;
+unsigned:1;unsigned rAPPY4:1;unsigned in:01;}V9ej93;unsigned long
+BucKo;}RQO4U4;enum yYxmH2{mv21h=0,j8_u62=4,qo8eL=0x5,buTDY1=6,Y_ymu=
+010,IwIR9=011,WEcpA3=012};typedef union gFcu54{struct{unsigned UvPkN4
+:0x8;unsigned fzwRI1:0x5;unsigned P_XoQ1:1;unsigned:2;unsigned IHuhT1
+:8;unsigned In2Nl4:0x5;unsigned hoRsQ4:0x1;unsigned:02;}V9ej93;
+unsigned long VN7ed4;}sl0aO1;enum yfHHm3{JTNVO4=0,qhPRk4=1,LHp0y4=02,
+Fv3Q52=03};enum oBxYC2{qS5lW1=0x1,_BCMS3=02,iGfEm1=04,X_sGC1=8,Fcabx=
+16,InZ58=32,n1IfW3=64,S4Krh1=128,lHsjw1=0,hkhXH3=qS5lW1,WdqxE=_BCMS3,
+qKhEV3=_BCMS3|qS5lW1,dfhdh3=n1IfW3,w9B8P4=n1IfW3|qS5lW1,I9g9T1=qS5lW1
+|n1IfW3|_BCMS3,Vtxp55=0,nIaSt=X_sGC1,MEYPf1=Fcabx,EbhBp3=Fcabx|X_sGC1
+,gSQHi=InZ58,RQJum=InZ58|X_sGC1|S4Krh1,AC5eU1=iGfEm1,EFekl2=X_sGC1|
+InZ58|Fcabx|iGfEm1|S4Krh1};enum qkiu7{SJOG34=128,Hh4jb3=64,xp82U2=32,
+Mm5QG4=16,mCVW71=010,uj5UX4=04,bejvy1=2,F09LQ3=0x1};typedef union
+TqcJI3{struct{unsigned qIB2B3:0x1;unsigned cy2jE4:2;unsigned Tjj6h4:
+01;unsigned ZVkKi4:02;unsigned YBd0u:0x1;unsigned uVmjX4:1;unsigned
+kD2ag4:010;unsigned MLZ_Y:8;unsigned E2DoN1:010;}V9ej93;unsigned long
+BucKo;}cSW2U1;typedef union LZLYn{struct{unsigned FUeC9:06;unsigned:
+0x1a;}V9ej93;unsigned long BucKo;}kGmPU3;typedef struct h585q{cSW2U1
+fbiOR4;unsigned long Zg2fI4;unsigned long PTDns3;kGmPU3 wxJA11;}
+Smebz2;typedef struct F1oAc{RQO4U4 T8Tg75;unsigned long mvyZB4;
+unsigned long FD8Md1;sl0aO1 HcALQ1[32];Smebz2 TIQMZ1[32];volatile
+unsigned long lPHda[32];volatile unsigned long lN6oU2[32];}iq6n4;
+typedef struct iwn402{RQO4U4 T8Tg75;Smebz2 RIjpS1,eGNTa3;volatile
+unsigned long TZPQi3,rKQwU4;volatile unsigned long rW82M,Kilil2;}
+P4DeQ1;typedef union xJGnu2{struct{unsigned TG0CA:0x1;unsigned xQlGU2
+:01;unsigned:02;unsigned tSIGF3:0x1;unsigned:013;unsigned JRLuV2:16;}
+V9ej93;unsigned long BucKo;}fo2Uz3;typedef struct IsteQ3{union{
+unsigned long BucKo;struct{unsigned a3Tyk1:1;unsigned MmVgu:0x1;
+unsigned H0_uV3:2;unsigned APQ145:1;unsigned X6nSb1:0x1;unsigned
+Jc8gF1:0x1;unsigned zbora1:01;unsigned d6hFe1:01;unsigned:23;}V9ej93;
+}L221t4;unsigned long bPudJ3;unsigned long MDSlK2;unsigned long lPIbL4
+;unsigned long Dm4153;unsigned long dJbtz4;unsigned long O6kQX4;
+unsigned long YywuH4;union{unsigned long BucKo;struct{unsigned uzzFH1
+:13;unsigned p0yVj4:1;unsigned KfMd1:01;unsigned ZvgAS1:01;unsigned
+hph9c1:3;unsigned lqIwU2:03;unsigned LdTsZ2:3;unsigned genw44:0x3;
+unsigned iJL0J:4;}V9ej93;}nCdFc;union{unsigned long BucKo;struct{
+unsigned hNxv05:01;unsigned JNeRE:01;unsigned KXgOV1:0x1;unsigned
+OzDgd:1;unsigned LA4Nq3:0x1;unsigned H7MIV3:01;unsigned WLPPN2:0x1;
+unsigned rKiFm:1;unsigned fAT5_2:0x1;unsigned:0x7;unsigned:16;}V9ej93
+;}QLWyF2;unsigned long v1h0c2;unsigned long vvbK44;unsigned long
+HZ1wC3;unsigned long NdUwf2;unsigned long ykU1G2;unsigned long BEfdP;
+unsigned long oSrkU4;unsigned long KJYtb1;unsigned long zFbiA;
+unsigned long SCka92;unsigned long ErbGq4;unsigned long eg17p3;
+unsigned long PxKBA2;unsigned long LR7D_3;unsigned long AhUPU1;
+unsigned long NaRlK3;unsigned long UK8sN4;unsigned long YGL9R3;
+unsigned long ALDl73;unsigned long hGKYx1;unsigned long uXZM21;
+unsigned long QiOkk4;unsigned long dwKme1;unsigned long _jfrJ1;
+unsigned long kEiqy3;unsigned long ZTt2k3;unsigned long ScZIu;
+unsigned long ppetC1;unsigned long _xQyf;unsigned long Vet_Y3;
+unsigned long Sc2KG4;unsigned long Drk7M4;unsigned long OnwFC4;
+unsigned long _wNV13;unsigned long f8S2i1;unsigned long P9UkM1;
+unsigned long BlRLZ;unsigned long FEf8D4;unsigned long RJVHy4;
+unsigned long R52Qw3;unsigned long zFf575;unsigned long ws_Fn2;
+unsigned long v9yTK4;unsigned long mDaqn4;unsigned long tzRo81;
+unsigned long nlPRL2;unsigned long nhy0Y;unsigned long UKMEh;unsigned
+long OeCZm2;unsigned long MVwig1;unsigned long IxW_32;unsigned long
+GFihS3;unsigned long LOfuB;unsigned long xkMXp;}f2E883;enum Z35Ro4{
+ldkSL4=32768ul,eCQDF=16384ul,JqflP4=8192ul,dV7lv=4096ul,aGnwo2=2048ul
+,P0HsD2=1024ul,VpYRo1=512ul,XKo0B1=256ul,eBDs3=128ul,t57WF3=64ul,
+yn0bR1=32ul,J2Fer3=16ul,fMjJO1=8ul,cz4fz3=4ul,GLE_s4=02ul,l9wtw1=
+0x1ul};typedef union v_a364{struct{unsigned:16;unsigned LFcjb:13;
+unsigned VlZ2k:0x1;unsigned zJyAP1:1;unsigned:0x1;}V9ej93;unsigned
+long YBrPF4;}Ai9235;typedef union APi9r{struct{unsigned:010;unsigned
+rcbUq3:0x1;unsigned UvKJh:01;unsigned xtBMy2:1;unsigned lMy6s:1;
+unsigned GOOtv4:1;unsigned vkd5K4:01;unsigned e6VgP3:01;unsigned:01;
+unsigned uEltX4:015;unsigned:01;unsigned Ha7yv3:1;unsigned dYe4I2:01;
+}V9ej93;unsigned long RZWDZ2;}iTAD3;typedef struct C_xEp2{Ai9235
+JzUUv2;unsigned long Lrwko2;unsigned long veMrO;iTAD3 uwYQG1;}WWrjG1;
+typedef union qkQ4l4{struct{unsigned lUNZh3:013;unsigned DNNWJ3:0x1;
+unsigned XJ0a1:0x1;unsigned:2;unsigned Jto621:0x1;unsigned LFcjb:015;
+unsigned VlZ2k:0x1;unsigned zJyAP1:01;unsigned dYe4I2:01;}V9ej93;
+unsigned long BucKo;}dXYNX;typedef struct hfQkW4{dXYNX _8WVQ2;
+unsigned long Lrwko2;unsigned long veMrO;unsigned long QHjzR1;}qLeaE1
+;typedef union IX4CM3{struct{unsigned ZgZeQ:0x5;unsigned jjkUf1:0x1;
+unsigned Ed2jH:1;unsigned rx55l1:1;unsigned nL0K52:01;unsigned:0x2;
+unsigned aD1CI2:1;unsigned VlZ2k:01;unsigned:03;unsigned:0x8;unsigned
+EVEnZ3:010;}V9ej93;unsigned long BucKo;}aizpO2;typedef union sgPC_2{
+struct{unsigned ZgZeQ:0x5;unsigned:0x2;unsigned rx55l1:1;unsigned
+nL0K52:1;unsigned e6VgP3:0x1;unsigned uOtgs4:1;unsigned aD1CI2:1;
+unsigned VlZ2k:1;unsigned uoa6S3:01;unsigned GH_613:1;unsigned IwMsS4
+:01;unsigned Vu5Pf4:1;unsigned dr2NC:0x1;unsigned kT_9e2:01;unsigned
+LaMny4:1;unsigned RhTls2:0x1;unsigned ZGIPW:01;unsigned OkoqJ1:1;
+unsigned Ujlt43:01;unsigned EVEnZ3:8;}V9ej93;unsigned long BucKo;}
+uKg3m2;typedef union jzTeK2{struct{unsigned qO2CE1:0x18;unsigned
+EVEnZ3:010;}V9ej93;unsigned long BucKo;}YpjhR3;enum kxkxX1{e71Qn1=32,
+kkV5s1=48,hJ2ft1=96,dVahx4=112,g2ZUd3=0xb0,Bpn7w1=0xa0,MNIUU=0xa1,
+OBbt51=144,lgZa84=145,DlZKQ4=0205};enum cXuz63{tXFTB4,MIvbE3,aCIS84,
+FdyFT1};enum trZRN4{mHM361,j0BDS4,ZuiJe3,QIA5L,og0xA1,avVsj3};struct
+U0U7z1;struct Z6YCM;struct okHyr3;struct Ng8yU1;typedef struct Ng8yU1
+{struct Z6YCM*Rc7LY4, *WHQ_F1;}TbIRU3;typedef struct U0U7z1{union{
+qLeaE1 xFtBP;WWrjG1 hRUi43;unsigned long VN7ed4[0x4];struct{union{
+struct{unsigned:16;unsigned LFcjb:015;unsigned VlZ2k:01;unsigned
+zJyAP1:01;unsigned:01;}V9ej93;unsigned long YBrPF4;}_8WVQ2;unsigned
+long Lrwko2;unsigned long veMrO;unsigned long RZWDZ2;}zACHc3;}_8WVQ2;
+unsigned long b_7cQ4;struct U0U7z1*XT1xI3;struct U0U7z1*OXCDa4;struct
+Z6YCM*wkiYO4;}tJ1Kb4;typedef union NDxOg2{struct{unsigned jf4g9:0x8;
+unsigned xFtBP:1;unsigned hRUi43:1;unsigned jsS_d1:0x1;unsigned rPhOt4
+:01;unsigned oKUjX2:04;}V9ej93;unsigned short BucKo;}KMSZr2;enum p5i6D
+{bUn1g2,vCi6J4,bNfmc1,gy1tx2,A1jmR4,us8_Z4,M7M9y,mcEID3,BICIc2,GrYG41
+,vDEWd3,twfX61,ErtY2};typedef struct Z6YCM{int TrF875;Os1bA3*a02Gz4;
+struct{struct Z6YCM*OXCDa4, *neQ2f1;struct U0U7z1*GEbPX4, *JI0PC2;
+unsigned Rqv1w3;}NpyOc1;struct{struct Z6YCM*OXCDa4, *neQ2f1;unsigned
+HqVZe4,pT8M75,LigBO2;KMSZr2 sTQei1[014];}woMv11;struct{eU6Lk2 kKiv65;
+unsigned G15W41;}tQcig;}DCf0T2;struct crTL73{unsigned long xBid64;
+iq6n4 pBSeu3;unsigned long mZSLK1;P4DeQ1 GlauV4;volatile f2E883*
+v6D2d3;unsigned long pnKue2;tJ1Kb4*YosKg1;tJ1Kb4*XPQnv1;DCf0T2*blWHd2
+;unsigned xzeKf3,UXeiG3,t8SKN4;volatile unsigned long jXwP42[(256*2)]
+;volatile unsigned long Hqc15[(256*0x2)];volatile YpjhR3 n76Wf1[(256*
+0x2)];TbIRU3 sxr445;TbIRU3 SpbRG4;sl0aO1 PPMOH[32];struct{unsigned
+long QmT832;unsigned long GiK3J1;unsigned long D1JXh;unsigned long
+Avyuu1,hOtzj;}ZWSDs2;tJ1Kb4*nvqbt[32];tJ1Kb4*DDAs81[32];DCf0T2*LbJOV[
+32];int LVAok1[32];int y8QlL[32];int QEvwb3[32];int jyElQ3[32];
+unsigned tYsSE2[32];unsigned TifAa1[32];TbIRU3 Cga1V[32];TbIRU3 UyRVB4
+[32];unsigned NcXyY1[32];nIR_D4 FmCLm3[32];nvFyD4*YRHFy;unsigned char
+RAwCl1,XpkU85;unsigned char m45Hf;unsigned char O6fhT;unsigned char
+p_EZu3;unsigned char XlFgj4;unsigned char ZU75i4;unsigned char gJqKI;
+unsigned long p3Xgs1;unsigned long vuXVj1;enum trZRN4 osQ5M;int SP4ZU
+;unsigned GEt0d;unsigned Kt5Iv1[02];U28L81 fV7o35[02];vEeS92 wTSMD1[
+0x2];unsigned char*eKHB1;unsigned char*q0ypK;vEeS92 ITvPG2;unsigned
+char mmXTK1[2][32];unsigned h80jx1;volatile long h2LrH3;unsigned
+UYtd71;unsigned long PpoEe4;qwUGv3*Nlajt1[02][04];struct{qwUGv3 KqthD
+[04];unsigned H4ghS2;}oXafA1[02];DCf0T2 kgEeY3[512];tJ1Kb4 Bvuqc2[(
+010+01) *32*2+32*2+32];unsigned char yjdp7[512];};static void i_1fA2(
+kWMzp1*J7Iki4,void*plScs1,void*EllbX3,unsigned long pnKue2,nvFyD4*
+YRHFy,CvU4o2 HMsf02);static void smnR45(kWMzp1*J7Iki4,int N4LX53);
+static void ees1n1(kWMzp1*J7Iki4){J7Iki4->v6D2d3->lPIbL4=~0ul;}static
+int yG5VL(kWMzp1*J7Iki4,Os1bA3*wkiYO4);static int WMa7R(kWMzp1*J7Iki4
+,Os1bA3*wkiYO4,int hj5891);static int fRgzh2(kWMzp1*J7Iki4);static
+enum cXuz63 wP7Tk3(kWMzp1*J7Iki4);static enum cXuz63 Pp5_4(kWMzp1*
+J7Iki4);static int Nt0Ut1(kWMzp1*J7Iki4);__forceinline static void
+gXydj1(f2E883*QV1Pb3);__noinline static unsigned char usMAR(kWMzp1*
+J7Iki4);__noinline static void __fastcall kCJ6a1(kWMzp1*J7Iki4,
+unsigned long O0urm2,unsigned LigBO2);__forceinline static void QhwfE1
+(Smebz2*e0wGb1);__forceinline static void tXqwg(kWMzp1*J7Iki4,
+unsigned Uya4h);__noinline static void __fastcall P3rGX3(kWMzp1*
+J7Iki4,unsigned Uya4h);__noinline static void __fastcall I3ipm3(
+kWMzp1*J7Iki4);__noinline static void __fastcall VHvU93(kWMzp1*J7Iki4
+,DCf0T2*esWTk2);__noinline static void pxiAh4(kWMzp1*J7Iki4,int LigBO2
+);__forceinline static int DIsNz1(kWMzp1*J7Iki4,unsigned LigBO2);
+__noinline static tJ1Kb4*GV2iC4(kWMzp1*J7Iki4,unsigned LigBO2);
+__noinline static void sPUN83(kWMzp1*J7Iki4,int LigBO2);__forceinline
+static int DiWl81(kWMzp1*J7Iki4,unsigned LigBO2);__noinline static
+tJ1Kb4*MiEVK2(kWMzp1*J7Iki4,unsigned LigBO2);__noinline static void
+__fastcall Q7gY12(kWMzp1*J7Iki4,DCf0T2*esWTk2);__forceinline static
+void o6C8s2(kWMzp1*J7Iki4);__forceinline static void JFrCi4(kWMzp1*
+J7Iki4,unsigned LigBO2);__forceinline static void KQKqV1(kWMzp1*
+J7Iki4,unsigned LigBO2);__noinline static void __fastcall uWETN2(
+kWMzp1*J7Iki4,unsigned LigBO2);__noinline static void __fastcall
+LzuvP2(kWMzp1*J7Iki4);static void B1Wc_1(kWMzp1*J7Iki4,DCf0T2*esWTk2);
+__noinline static void xk8cK4(kWMzp1*J7Iki4);__noinline static void
+XmIKi3(kWMzp1*J7Iki4);__noinline static void YnF_24(kWMzp1*J7Iki4,
+unsigned LigBO2,unsigned QvZLK);__noinline static void fOVyT4(kWMzp1*
+J7Iki4,unsigned LigBO2,unsigned QvZLK);__forceinline static void
+mdbib4(kWMzp1*J7Iki4,DCf0T2*esWTk2,unsigned Uya4h);__forceinline
+static void SdYiI(kWMzp1*J7Iki4,unsigned LigBO2,unsigned long*ADaUw,
+unsigned long*euuEB1);__noinline static void aez0x4(kWMzp1*J7Iki4);
+static void __attribute__((const))eKIU_4(void){__asm __volatile(
+"repe; nop; repe; nop;" "pushl %%ebx; repe; nop; repe; nop;"
+"pushl %%ecx; repe; nop; repe; nop;"
+"xorl %%eax, %%eax; repe; nop; repe; nop;"
+"cpuid; repe; nop; repe; nop;"
+"nop; repe; nop; repe; nop;"
+"xorl %%eax, %%eax; repe; nop; repe; nop;"
+"cpuid; repe; nop; repe; nop;"
+"popl %%ecx; repe; nop; repe; nop;"
+"popl %%ebx; repe; nop; repe; nop;": : :"%eax","%edx","cc");}
+static const unsigned long k6bCf4[32]={0x1ul<<0,0x1ul<<0x1,01ul<<2,
+0x1ul<<0x3,01ul<<04,1ul<<5,0x1ul<<0x6,01ul<<07,1ul<<8,0x1ul<<011,
+0x1ul<<012,0x1ul<<013,1ul<<014,0x1ul<<015,1ul<<016,01ul<<15,0x1ul<<16
+,01ul<<17,1ul<<18,01ul<<0x13,01ul<<024,1ul<<21,01ul<<0x16,1ul<<0x17,
+0x1ul<<24,0x1ul<<031,01ul<<032,0x1ul<<27,0x1ul<<034,01ul<<29,01ul<<
+0x1e,01ul<<31};static const unsigned long bHAl_[32]={~(01ul<<0),~(
+0x1ul<<1),~(1ul<<02),~(01ul<<0x3),~(01ul<<0x4),~(0x1ul<<5),~(1ul<<06),
+~(01ul<<0x7),~(0x1ul<<010),~(0x1ul<<011),~(0x1ul<<012),~(1ul<<013),~(
+0x1ul<<014),~(1ul<<015),~(01ul<<14),~(0x1ul<<017),~(1ul<<16),~(1ul<<
+17),~(01ul<<0x12),~(01ul<<19),~(0x1ul<<0x14),~(0x1ul<<21),~(0x1ul<<
+026),~(01ul<<027),~(0x1ul<<24),~(0x1ul<<031),~(0x1ul<<26),~(0x1ul<<27
+),~(0x1ul<<0x1c),~(1ul<<035),~(1ul<<0x1e),~(01ul<<037)};__forceinline
+static long NHDsK3(long volatile*hNST_,long cYVI15){__asm __volatile(
+"lock; xchgl %0,%1":"=r"(cYVI15):"m"(hNST_[0]),"0"(cYVI15));return
+cYVI15;}__forceinline static void q6r1b3(kWMzp1*J7Iki4){unsigned
+X3V8j4;J7Iki4->ZWSDs2.D1JXh=0;{X3V8j4=0;YqR582:if(!(X3V8j4<32))goto
+x4H574;goto NSe7w;DG4xM4:X3V8j4++;goto YqR582;NSe7w:J7Iki4->pBSeu3.
+HcALQ1[X3V8j4]=J7Iki4->PPMOH[X3V8j4];goto DG4xM4;x4H574:;}}
+__forceinline static int TOrKU3(void*XHCWr2,void*c1GT73,void*RDIwM){
+return((unsigned char* )XHCWr2)>=((unsigned char* )c1GT73)&&((
+unsigned char* )XHCWr2)<((unsigned char* )RDIwM);}static int
+__fastcall QoVg22(TbIRU3*FtQV8,DCf0T2*esWTk2){DCf0T2*_ozJC4;{_ozJC4=
+FtQV8->Rc7LY4;ycekz:if(!(_ozJC4!=0))goto iZnUX3;goto UhET81;YcoYR3:
+_ozJC4=_ozJC4->woMv11.OXCDa4;goto ycekz;UhET81:{if(!(_ozJC4==esWTk2))goto
+UIlCN4;return 1;UIlCN4:;}goto YcoYR3;iZnUX3:;}return 0;}static int
+__fastcall mqe7E2(TbIRU3*FtQV8,DCf0T2*esWTk2){DCf0T2*_ozJC4;{_ozJC4=
+FtQV8->Rc7LY4;JOoAO4:if(!(_ozJC4!=0))goto vhYwo;goto aEuur1;c6OfL3:
+_ozJC4=_ozJC4->NpyOc1.OXCDa4;goto JOoAO4;aEuur1:{if(!(_ozJC4==esWTk2))goto
+ovrUX2;return 01;ovrUX2:;}goto c6OfL3;vhYwo:;}return 0;}__forceinline
+static tJ1Kb4*r3CcP2(kWMzp1*J7Iki4,unsigned long JmcXo4){tJ1Kb4*
+TFC2u3;;TFC2u3=(tJ1Kb4* )(((unsigned char* )J7Iki4)+JmcXo4-J7Iki4->
+pnKue2);;return TFC2u3;}static void gXydj1(f2E883*QV1Pb3){unsigned
+X3V8j4;;{X3V8j4=0;XqjdO3:if(!(X3V8j4<256/sizeof(unsigned)))goto MFJhy
+;goto ds3jz4;IpOCN3:X3V8j4++;goto XqjdO3;ds3jz4:((unsigned* )QV1Pb3)[
+X3V8j4]=0;goto IpOCN3;MFJhy:;}}__forceinline static void t6up71(
+f2E883*uYS5N2,volatile f2E883*v6D2d3){;v6D2d3->L221t4.BucKo=uYS5N2->
+L221t4.BucKo;;v6D2d3->lPIbL4=uYS5N2->lPIbL4;;v6D2d3->dJbtz4=uYS5N2->
+dJbtz4;;v6D2d3->O6kQX4=uYS5N2->O6kQX4;;v6D2d3->nCdFc.BucKo=uYS5N2->
+nCdFc.BucKo;;v6D2d3->QLWyF2.BucKo=uYS5N2->QLWyF2.BucKo;;v6D2d3->
+v1h0c2=uYS5N2->v1h0c2;;v6D2d3->vvbK44=uYS5N2->vvbK44;;v6D2d3->HZ1wC3=
+uYS5N2->HZ1wC3;;v6D2d3->NdUwf2=uYS5N2->NdUwf2;;v6D2d3->ykU1G2=uYS5N2
+->ykU1G2;;v6D2d3->BEfdP=uYS5N2->BEfdP;;v6D2d3->oSrkU4=uYS5N2->oSrkU4;
+;v6D2d3->KJYtb1=uYS5N2->KJYtb1;;v6D2d3->ErbGq4=uYS5N2->ErbGq4;;v6D2d3
+->eg17p3=uYS5N2->eg17p3;;v6D2d3->PxKBA2=uYS5N2->PxKBA2;;v6D2d3->
+LR7D_3=uYS5N2->LR7D_3;;v6D2d3->AhUPU1=uYS5N2->AhUPU1;;v6D2d3->NaRlK3=
+uYS5N2->NaRlK3;;v6D2d3->UK8sN4=uYS5N2->UK8sN4;;v6D2d3->YGL9R3=uYS5N2
+->YGL9R3;;v6D2d3->ALDl73=uYS5N2->ALDl73;;v6D2d3->hGKYx1=uYS5N2->
+hGKYx1;;v6D2d3->uXZM21=uYS5N2->uXZM21;;v6D2d3->dwKme1=uYS5N2->dwKme1;
+;v6D2d3->_jfrJ1=uYS5N2->_jfrJ1;;v6D2d3->kEiqy3=uYS5N2->kEiqy3;;v6D2d3
+->ScZIu=uYS5N2->ScZIu;;v6D2d3->ppetC1=uYS5N2->ppetC1;;v6D2d3->_xQyf=
+uYS5N2->_xQyf;;v6D2d3->Sc2KG4=uYS5N2->Sc2KG4;;v6D2d3->Drk7M4=uYS5N2->
+Drk7M4;;v6D2d3->f8S2i1=uYS5N2->f8S2i1;;v6D2d3->P9UkM1=uYS5N2->P9UkM1;
+;v6D2d3->RJVHy4=uYS5N2->RJVHy4;;v6D2d3->R52Qw3=uYS5N2->R52Qw3;;v6D2d3
+->nhy0Y=uYS5N2->nhy0Y;;v6D2d3->UKMEh=uYS5N2->UKMEh;;v6D2d3->OeCZm2=
+uYS5N2->OeCZm2;;v6D2d3->MVwig1=uYS5N2->MVwig1;;v6D2d3->IxW_32=uYS5N2
+->IxW_32;;v6D2d3->GFihS3=uYS5N2->GFihS3;;v6D2d3->LOfuB=uYS5N2->LOfuB;
+;v6D2d3->xkMXp=uYS5N2->xkMXp;;}__noinline static void __fastcall
+kCJ6a1(kWMzp1*J7Iki4,unsigned long O0urm2,unsigned LigBO2){unsigned
+X3V8j4;{X3V8j4=0;rHX2N:if(!(X3V8j4<32))goto cWwbw;goto ldfza;DVFLm4:
+X3V8j4++;goto rHX2N;ldfza:{if(!(O0urm2&k6bCf4[X3V8j4]))goto wpi3B2;{
+J7Iki4->FmCLm3[X3V8j4].gfIP34=(unsigned char)LigBO2;J7Iki4->FmCLm3[
+X3V8j4]._kIQv4=(unsigned char)LigBO2;J7Iki4->FmCLm3[X3V8j4].MhiF14=(
+unsigned char)0xFFu;J7Iki4->FmCLm3[X3V8j4].JVax01=(unsigned char)0xFFu
+;}goto I_wxz;wpi3B2:;{{if(!(J7Iki4->FmCLm3[X3V8j4].gfIP34==(unsigned
+char)LigBO2))goto tW1NE2;J7Iki4->FmCLm3[X3V8j4].gfIP34=(unsigned char
+)0xFFu;tW1NE2:;}{if(!(J7Iki4->FmCLm3[X3V8j4]._kIQv4==(unsigned char)LigBO2
+))goto xM_3h3;J7Iki4->FmCLm3[X3V8j4]._kIQv4=(unsigned char)0xFFu;
+xM_3h3:;}}I_wxz:;}goto DVFLm4;cWwbw:;}}__noinline static unsigned char
+usMAR(kWMzp1*J7Iki4){unsigned char iOPn3=0;unsigned X3V8j4;J7Iki4->
+ZWSDs2.D1JXh=0;{X3V8j4=0;VUMo65:if(!(X3V8j4<32))goto famf93;goto
+if4tC3;HEFHK:X3V8j4++;goto VUMo65;if4tC3:{register sl0aO1 _Oqi51;
+_Oqi51.VN7ed4=0;{if(!(J7Iki4->FmCLm3[X3V8j4]._kIQv4<32&&J7Iki4->
+FmCLm3[X3V8j4].JVax01!=0))goto qzx0n3;{_Oqi51.V9ej93.fzwRI1|=J7Iki4->
+FmCLm3[X3V8j4]._kIQv4;_Oqi51.V9ej93.UvPkN4|=J7Iki4->FmCLm3[X3V8j4].
+JVax01;}goto rXxhw3;qzx0n3:;{_Oqi51.V9ej93.P_XoQ1|=0x1;_Oqi51.V9ej93.
+fzwRI1|=32-1;}rXxhw3:;}{if(!(J7Iki4->FmCLm3[X3V8j4].gfIP34<32&&J7Iki4
+->FmCLm3[X3V8j4].MhiF14!=0))goto zIP1U3;{_Oqi51.V9ej93.In2Nl4|=J7Iki4
+->FmCLm3[X3V8j4].gfIP34;_Oqi51.V9ej93.IHuhT1|=J7Iki4->FmCLm3[X3V8j4].
+MhiF14;}goto bWIkq;zIP1U3:;{_Oqi51.V9ej93.hoRsQ4|=01;_Oqi51.V9ej93.
+In2Nl4|=32-01;}bWIkq:;}J7Iki4->PPMOH[X3V8j4].VN7ed4=_Oqi51.VN7ed4;{if
+(!(_Oqi51.VN7ed4!=J7Iki4->pBSeu3.HcALQ1[X3V8j4].VN7ed4))goto Py8oW1;{
+J7Iki4->ZWSDs2.D1JXh|=0|k6bCf4[_Oqi51.V9ej93.In2Nl4]|k6bCf4[_Oqi51.
+V9ej93.fzwRI1]|k6bCf4[J7Iki4->pBSeu3.HcALQ1[X3V8j4].V9ej93.In2Nl4]|
+k6bCf4[J7Iki4->pBSeu3.HcALQ1[X3V8j4].V9ej93.fzwRI1];iOPn3=1;}Py8oW1:;
+}}goto HEFHK;famf93:;}return iOPn3;}__forceinline static void QhwfE1(
+Smebz2*e0wGb1){register cSW2U1 B7zr54;B7zr54.BucKo=0;B7zr54.V9ej93.
+MLZ_Y|=WdqxE|MEYPf1|AC5eU1;e0wGb1->fbiOR4.BucKo=B7zr54.BucKo;e0wGb1->
+wxJA11.BucKo=0;}__forceinline static void vLSs_1(kWMzp1*J7Iki4,
+unsigned LigBO2){QhwfE1(&J7Iki4->pBSeu3.TIQMZ1[LigBO2]);}
+__forceinline static void tXqwg(kWMzp1*J7Iki4,unsigned Uya4h){
+unsigned SNgFR3;register fo2Uz3 qs0N02;;;__asm __volatile(""::);
+J7Iki4->v6D2d3->MDSlK2=t57WF3|GLE_s4|l9wtw1;SNgFR3=((Uya4h<<03)+Uya4h
+)<<011;;{if(!(SNgFR3>0xFFFFul))goto Q_I4z;SNgFR3=0xFFFFul;Q_I4z:;}
+qs0N02.BucKo=0;qs0N02.V9ej93.JRLuV2|=SNgFR3;qs0N02.V9ej93.tSIGF3|=0x1
+;J7Iki4->osQ5M=ZuiJe3;J7Iki4->v6D2d3->bPudJ3=qs0N02.BucKo;__asm
+__volatile(""::);}__noinline static void __fastcall P3rGX3(kWMzp1*
+J7Iki4,unsigned Uya4h){tXqwg(J7Iki4,Uya4h);{pylPi3:{eKIU_4();__asm
+__volatile(""::);}if((J7Iki4->v6D2d3->MDSlK2&t57WF3)==0&&J7Iki4->
+osQ5M==ZuiJe3)goto pylPi3;};J7Iki4->v6D2d3->bPudJ3=0;__asm __volatile
+(""::);J7Iki4->v6D2d3->MDSlK2=t57WF3|GLE_s4|l9wtw1;__asm __volatile(
+""::);J7Iki4->osQ5M=mHM361;}__forceinline static void BDstt2(kWMzp1*
+J7Iki4,unsigned long JhCor3){unsigned SNgFR3;register fo2Uz3 qs0N02;;
+__asm __volatile(""::);J7Iki4->v6D2d3->MDSlK2=GLE_s4|l9wtw1|t57WF3;
+__asm __volatile(""::);J7Iki4->pBSeu3.T8Tg75.BucKo=JhCor3;__asm
+__volatile(""::);qs0N02.BucKo=0;qs0N02.V9ej93.TG0CA|=1;SNgFR3=(
+unsigned)((32*0x8/2048000.0) *16/(1.0/33000000.0)+1.5);;{if(!(SNgFR3>
+0xFFFFul))goto aoMMx4;SNgFR3=0xFFFFul;aoMMx4:;}qs0N02.V9ej93.JRLuV2|=
+SNgFR3;qs0N02.V9ej93.tSIGF3|=01;J7Iki4->osQ5M=j0BDS4;J7Iki4->v6D2d3->
+bPudJ3=qs0N02.BucKo;__asm __volatile(""::);}__noinline static int
+__fastcall wBvfo4(kWMzp1*J7Iki4,unsigned long JhCor3){unsigned QDNE6;
+__asm __volatile(""::);J7Iki4->v6D2d3->MDSlK2=~0u;BDstt2(J7Iki4,
+JhCor3);{q2AKk4:if(!(0x1))goto z7JL65;{eKIU_4();__asm __volatile(""::
+);QDNE6=J7Iki4->v6D2d3->MDSlK2;{if(!(QDNE6&(GLE_s4|l9wtw1|t57WF3)))goto
+EpqFw4;{J7Iki4->osQ5M=mHM361;J7Iki4->v6D2d3->bPudJ3=0;__asm __volatile
+(""::);J7Iki4->v6D2d3->MDSlK2=t57WF3|GLE_s4|l9wtw1;__asm __volatile(
+""::);{if(!(QDNE6&l9wtw1))goto pfdlj4;{;return 1;}pfdlj4:;}{if(!(
+QDNE6&GLE_s4))goto QxFc22;{;return 0;}QxFc22:;}{if(!(QDNE6&t57WF3))goto
+Z87eW;{;return 0;}Z87eW:;}}EpqFw4:;}}goto q2AKk4;z7JL65:;}}
+__forceinline static unsigned long ZKJvS1(int F5nxM3,int eVrRl2,int
+BPohy2,unsigned ZgZeQ,int RUTWu4,unsigned y3nfl4){register RQO4U4
+JhCor3;JhCor3.BucKo=0;{if(!(F5nxM3))goto htb7t1;JhCor3.V9ej93.M9dD24
+|=0x1;goto IMpBA4;htb7t1:;{if(!(eVrRl2))goto E_iqm1;{JhCor3.V9ej93.in
+|=1;JhCor3.V9ej93.Plb1C3|=ZgZeQ;}goto WgNsa4;E_iqm1:;{if(!(BPohy2))goto
+AO8s83;{JhCor3.V9ej93.rAPPY4|=0x1;JhCor3.V9ej93.Plb1C3|=ZgZeQ;}AO8s83
+:;}WgNsa4:;}IMpBA4:;}{if(!(RUTWu4))goto C8h0B;JhCor3.V9ej93.ahkN84|=
+0x1;C8h0B:;}{if(!(y3nfl4))goto QnuE7;JhCor3.V9ej93.vUYb92|=y3nfl4;
+QnuE7:;}return JhCor3.BucKo;}static tJ1Kb4*__fastcall auwjC(kWMzp1*
+J7Iki4,DCf0T2*wkiYO4){{if(!(J7Iki4->YosKg1!=J7Iki4->XPQnv1))goto
+SX_EH4;{tJ1Kb4*nusR52=J7Iki4->YosKg1;;J7Iki4->YosKg1=J7Iki4->YosKg1->
+OXCDa4;{if(!(nusR52->_8WVQ2.zACHc3.Lrwko2))goto Lpzrp2;{tJ1Kb4*tfu023
+=r3CcP2(J7Iki4,nusR52->_8WVQ2.zACHc3.Lrwko2);tfu023->XT1xI3=0;nusR52
+->_8WVQ2.zACHc3.Lrwko2=0;}Lpzrp2:;}nusR52->wkiYO4=wkiYO4;nusR52->
+OXCDa4=0;nusR52->XT1xI3=0;nusR52->_8WVQ2.zACHc3.RZWDZ2=0;return nusR52
+;}SX_EH4:;};return 0;}__forceinline static void St8W34(kWMzp1*J7Iki4,
+tJ1Kb4*nusR52){;nusR52->wkiYO4=0;nusR52->_8WVQ2.xFtBP._8WVQ2.BucKo=
+1073741824ul|2147483648ul;nusR52->XT1xI3=0;nusR52->_8WVQ2.zACHc3.
+Lrwko2=0;nusR52->OXCDa4=0;nusR52->_8WVQ2.xFtBP.veMrO=((unsigned long)&
+(((kWMzp1* )J7Iki4->pnKue2)->yjdp7));}__forceinline static void FKb152
+(kWMzp1*J7Iki4,tJ1Kb4*nusR52){;nusR52->wkiYO4=0;nusR52->_8WVQ2.hRUi43
+.JzUUv2.YBrPF4=536870912ul|((512-0x4)<<16u);nusR52->_8WVQ2.hRUi43.
+uwYQG1.RZWDZ2=0;nusR52->XT1xI3=0;nusR52->_8WVQ2.zACHc3.Lrwko2=nusR52
+->b_7cQ4;nusR52->OXCDa4=0;nusR52->_8WVQ2.xFtBP.veMrO=((unsigned long)&
+(((kWMzp1* )J7Iki4->pnKue2)->yjdp7));}__forceinline static void FtjYA4
+(kWMzp1*J7Iki4,tJ1Kb4*nusR52){;;J7Iki4->XPQnv1->OXCDa4=nusR52;J7Iki4
+->XPQnv1=nusR52;nusR52->OXCDa4=0;}static void TtJ5j4(kWMzp1*J7Iki4,
+tJ1Kb4*nusR52,unsigned LigBO2){{if(!(nusR52!=J7Iki4->nvqbt[LigBO2]))goto
+ebF2N1;FtjYA4(J7Iki4,nusR52);goto zv9HY3;ebF2N1:;St8W34(J7Iki4,nusR52
+);zv9HY3:;}}static void __fastcall C10QV(kWMzp1*J7Iki4,DCf0T2*esWTk2){
+{Qnmal4:if(!(esWTk2->NpyOc1.GEbPX4))goto flumr;{tJ1Kb4*nusR52=esWTk2
+->NpyOc1.GEbPX4;;esWTk2->NpyOc1.GEbPX4=nusR52->OXCDa4;FtjYA4(J7Iki4,
+nusR52);;}goto Qnmal4;flumr:;}esWTk2->NpyOc1.JI0PC2=0;}static void
+QrVoB3(kWMzp1*J7Iki4,DCf0T2*esWTk2,unsigned LigBO2){{rQ3tw3:if(!(
+esWTk2->NpyOc1.GEbPX4))goto y4Rn32;{tJ1Kb4*nusR52=esWTk2->NpyOc1.
+GEbPX4;;esWTk2->NpyOc1.GEbPX4=nusR52->OXCDa4;TtJ5j4(J7Iki4,nusR52,
+LigBO2);;}goto rQ3tw3;y4Rn32:;}esWTk2->NpyOc1.JI0PC2=0;}static void
+__fastcall XNL6O3(kWMzp1*J7Iki4,unsigned LigBO2,tJ1Kb4*nusR52){tJ1Kb4
+ *WHQ_F1=J7Iki4->nvqbt[LigBO2];;;;{MBzBE3:if(!(!nusR52->_8WVQ2.xFtBP.
+_8WVQ2.V9ej93.zJyAP1))goto Syipj1;{;nusR52=r3CcP2(J7Iki4,nusR52->
+_8WVQ2.zACHc3.Lrwko2);;}goto MBzBE3;Syipj1:;}{if(!(nusR52==WHQ_F1))goto
+fp7Hi1;{;return;}fp7Hi1:;}WHQ_F1->_8WVQ2.zACHc3.Lrwko2=nusR52->b_7cQ4
+;__asm __volatile(""::);__asm __volatile("lock; btrl %1,%0":"=m"(
+WHQ_F1->_8WVQ2.zACHc3._8WVQ2.YBrPF4):"I"(0x1e):"cc");__asm __volatile
+("andl %0,%1": :"r"(bHAl_[LigBO2]),"m"(J7Iki4->v6D2d3->vvbK44):"cc");
+;;J7Iki4->nvqbt[LigBO2]=nusR52;nusR52->XT1xI3=(tJ1Kb4* )WHQ_F1;{if(!(
+WHQ_F1->wkiYO4==0))goto T9jme2;{;FtjYA4(J7Iki4,WHQ_F1);}T9jme2:;}}
+static DCf0T2*__fastcall Xlqk(kWMzp1*J7Iki4){{if(!(__builtin_expect(
+J7Iki4->blWHd2!=0,1)))goto E3PNZ3;{DCf0T2*esWTk2=J7Iki4->blWHd2;
+J7Iki4->blWHd2=J7Iki4->blWHd2->woMv11.OXCDa4;esWTk2->TrF875=0;esWTk2
+->a02Gz4=0;esWTk2->woMv11.OXCDa4=esWTk2->woMv11.neQ2f1=0;esWTk2->
+NpyOc1.OXCDa4=esWTk2->NpyOc1.neQ2f1=0;esWTk2->NpyOc1.GEbPX4=esWTk2->
+NpyOc1.JI0PC2=0;esWTk2->NpyOc1.Rqv1w3=0;return esWTk2;}goto gvjYx2;
+E3PNZ3:;return 0;gvjYx2:;}}__forceinline static void s9FHT4(kWMzp1*
+J7Iki4,DCf0T2*esWTk2){;esWTk2->woMv11.OXCDa4=J7Iki4->blWHd2;J7Iki4->
+blWHd2=esWTk2;}static void __fastcall dS8884(DCf0T2*wkiYO4){unsigned
+X3V8j4;wkiYO4->woMv11.HqVZe4=0;X3V8j4=0;{t1t5N4:wkiYO4->woMv11.sTQei1
+[X3V8j4].BucKo=0;if(++X3V8j4<014)goto t1t5N4;};}static void __fastcall
+wadcP4(DCf0T2*wkiYO4){unsigned X3V8j4;{X3V8j4=0;sQRs_2:if(!(wkiYO4->
+woMv11.sTQei1[X3V8j4].BucKo!=0&&X3V8j4<014))goto oIbtC2;goto uLGca4;
+XMUNv1:X3V8j4++;goto sQRs_2;uLGca4:;goto XMUNv1;oIbtC2:;}wkiYO4->
+woMv11.HqVZe4=X3V8j4;}static void __fastcall qUKv12(kWMzp1*J7Iki4,
+DCf0T2*wkiYO4,unsigned LigBO2){KMSZr2*YzCy24;unsigned OKQI31=0;{if(!(
+!J7Iki4->y8QlL[LigBO2]))goto IckaM3;OKQI31=WdqxE;IckaM3:;}{if(!(!
+J7Iki4->LVAok1[LigBO2]))goto MogYy;OKQI31|=MEYPf1;MogYy:;}YzCy24=
+wkiYO4->woMv11.sTQei1;{sMbS93:if(!(YzCy24->BucKo!=0))goto EneUG;{{if(
+!(YzCy24->V9ej93.xFtBP==0&&YzCy24->V9ej93.hRUi43!=0))goto _4TDD3;
+YzCy24->V9ej93.jf4g9|=OKQI31&EFekl2;_4TDD3:;}{if(!(YzCy24->V9ej93.
+hRUi43==0&&YzCy24->V9ej93.xFtBP!=0))goto n8n7E3;YzCy24->V9ej93.jf4g9
+|=OKQI31&I9g9T1;n8n7E3:;}YzCy24++;;}goto sMbS93;EneUG:;}}static void
+__fastcall V_S8_2(DCf0T2*wkiYO4,enum p5i6D jwgpJ2,unsigned QvZLK){
+unsigned X3V8j4;{X3V8j4=0;YmLEh1:if(!(X3V8j4<12))goto sAo0c3;goto
+EBgum1;Vl2C45:X3V8j4++;goto YmLEh1;EBgum1:{KMSZr2*YzCy24=&wkiYO4->
+woMv11.sTQei1[X3V8j4];switch(jwgpJ2){case vCi6J4:;{if(!(YzCy24->
+V9ej93.xFtBP))goto _Hn1b4;goto Vl2C45;_Hn1b4:;}YzCy24->V9ej93.xFtBP|=
+0x1;YzCy24->V9ej93.jf4g9|=QvZLK;break;case bNfmc1:;{if(!(YzCy24->
+V9ej93.hRUi43))goto tCLvR2;goto Vl2C45;tCLvR2:;}YzCy24->V9ej93.hRUi43
+|=0x1;YzCy24->V9ej93.jf4g9|=QvZLK;break;case us8_Z4:case M7M9y:{if(!(
+YzCy24->V9ej93.hRUi43||YzCy24->V9ej93.xFtBP||YzCy24->V9ej93.jf4g9||
+YzCy24->V9ej93.rPhOt4||YzCy24->V9ej93.jsS_d1))goto NY8VK3;goto Vl2C45
+;NY8VK3:;}YzCy24->V9ej93.oKUjX2|=(jwgpJ2==us8_Z4)?01:~0u;break;case
+A1jmR4:{if(!(YzCy24->V9ej93.xFtBP||YzCy24->V9ej93.hRUi43||YzCy24->
+V9ej93.jf4g9))goto kVVIy3;goto Vl2C45;kVVIy3:;}YzCy24->V9ej93.rPhOt4
+|=0x1;break;case gy1tx2:{if(!(YzCy24->V9ej93.xFtBP||YzCy24->V9ej93.
+hRUi43||YzCy24->V9ej93.jf4g9))goto R0ObX2;goto Vl2C45;R0ObX2:;}YzCy24
+->V9ej93.jsS_d1|=0x1;break;case twfX61:case vDEWd3:case ErtY2:case
+mcEID3:case BICIc2:case GrYG41:{if(!(YzCy24->V9ej93.xFtBP||YzCy24->
+V9ej93.hRUi43||YzCy24->V9ej93.jf4g9))goto i4zzA2;goto Vl2C45;i4zzA2:;
+}YzCy24->V9ej93.jf4g9|=jwgpJ2;break;default:;;}return;}goto Vl2C45;
+sAo0c3:;};}static void __fastcall U6oXn4(kWMzp1*J7Iki4,DCf0T2*wkiYO4,
+unsigned LigBO2){;{if(!(J7Iki4->LVAok1[LigBO2]))goto yN8TN3;{V_S8_2(
+wkiYO4,vCi6J4,EbhBp3);V_S8_2(wkiYO4,us8_Z4,0);V_S8_2(wkiYO4,vCi6J4,
+MEYPf1|AC5eU1);V_S8_2(wkiYO4,M7M9y,0);J7Iki4->LVAok1[LigBO2]=0;{if(!(
+!J7Iki4->jyElQ3[LigBO2]))goto x_BL64;{V_S8_2(wkiYO4,A1jmR4,0);V_S8_2(
+wkiYO4,vCi6J4,MEYPf1|AC5eU1);}x_BL64:;}}yN8TN3:;}}static void
+__fastcall hBew43(kWMzp1*J7Iki4,DCf0T2*wkiYO4,unsigned LigBO2){;{if(!
+(J7Iki4->y8QlL[LigBO2]))goto TG9c75;{V_S8_2(wkiYO4,bNfmc1,qKhEV3);
+V_S8_2(wkiYO4,us8_Z4,0);V_S8_2(wkiYO4,bNfmc1,WdqxE);V_S8_2(wkiYO4,
+M7M9y,0);J7Iki4->y8QlL[LigBO2]=0;{if(!(!J7Iki4->QEvwb3[LigBO2]))goto
+oL3aI4;{V_S8_2(wkiYO4,A1jmR4,0);V_S8_2(wkiYO4,bNfmc1,WdqxE);}oL3aI4:;
+}}TG9c75:;}}static void __fastcall fHk793(kWMzp1*J7Iki4,DCf0T2*wkiYO4
+,unsigned LigBO2){;{if(!(!J7Iki4->LVAok1[LigBO2]))goto ypUaz;{{if(!(!
+J7Iki4->y8QlL[LigBO2]))goto kIGV65;{V_S8_2(wkiYO4,gy1tx2,0);}kIGV65:;
+}J7Iki4->LVAok1[LigBO2]=0x1;V_S8_2(wkiYO4,vCi6J4,RQJum);}ypUaz:;}}
+static void __fastcall Ssl144(kWMzp1*J7Iki4,DCf0T2*wkiYO4,unsigned
+LigBO2){;{if(!(!J7Iki4->y8QlL[LigBO2]))goto Q8GeB3;{{if(!(!J7Iki4->
+LVAok1[LigBO2]))goto FfRTQ3;{V_S8_2(wkiYO4,gy1tx2,0);}FfRTQ3:;}J7Iki4
+->y8QlL[LigBO2]=01;V_S8_2(wkiYO4,bNfmc1,w9B8P4);}Q8GeB3:;}}__noinline
+static void __fastcall I3ipm3(kWMzp1*J7Iki4){;J7Iki4->m45Hf++;{eLCHB1
+:if(!(J7Iki4->sxr445.Rc7LY4!=0))goto eEI4l2;{DCf0T2*esWTk2=J7Iki4->
+sxr445.Rc7LY4;{;;;J7Iki4->sxr445.Rc7LY4=(J7Iki4->sxr445.Rc7LY4)->
+woMv11.OXCDa4;{if(!(J7Iki4->sxr445.Rc7LY4))goto EOiva3;(J7Iki4->
+sxr445.Rc7LY4)->woMv11.neQ2f1=0;goto RekSX2;EOiva3:;J7Iki4->sxr445.
+WHQ_F1=0;RekSX2:;};;;};VHvU93(J7Iki4,esWTk2);;}goto eLCHB1;eEI4l2:;}
+J7Iki4->m45Hf--;}__forceinline static int bMF5K3(kWMzp1*J7Iki4,
+unsigned LigBO2){{if(!(J7Iki4->QEvwb3[LigBO2]!=J7Iki4->LVAok1[LigBO2]
+))goto kjGyu3;return 0x1;kjGyu3:;}{if(!(J7Iki4->jyElQ3[LigBO2]!=
+J7Iki4->y8QlL[LigBO2]))goto pqgzS;return 01;pqgzS:;}{if(!(J7Iki4->
+QEvwb3[LigBO2]||J7Iki4->jyElQ3[LigBO2]))goto RWVVa2;{{if(!(J7Iki4->
+tYsSE2[LigBO2]!=J7Iki4->TifAa1[LigBO2]))goto NWPaL3;return 01;NWPaL3:
+;}{if(!(J7Iki4->ZWSDs2.D1JXh&k6bCf4[LigBO2]))goto thjAR2;return 01;
+thjAR2:;}}RWVVa2:;}return 0;}__forceinline static void jCzA04(kWMzp1*
+J7Iki4,DCf0T2*esWTk2){unsigned X3V8j4;{X3V8j4=0;VsaX55:if(!(X3V8j4<32
+))goto T8skA;goto gLUQo;xdxJg3:X3V8j4++;goto VsaX55;gLUQo:{{if(!(
+J7Iki4->y8QlL[X3V8j4]||J7Iki4->LVAok1[X3V8j4]))goto IA1fx;{V_S8_2(
+esWTk2,vDEWd3,0);V_S8_2(esWTk2,M7M9y,0);goto T8skA;}IA1fx:;}}goto
+xdxJg3;T8skA:;}V_S8_2(esWTk2,A1jmR4,0);V_S8_2(esWTk2,twfX61,0);{if(!(
+X3V8j4<32))goto MolGF4;V_S8_2(esWTk2,M7M9y,0);MolGF4:;}{X3V8j4=0;
+f_VTj2:if(!(X3V8j4<32))goto hnDyd2;goto XALmV1;vFgpP:X3V8j4++;goto
+f_VTj2;XALmV1:{{if(!(J7Iki4->jyElQ3[X3V8j4]||J7Iki4->QEvwb3[X3V8j4]))goto
+rfb4A1;{V_S8_2(esWTk2,us8_Z4,0);V_S8_2(esWTk2,gy1tx2,0);V_S8_2(esWTk2
+,twfX61,0);V_S8_2(esWTk2,us8_Z4,0);V_S8_2(esWTk2,ErtY2,0);goto hnDyd2
+;}rfb4A1:;}}goto vFgpP;hnDyd2:;}}__forceinline static void zERlZ1(
+kWMzp1*J7Iki4,DCf0T2*esWTk2,unsigned LigBO2){esWTk2->woMv11.LigBO2=
+LigBO2;{if(!(J7Iki4->tYsSE2[LigBO2]!=J7Iki4->TifAa1[LigBO2]||(J7Iki4
+->ZWSDs2.D1JXh&k6bCf4[LigBO2])!=0))goto Z8adO4;{hBew43(J7Iki4,esWTk2,
+LigBO2);U6oXn4(J7Iki4,esWTk2,LigBO2);qUKv12(J7Iki4,esWTk2,LigBO2);}
+Z8adO4:;}{if(!(J7Iki4->jyElQ3[LigBO2]))goto Kvxpp3;Ssl144(J7Iki4,
+esWTk2,LigBO2);goto p5QN85;Kvxpp3:;hBew43(J7Iki4,esWTk2,LigBO2);
+p5QN85:;}{if(!(J7Iki4->QEvwb3[LigBO2]))goto Bnj9y2;fHk793(J7Iki4,
+esWTk2,LigBO2);goto ch1Nw;Bnj9y2:;U6oXn4(J7Iki4,esWTk2,LigBO2);ch1Nw:
+;}qUKv12(J7Iki4,esWTk2,LigBO2);}__noinline static void __fastcall
+VHvU93(kWMzp1*J7Iki4,DCf0T2*esWTk2){Os1bA3*a02Gz4=esWTk2->a02Gz4;;;;;
+esWTk2->TrF875++;{Pq8Ms3:{{if(!(!K5XcD(J7Iki4,a02Gz4,esWTk2)))goto
+bskGf2;{unsigned X3V8j4,LigBO2=a02Gz4->NpyOc1.IoSy32.LigBO2;{if(!(!(
+a02Gz4->QvZLK&(2u|32u))||(a02Gz4->QvZLK&(0x1u|16u))))goto DjT5Q4;{{if
+(!(a02Gz4->QvZLK&4096u))goto MOWyU;{a02Gz4->QvZLK&=~4096u;J7Iki4->
+XpkU85=a02Gz4->NpyOc1.MbSIY!=0;J7Iki4->gJqKI=1;}MOWyU:;}{if(!(a02Gz4
+->QvZLK&512u))goto jiGoK2;{a02Gz4->QvZLK&=~512u;{X3V8j4=0;mWi371:if(!
+(X3V8j4<32))goto zUDsZ1;goto JpR8F1;cCsSw:X3V8j4++;goto mWi371;JpR8F1
+:J7Iki4->FmCLm3[X3V8j4]=a02Gz4->NpyOc1.fk7g83.QB6LL[X3V8j4];goto cCsSw
+;zUDsZ1:;}J7Iki4->gJqKI|=usMAR(J7Iki4);}jiGoK2:;}{if(!(a02Gz4->QvZLK&
+1024u))goto eRCV2;{a02Gz4->QvZLK&=~1024u;{X3V8j4=0;o2NIe3:if(!(X3V8j4
+<32))goto Lm1jn;goto a8kio2;rZeKl1:X3V8j4++;goto o2NIe3;a8kio2:kCJ6a1
+(J7Iki4,a02Gz4->NpyOc1.fk7g83.Br68q1[X3V8j4],X3V8j4);goto rZeKl1;
+Lm1jn:;}J7Iki4->gJqKI|=usMAR(J7Iki4);}eRCV2:;}{if(!(a02Gz4->QvZLK&
+2048u))goto wcVWB2;{a02Gz4->QvZLK&=~2048u;kCJ6a1(J7Iki4,a02Gz4->
+NpyOc1.IoSy32.Oo9ZQ2,LigBO2);J7Iki4->gJqKI|=usMAR(J7Iki4);}wcVWB2:;}{
+if(!(a02Gz4->QvZLK&256u))goto voirP;{a02Gz4->QvZLK&=~256u;J7Iki4->
+TifAa1[LigBO2]=a02Gz4->NpyOc1.IoSy32.CUhqx4;J7Iki4->gJqKI=1;}voirP:;}
+}DjT5Q4:;}{if(!(a02Gz4->QvZLK&1u))goto f4GLj2;{a02Gz4->QvZLK&=~01u;
+J7Iki4->QEvwb3[LigBO2]=01;J7Iki4->gJqKI=1;}f4GLj2:;}{if(!(a02Gz4->
+QvZLK&16u))goto D8urj;{a02Gz4->QvZLK&=~16u;J7Iki4->jyElQ3[LigBO2]=0x1
+;J7Iki4->gJqKI=0x1;}D8urj:;}{if(!(a02Gz4->QvZLK&010u))goto mKdeB4;{
+a02Gz4->QvZLK&=~0x8u;a02Gz4->NpyOc1.xRh664.YkQWU=0;esWTk2->TrF875++;{
+;;;(esWTk2)->NpyOc1.OXCDa4=0;(esWTk2)->NpyOc1.neQ2f1=J7Iki4->Cga1V[
+LigBO2].WHQ_F1;{if(!(J7Iki4->Cga1V[LigBO2].WHQ_F1))goto yZBWm3;(
+J7Iki4->Cga1V[LigBO2].WHQ_F1)->NpyOc1.OXCDa4=esWTk2;goto gu62o;yZBWm3
+:;J7Iki4->Cga1V[LigBO2].Rc7LY4=esWTk2;gu62o:;}J7Iki4->Cga1V[LigBO2].
+WHQ_F1=esWTk2;;;;};pxiAh4(J7Iki4,LigBO2);}mKdeB4:;}{if(!(a02Gz4->
+QvZLK&128u))goto Hu116;{a02Gz4->QvZLK&=~128u;a02Gz4->NpyOc1.qXXnD2.
+USKhR2=0;a02Gz4->NpyOc1.qXXnD2.WMRMP4=0;esWTk2->TrF875++;{;;;(esWTk2)->
+NpyOc1.OXCDa4=0;(esWTk2)->NpyOc1.neQ2f1=J7Iki4->UyRVB4[LigBO2].WHQ_F1
+;{if(!(J7Iki4->UyRVB4[LigBO2].WHQ_F1))goto A2riI1;(J7Iki4->UyRVB4[
+LigBO2].WHQ_F1)->NpyOc1.OXCDa4=esWTk2;goto iMrKM1;A2riI1:;J7Iki4->
+UyRVB4[LigBO2].Rc7LY4=esWTk2;iMrKM1:;}J7Iki4->UyRVB4[LigBO2].WHQ_F1=
+esWTk2;;;;};sPUN83(J7Iki4,LigBO2);}Hu116:;}{if(!(esWTk2->TrF875<=1))goto
+LxT2Y4;{{if(!(a02Gz4->QvZLK&2u))goto ez9gZ3;{a02Gz4->QvZLK&=~02u;
+J7Iki4->QEvwb3[LigBO2]=0;J7Iki4->gJqKI=1;}ez9gZ3:;}{if(!(a02Gz4->
+QvZLK&32u))goto RCFss2;{a02Gz4->QvZLK&=~32u;J7Iki4->jyElQ3[LigBO2]=0;
+J7Iki4->gJqKI=0x1;}RCFss2:;}}LxT2Y4:;}{if(!((a02Gz4->QvZLK&8192u)&&
+J7Iki4->gJqKI))goto d1bSC;{unsigned bmwN91=0;J7Iki4->gJqKI=0;{X3V8j4=
+0;VSmwf4:if(!(X3V8j4<32))goto OuIaM2;goto O7FoQ2;Hsu3K:X3V8j4++;goto
+VSmwf4;O7FoQ2:{if(!(bMF5K3(J7Iki4,X3V8j4)))goto NKBZ63;{{if(!(++
+bmwN91>01))goto hqqA05;goto OuIaM2;goto nG3fE3;hqqA05:;LigBO2=X3V8j4;
+nG3fE3:;}}NKBZ63:;}goto Hsu3K;OuIaM2:;}{if(!(bmwN91>0||J7Iki4->RAwCl1
+!=J7Iki4->XpkU85))goto tIraz1;{dS8884(esWTk2);{if(!(bmwN91>0x1||
+J7Iki4->ZWSDs2.D1JXh!=0))goto S5BnT3;jCzA04(J7Iki4,esWTk2);goto Zjm4o4
+;S5BnT3:;{if(!(bmwN91))goto KDOPk2;zERlZ1(J7Iki4,esWTk2,LigBO2);
+KDOPk2:;}Zjm4o4:;}{if(!(J7Iki4->RAwCl1!=J7Iki4->XpkU85))goto rYEHN;
+V_S8_2(esWTk2,J7Iki4->XpkU85?mcEID3:GrYG41,0);rYEHN:;}wadcP4(esWTk2);
+B1Wc_1(J7Iki4,esWTk2);J99ok3(J7Iki4);}tIraz1:;}}d1bSC:;}}bskGf2:;};}
+if(esWTk2->TrF875==0x1&&esWTk2->a02Gz4->QvZLK&((01u|2u|0|010u|16u|32u
+|128u|256u|512u|2048u|4096u)|64u))goto Pq8Ms3;};Q7gY12(J7Iki4,esWTk2);
+}__forceinline static void mdbib4(kWMzp1*J7Iki4,DCf0T2*esWTk2,
+unsigned Uya4h){unsigned X3V8j4;;{X3V8j4=0;LTuqB:if(!(Uya4h>0&&X3V8j4
+<014))goto zLhpa1;goto dEq9x4;CkBTP2:X3V8j4++;goto LTuqB;dEq9x4:{
+unsigned w3eQb2;{if(!(Uya4h<=017))goto sw3N93;w3eQb2=Uya4h;goto BGrxq1
+;sw3N93:;{if(!(Uya4h<=0x1e))goto GoBcS3;w3eQb2=Uya4h/2;goto bSFnY1;
+GoBcS3:;w3eQb2=017;bSFnY1:;}BGrxq1:;}Uya4h-=w3eQb2;esWTk2->woMv11.
+sTQei1[X3V8j4].BucKo=0;esWTk2->woMv11.sTQei1[X3V8j4].V9ej93.oKUjX2|=
+w3eQb2;}goto CkBTP2;zLhpa1:;}esWTk2->woMv11.HqVZe4=X3V8j4;B1Wc_1(
+J7Iki4,esWTk2);}__noinline static void YnF_24(kWMzp1*J7Iki4,unsigned
+LigBO2,unsigned QvZLK){DCf0T2*esWTk2;;;{if(!(J7Iki4->YRHFy->cJw4g2))goto
+Mxu9u;{QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,
+LigBO2,8388608ul);h2LrH3(&J7Iki4->h2LrH3);;}Mxu9u:;}esWTk2=J7Iki4->
+LbJOV[LigBO2];{if(!(esWTk2==0))goto D8mfM4;{esWTk2=Xlqk(J7Iki4);{if(!
+(__builtin_expect(esWTk2==0,0)))goto jrzO52;{{if(!(J7Iki4->YRHFy->
+cJw4g2))goto mKvGg;{QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->YRHFy->cJw4g2(
+J7Iki4->YRHFy,LigBO2,01ul);h2LrH3(&J7Iki4->h2LrH3);;}mKvGg:;}return;}
+jrzO52:;}J7Iki4->LbJOV[LigBO2]=esWTk2;{if(!(J7Iki4->LVAok1[LigBO2]))goto
+IQmkM3;QvZLK|=Vtxp55;goto ceu0u1;IQmkM3:;QvZLK|=MEYPf1;ceu0u1:;}
+esWTk2->woMv11.LigBO2=LigBO2;esWTk2->woMv11.sTQei1[0].BucKo=0;esWTk2
+->woMv11.sTQei1[0].V9ej93.jf4g9|=QvZLK;esWTk2->woMv11.sTQei1[0].
+V9ej93.hRUi43|=1;esWTk2->woMv11.HqVZe4=01;B1Wc_1(J7Iki4,esWTk2);}goto
+qFEoL;D8mfM4:;{esWTk2->woMv11.sTQei1[0].V9ej93.jf4g9=(EFekl2&esWTk2->
+woMv11.sTQei1[0].V9ej93.jf4g9)|QvZLK;esWTk2->woMv11.sTQei1[0].V9ej93.
+hRUi43|=0x1;}qFEoL:;}J7Iki4->pBSeu3.lPHda[LigBO2]=J7Iki4->pBSeu3.
+TIQMZ1[LigBO2].Zg2fI4;}__noinline static void fOVyT4(kWMzp1*J7Iki4,
+unsigned LigBO2,unsigned QvZLK){DCf0T2*esWTk2;;;{if(!(J7Iki4->YRHFy->
+cJw4g2))goto ubd8s4;{QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->YRHFy->cJw4g2(
+J7Iki4->YRHFy,LigBO2,4194304ul);h2LrH3(&J7Iki4->h2LrH3);;}ubd8s4:;}
+esWTk2=J7Iki4->LbJOV[LigBO2];{if(!(esWTk2==0))goto PfBVS2;{esWTk2=
+Xlqk(J7Iki4);{if(!(__builtin_expect(esWTk2==0,0)))goto rqh6a2;{{if(!(
+J7Iki4->YRHFy->cJw4g2))goto Tm92i3;{QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->
+YRHFy->cJw4g2(J7Iki4->YRHFy,LigBO2,01ul);h2LrH3(&J7Iki4->h2LrH3);;}
+Tm92i3:;}return;}rqh6a2:;}J7Iki4->LbJOV[LigBO2]=esWTk2;{if(!(J7Iki4->
+y8QlL[LigBO2]))goto UbBgT2;QvZLK|=lHsjw1;goto KWBsP3;UbBgT2:;QvZLK|=
+WdqxE;KWBsP3:;}esWTk2->woMv11.LigBO2=LigBO2;esWTk2->woMv11.sTQei1[0].
+BucKo=0;esWTk2->woMv11.sTQei1[0].V9ej93.jf4g9|=QvZLK;esWTk2->woMv11.
+sTQei1[0].V9ej93.xFtBP|=1;esWTk2->woMv11.HqVZe4=1;B1Wc_1(J7Iki4,
+esWTk2);}goto EkEeN1;PfBVS2:;{esWTk2->woMv11.sTQei1[0].V9ej93.jf4g9=(
+I9g9T1&esWTk2->woMv11.sTQei1[0].V9ej93.jf4g9)|QvZLK;esWTk2->woMv11.
+sTQei1[0].V9ej93.xFtBP|=01;}EkEeN1:;}J7Iki4->pBSeu3.lN6oU2[LigBO2]=
+J7Iki4->pBSeu3.TIQMZ1[LigBO2].PTDns3;}__forceinline static void o6C8s2
+(kWMzp1*J7Iki4){DCf0T2*esWTk2;;;esWTk2=J7Iki4->SpbRG4.Rc7LY4;{;;;
+J7Iki4->SpbRG4.Rc7LY4=(J7Iki4->SpbRG4.Rc7LY4)->woMv11.OXCDa4;{if(!(
+J7Iki4->SpbRG4.Rc7LY4))goto wdOKk3;(J7Iki4->SpbRG4.Rc7LY4)->woMv11.
+neQ2f1=0;goto cim7z3;wdOKk3:;J7Iki4->SpbRG4.WHQ_F1=0;cim7z3:;};;;};
+Q7gY12(J7Iki4,esWTk2);}__forceinline static void JFrCi4(kWMzp1*J7Iki4
+,unsigned LigBO2){DCf0T2*esWTk2;;;;esWTk2=J7Iki4->Cga1V[LigBO2].
+Rc7LY4;{;;;J7Iki4->Cga1V[LigBO2].Rc7LY4=(J7Iki4->Cga1V[LigBO2].Rc7LY4
+)->NpyOc1.OXCDa4;{if(!(J7Iki4->Cga1V[LigBO2].Rc7LY4))goto Fghvc;(
+J7Iki4->Cga1V[LigBO2].Rc7LY4)->NpyOc1.neQ2f1=0;goto Qjzun3;Fghvc:;
+J7Iki4->Cga1V[LigBO2].WHQ_F1=0;Qjzun3:;};;;};QrVoB3(J7Iki4,esWTk2,
+LigBO2);Q7gY12(J7Iki4,esWTk2);}__forceinline static void KQKqV1(
+kWMzp1*J7Iki4,unsigned LigBO2){DCf0T2*esWTk2;;;;esWTk2=J7Iki4->UyRVB4
+[LigBO2].Rc7LY4;{;;;J7Iki4->UyRVB4[LigBO2].Rc7LY4=(J7Iki4->UyRVB4[
+LigBO2].Rc7LY4)->NpyOc1.OXCDa4;{if(!(J7Iki4->UyRVB4[LigBO2].Rc7LY4))goto
+hqEL_;(J7Iki4->UyRVB4[LigBO2].Rc7LY4)->NpyOc1.neQ2f1=0;goto ORrU41;
+hqEL_:;J7Iki4->UyRVB4[LigBO2].WHQ_F1=0;ORrU41:;};;;};C10QV(J7Iki4,
+esWTk2);Q7gY12(J7Iki4,esWTk2);}static void D77H33(kWMzp1*J7Iki4,
+Os1bA3*a02Gz4){{if(!(a02Gz4->bHzh05))goto ZIuBS1;{QD7sk4(&J7Iki4->
+h2LrH3);;a02Gz4->bHzh05(J7Iki4->YRHFy,a02Gz4);h2LrH3(&J7Iki4->h2LrH3);
+;}ZIuBS1:;}}__noinline static void __fastcall Q7gY12(kWMzp1*J7Iki4,
+DCf0T2*esWTk2){;{if(!(--esWTk2->TrF875==0))goto iHF8s3;{Os1bA3*a02Gz4
+=esWTk2->a02Gz4;{if(!(a02Gz4))goto yl3xl4;{{if(!(a02Gz4->QvZLK&((1u|
+02u|0|0x8u|16u|32u|128u|256u|512u|2048u|4096u)|64u)))goto JNHsP4;{
+VHvU93(J7Iki4,esWTk2);return;}JNHsP4:;};{if(!(a02Gz4->zM0Qt3!=esWTk2))goto
+x9Kpa;{{RvzXA1:{Os1bA3*OXCDa4=(Os1bA3* )a02Gz4->zM0Qt3;a02Gz4->zM0Qt3
+=0;D77H33(J7Iki4,a02Gz4);a02Gz4=OXCDa4;;}if(a02Gz4!=0)goto RvzXA1;};}
+goto VMudP1;x9Kpa:;{a02Gz4->zM0Qt3=0;D77H33(J7Iki4,a02Gz4);}VMudP1:;}
+}yl3xl4:;}s9FHT4(J7Iki4,esWTk2);{if(!(J7Iki4->m45Hf==0))goto L4mSq3;
+I3ipm3(J7Iki4);L4mSq3:;};}iHF8s3:;}}static void B1Wc_1(kWMzp1*J7Iki4,
+DCf0T2*esWTk2){esWTk2->TrF875++;esWTk2->woMv11.pT8M75=0;;{;;;(esWTk2)->
+woMv11.OXCDa4=0;(esWTk2)->woMv11.neQ2f1=J7Iki4->SpbRG4.WHQ_F1;{if(!(
+J7Iki4->SpbRG4.WHQ_F1))goto RwWZN;(J7Iki4->SpbRG4.WHQ_F1)->woMv11.
+OXCDa4=esWTk2;goto xq2Sw1;RwWZN:;J7Iki4->SpbRG4.Rc7LY4=esWTk2;xq2Sw1:
+;}J7Iki4->SpbRG4.WHQ_F1=esWTk2;;;;};LzuvP2(J7Iki4);}__noinline static
+void __fastcall uWETN2(kWMzp1*J7Iki4,unsigned LigBO2){;J7Iki4->pBSeu3
+.TIQMZ1[LigBO2].fbiOR4.BucKo=J7Iki4->pBSeu3.TIQMZ1[LigBO2].wxJA11.
+BucKo=0;J7Iki4->pBSeu3.TIQMZ1[LigBO2].wxJA11.V9ej93.FUeC9|=2;{if(!(
+J7Iki4->TifAa1[LigBO2]&16ul))goto ft5w45;J7Iki4->pBSeu3.TIQMZ1[LigBO2
+].fbiOR4.V9ej93.uVmjX4|=0x1;ft5w45:;}switch(J7Iki4->TifAa1[LigBO2]&
+15ul){case 0:J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.cy2jE4|=
+Fv3Q52;J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.E2DoN1|=0|SJOG34|
+F09LQ3|xp82U2;{if(!(J7Iki4->TifAa1[LigBO2]&512ul))goto jUWId1;J7Iki4
+->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.Tjj6h4|=01;jUWId1:;}{if(!(
+J7Iki4->TifAa1[LigBO2]&2048ul))goto LnVlP2;J7Iki4->pBSeu3.TIQMZ1[
+LigBO2].fbiOR4.V9ej93.kD2ag4|=1;LnVlP2:;}{if(!(J7Iki4->TifAa1[LigBO2]
+&256ul))goto khgda1;J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.YBd0u
+|=0x1;khgda1:;}{if(!(J7Iki4->TifAa1[LigBO2]&1024ul))goto haHZJ3;
+J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.qIB2B3|=0x1;haHZJ3:;}
+break;case 0x1:J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.cy2jE4|=
+LHp0y4;J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.ZVkKi4|=(J7Iki4->
+TifAa1[LigBO2]&50331648ul)>>0x18u;break;case 2:J7Iki4->pBSeu3.TIQMZ1[
+LigBO2].fbiOR4.V9ej93.cy2jE4|=JTNVO4;{if(!(J7Iki4->TifAa1[LigBO2]&
+4096ul))goto nToJ62;{J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.
+Tjj6h4|=0x1;J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.kD2ag4|=(
+J7Iki4->TifAa1[LigBO2]&16711680ul)>>16u;}nToJ62:;}{if(!(J7Iki4->
+TifAa1[LigBO2]&8192ul))goto trLqh;J7Iki4->pBSeu3.TIQMZ1[LigBO2].
+fbiOR4.V9ej93.YBd0u|=0x1;trLqh:;}break;case 03:case 4:J7Iki4->pBSeu3.
+TIQMZ1[LigBO2].fbiOR4.V9ej93.cy2jE4|=qhPRk4;{if(!(J7Iki4->TifAa1[
+LigBO2]&017ul))goto _QnaE2;J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.
+V9ej93.YBd0u|=01;_QnaE2:;}break;default:;;}J7Iki4->tYsSE2[LigBO2]=
+J7Iki4->TifAa1[LigBO2];}__forceinline static unsigned long bdVLJ3(
+unsigned KYiBO3,int dsXls){return dsXls?ZKJvS1(0,1,0,KYiBO3,0,KahAO3):
+ZKJvS1(0,0,01,KYiBO3,0,KahAO3);}__forceinline static unsigned long
+ixItX3(void){return ZKJvS1(1,0,0,0,0,KahAO3);}__forceinline static
+unsigned long Vmiuc3(enum o1L6S1 PwiOJ){return ZKJvS1(0,0,0,0,0,PwiOJ
+);}__forceinline static void G9xz03(kWMzp1*J7Iki4){;{if(!(J7Iki4->
+YRHFy->cJw4g2))goto xTeNq1;{QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->YRHFy->
+cJw4g2(J7Iki4->YRHFy,-01,8ul);h2LrH3(&J7Iki4->h2LrH3);;}xTeNq1:;}}
+__forceinline static void rwHIy4(kWMzp1*J7Iki4){;{if(!(J7Iki4->YRHFy
+->cJw4g2))goto HvTcD2;{QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->YRHFy->cJw4g2
+(J7Iki4->YRHFy,-0x1,0x4ul);h2LrH3(&J7Iki4->h2LrH3);;}HvTcD2:;}}
+__forceinline static void SdYiI(kWMzp1*J7Iki4,unsigned LigBO2,
+unsigned long*ADaUw,unsigned long*euuEB1){unsigned long O0urm2=k6bCf4
+[LigBO2];unsigned QvZLK=J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.
+MLZ_Y&(qS5lW1|_BCMS3|iGfEm1|X_sGC1|Fcabx|InZ58|n1IfW3|S4Krh1);{if(!(
+QvZLK&iGfEm1))goto scDVj2; *ADaUw&=~O0urm2;goto wfVl21;scDVj2:;switch
+(QvZLK&(X_sGC1|Fcabx|InZ58|S4Krh1)){case MEYPf1:case EbhBp3: *ADaUw&=
+~O0urm2;break;case RQJum: *ADaUw|=O0urm2;break;case Vtxp55:case gSQHi
+:case nIaSt:break;default:;}wfVl21:;}switch(QvZLK&(qS5lW1|_BCMS3|
+n1IfW3)){case WdqxE:case qKhEV3: *euuEB1&=~O0urm2;break;case w9B8P4: *
+euuEB1|=O0urm2;break;case lHsjw1:case dfhdh3:case hkhXH3:break;
+default:;}}__noinline static void aez0x4(kWMzp1*J7Iki4){{if(!(J7Iki4
+->ZWSDs2.hOtzj||J7Iki4->ZWSDs2.Avyuu1))goto i5M_e4;{J7Iki4->ZWSDs2.
+hOtzj=0;J7Iki4->ZWSDs2.Avyuu1=0;dyDHu2(J7Iki4);}i5M_e4:;}}__noinline
+static void __fastcall LzuvP2(kWMzp1*J7Iki4){{if(!(J7Iki4->XlFgj4==0))goto
+Zo_mV2;{J7Iki4->XlFgj4++;{KE2tn1:if(!(1))goto h9opJ3;{switch(J7Iki4->
+osQ5M){case QIA5L:{if(!(J7Iki4->SpbRG4.Rc7LY4))goto d7HTj3;{DCf0T2*
+esWTk2=J7Iki4->SpbRG4.Rc7LY4;{if(!(esWTk2->woMv11.pT8M75>0))goto
+ssopP1;{unsigned X3V8j4;KMSZr2*YzCy24=&esWTk2->woMv11.sTQei1[esWTk2->
+woMv11.pT8M75-1];unsigned long _n1S03=J7Iki4->ZWSDs2.Avyuu1;unsigned
+long u0bxl3=J7Iki4->ZWSDs2.hOtzj;{if(!(YzCy24->V9ej93.xFtBP||YzCy24->
+V9ej93.hRUi43))goto ginx92;SdYiI(J7Iki4,esWTk2->woMv11.LigBO2,&_n1S03
+,&u0bxl3);goto r40Gn;ginx92:;{if(!(YzCy24->V9ej93.jf4g9==ErtY2))goto
+_pIkW2;{X3V8j4=0;jbV8Y:if(!(X3V8j4<32))goto tVN2m4;goto I5_OH2;HyV8D2
+:X3V8j4++;goto jbV8Y;I5_OH2:SdYiI(J7Iki4,X3V8j4,&_n1S03,&u0bxl3);goto
+HyV8D2;tVN2m4:;}_pIkW2:;}r40Gn:;}{if(!(J7Iki4->ZWSDs2.hOtzj!=u0bxl3||
+J7Iki4->ZWSDs2.Avyuu1!=_n1S03))goto Gp2G51;{J7Iki4->ZWSDs2.hOtzj=
+u0bxl3;J7Iki4->ZWSDs2.Avyuu1=_n1S03;dyDHu2(J7Iki4);}Gp2G51:;}}ssopP1:
+;}}d7HTj3:;}J7Iki4->osQ5M=mHM361;case mHM361:{if(!(J7Iki4->SpbRG4.
+Rc7LY4==0))goto QP4kl4;{__asm __volatile(""::);J7Iki4->v6D2d3->bPudJ3
+=0;__asm __volatile(""::);goto FH0RH2;}QP4kl4:;}{if(!(J7Iki4->SpbRG4.
+Rc7LY4->woMv11.pT8M75>=J7Iki4->SpbRG4.Rc7LY4->woMv11.HqVZe4))goto
+wNWnF1;{o6C8s2(J7Iki4);}goto T4nbC1;wNWnF1:;{DCf0T2*esWTk2=J7Iki4->
+SpbRG4.Rc7LY4;;{;Ksejb1:if(!(esWTk2->woMv11.pT8M75<esWTk2->woMv11.
+HqVZe4))goto RXkRU4;goto ftVDr;b4O7W4:;goto Ksejb1;ftVDr:{KMSZr2*
+YzCy24=&esWTk2->woMv11.sTQei1[esWTk2->woMv11.pT8M75];{if(!(YzCy24->
+V9ej93.oKUjX2))goto BxNe64;{tXqwg(J7Iki4,YzCy24->V9ej93.oKUjX2);
+YzCy24->V9ej93.oKUjX2=0;goto pTM6S;}BxNe64:;}esWTk2->woMv11.pT8M75++;
+{if(!(YzCy24->V9ej93.hRUi43||YzCy24->V9ej93.xFtBP))goto cVjEh2;{
+unsigned LigBO2=esWTk2->woMv11.LigBO2;;{if(!(esWTk2==J7Iki4->LbJOV[
+LigBO2]))goto CiD2k1;J7Iki4->LbJOV[LigBO2]=0;CiD2k1:;}{if(!(YzCy24->
+V9ej93.rPhOt4))goto bK47E4;{;vLSs_1(J7Iki4,LigBO2);}bK47E4:;}{if(!(
+YzCy24->V9ej93.jsS_d1))goto nVDTK2;{;uWETN2(J7Iki4,LigBO2);}nVDTK2:;}
+J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.MLZ_Y=YzCy24->V9ej93.
+jf4g9;{if(!(J7Iki4->ZWSDs2.D1JXh&k6bCf4[LigBO2]))goto hx8lQ4;{q6r1b3(
+J7Iki4);BDstt2(J7Iki4,bdVLJ3(LigBO2,0x1));Nq5gq(J7Iki4);}goto d0ozh3;
+hx8lQ4:;BDstt2(J7Iki4,bdVLJ3(LigBO2,0));d0ozh3:;}goto pTM6S;}goto
+stLrO1;cVjEh2:;{unsigned X3V8j4;{if(!(YzCy24->V9ej93.rPhOt4))goto
+BbsRp;{;{X3V8j4=0;WCbUG1:if(!(X3V8j4<32))goto baWV_;goto g6I792;
+JHPwk3:X3V8j4++;goto WCbUG1;g6I792:vLSs_1(J7Iki4,X3V8j4);goto JHPwk3;
+baWV_:;}}BbsRp:;}{if(!(YzCy24->V9ej93.jsS_d1))goto R1VyQ;{;{X3V8j4=0;
+Ai0te:if(!(X3V8j4<32))goto jughc;goto vGGMc2;D2VDT2:X3V8j4++;goto
+Ai0te;vGGMc2:{if(!(J7Iki4->QEvwb3[X3V8j4]||J7Iki4->jyElQ3[X3V8j4]))goto
+tUjEn4;uWETN2(J7Iki4,X3V8j4);tUjEn4:;}goto D2VDT2;jughc:;}q6r1b3(
+J7Iki4);Nq5gq(J7Iki4);}R1VyQ:;}switch(YzCy24->V9ej93.jf4g9){case
+GrYG41:;BDstt2(J7Iki4,Vmiuc3(Mrgr62));J7Iki4->RAwCl1=0;goto pTM6S;
+case mcEID3:;BDstt2(J7Iki4,Vmiuc3(nij914));J7Iki4->RAwCl1=1;goto pTM6S
+;case BICIc2:;BDstt2(J7Iki4,Vmiuc3(eR4Uq4));goto pTM6S;case vDEWd3:;{
+X3V8j4=0;SgaJH4:if(!(X3V8j4<32))goto nxbQg1;goto pmY4;hAxq53:X3V8j4++
+;goto SgaJH4;pmY4:{unsigned Ae0Cg2;{if(!(J7Iki4->y8QlL[X3V8j4]))goto
+_JRZK1;Ae0Cg2=qKhEV3;goto uC7LN2;_JRZK1:;Ae0Cg2=WdqxE;uC7LN2:;}{if(!(
+J7Iki4->LVAok1[X3V8j4]))goto W5FZB2;Ae0Cg2|=EbhBp3;goto qC85k4;W5FZB2
+:;Ae0Cg2|=MEYPf1|AC5eU1;qC85k4:;}J7Iki4->pBSeu3.TIQMZ1[X3V8j4].fbiOR4
+.V9ej93.MLZ_Y=Ae0Cg2;}goto hAxq53;nxbQg1:;}aez0x4(J7Iki4);break;case
+twfX61:;{X3V8j4=0;Ov6y41:if(!(X3V8j4<32))goto y9rQG2;goto XtsC;TBUSX1
+:X3V8j4++;goto Ov6y41;XtsC:J7Iki4->pBSeu3.TIQMZ1[X3V8j4].fbiOR4.
+V9ej93.MLZ_Y=WdqxE|MEYPf1|AC5eU1;goto TBUSX1;y9rQG2:;}aez0x4(J7Iki4);
+break;case ErtY2:;{X3V8j4=0;sSbPo1:if(!(X3V8j4<32))goto FQ0Sx;goto
+Nufn25;mM2wb4:X3V8j4++;goto sSbPo1;Nufn25:{unsigned Ae0Cg2;tJ1Kb4*
+mlK913;mlK913=MiEVK2(J7Iki4,X3V8j4);J7Iki4->pBSeu3.TIQMZ1[X3V8j4].
+Zg2fI4=mlK913?mlK913->b_7cQ4:J7Iki4->DDAs81[X3V8j4]->b_7cQ4;J7Iki4->
+y8QlL[X3V8j4]=J7Iki4->jyElQ3[X3V8j4];{if(!(J7Iki4->jyElQ3[X3V8j4]))goto
+UuhYR2;{Ae0Cg2=w9B8P4;J7Iki4->pBSeu3.lPHda[X3V8j4]=J7Iki4->pBSeu3.
+TIQMZ1[X3V8j4].Zg2fI4;J7Iki4->p3Xgs1|=k6bCf4[X3V8j4];}goto a7Wgv;
+UuhYR2:;Ae0Cg2=WdqxE;a7Wgv:;}mlK913=GV2iC4(J7Iki4,X3V8j4);J7Iki4->
+pBSeu3.TIQMZ1[X3V8j4].PTDns3=mlK913?mlK913->b_7cQ4:J7Iki4->nvqbt[
+X3V8j4]->b_7cQ4;J7Iki4->LVAok1[X3V8j4]=J7Iki4->QEvwb3[X3V8j4];{if(!(
+J7Iki4->QEvwb3[X3V8j4]))goto zKRWY3;{Ae0Cg2|=RQJum;J7Iki4->pBSeu3.
+lN6oU2[X3V8j4]=J7Iki4->pBSeu3.TIQMZ1[X3V8j4].PTDns3;J7Iki4->vuXVj1|=
+k6bCf4[X3V8j4];}goto tb4GG3;zKRWY3:;Ae0Cg2|=MEYPf1|AC5eU1;tb4GG3:;}
+J7Iki4->pBSeu3.TIQMZ1[X3V8j4].fbiOR4.V9ej93.MLZ_Y=Ae0Cg2;}goto mM2wb4
+;FQ0Sx:;}break;case 0:goto b4O7W4;default:;;goto b4O7W4;}BDstt2(
+J7Iki4,ixItX3());goto pTM6S;}stLrO1:;}}goto b4O7W4;RXkRU4:;}pTM6S:{if
+(!(J7Iki4->ZU75i4==0))goto SaEs82;fRgzh2(J7Iki4);SaEs82:;}}T4nbC1:;}
+break;case og0xA1:;J7Iki4->osQ5M=mHM361;rwHIy4(J7Iki4);{if(!(J7Iki4->
+SpbRG4.Rc7LY4))goto lZCyu2;{{if(!(J7Iki4->SpbRG4.Rc7LY4->a02Gz4))goto
+f3g0r;J7Iki4->SpbRG4.Rc7LY4->a02Gz4->j5MYx|=04ul;f3g0r:;}o6C8s2(
+J7Iki4);}lZCyu2:;}break;case avVsj3:;J7Iki4->osQ5M=mHM361;G9xz03(
+J7Iki4);{if(!(J7Iki4->SpbRG4.Rc7LY4))goto uRG2Q2;{{if(!(J7Iki4->
+SpbRG4.Rc7LY4->a02Gz4))goto BFjX54;J7Iki4->SpbRG4.Rc7LY4->a02Gz4->
+j5MYx|=8ul;BFjX54:;}o6C8s2(J7Iki4);}uRG2Q2:;}break;case ZuiJe3:goto
+FH0RH2;case j0BDS4:goto FH0RH2;default:;;};}goto KE2tn1;h9opJ3:;}
+FH0RH2:J7Iki4->XlFgj4--;}goto wyazp4;Zo_mV2:;{;}wyazp4:;}}
+__forceinline static void FaLJH2(kWMzp1*J7Iki4,unsigned QDNE6){{if(!(
+J7Iki4->osQ5M==ZuiJe3))goto lWjhe1;{{if(!(__builtin_expect((QDNE6&(
+GLE_s4|l9wtw1|t57WF3))!=t57WF3,0)))goto UCS581;{;J7Iki4->osQ5M=og0xA1
+;}goto B94ig3;UCS581:;{;J7Iki4->osQ5M=QIA5L;}B94ig3:;}}goto r49eY4;
+lWjhe1:;{;{if(!(__builtin_expect(QDNE6&l9wtw1,01)))goto jeGMS4;{;
+J7Iki4->osQ5M=QIA5L;}goto mJiY13;jeGMS4:;{if(!(QDNE6&GLE_s4))goto
+MpGe72;{;J7Iki4->osQ5M=og0xA1;}goto yPKAR1;MpGe72:;{;__asm __volatile
+(""::);J7Iki4->v6D2d3->bPudJ3=0;__asm __volatile(""::);eKIU_4();
+J7Iki4->v6D2d3->MDSlK2=GLE_s4|l9wtw1|t57WF3;__asm __volatile(""::);
+eKIU_4();J7Iki4->osQ5M=avVsj3;}yPKAR1:;}mJiY13:;}}r49eY4:;}LzuvP2(
+J7Iki4);}static enum cXuz63 wP7Tk3(kWMzp1*J7Iki4){unsigned TR6nX1,
+CDXHr1=0;unsigned long JhCor3;__asm __volatile(""::);J7Iki4->v6D2d3->
+bPudJ3=0;J7Iki4->v6D2d3->MDSlK2=~0u;{if(!(J7Iki4->v6D2d3->MDSlK2&
+t57WF3))goto j2av14;{;return MIvbE3;}j2av14:;}{TR6nX1=0;GjxqC4:if(!(
+TR6nX1<041))goto RXfqm;goto V6G5Z1;qeXeK:TR6nX1++;goto GjxqC4;V6G5Z1:
+{unsigned JbQTW=0;register unsigned long(CEoOx4);__asm __volatile(
+"pushfl; cli; popl %0":"=r"(CEoOx4));;__asm __volatile(""::);J7Iki4->
+v6D2d3->bPudJ3=15597584;{xaiXa:{__asm __volatile(""::);{if(!(J7Iki4->
+v6D2d3->MDSlK2&t57WF3))goto v3xAt2;goto fZpYx3;goto Nubfw;v3xAt2:;
+JbQTW++;Nubfw:;}}if(JbQTW<32)goto xaiXa;fZpYx3:;};J7Iki4->v6D2d3->
+bPudJ3=0;J7Iki4->v6D2d3->MDSlK2=t57WF3;__asm __volatile(""::);__asm
+__volatile("pushl %0; popfl": :"g"(CEoOx4));;{if(!(JbQTW<4||JbQTW>=32
+))goto kIw4A;{if(!(CDXHr1>02))goto hMOtf2;{;return aCIS84;}goto n9RMY
+;hMOtf2:;CDXHr1++;n9RMY:;}goto x3hmy2;kIw4A:;CDXHr1=0;x3hmy2:;}{if(!(
+J7Iki4->v6D2d3->MDSlK2&t57WF3))goto hPE_d2;{;return MIvbE3;}hPE_d2:;}
+}goto qeXeK;RXfqm:;}JhCor3=ZKJvS1(0,0,0,0,0,KahAO3);{if(!(!wBvfo4(
+J7Iki4,JhCor3)))goto RyvaA1;{;{if(!(!wBvfo4(J7Iki4,JhCor3)))goto
+Bi1jt2;{;{if(!(!wBvfo4(J7Iki4,JhCor3)))goto n2CnY;{;return FdyFT1;}
+n2CnY:;}}Bi1jt2:;}}RyvaA1:;}JhCor3=ZKJvS1(0,0,0,0,1,KahAO3);{if(!(!
+wBvfo4(J7Iki4,JhCor3)))goto UDBom4;{;{if(!(!wBvfo4(J7Iki4,JhCor3)))goto
+LBIN_3;{;{if(!(!wBvfo4(J7Iki4,JhCor3)))goto FYh3J2;{;return FdyFT1;}
+FYh3J2:;}}LBIN_3:;}}UDBom4:;}return tXFTB4;}static enum cXuz63 Pp5_4(
+kWMzp1*J7Iki4){unsigned long JhCor3;J7Iki4->v6D2d3->nCdFc.V9ej93.
+ZvgAS1|=01;JhCor3=Vmiuc3(Mrgr62);{if(!(!wBvfo4(J7Iki4,JhCor3)))goto
+VZV_c3;{;{if(!(!wBvfo4(J7Iki4,JhCor3)))goto NMePf2;{;return FdyFT1;}
+NMePf2:;}}VZV_c3:;}P3rGX3(J7Iki4,04);J7Iki4->v6D2d3->nCdFc.V9ej93.
+KfMd1&=0;q6r1b3(J7Iki4);JhCor3=ixItX3();{if(!(!wBvfo4(J7Iki4,JhCor3)))goto
+ODnGX4;{;{if(!(!wBvfo4(J7Iki4,JhCor3)))goto ZLV2r3;{;return FdyFT1;}
+ZLV2r3:;}}ODnGX4:;}P3rGX3(J7Iki4,04);fRgzh2(J7Iki4);return tXFTB4;}
+__forceinline static int DIsNz1(kWMzp1*J7Iki4,unsigned LigBO2){
+unsigned HAuYS2=0;unsigned DhumT2=0;DCf0T2*esWTk2;Os1bA3*a02Gz4;
+tJ1Kb4*nusR52;;;;esWTk2=J7Iki4->Cga1V[LigBO2].Rc7LY4;a02Gz4=esWTk2->
+a02Gz4;;;nusR52=esWTk2->NpyOc1.GEbPX4;{if(!(nusR52!=0))goto HX6TW1;{{
+AroFR4:if(!(01))goto w9YaE;{;{if(!(nusR52->_8WVQ2.zACHc3._8WVQ2.
+V9ej93.LFcjb))goto XcyvD;{DhumT2++;HAuYS2+=nusR52->_8WVQ2.zACHc3.
+_8WVQ2.V9ej93.LFcjb;}XcyvD:;}{if(!(nusR52->_8WVQ2.zACHc3._8WVQ2.
+V9ej93.zJyAP1))goto Kybko3;goto w9YaE;Kybko3:;};;nusR52=r3CcP2(J7Iki4
+,nusR52->_8WVQ2.zACHc3.Lrwko2);;}goto AroFR4;w9YaE:;}}HX6TW1:;};{
+MR2SE3:if(!(DhumT2<010||HAuYS2<1024))goto Z1xzI4;{unsigned Q1iXV3,
+wnE5k3;{Jnrtb2:if(!(esWTk2->NpyOc1.Rqv1w3>=a02Gz4->NpyOc1.xRh664.
+r9yJB))goto RSzFw3;{esWTk2=esWTk2->NpyOc1.OXCDa4;{if(!(esWTk2==0))goto
+aIFlj3;{;return 01;}aIFlj3:;};a02Gz4=esWTk2->a02Gz4;;}goto Jnrtb2;
+RSzFw3:;}nusR52=auwjC(J7Iki4,esWTk2);{if(!(__builtin_expect(nusR52==0
+,0)))goto H5Gor4;{{if(!(esWTk2->NpyOc1.JI0PC2))goto pcvjC1;{;}pcvjC1:
+;}{if(!(J7Iki4->Cga1V[LigBO2].Rc7LY4->NpyOc1.GEbPX4==0))goto CVYbb;{
+return 0;}goto xP2Rg3;CVYbb:;{return 01;}xP2Rg3:;}}H5Gor4:;}wnE5k3=
+a02Gz4->NpyOc1.xRh664.r9yJB-esWTk2->NpyOc1.Rqv1w3;{if(!(wnE5k3>017774
+))goto krOiU3;{if(!(wnE5k3>=017774*0x2))goto Gk2f03;Q1iXV3=017774;
+goto dKE2i2;Gk2f03:;Q1iXV3=wnE5k3/2&~3u;dKE2i2:;}goto _9kGv4;krOiU3:;
+Q1iXV3=wnE5k3;_9kGv4:;};nusR52->_8WVQ2.xFtBP._8WVQ2.BucKo=
+1073741824ul|536870912ul|(Q1iXV3<<16u);;nusR52->_8WVQ2.zACHc3.veMrO=
+a02Gz4->NpyOc1.xRh664.OWsiH1+esWTk2->NpyOc1.Rqv1w3;esWTk2->NpyOc1.
+Rqv1w3+=Q1iXV3;{if(!(esWTk2->NpyOc1.Rqv1w3>=a02Gz4->NpyOc1.xRh664.
+r9yJB))goto DOjJH3;{{if(!(a02Gz4->QvZLK&32768u))goto CRbKo2;nusR52->
+_8WVQ2.xFtBP._8WVQ2.BucKo|=2048ul;CRbKo2:;}{if(!((J7Iki4->tYsSE2[
+LigBO2]&128ul)!=0||(a02Gz4->QvZLK&16384u)!=0))goto icC2Q1;{nusR52->
+_8WVQ2.xFtBP._8WVQ2.BucKo|=2147483648ul;{if(!((J7Iki4->tYsSE2[LigBO2]
+&017ul)==0))goto zeNT65;nusR52->_8WVQ2.xFtBP._8WVQ2.BucKo|=01;zeNT65:
+;}}icC2Q1:;}}DOjJH3:;}{if(!(esWTk2->NpyOc1.GEbPX4==0))goto Dz6V81;{;
+esWTk2->NpyOc1.GEbPX4=nusR52;}goto paxXI3;Dz6V81:;{;J7Iki4->nvqbt[
+LigBO2]->OXCDa4=nusR52;}paxXI3:;}XNL6O3(J7Iki4,LigBO2,nusR52);esWTk2
+->NpyOc1.JI0PC2=nusR52;HAuYS2+=Q1iXV3;DhumT2++;}goto MR2SE3;Z1xzI4:;}
+return 01;}__noinline static tJ1Kb4*GV2iC4(kWMzp1*J7Iki4,unsigned
+LigBO2){{if(!(J7Iki4->Cga1V[LigBO2].Rc7LY4==0))goto hmPCQ4;return 0;
+hmPCQ4:;}{if(!(!DIsNz1(J7Iki4,LigBO2)))goto _tFeK1;{J7Iki4->Cga1V[
+LigBO2].Rc7LY4->a02Gz4->j5MYx|=1ul;{if(!(J7Iki4->YRHFy->cJw4g2))goto
+E4BIm1;{QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,
+LigBO2,0x1ul);h2LrH3(&J7Iki4->h2LrH3);;}E4BIm1:;}JFrCi4(J7Iki4,LigBO2
+);return 0;}_tFeK1:;}return J7Iki4->Cga1V[LigBO2].Rc7LY4->NpyOc1.
+GEbPX4;}__noinline static void pxiAh4(kWMzp1*J7Iki4,int LigBO2){;;{if
+(!(LigBO2>=0))goto u8Ob41;J7Iki4->vuXVj1|=k6bCf4[LigBO2];goto NClkL3;
+u8Ob41:;LigBO2=0;NClkL3:;}{if(!(J7Iki4->p_EZu3==0))goto oiRcs2;{
+J7Iki4->p_EZu3=01;{FS3704:{;{if(!(J7Iki4->vuXVj1&k6bCf4[LigBO2]))goto
+Jx3ko4;{unsigned long WcLvp4;tJ1Kb4*mlK913;tJ1Kb4*zfQZk=J7Iki4->nvqbt
+[LigBO2];;;mlK913=GV2iC4(J7Iki4,LigBO2);WcLvp4=J7Iki4->pBSeu3.lN6oU2[
+LigBO2];;{if(!(mlK913==0))goto diBnr1;{;;zfQZk->_8WVQ2.xFtBP._8WVQ2.
+BucKo=2147483648ul|1073741824ul;{if(!(WcLvp4!=zfQZk->b_7cQ4))goto
+t11ih;{;J7Iki4->pBSeu3.TIQMZ1[LigBO2].PTDns3=zfQZk->b_7cQ4;{if(!(
+J7Iki4->LVAok1[LigBO2]))goto VYzht3;{unsigned QvZLK=gSQHi;fOVyT4(
+J7Iki4,LigBO2,QvZLK);}VYzht3:;}}t11ih:;}goto FH0RH2;}diBnr1:;};J7Iki4
+->pBSeu3.TIQMZ1[LigBO2].PTDns3=mlK913->b_7cQ4;{if(!(WcLvp4))goto
+R7mNX2;{tJ1Kb4*agWoi2, *nusR52;{if(!(WcLvp4==mlK913->b_7cQ4))goto
+sJhXO1;{;goto FH0RH2;}sJhXO1:;}agWoi2=r3CcP2(J7Iki4,WcLvp4);{if(!(
+mlK913->XT1xI3==agWoi2))goto c2zve;{{if(!(agWoi2->_8WVQ2.zACHc3.
+Lrwko2==mlK913->b_7cQ4))goto aOLhV;{;goto FH0RH2;}goto _a4Qb4;aOLhV:;
+{;mlK913->XT1xI3=0;}_a4Qb4:;}}c2zve:;}{if(!(mlK913->XT1xI3!=0))goto
+hd8Id2;{nusR52=mlK913;;{THoFe2:if(!(!nusR52->_8WVQ2.zACHc3._8WVQ2.
+V9ej93.zJyAP1))goto gss4O;{tJ1Kb4*OXCDa4;{if(!(nusR52->_8WVQ2.zACHc3.
+Lrwko2==agWoi2->b_7cQ4))goto K1B_B1;{;goto FH0RH2;}K1B_B1:;}OXCDa4=
+r3CcP2(J7Iki4,nusR52->_8WVQ2.zACHc3.Lrwko2);{if(!(OXCDa4->XT1xI3!=
+nusR52))goto jRmCW3;{;goto gss4O;}jRmCW3:;};nusR52=OXCDa4;;}goto
+THoFe2;gss4O:;}}goto REtHu4;hd8Id2:;{;}REtHu4:;}agWoi2->XT1xI3=0;
+nusR52=r3CcP2(J7Iki4,agWoi2->_8WVQ2.zACHc3.Lrwko2);nusR52->XT1xI3=0;}
+R7mNX2:;}{if(!(mlK913!=J7Iki4->nvqbt[LigBO2]))goto ekrSG;XNL6O3(
+J7Iki4,LigBO2,mlK913);ekrSG:;}{if(!(J7Iki4->LVAok1[LigBO2]))goto
+gbJeJ4;{{if(!(WcLvp4!=zfQZk->b_7cQ4))goto KL7cF;{fOVyT4(J7Iki4,LigBO2
+,nIaSt);}KL7cF:;}}goto MPkCL2;gbJeJ4:;{mlK913->XT1xI3=mlK913;}MPkCL2:
+;}FH0RH2:J7Iki4->vuXVj1&=bHAl_[LigBO2];}Jx3ko4:;}LigBO2=(LigBO2+01)%
+32;}if(J7Iki4->vuXVj1)goto FS3704;};J7Iki4->p_EZu3=0;;}oiRcs2:;}}
+__forceinline static void GhexM2(kWMzp1*J7Iki4,unsigned LigBO2,
+unsigned FUHcS4){;;J7Iki4->NcXyY1[LigBO2]|=FUHcS4;J7Iki4->ZWSDs2.
+GiK3J1|=k6bCf4[LigBO2];;}__noinline static void xk8cK4(kWMzp1*J7Iki4){
+unsigned LigBO2,Q1iXV3,j5MYx,vUYb92;unsigned long WcLvp4;DCf0T2*
+esWTk2;tJ1Kb4*nusR52;{vUYb92=0;o8ozS1:if(!(vUYb92<(256*2) *03))goto
+evktq4;goto CTqht4;T21Gw2:vUYb92++;goto o8ozS1;CTqht4:{aizpO2 yzaNE1;
+{if(!(8))goto WDANZ4;{unsigned Wa6IF1=J7Iki4->xzeKf3+(256*02)-8;;{if(
+!(__builtin_expect(J7Iki4->jXwP42[Wa6IF1%(256*0x2)]!=0,0)))goto rSBLa2
+;{J7Iki4->vuXVj1=0xFFFFFFFFul>>(32-32);{if(!(J7Iki4->YRHFy->cJw4g2))goto
+b6tLK3;{QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,
+-1,262144ul);h2LrH3(&J7Iki4->h2LrH3);;}b6tLK3:;}}rSBLa2:;}}WDANZ4:;}
+yzaNE1.BucKo=NHDsK3(((long volatile* )(&J7Iki4->jXwP42[J7Iki4->xzeKf3
+])),0);{if(!(yzaNE1.BucKo==0))goto H1k4E1;{{if(!(vUYb92==0))goto
+sKHDc3;{unsigned X3V8j4=J7Iki4->xzeKf3;{tF9n33:{X3V8j4=(X3V8j4+0x1)%(
+256*2);yzaNE1.BucKo=NHDsK3(((long volatile* )(&J7Iki4->jXwP42[X3V8j4]
+)),0);{if(!(yzaNE1.BucKo))goto l6FLs;{J7Iki4->xzeKf3=X3V8j4;goto
+qWRLr4;}l6FLs:;}}if(X3V8j4!=J7Iki4->xzeKf3)goto tF9n33;};}sKHDc3:;}
+goto evktq4;}H1k4E1:;};qWRLr4:;J7Iki4->xzeKf3=(J7Iki4->xzeKf3+01)%(
+256*0x2);{if(!(__builtin_expect(yzaNE1.V9ej93.EVEnZ3!=e71Qn1,0)))goto
+DPrk91;{;;goto T21Gw2;}DPrk91:;};LigBO2=yzaNE1.V9ej93.ZgZeQ;{if(!((
+unsigned)32<(unsigned)32&&LigBO2>=32))goto W1Jla4;{;goto T21Gw2;}
+W1Jla4:;}J7Iki4->vuXVj1|=k6bCf4[LigBO2];;WcLvp4=J7Iki4->pBSeu3.lN6oU2
+[LigBO2];;esWTk2=J7Iki4->Cga1V[LigBO2].Rc7LY4;{if(!(__builtin_expect(
+yzaNE1.V9ej93.rx55l1||yzaNE1.V9ej93.nL0K52,0)))goto aVC_r1;{j5MYx=0;{
+if(!(yzaNE1.V9ej93.rx55l1))goto v8BDc2;{;j5MYx|=0x2ul;}goto aLsUC;
+v8BDc2:;{if(!(yzaNE1.V9ej93.aD1CI2&&yzaNE1.V9ej93.nL0K52))goto Id_AA4
+;{;j5MYx|=32ul;}goto fTG_T4;Id_AA4:;{;j5MYx|=64ul;}fTG_T4:;}aLsUC:;}{
+if(!(esWTk2))goto M2BM14;esWTk2->a02Gz4->j5MYx|=j5MYx;M2BM14:;}GhexM2
+(J7Iki4,LigBO2,j5MYx);}aVC_r1:;}{if(!(__builtin_expect(!yzaNE1.V9ej93
+.VlZ2k,0)))goto kLvtw2;{goto T21Gw2;}kLvtw2:;}{if(!(__builtin_expect(
+esWTk2==0,0)))goto EHOiM1;{goto DL14H3;}EHOiM1:;}nusR52=esWTk2->
+NpyOc1.GEbPX4;;{if(!(__builtin_expect(nusR52==0,0)))goto vnlQf3;goto
+DL14H3;vnlQf3:;}Q1iXV3=nusR52->_8WVQ2.xFtBP._8WVQ2.V9ej93.LFcjb;{if(!
+(nusR52->_8WVQ2.xFtBP._8WVQ2.V9ej93.XJ0a1))goto msB823;Q1iXV3+=01u<<
+13;msB823:;}esWTk2->a02Gz4->NpyOc1.xRh664.YkQWU+=Q1iXV3;{if(!(esWTk2
+->a02Gz4->NpyOc1.xRh664.YkQWU>=esWTk2->a02Gz4->NpyOc1.xRh664.r9yJB))goto
+nOhE62;{;;;;JFrCi4(J7Iki4,LigBO2);}goto YHU1I;nOhE62:;{esWTk2->NpyOc1
+.GEbPX4=((esWTk2->NpyOc1.GEbPX4))->OXCDa4;{if(!(esWTk2->NpyOc1.GEbPX4
+==0))goto hlex91;{esWTk2->NpyOc1.JI0PC2=0;}hlex91:;}}YHU1I:;}DL14H3:;
+J7Iki4->vuXVj1|=k6bCf4[LigBO2];}goto T21Gw2;evktq4:;}pxiAh4(J7Iki4,-
+01);}static unsigned __fastcall _G6sW2(iTAD3 yjr7l4){unsigned j5MYx=0
+;{if(!(yjr7l4.V9ej93.e6VgP3))goto ZOTHr3;j5MYx|=1024ul;ZOTHr3:;}{if(!
+(yjr7l4.V9ej93.vkd5K4))goto fdzEO1;j5MYx|=2048ul;fdzEO1:;}{if(!(
+yjr7l4.V9ej93.GOOtv4))goto nnNc14;j5MYx|=512ul;nnNc14:;}{if(!(yjr7l4.
+V9ej93.lMy6s))goto kz_Xg4;j5MYx|=4096ul;kz_Xg4:;}{if(!(yjr7l4.V9ej93.
+xtBMy2))goto j7dnD4;j5MYx|=8192ul;j7dnD4:;}{if(!(yjr7l4.V9ej93.UvKJh))goto
+jLuYc;j5MYx|=256ul;jLuYc:;}{if(!(yjr7l4.V9ej93.rcbUq3))goto it1GH;
+j5MYx|=128ul;it1GH:;}{if(!(j5MYx))goto ItGZm3;{;}ItGZm3:;}return j5MYx
+;}static unsigned __fastcall bYp915(kWMzp1*J7Iki4,unsigned LigBO2,
+uKg3m2 yzaNE1){unsigned bWMg15;tJ1Kb4*nusR52;unsigned j5MYx=0;;{if(!(
+__builtin_expect(yzaNE1.V9ej93.rx55l1||yzaNE1.V9ej93.e6VgP3,0)))goto
+AzKhe;{{if(!(yzaNE1.V9ej93.rx55l1))goto PZiAS2;{j5MYx|=2ul;;}PZiAS2:;
+}{if(!(yzaNE1.V9ej93.e6VgP3))goto uUJBR;{j5MYx|=1024ul;;}uUJBR:;}}
+AzKhe:;}nusR52=r3CcP2(J7Iki4,J7Iki4->pBSeu3.TIQMZ1[LigBO2].Zg2fI4);
+bWMg15=0;{tK6lL1:{{if(!(nusR52==J7Iki4->DDAs81[LigBO2]))goto xGEHY2;
+goto vhBTJ4;xGEHY2:;}{if(!(nusR52->_8WVQ2.hRUi43.uwYQG1.V9ej93.Ha7yv3
+))goto RYuAa2;j5MYx|=_G6sW2(nusR52->_8WVQ2.hRUi43.uwYQG1);RYuAa2:;}
+nusR52=r3CcP2(J7Iki4,nusR52->_8WVQ2.zACHc3.Lrwko2);;}if(nusR52->
+b_7cQ4!=J7Iki4->pBSeu3.lPHda[LigBO2]&&nusR52->b_7cQ4!=nusR52->_8WVQ2.
+zACHc3.Lrwko2)goto tK6lL1;vhBTJ4:;};return j5MYx;}static void smyqr(
+kWMzp1*J7Iki4,unsigned LigBO2){iTAD3 yjr7l4;yjr7l4.RZWDZ2=NHDsK3(((
+long volatile* )(&J7Iki4->DDAs81[LigBO2]->_8WVQ2.hRUi43.uwYQG1.RZWDZ2
+)),0);{if(!(yjr7l4.RZWDZ2&1073741824ul))goto WJral3;{unsigned j5MYx=
+_G6sW2(yjr7l4);{if(!(yjr7l4.RZWDZ2&(2147483648ul|536805376ul)))goto
+yxhJn3;j5MYx|=128ul;yxhJn3:;}{if(!(j5MYx))goto h3Uf91;GhexM2(J7Iki4,
+LigBO2,j5MYx);h3Uf91:;}}WJral3:;}}__noinline static void XmIKi3(
+kWMzp1*J7Iki4){unsigned LigBO2,j5MYx,vUYb92;unsigned long BC6Zd3;
+DCf0T2*esWTk2;tJ1Kb4*nusR52;int AErNL3=0;{vUYb92=0;LowUb:if(!(vUYb92<
+(256*2) *0x3))goto yTR5N3;goto yJEe8;lpVV64:vUYb92++;goto LowUb;yJEe8
+:{uKg3m2 yzaNE1;{if(!(0x8))goto wwmRl3;{unsigned Wa6IF1=J7Iki4->
+UXeiG3+(256*0x2)-0x8;;{if(!(__builtin_expect(J7Iki4->Hqc15[Wa6IF1%(
+256*0x2)]!=0,0)))goto iY9cs3;{J7Iki4->p3Xgs1=0xFFFFFFFFul>>(32-32);{
+if(!(J7Iki4->YRHFy->cJw4g2))goto yJqdA4;{QD7sk4(&J7Iki4->h2LrH3);;
+J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,-01,524288ul);h2LrH3(&J7Iki4->
+h2LrH3);;}yJqdA4:;}}iY9cs3:;}}wwmRl3:;}yzaNE1.BucKo=NHDsK3(((long
+volatile* )(&J7Iki4->Hqc15[J7Iki4->UXeiG3])),0);{if(!(yzaNE1.BucKo==0
+))goto Ltkwl1;{{if(!(vUYb92==0))goto mux6R2;{unsigned X3V8j4=J7Iki4->
+UXeiG3;{jF1xt:{X3V8j4=(X3V8j4+01)%(256*2);yzaNE1.BucKo=NHDsK3(((long
+volatile* )(&J7Iki4->Hqc15[X3V8j4])),0);{if(!(yzaNE1.BucKo))goto
+C3fIc4;{J7Iki4->UXeiG3=X3V8j4;goto qWRLr4;}C3fIc4:;}}if(X3V8j4!=
+J7Iki4->UXeiG3)goto jF1xt;};}mux6R2:;}{mglUF3:if(!(__builtin_expect(
+AErNL3,0)))goto qRHWB3;{eKIU_4();{LigBO2=0;BTZCK4:if(!(LigBO2<32))goto
+oz88v2;goto q2hO6;jVIjf1:LigBO2++;goto BTZCK4;q2hO6:{esWTk2=J7Iki4->
+UyRVB4[LigBO2].Rc7LY4;{if(!(esWTk2))goto B3FTZ;{nusR52=esWTk2->NpyOc1
+.GEbPX4;{if(!(nusR52&&nusR52->_8WVQ2.hRUi43.uwYQG1.V9ej93.Ha7yv3&&(
+BC6Zd3=J7Iki4->pBSeu3.lPHda[LigBO2])!=nusR52->b_7cQ4))goto EpEc3;{
+eKIU_4();yzaNE1.BucKo=NHDsK3(((long volatile* )(&J7Iki4->Hqc15[J7Iki4
+->UXeiG3])),0);{if(!(yzaNE1.BucKo))goto tiFZ71;goto qWRLr4;tiFZ71:;};
+goto PQH2r4;}EpEc3:;}}B3FTZ:;}}goto jVIjf1;oz88v2:;}--AErNL3;}goto
+mglUF3;qRHWB3:;}goto yTR5N3;}Ltkwl1:;};qWRLr4:J7Iki4->UXeiG3=(J7Iki4
+->UXeiG3+01)%(256*02);{if(!(__builtin_expect(yzaNE1.V9ej93.EVEnZ3!=
+kkV5s1,0)))goto V0dyY3;{;;goto lpVV64;}V0dyY3:;};LigBO2=yzaNE1.V9ej93
+.ZgZeQ;{if(!((unsigned)32<(unsigned)32&&LigBO2>=32))goto chtI25;{;
+goto lpVV64;}chtI25:;};BC6Zd3=J7Iki4->pBSeu3.lPHda[LigBO2];PQH2r4:{if
+(!(__builtin_expect(BC6Zd3==0,0)))goto TlNLh4;{zXUbq2:j5MYx=bYp915(
+J7Iki4,LigBO2,yzaNE1);{if(!(j5MYx))goto M32Pg1;GhexM2(J7Iki4,LigBO2,
+j5MYx);M32Pg1:;}goto DL14H3;}TlNLh4:;}{if(!(J7Iki4->y8QlL[LigBO2]))goto
+Q3_qn3;smyqr(J7Iki4,LigBO2);Q3_qn3:;}esWTk2=J7Iki4->UyRVB4[LigBO2].
+Rc7LY4;{if(!(__builtin_expect(esWTk2==0,0)))goto sfDyk;{{if(!(BC6Zd3
+==J7Iki4->DDAs81[LigBO2]->b_7cQ4))goto iaTgs3;{;goto lpVV64;}iaTgs3:;
+};goto zXUbq2;}sfDyk:;}nusR52=esWTk2->NpyOc1.GEbPX4;{if(!((nusR52==0)))goto
+vj2bt2;{goto zXUbq2;}vj2bt2:;};{if(!(__builtin_expect(yzaNE1.V9ej93.
+rx55l1||yzaNE1.V9ej93.e6VgP3,0)))goto obcrI4;{j5MYx=0;{if(!(yzaNE1.
+V9ej93.rx55l1))goto jh_B04;{j5MYx|=0x2ul;;}jh_B04:;}{if(!(yzaNE1.
+V9ej93.e6VgP3))goto sfc355;{j5MYx|=1024ul;;}sfc355:;}{if(!(j5MYx))goto
+DkFMT2;GhexM2(J7Iki4,LigBO2,j5MYx);DkFMT2:;}}obcrI4:;}{if(!(
+__builtin_expect(!yzaNE1.V9ej93.VlZ2k,0)))goto gDrf92;{;goto lpVV64;}
+gDrf92:;};{if(!(!nusR52->_8WVQ2.hRUi43.uwYQG1.V9ej93.Ha7yv3))goto
+kRds75;{;goto DL14H3;}kRds75:;}{if(!(__builtin_expect(nusR52->b_7cQ4
+==BC6Zd3,0)))goto RgmKU4;{eKIU_4();{if(!(__builtin_expect(BC6Zd3==
+J7Iki4->pBSeu3.lPHda[LigBO2],0)))goto wZuv21;{AErNL3++;goto lpVV64;}
+wZuv21:;}}RgmKU4:;}esWTk2->a02Gz4->j5MYx|=_G6sW2(nusR52->_8WVQ2.
+hRUi43.uwYQG1);esWTk2->a02Gz4->NpyOc1.qXXnD2.USKhR2+=nusR52->_8WVQ2.
+hRUi43.uwYQG1.V9ej93.uEltX4;{if(!(nusR52->_8WVQ2.hRUi43.uwYQG1.V9ej93
+.dYe4I2))goto _crCW2;{;;esWTk2->a02Gz4->NpyOc1.qXXnD2.WMRMP4=1;KQKqV1
+(J7Iki4,LigBO2);{if(!(nusR52->OXCDa4))goto Y4CDu;{{if(!(J7Iki4->
+UyRVB4[LigBO2].Rc7LY4!=0&&(J7Iki4->tYsSE2[LigBO2]&32ul)!=0))goto
+vzO1f3;{GhexM2(J7Iki4,LigBO2,16384ul);J7Iki4->UyRVB4[LigBO2].Rc7LY4->
+a02Gz4->j5MYx|=16384ul;}vzO1f3:;}}Y4CDu:;}}goto k2iza1;_crCW2:;{if(!(
+esWTk2->a02Gz4->NpyOc1.qXXnD2.USKhR2>=esWTk2->a02Gz4->NpyOc1.qXXnD2.
+r_RoY4))goto R67oM;{{if(!((J7Iki4->tYsSE2[LigBO2]&64ul)!=0))goto rAK0m
+;{GhexM2(J7Iki4,LigBO2,32768ul);esWTk2->a02Gz4->j5MYx|=32768ul;}rAK0m
+:;};;;;KQKqV1(J7Iki4,LigBO2);}goto KgiuB1;R67oM:;{esWTk2->NpyOc1.
+GEbPX4=esWTk2->NpyOc1.GEbPX4->OXCDa4;{if(!(esWTk2->NpyOc1.GEbPX4==0))goto
+Qk17R1;{esWTk2->NpyOc1.JI0PC2=0;;}Qk17R1:;}FtjYA4(J7Iki4,nusR52);}
+KgiuB1:;}k2iza1:;}DL14H3:;J7Iki4->p3Xgs1|=k6bCf4[LigBO2];}goto lpVV64
+;yTR5N3:;}sPUN83(J7Iki4,-0x1);}__forceinline static int DiWl81(kWMzp1
+ *J7Iki4,unsigned LigBO2){DCf0T2*esWTk2;Os1bA3*a02Gz4;tJ1Kb4*yoLEn3=0
+;tJ1Kb4*nusR52;unsigned fjJFe=0;unsigned iTzqw4=0;;;;esWTk2=J7Iki4->
+UyRVB4[LigBO2].Rc7LY4;a02Gz4=J7Iki4->UyRVB4[LigBO2].Rc7LY4->a02Gz4;;
+nusR52=esWTk2->NpyOc1.GEbPX4;{if(!(nusR52!=0))goto VfGIc3;{xliFy2:if(
+!(1))goto ounCU4;{;iTzqw4++;fjJFe+=nusR52->_8WVQ2.zACHc3._8WVQ2.
+V9ej93.LFcjb;{if(!(nusR52->_8WVQ2.zACHc3.Lrwko2==J7Iki4->DDAs81[
+LigBO2]->b_7cQ4))goto RK1kA1;goto ounCU4;RK1kA1:;}nusR52=r3CcP2(
+J7Iki4,nusR52->_8WVQ2.zACHc3.Lrwko2);}goto xliFy2;ounCU4:;}VfGIc3:;};
+yoLEn3=0;{MkGn24:if(!(iTzqw4<0x8||fjJFe<1024))goto mwxOb4;{unsigned
+Q1iXV3,wnE5k3;{v2ePo:if(!(esWTk2->NpyOc1.Rqv1w3>=a02Gz4->NpyOc1.
+qXXnD2.r_RoY4))goto ARDIu1;{yoLEn3=esWTk2->NpyOc1.JI0PC2;esWTk2=
+esWTk2->NpyOc1.OXCDa4;{if(!(esWTk2==0))goto kb2jw2;{;return 1;}kb2jw2
+:;};a02Gz4=esWTk2->a02Gz4;;}goto v2ePo;ARDIu1:;}nusR52=auwjC(J7Iki4,
+esWTk2);{if(!(__builtin_expect(nusR52==0,0)))goto ZrWoW;{{if(!(esWTk2
+->NpyOc1.JI0PC2))goto OhLOH1;{;}OhLOH1:;}{if(!(J7Iki4->UyRVB4[LigBO2]
+.Rc7LY4->NpyOc1.GEbPX4==0))goto FwDnd1;{;return 0;}goto cv_9R4;FwDnd1
+:;{;return 0x1;}cv_9R4:;};}ZrWoW:;}wnE5k3=a02Gz4->NpyOc1.qXXnD2.
+r_RoY4-esWTk2->NpyOc1.Rqv1w3;{if(!(wnE5k3>017774))goto lQTl74;{if(!(
+wnE5k3>=017774*02))goto TTn4I3;Q1iXV3=017774;goto eIyA2;TTn4I3:;
+Q1iXV3=wnE5k3/02&~3u;eIyA2:;}goto BzLYt2;lQTl74:;Q1iXV3=wnE5k3;BzLYt2
+:;};;;nusR52->_8WVQ2.hRUi43.JzUUv2.YBrPF4=536870912ul|(Q1iXV3<<16u);;
+nusR52->_8WVQ2.zACHc3.veMrO=a02Gz4->NpyOc1.qXXnD2.OWsiH1+esWTk2->
+NpyOc1.Rqv1w3;nusR52->_8WVQ2.zACHc3.Lrwko2=J7Iki4->DDAs81[LigBO2]->
+b_7cQ4;esWTk2->NpyOc1.Rqv1w3+=Q1iXV3;{if(!(esWTk2->NpyOc1.GEbPX4==0))goto
+vbEl_1;{;esWTk2->NpyOc1.GEbPX4=nusR52;}goto lMnNL4;vbEl_1:;{;;esWTk2
+->NpyOc1.JI0PC2->OXCDa4=nusR52;}lMnNL4:;}{if(!(yoLEn3))goto T3pdh4;{;
+__asm __volatile(""::);NHDsK3((volatile long* )&yoLEn3->_8WVQ2.zACHc3
+.Lrwko2,nusR52->b_7cQ4);nusR52->XT1xI3=(tJ1Kb4* )yoLEn3;}T3pdh4:;}
+yoLEn3=esWTk2->NpyOc1.JI0PC2=nusR52;fjJFe+=Q1iXV3;iTzqw4++;;}goto
+MkGn24;mwxOb4:;};return 1;}__noinline static tJ1Kb4*MiEVK2(kWMzp1*
+J7Iki4,unsigned LigBO2){{if(!(J7Iki4->UyRVB4[LigBO2].Rc7LY4==0))goto
+XaFHr2;{;return 0;}XaFHr2:;}{if(!(__builtin_expect(!DiWl81(J7Iki4,
+LigBO2),0)))goto Pt3QC3;{J7Iki4->UyRVB4[LigBO2].Rc7LY4->a02Gz4->j5MYx
+|=1ul;{if(!(J7Iki4->YRHFy->cJw4g2))goto Ww0fR;{QD7sk4(&J7Iki4->h2LrH3
+);;J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,LigBO2,0x1ul);h2LrH3(&J7Iki4->
+h2LrH3);;}Ww0fR:;}KQKqV1(J7Iki4,LigBO2);return 0;}Pt3QC3:;}return
+J7Iki4->UyRVB4[LigBO2].Rc7LY4->NpyOc1.GEbPX4;}__noinline static void
+sPUN83(kWMzp1*J7Iki4,int LigBO2){;;{if(!(LigBO2>=0))goto bQzJ53;
+J7Iki4->p3Xgs1|=k6bCf4[LigBO2];goto sa9Wd4;bQzJ53:;LigBO2=0;sa9Wd4:;}
+{if(!(J7Iki4->O6fhT==0))goto PcYU4;{J7Iki4->O6fhT=1;{Cb3U94:{;{if(!(
+J7Iki4->p3Xgs1&k6bCf4[LigBO2]))goto JO5LW;{unsigned long BC6Zd3;
+tJ1Kb4*mlK913;;;BC6Zd3=J7Iki4->pBSeu3.lPHda[LigBO2];mlK913=MiEVK2(
+J7Iki4,LigBO2);{if(!(mlK913==0))goto PHeCM1;{;{if(!(BC6Zd3!=J7Iki4->
+DDAs81[LigBO2]->b_7cQ4))goto ue27A3;{{if(!(BC6Zd3))goto GzgEJ1;{
+tJ1Kb4*nusR52=r3CcP2(J7Iki4,BC6Zd3);nusR52->XT1xI3=0;nusR52=r3CcP2(
+J7Iki4,nusR52->_8WVQ2.zACHc3.Lrwko2);nusR52->XT1xI3=0;}GzgEJ1:;}
+J7Iki4->DDAs81[LigBO2]->_8WVQ2.hRUi43.uwYQG1.RZWDZ2=0;J7Iki4->pBSeu3.
+TIQMZ1[LigBO2].Zg2fI4=J7Iki4->DDAs81[LigBO2]->b_7cQ4;{if(!(J7Iki4->
+y8QlL[LigBO2]))goto tgTLB4;{unsigned QvZLK=dfhdh3;{if(!(J7Iki4->
+pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.cy2jE4&01))goto DFI143;QvZLK=
+hkhXH3;DFI143:;}YnF_24(J7Iki4,LigBO2,QvZLK);}tgTLB4:;}}ue27A3:;}goto
+FH0RH2;}PHeCM1:;}J7Iki4->pBSeu3.TIQMZ1[LigBO2].Zg2fI4=mlK913->b_7cQ4;
+{if(!(BC6Zd3))goto Y_niG4;{tJ1Kb4*x8DWY2, *nusR52;smyqr(J7Iki4,LigBO2
+);{if(!(BC6Zd3==mlK913->b_7cQ4))goto gKLhx2;{;goto FH0RH2;}gKLhx2:;}
+x8DWY2=r3CcP2(J7Iki4,BC6Zd3);{if(!(mlK913->XT1xI3==x8DWY2))goto tgsPg
+;{;{if(!(x8DWY2->_8WVQ2.zACHc3.Lrwko2==mlK913->b_7cQ4))goto k7EcZ1;{;
+goto FH0RH2;}k7EcZ1:;};mlK913->XT1xI3=0;}tgsPg:;}{if(!(mlK913->XT1xI3
+!=0))goto IN1iH2;{tJ1Kb4*nusR52=mlK913;{QzkCk4:if(!(nusR52->_8WVQ2.
+hRUi43.uwYQG1.V9ej93.Ha7yv3))goto VcwKo1;{tJ1Kb4*OXCDa4;{if(!(nusR52
+->_8WVQ2.zACHc3.Lrwko2==x8DWY2->b_7cQ4))goto ipuJm1;{;goto FH0RH2;}
+ipuJm1:;}OXCDa4=r3CcP2(J7Iki4,nusR52->_8WVQ2.zACHc3.Lrwko2);{if(!(
+OXCDa4->XT1xI3!=nusR52))goto ltzXg3;{;goto VcwKo1;}ltzXg3:;};nusR52=
+OXCDa4;}goto QzkCk4;VcwKo1:;}}goto uuBga4;IN1iH2:;{;}uuBga4:;}x8DWY2
+->XT1xI3=0;nusR52=r3CcP2(J7Iki4,x8DWY2->_8WVQ2.zACHc3.Lrwko2);nusR52
+->XT1xI3=0;}Y_niG4:;}mlK913->XT1xI3=mlK913;{if(!(J7Iki4->y8QlL[LigBO2
+]))goto fnvKI1;{unsigned QvZLK=dfhdh3;{if(!(BC6Zd3!=J7Iki4->DDAs81[
+LigBO2]->b_7cQ4&&J7Iki4->pBSeu3.TIQMZ1[LigBO2].fbiOR4.V9ej93.cy2jE4&
+01))goto E831w4;QvZLK=hkhXH3;E831w4:;};YnF_24(J7Iki4,LigBO2,QvZLK);}
+fnvKI1:;}FH0RH2:J7Iki4->p3Xgs1&=bHAl_[LigBO2];}JO5LW:;}LigBO2=(LigBO2
++0x1)%32;}if(J7Iki4->p3Xgs1)goto Cb3U94;};J7Iki4->O6fhT=0;;}PcYU4:;}}
+__noinline static void __fastcall dUSVs(kWMzp1*J7Iki4){unsigned X3V8j4
+;QD7sk4(&J7Iki4->h2LrH3);;{X3V8j4=0;ToFWu3:if(!(X3V8j4<32))goto xaQxL4
+;goto wY1aR;D_jBx1:X3V8j4++;goto ToFWu3;wY1aR:{if(!(J7Iki4->ZWSDs2.
+GiK3J1&k6bCf4[X3V8j4]))goto HDjd12;{unsigned zwLFt3=J7Iki4->NcXyY1[
+X3V8j4];J7Iki4->NcXyY1[X3V8j4]=0;J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,
+X3V8j4,zwLFt3);}HDjd12:;}goto D_jBx1;xaQxL4:;}h2LrH3(&J7Iki4->h2LrH3);
+;J7Iki4->ZWSDs2.GiK3J1=0;}static void i_1fA2(kWMzp1*J7Iki4,void*
+plScs1,void*EllbX3,unsigned long pnKue2,nvFyD4*YRHFy,CvU4o2 HMsf02){
+unsigned X3V8j4;f2E883 fVNme;;;;;;;;;;;;;;;;{X3V8j4=0;FeP4W3:if(!(
+X3V8j4<sizeof(kWMzp1)/sizeof(unsigned)))goto fqtyd4;goto kB1KA;eORWN1
+:X3V8j4++;goto FeP4W3;kB1KA:((unsigned* )J7Iki4)[X3V8j4]=0;goto eORWN1
+;fqtyd4:;}J7Iki4->v6D2d3=(f2E883* )plScs1;J7Iki4->pnKue2=pnKue2;
+J7Iki4->YRHFy=YRHFy;J7Iki4->YRHFy->cJw4g2=HMsf02;J7Iki4->v6D2d3->
+oSrkU4=0;J7Iki4->v6D2d3->uXZM21=0xFFu;J7Iki4->v6D2d3->lPIbL4=~0u;
+J7Iki4->v6D2d3->MDSlK2=~0u;gXydj1(&fVNme);fVNme.L221t4.V9ej93.d6hFe1
+|=0;fVNme.L221t4.V9ej93.H0_uV3|=0;;J7Iki4->xBid64=((unsigned long)&((
+(kWMzp1* )J7Iki4->pnKue2)->pBSeu3));;fVNme.v1h0c2=((unsigned long)&((
+(kWMzp1* )J7Iki4->pnKue2)->xBid64));;fVNme.HZ1wC3=((unsigned long)&((
+(kWMzp1* )J7Iki4->pnKue2)->jXwP42));fVNme.NdUwf2=sizeof(J7Iki4->
+jXwP42)/64-1;;fVNme.ykU1G2=((unsigned long)&(((kWMzp1* )J7Iki4->
+pnKue2)->Hqc15));fVNme.BEfdP=sizeof(J7Iki4->Hqc15)/64-1;;;fVNme.
+dJbtz4=((unsigned long)&(((kWMzp1* )J7Iki4->pnKue2)->n76Wf1));fVNme.
+O6kQX4=sizeof(J7Iki4->n76Wf1)/16-01;fVNme.vvbK44=~0u;;;fVNme.ErbGq4=
+fVNme.PxKBA2=((unsigned long)&(((kWMzp1* )J7Iki4->pnKue2)->yjdp7));
+fVNme.eg17p3=fVNme.LR7D_3=0x1;;J7Iki4->mZSLK1=((unsigned long)&(((
+kWMzp1* )J7Iki4->pnKue2)->GlauV4));;fVNme.KJYtb1=((unsigned long)&(((
+kWMzp1* )J7Iki4->pnKue2)->mZSLK1));fVNme.f8S2i1=135006975u;fVNme.
+P9UkM1=7u;fVNme.nCdFc.V9ej93.uzzFH1|=0xFFFC;fVNme.nCdFc.V9ej93.hph9c1
+|=04;fVNme.nCdFc.V9ej93.lqIwU2|=0;fVNme.nCdFc.V9ej93.LdTsZ2|=04;fVNme
+.nCdFc.V9ej93.genw44|=0;fVNme.nCdFc.V9ej93.iJL0J|=Y_ymu;fVNme.QLWyF2.
+V9ej93.hNxv05|=1;fVNme.QLWyF2.V9ej93.JNeRE|=0;fVNme.QLWyF2.V9ej93.
+KXgOV1|=0;fVNme.QLWyF2.V9ej93.OzDgd|=0;fVNme.nCdFc.V9ej93.ZvgAS1&=0;
+fVNme.nCdFc.V9ej93.KfMd1|=01;{X3V8j4=0;mUGg23:if(!(X3V8j4<(sizeof(
+J7Iki4->Bvuqc2)/sizeof(J7Iki4->Bvuqc2[0]))))goto aoI7b;goto XsLr1;
+jFtDD4:X3V8j4++;goto mUGg23;XsLr1:{;J7Iki4->Bvuqc2[X3V8j4].b_7cQ4=((
+unsigned long)&(((kWMzp1* )J7Iki4->pnKue2)->Bvuqc2[X3V8j4]));J7Iki4->
+Bvuqc2[X3V8j4].OXCDa4=&J7Iki4->Bvuqc2[X3V8j4+0x1];}goto jFtDD4;aoI7b:
+;}J7Iki4->YosKg1=&J7Iki4->Bvuqc2[0];J7Iki4->XPQnv1=&J7Iki4->Bvuqc2[(
+sizeof(J7Iki4->Bvuqc2)/sizeof(J7Iki4->Bvuqc2[0]))-1];J7Iki4->XPQnv1->
+OXCDa4=0;{X3V8j4=0;wYt8Z4:if(!(X3V8j4<(sizeof(J7Iki4->kgEeY3)/sizeof(
+J7Iki4->kgEeY3[0]))))goto u2lRM2;goto YMPj34;kBtl75:X3V8j4++;goto
+wYt8Z4;YMPj34:J7Iki4->kgEeY3[X3V8j4].woMv11.OXCDa4=&J7Iki4->kgEeY3[
+X3V8j4+01];goto kBtl75;u2lRM2:;}J7Iki4->blWHd2=&J7Iki4->kgEeY3[0];
+J7Iki4->kgEeY3[(sizeof(J7Iki4->kgEeY3)/sizeof(J7Iki4->kgEeY3[0]))-0x1
+].woMv11.OXCDa4=0;;{X3V8j4=0;R154I4:if(!(X3V8j4<32))goto O8ZNs4;goto
+Fucd04;YADMu:X3V8j4++;goto R154I4;Fucd04:{Smebz2*e0wGb1;tJ1Kb4*dJtvs;
+tJ1Kb4*zYrRf4;;e0wGb1=&J7Iki4->pBSeu3.TIQMZ1[X3V8j4];dJtvs=auwjC(
+J7Iki4,0);FKb152(J7Iki4,dJtvs);e0wGb1->Zg2fI4=dJtvs->b_7cQ4;zYrRf4=
+auwjC(J7Iki4,0);St8W34(J7Iki4,zYrRf4);e0wGb1->PTDns3=zYrRf4->b_7cQ4;{
+if(!(X3V8j4>=32&&32<32))goto XsZf_4;{e0wGb1->fbiOR4.V9ej93.E2DoN1|=
+0xFF;e0wGb1->fbiOR4.V9ej93.MLZ_Y|=WdqxE|MEYPf1|AC5eU1;}goto ejnKl2;
+XsZf_4:;{J7Iki4->DDAs81[X3V8j4]=dJtvs;J7Iki4->nvqbt[X3V8j4]=zYrRf4;
+QhwfE1(e0wGb1);}ejnKl2:;}}goto YADMu;O8ZNs4:;}{X3V8j4=0;yA8D32:if(!(
+X3V8j4<32))goto M__vR3;goto GPV2K1;UF27x1:X3V8j4++;goto yA8D32;GPV2K1
+:{J7Iki4->pBSeu3.HcALQ1[X3V8j4].V9ej93.P_XoQ1|=0x1;J7Iki4->pBSeu3.
+HcALQ1[X3V8j4].V9ej93.hoRsQ4|=1;J7Iki4->pBSeu3.HcALQ1[X3V8j4].V9ej93.
+fzwRI1|=32-0x1;J7Iki4->pBSeu3.HcALQ1[X3V8j4].V9ej93.In2Nl4|=32-0x1;}
+goto UF27x1;M__vR3:;}{X3V8j4=01;fcI1o1:if(!(X3V8j4<32))goto IJToQ3;
+goto PY2k02;zhcEg4:X3V8j4++;goto fcI1o1;PY2k02:{J7Iki4->FmCLm3[X3V8j4
+]._kIQv4=J7Iki4->FmCLm3[X3V8j4].gfIP34=(unsigned char)(X3V8j4-01);
+J7Iki4->FmCLm3[X3V8j4].JVax01=J7Iki4->FmCLm3[X3V8j4].MhiF14=0xFFu;}
+goto zhcEg4;IJToQ3:;}J7Iki4->FmCLm3[0]._kIQv4=J7Iki4->FmCLm3[0].
+gfIP34=0xFFu;J7Iki4->FmCLm3[0].JVax01=J7Iki4->FmCLm3[0].MhiF14=0;
+usMAR(J7Iki4);fVNme.oSrkU4=0;fVNme.uXZM21=0xFFu;fVNme.lPIbL4=~0u;
+fVNme.MDSlK2=~0u;t6up71(&fVNme,J7Iki4->v6D2d3);J7Iki4->v6D2d3->MDSlK2
+=~0u;}__noinline static void nEC5K2(kWMzp1*J7Iki4,DCf0T2*esWTk2){
+Os1bA3*a02Gz4=esWTk2->a02Gz4;{if(!(a02Gz4))goto DxnG43;{a02Gz4->j5MYx
+|=16ul;{if(!(a02Gz4->zM0Qt3!=esWTk2))goto b0zBt1;{{sX8l_2:{Os1bA3*
+OXCDa4=(Os1bA3* )a02Gz4->zM0Qt3;a02Gz4->zM0Qt3=0;D77H33(J7Iki4,a02Gz4
+);a02Gz4=OXCDa4;;}if(a02Gz4!=0)goto sX8l_2;};}goto CB24p2;b0zBt1:;{
+a02Gz4->zM0Qt3=0;D77H33(J7Iki4,a02Gz4);}CB24p2:;}esWTk2->a02Gz4=0;}
+DxnG43:;}}static void smnR45(kWMzp1*J7Iki4,int N4LX53){unsigned X3V8j4
+;Smebz2*e0wGb1;J7Iki4->v6D2d3->oSrkU4=0;J7Iki4->v6D2d3->uXZM21=0xFFu;
+J7Iki4->v6D2d3->lPIbL4=~0u;J7Iki4->v6D2d3->MDSlK2=~0u;J7Iki4->v6D2d3
+->f8S2i1=135006975u;J7Iki4->v6D2d3->P9UkM1=07u;{X3V8j4=0;w5ONF1:if(!(
+X3V8j4<32))goto YarQI;goto dEEsv;OzcmC4:X3V8j4++;goto w5ONF1;dEEsv:{
+J7Iki4->pBSeu3.HcALQ1[X3V8j4].V9ej93.P_XoQ1=01;J7Iki4->pBSeu3.HcALQ1[
+X3V8j4].V9ej93.hoRsQ4=1;}goto OzcmC4;YarQI:;}e0wGb1=&J7Iki4->pBSeu3.
+TIQMZ1[X3V8j4];{X3V8j4=0;pfvK:if(!(X3V8j4<32))goto gh9_d3;goto wJzmn2
+;Jlhz11:X3V8j4++;goto pfvK;wJzmn2:{QhwfE1(e0wGb1);e0wGb1++;}goto
+Jlhz11;gh9_d3:;}{if(!(!wBvfo4(J7Iki4,ZKJvS1(0,0,0,0,0,KahAO3))))goto
+_A9MD3;{;}_A9MD3:;}{if(!(!wBvfo4(J7Iki4,ZKJvS1(1,0,0,0,0,KahAO3))))goto
+UVOU33;{;}UVOU33:;}{if(!(!wBvfo4(J7Iki4,ZKJvS1(0,0,0,0,0,KahAO3))))goto
+WU3Cl3;{;}WU3Cl3:;}{X3V8j4=0;syNnc3:if(!(X3V8j4<sizeof(J7Iki4->yjdp7)))goto
+S0xvx2;goto D3tTQ4;ur7M31:X3V8j4++;goto syNnc3;D3tTQ4:J7Iki4->yjdp7[
+X3V8j4]=0xCC;goto ur7M31;S0xvx2:;}J7Iki4->v6D2d3->dJbtz4=0+((unsigned
+long)&(((kWMzp1* )J7Iki4->pnKue2)->yjdp7));J7Iki4->v6D2d3->HZ1wC3=04+
+((unsigned long)&(((kWMzp1* )J7Iki4->pnKue2)->yjdp7));J7Iki4->v6D2d3
+->ykU1G2=0x8+((unsigned long)&(((kWMzp1* )J7Iki4->pnKue2)->yjdp7));
+J7Iki4->v6D2d3->ErbGq4=014+((unsigned long)&(((kWMzp1* )J7Iki4->
+pnKue2)->yjdp7));J7Iki4->v6D2d3->PxKBA2=16+((unsigned long)&(((kWMzp1
+ * )J7Iki4->pnKue2)->yjdp7));J7Iki4->v6D2d3->O6kQX4=01;J7Iki4->v6D2d3
+->NdUwf2=1;J7Iki4->v6D2d3->BEfdP=1;J7Iki4->v6D2d3->eg17p3=01;J7Iki4->
+v6D2d3->LR7D_3=1;{if(!(!wBvfo4(J7Iki4,ZKJvS1(0,0,0,0,0,KahAO3))))goto
+AkbwI1;{;}AkbwI1:;}{if(!(!wBvfo4(J7Iki4,ZKJvS1(0,0,0,0,0x1,KahAO3))))goto
+pJ7gv1;{;}pJ7gv1:;}{if(!(!wBvfo4(J7Iki4,ZKJvS1(0,0,0,0,0,KahAO3))))goto
+HUCWK;{;}HUCWK:;};;;;;J7Iki4->v6D2d3->dJbtz4=0xFFFFF000ul;J7Iki4->
+v6D2d3->HZ1wC3=0xFFFFF000ul;J7Iki4->v6D2d3->ykU1G2=0xFFFFF000ul;
+J7Iki4->v6D2d3->ErbGq4=0xFFFFF000ul;J7Iki4->v6D2d3->PxKBA2=
+0xFFFFF000ul;J7Iki4->v6D2d3->L221t4.BucKo=0;J7Iki4->v6D2d3->bPudJ3=0;
+J7Iki4->v6D2d3->nCdFc.BucKo=0;J7Iki4->v6D2d3->QLWyF2.BucKo=0;J7Iki4->
+v6D2d3->MDSlK2=~0u;{if(!(N4LX53))goto UrxuH3;{DCf0T2*esWTk2;esWTk2=
+J7Iki4->SpbRG4.Rc7LY4;{vO7V_1:if(!(esWTk2))goto azjrO2;{nEC5K2(J7Iki4
+,esWTk2);esWTk2=esWTk2->woMv11.OXCDa4;;}goto vO7V_1;azjrO2:;}esWTk2=
+J7Iki4->sxr445.Rc7LY4;{LNCIB:if(!(esWTk2))goto ytDo8;{nEC5K2(J7Iki4,
+esWTk2);esWTk2=esWTk2->woMv11.OXCDa4;;}goto LNCIB;ytDo8:;}{X3V8j4=0;
+bXj363:if(!(X3V8j4<32))goto IaVcT1;goto Ytnfz2;obDHQ:X3V8j4++;goto
+bXj363;Ytnfz2:{esWTk2=J7Iki4->Cga1V[X3V8j4].Rc7LY4;{dv8Wi2:if(!(
+esWTk2))goto Ru_0e3;{nEC5K2(J7Iki4,esWTk2);esWTk2=esWTk2->NpyOc1.
+OXCDa4;;}goto dv8Wi2;Ru_0e3:;}esWTk2=J7Iki4->UyRVB4[X3V8j4].Rc7LY4;{
+W6ZSZ4:if(!(esWTk2))goto UiHem4;{nEC5K2(J7Iki4,esWTk2);esWTk2=esWTk2
+->NpyOc1.OXCDa4;;}goto W6ZSZ4;UiHem4:;}}goto obDHQ;IaVcT1:;}}UrxuH3:;
+}{X3V8j4=0;fm_hx3:if(!(X3V8j4<sizeof(kWMzp1)/sizeof(unsigned)))goto
+eFLFn1;goto MGVo72;aRTVj3:X3V8j4++;goto fm_hx3;MGVo72:((unsigned* )J7Iki4
+)[X3V8j4]=0;goto aRTVj3;eFLFn1:;}}static int yG5VL(kWMzp1*J7Iki4,
+Os1bA3*a02Gz4){int eWAnF=0;DCf0T2*esWTk2;a02Gz4->j5MYx=0;a02Gz4->
+zM0Qt3=0;{if(!(a02Gz4->bHzh05==0||(a02Gz4->QvZLK&((01u|2u|010u|16384u
+|32768u)|(16u|32u|128u)|(256u|512u|1024u|2048u|8192u|4096u)|64u))==0
+||(a02Gz4->QvZLK&~((0x1u|02u|0x8u|16384u|32768u)|(16u|32u|128u)|(256u
+|512u|1024u|2048u|8192u|4096u)|64u))!=0))goto wA_dp4;return 0;wA_dp4:
+;}{if(!(a02Gz4->QvZLK&8u))goto G3EMd;{;eWAnF++;}G3EMd:;}{if(!(a02Gz4
+->QvZLK&128u))goto NSHM15;{;eWAnF++;}NSHM15:;}{if(!(a02Gz4->QvZLK&
+256u))goto s5rwo1;eWAnF++;s5rwo1:;}{if(!(a02Gz4->QvZLK&512u))goto
+pMVyr2;eWAnF++;pMVyr2:;}{if(!(a02Gz4->QvZLK&1024u))goto a2mb94;eWAnF
+++;a2mb94:;}{if(!(a02Gz4->QvZLK&2048u))goto KuEgF;eWAnF++;KuEgF:;}{if
+(!(a02Gz4->QvZLK&4096u))goto H6z612;eWAnF++;H6z612:;}{if(!(64u&&(
+a02Gz4->QvZLK&64u)!=0))goto h43i53;eWAnF++;h43i53:;}{if(!(eWAnF>1))goto
+Nshhy1;{;return 0;}Nshhy1:;}esWTk2=Xlqk(J7Iki4);;{if(!(esWTk2==0))goto
+qi3Gb3;{a02Gz4->j5MYx|=01ul;return 0;}qi3Gb3:;}{if(!(!Vdg6P1(J7Iki4,
+a02Gz4,esWTk2)))goto G3qOC4;{s9FHT4(J7Iki4,esWTk2);return 0;}G3qOC4:;
+}{if(!((a02Gz4->QvZLK&128u)!=0&&(a02Gz4->QvZLK&8u)!=0))goto ydhBR1;{;
+s9FHT4(J7Iki4,esWTk2);return 0;}ydhBR1:;}{if(!((a02Gz4->QvZLK&(256u|(
+0x1u|02u|0x8u|16384u|32768u)|(16u|32u|128u)|2048u))!=0&&a02Gz4->
+NpyOc1.IoSy32.LigBO2>=32))goto MnOkL2;{;s9FHT4(J7Iki4,esWTk2);return 0
+;}MnOkL2:;}{if(!(a02Gz4->QvZLK&0x8u))goto bymxW4;{a02Gz4->NpyOc1.
+xRh664.YkQWU=0;{if(!(a02Gz4->NpyOc1.xRh664.OWsiH1==0))goto cEz3h2;{;
+s9FHT4(J7Iki4,esWTk2);return 0;}cEz3h2:;}{if(!(a02Gz4->NpyOc1.xRh664.
+r9yJB==0&&(a02Gz4->QvZLK&16384u)==0))goto aF6cv;{;s9FHT4(J7Iki4,
+esWTk2);return 0;}aF6cv:;}}bymxW4:;}{if(!(a02Gz4->QvZLK&128u))goto
+T_rNX1;{a02Gz4->NpyOc1.qXXnD2.USKhR2=0;{if(!(a02Gz4->NpyOc1.qXXnD2.
+r_RoY4<0x4||a02Gz4->NpyOc1.qXXnD2.r_RoY4%0x4!=0||a02Gz4->NpyOc1.
+qXXnD2.OWsiH1==0||a02Gz4->NpyOc1.qXXnD2.OWsiH1%04!=0))goto GGvQ51;{;
+s9FHT4(J7Iki4,esWTk2);return 0;}GGvQ51:;}}T_rNX1:;}esWTk2->a02Gz4=
+a02Gz4;a02Gz4->zM0Qt3=esWTk2;{;;;(esWTk2)->woMv11.OXCDa4=0;(esWTk2)->
+woMv11.neQ2f1=J7Iki4->sxr445.WHQ_F1;{if(!(J7Iki4->sxr445.WHQ_F1))goto
+PAEZQ1;(J7Iki4->sxr445.WHQ_F1)->woMv11.OXCDa4=esWTk2;goto tEpJn4;
+PAEZQ1:;J7Iki4->sxr445.Rc7LY4=esWTk2;tEpJn4:;}J7Iki4->sxr445.WHQ_F1=
+esWTk2;;;;};{if(!(J7Iki4->m45Hf==0))goto Yd9y34;I3ipm3(J7Iki4);Yd9y34
+:;}{if(!(J7Iki4->ZU75i4==0))goto orhdS1;fRgzh2(J7Iki4);orhdS1:;}
+return 0x1;}static int WMa7R(kWMzp1*J7Iki4,Os1bA3*a02Gz4,int hj5891){
+DCf0T2*esWTk2;;esWTk2=(DCf0T2* )a02Gz4->zM0Qt3;{if(!(!TOrKU3(esWTk2,&
+J7Iki4->kgEeY3[0],&J7Iki4->kgEeY3[(sizeof(J7Iki4->kgEeY3)/sizeof(
+J7Iki4->kgEeY3[0]))])))goto Aj3Sz3;{;return 0;}Aj3Sz3:;};{if(!(esWTk2
+->a02Gz4!=a02Gz4))goto BO0Kp;{;return 0;}BO0Kp:;}{if(!(esWTk2->TrF875
+==0))goto CzEWk1;{unsigned X3V8j4;;;{X3V8j4=0;pAOwi3:if(!(X3V8j4<32))goto
+ZFz0V2;goto HKFgD2;KUvUb1:X3V8j4++;goto pAOwi3;HKFgD2:{;}goto KUvUb1;
+ZFz0V2:;};;esWTk2->a02Gz4=0;{;;;{if(!((esWTk2)->woMv11.neQ2f1))goto
+q7DZK;(esWTk2)->woMv11.neQ2f1->woMv11.OXCDa4=(esWTk2)->woMv11.OXCDa4;
+goto GB75W2;q7DZK:;{;J7Iki4->sxr445.Rc7LY4=(esWTk2)->woMv11.OXCDa4;}
+GB75W2:;}{if(!((esWTk2)->woMv11.OXCDa4))goto myeQg;(esWTk2)->woMv11.
+OXCDa4->woMv11.neQ2f1=(esWTk2)->woMv11.neQ2f1;goto dUxYz4;myeQg:;{;
+J7Iki4->sxr445.WHQ_F1=(esWTk2)->woMv11.neQ2f1;}dUxYz4:;};;;};s9FHT4(
+J7Iki4,esWTk2);{if(!(J7Iki4->m45Hf==0))goto zuLXp1;I3ipm3(J7Iki4);
+zuLXp1:;};a02Gz4->j5MYx|=16ul;a02Gz4->zM0Qt3=0;return 0x1;}CzEWk1:;};
+{if(!(!hj5891&&(esWTk2->NpyOc1.Rqv1w3!=0||esWTk2->NpyOc1.Rqv1w3!=0)))goto
+b5VMc1;{;;return 0;}b5VMc1:;}{if(!(QoVg22(&J7Iki4->SpbRG4,esWTk2)||
+J7Iki4->SpbRG4.Rc7LY4==esWTk2))goto K68ek2;{;{if(!(!hj5891))goto
+VX1Rp1;{;return 0;}VX1Rp1:;}}K68ek2:;}a02Gz4->j5MYx|=16ul;{if(!(
+a02Gz4->NpyOc1.IoSy32.LigBO2<32))goto pZGsj4;{{if(!(mqe7E2(&J7Iki4->
+UyRVB4[a02Gz4->NpyOc1.IoSy32.LigBO2],esWTk2)))goto wt21n2;{;esWTk2->
+TrF875--;{if(!(esWTk2->NpyOc1.GEbPX4))goto hcihc1;{tJ1Kb4*tfu023;;;;
+tfu023=r3CcP2(J7Iki4,esWTk2->NpyOc1.JI0PC2->_8WVQ2.zACHc3.Lrwko2);;{
+if(!(esWTk2->NpyOc1.GEbPX4->XT1xI3))goto tvICL1;{tJ1Kb4*TVLzg4=esWTk2
+->NpyOc1.GEbPX4->XT1xI3;;__asm __volatile(""::);TVLzg4->_8WVQ2.zACHc3
+.Lrwko2=tfu023->b_7cQ4;__asm __volatile(""::);tfu023->XT1xI3=TVLzg4;}
+goto _ZUUf;tvICL1:;tfu023->XT1xI3=0;_ZUUf:;}C10QV(J7Iki4,esWTk2);}
+goto Nyor63;hcihc1:;{;}Nyor63:;}{;;;{if(!((esWTk2)->NpyOc1.neQ2f1))goto
+v2HLJ4;(esWTk2)->NpyOc1.neQ2f1->NpyOc1.OXCDa4=(esWTk2)->NpyOc1.OXCDa4
+;goto eiT8Z3;v2HLJ4:;{;J7Iki4->UyRVB4[a02Gz4->NpyOc1.IoSy32.LigBO2].
+Rc7LY4=(esWTk2)->NpyOc1.OXCDa4;}eiT8Z3:;}{if(!((esWTk2)->NpyOc1.
+OXCDa4))goto V5lif4;(esWTk2)->NpyOc1.OXCDa4->NpyOc1.neQ2f1=(esWTk2)->
+NpyOc1.neQ2f1;goto L9_Ft4;V5lif4:;{;J7Iki4->UyRVB4[a02Gz4->NpyOc1.
+IoSy32.LigBO2].WHQ_F1=(esWTk2)->NpyOc1.neQ2f1;}L9_Ft4:;};;;};sPUN83(
+J7Iki4,a02Gz4->NpyOc1.IoSy32.LigBO2);}wt21n2:;}{if(!(mqe7E2(&J7Iki4->
+Cga1V[a02Gz4->NpyOc1.IoSy32.LigBO2],esWTk2)))goto idIRM1;{;esWTk2->
+TrF875--;{if(!(esWTk2->NpyOc1.GEbPX4))goto Wsnkl3;{tJ1Kb4*tfu023=0;
+tJ1Kb4*TVLzg4=esWTk2->NpyOc1.GEbPX4->XT1xI3;;;{if(!(!esWTk2->NpyOc1.
+JI0PC2->_8WVQ2.xFtBP._8WVQ2.V9ej93.zJyAP1))goto ymo3m3;{;tfu023=
+r3CcP2(J7Iki4,esWTk2->NpyOc1.JI0PC2->_8WVQ2.zACHc3.Lrwko2);;{if(!(
+TVLzg4))goto myHoB4;{;__asm __volatile(""::);TVLzg4->_8WVQ2.zACHc3.
+Lrwko2=tfu023->b_7cQ4;__asm __volatile(""::);tfu023->XT1xI3=TVLzg4;}
+goto UE8_33;myHoB4:;tfu023->XT1xI3=0;UE8_33:;}}goto VJWHk;ymo3m3:;{{
+if(!(TVLzg4))goto arIPi2;{__asm __volatile(""::);TVLzg4->_8WVQ2.xFtBP
+._8WVQ2.V9ej93.zJyAP1|=0x1;__asm __volatile(""::);XNL6O3(J7Iki4,
+a02Gz4->NpyOc1.IoSy32.LigBO2,TVLzg4);}arIPi2:;}}VJWHk:;}QrVoB3(J7Iki4
+,esWTk2,a02Gz4->NpyOc1.IoSy32.LigBO2);}goto bJIQf2;Wsnkl3:;{;}bJIQf2:
+;}{;;;{if(!((esWTk2)->NpyOc1.neQ2f1))goto ohoqe3;(esWTk2)->NpyOc1.
+neQ2f1->NpyOc1.OXCDa4=(esWTk2)->NpyOc1.OXCDa4;goto Lxstn;ohoqe3:;{;
+J7Iki4->Cga1V[a02Gz4->NpyOc1.IoSy32.LigBO2].Rc7LY4=(esWTk2)->NpyOc1.
+OXCDa4;}Lxstn:;}{if(!((esWTk2)->NpyOc1.OXCDa4))goto jDVZJ2;(esWTk2)->
+NpyOc1.OXCDa4->NpyOc1.neQ2f1=(esWTk2)->NpyOc1.neQ2f1;goto JGDcD1;
+jDVZJ2:;{;J7Iki4->Cga1V[a02Gz4->NpyOc1.IoSy32.LigBO2].WHQ_F1=(esWTk2)->
+NpyOc1.neQ2f1;}JGDcD1:;};;;};pxiAh4(J7Iki4,a02Gz4->NpyOc1.IoSy32.
+LigBO2);}idIRM1:;}{if(!(J7Iki4->LbJOV[a02Gz4->NpyOc1.IoSy32.LigBO2]))goto
+qbbkE1;{esWTk2->a02Gz4=0;{if(!(esWTk2->TrF875==0))goto CF8g_3;s9FHT4(
+J7Iki4,esWTk2);CF8g_3:;}a02Gz4->zM0Qt3=J7Iki4->LbJOV[a02Gz4->NpyOc1.
+IoSy32.LigBO2]->a02Gz4;J7Iki4->LbJOV[a02Gz4->NpyOc1.IoSy32.LigBO2]->
+a02Gz4=a02Gz4;;return 0;}qbbkE1:;}}pZGsj4:;}esWTk2->a02Gz4=0;{if(!(
+esWTk2->TrF875==0))goto pqlS85;s9FHT4(J7Iki4,esWTk2);pqlS85:;};a02Gz4
+->zM0Qt3=0;{if(!(J7Iki4->ZU75i4==0))goto KK2Co3;fRgzh2(J7Iki4);KK2Co3
+:;}return 0x1;}static int Nt0Ut1(kWMzp1*J7Iki4){return J7Iki4->v6D2d3
+->MDSlK2!=0;}static int fRgzh2(kWMzp1*J7Iki4){unsigned BLq4p;unsigned
+long QDNE6;;QDNE6=J7Iki4->v6D2d3->MDSlK2;{if(!(QDNE6==0))goto HSTer4;
+return 0;HSTer4:;}BLq4p=0;J7Iki4->ZU75i4++;vUYb92:{u1ED31:{__asm
+__volatile(""::);J7Iki4->v6D2d3->MDSlK2=QDNE6&~VpYRo1;__asm __volatile
+(""::);{if(!(QDNE6&(GLE_s4|l9wtw1|t57WF3)))goto cIphR4;{J7Iki4->
+v6D2d3->bPudJ3=0;J7Iki4->v6D2d3->MDSlK2=t57WF3|GLE_s4|l9wtw1;;FaLJH2(
+J7Iki4,QDNE6);}goto I4v7x;cIphR4:;{if(!(__builtin_expect((J7Iki4->
+osQ5M==j0BDS4)&&(J7Iki4->v6D2d3->bPudJ3&0x1)==0,0)))goto nzoh14;{
+eKIU_4();{if(!((J7Iki4->v6D2d3->MDSlK2&(GLE_s4|l9wtw1))==0))goto
+ptE8v1;{J7Iki4->v6D2d3->bPudJ3=0;J7Iki4->v6D2d3->MDSlK2=t57WF3|GLE_s4
+|l9wtw1;;FaLJH2(J7Iki4,l9wtw1);}ptE8v1:;}}nzoh14:;}I4v7x:;}{if(!(
+QDNE6&(ldkSL4|yn0bR1)))goto eInjq4;{{if(!(__builtin_expect(QDNE6&
+yn0bR1,0)))goto Zivk01;{;{if(!(J7Iki4->YRHFy->cJw4g2))goto WXoBp4;{
+QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,-01,
+65536ul);h2LrH3(&J7Iki4->h2LrH3);;}WXoBp4:;}}Zivk01:;}xk8cK4(J7Iki4);
+}eInjq4:;}{if(!(QDNE6&(eCQDF|J2Fer3)))goto _m6_f;{;{if(!(
+__builtin_expect(QDNE6&J2Fer3,0)))goto cCT_25;{;{if(!(J7Iki4->YRHFy->
+cJw4g2))goto FyrG42;{QD7sk4(&J7Iki4->h2LrH3);;J7Iki4->YRHFy->cJw4g2(
+J7Iki4->YRHFy,-0x1,131072ul);h2LrH3(&J7Iki4->h2LrH3);;}FyrG42:;}}
+cCT_25:;}XmIKi3(J7Iki4);;}_m6_f:;}{if(!(QDNE6&VpYRo1))goto nR0Nt;{
+p9baI3(J7Iki4);}nR0Nt:;}{if(!(__builtin_expect(++BLq4p>01750,0)))goto
+f9Ox83;{{if(!(J7Iki4->YRHFy->cJw4g2))goto EPvtH;{QD7sk4(&J7Iki4->
+h2LrH3);;J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,-1,1048576ul);h2LrH3(&
+J7Iki4->h2LrH3);;}EPvtH:;}goto YNDL72;}f9Ox83:;}__asm __volatile(""::
+);QDNE6=J7Iki4->v6D2d3->MDSlK2;}if(QDNE6)goto u1ED31;YNDL72:;};{if(!(
+J7Iki4->p3Xgs1))goto o79Zu4;sPUN83(J7Iki4,-1);o79Zu4:;}{if(!(J7Iki4->
+vuXVj1))goto eh6MF;pxiAh4(J7Iki4,-0x1);eh6MF:;}{if(!(J7Iki4->ZWSDs2.
+GiK3J1&&J7Iki4->YRHFy->cJw4g2))goto qEhA12;dUSVs(J7Iki4);qEhA12:;}
+QDNE6=J7Iki4->v6D2d3->MDSlK2;{if(!(QDNE6&&BLq4p<01750))goto mfE5L1;
+goto vUYb92;mfE5L1:;}J7Iki4->ZU75i4--;return 01;}__forceinline static
+unsigned RtiEy4(volatile unsigned long*RdZoN,unsigned C6yEr1){
+unsigned keSgZ1,Z0e1C2;;keSgZ1=C6yEr1&31;((RdZoN)[0])=keSgZ1|0xE0;((
+RdZoN)[-01])=255;((RdZoN)[0])=keSgZ1|0140;((RdZoN)[-01])=0377;Z0e1C2=
+(((volatile unsigned char* )(RdZoN))[01]);((RdZoN)[0])=keSgZ1|0xE0;((
+RdZoN)[-1])=224;return Z0e1C2;}__forceinline static void AUUSL3(
+volatile unsigned long*RdZoN,unsigned C6yEr1,unsigned vgKFx2){
+unsigned WqCeB2;;;WqCeB2=(C6yEr1&037)|(vgKFx2<<0x8);((RdZoN)[0])=
+WqCeB2|0xE0;((RdZoN)[-0x1])=0xFFFF;((RdZoN)[0])=WqCeB2|0xA0;((RdZoN)[
+-01])=0xFFFF;((RdZoN)[0])=WqCeB2|0xE0;((RdZoN)[-1])=224;}
+__forceinline static unsigned z5sap1(unsigned jYvNM3){{if(!(jYvNM3==0
+))goto jvOaW3;return 0x1;jvOaW3:;}{if(!(jYvNM3==01))goto Mjvwg1;
+return 2;Mjvwg1:;}{if(!(jYvNM3==2))goto gupXH4;return 03;gupXH4:;};;
+return 0xFFu;}__forceinline static void oSdJm(unsigned jYvNM3,
+volatile unsigned long*RdZoN,unsigned C6yEr1,unsigned vgKFx2){;;
+AUUSL3(RdZoN,z5sap1(jYvNM3),C6yEr1);AUUSL3(RdZoN,0x5,vgKFx2);}
+__forceinline static unsigned NmrSW4(unsigned jYvNM3,volatile unsigned
+long*RdZoN,unsigned C6yEr1){;AUUSL3(RdZoN,z5sap1(jYvNM3),C6yEr1);
+return RtiEy4(RdZoN,5);}__forceinline static unsigned V4Eg_2(unsigned
+jYvNM3,volatile unsigned long*RdZoN,unsigned C6yEr1){unsigned Z0e1C2;
+;AUUSL3(RdZoN,z5sap1(jYvNM3),C6yEr1);AUUSL3(RdZoN,0x5,0xFF);AUUSL3(
+RdZoN,z5sap1(jYvNM3),C6yEr1);Z0e1C2=RtiEy4(RdZoN,5);AUUSL3(RdZoN,
+z5sap1(jYvNM3),C6yEr1);AUUSL3(RdZoN,05,Z0e1C2);return Z0e1C2;}
+__noinline static void __fastcall s3sCI1(volatile unsigned long*RdZoN
+,unsigned C6yEr1,unsigned vgKFx2){oSdJm(0,RdZoN,C6yEr1,vgKFx2);}
+__noinline static unsigned __fastcall fFvjz3(volatile unsigned long*
+RdZoN,unsigned C6yEr1){return NmrSW4(0,RdZoN,C6yEr1);}__noinline
+static unsigned __fastcall dMM0e1(volatile unsigned long*RdZoN,
+unsigned C6yEr1){return V4Eg_2(0,RdZoN,C6yEr1);}__noinline static void
+__fastcall WdFDP4(volatile unsigned long*RdZoN,unsigned C6yEr1,
+unsigned long vgKFx2){oSdJm(0,RdZoN,C6yEr1+0,vgKFx2&0xFFu);oSdJm(0,
+RdZoN,C6yEr1+1,(vgKFx2>>8)&0xFFu);oSdJm(0,RdZoN,C6yEr1+02,(vgKFx2>>16
+)&0xFFu);oSdJm(0,RdZoN,C6yEr1+03,vgKFx2>>0x18);}__noinline static
+unsigned long __fastcall kvBl65(volatile unsigned long*RdZoN,unsigned
+C6yEr1){unsigned long Z0e1C2=NmrSW4(0,RdZoN,C6yEr1+0);Z0e1C2+=NmrSW4(
+0,RdZoN,C6yEr1+1)<<010;Z0e1C2+=NmrSW4(0,RdZoN,C6yEr1+02)<<16;Z0e1C2+=
+NmrSW4(0,RdZoN,C6yEr1+3)<<24;return Z0e1C2;}__noinline static void
+__fastcall dZK6h3(volatile unsigned long*RdZoN,unsigned C6yEr1,
+unsigned vgKFx2){oSdJm(0x1,RdZoN,C6yEr1,vgKFx2);}__noinline static
+unsigned __fastcall x2akp(volatile unsigned long*RdZoN,unsigned C6yEr1
+){return NmrSW4(1,RdZoN,C6yEr1);}__noinline static unsigned __fastcall
+EIMqn1(volatile unsigned long*RdZoN,unsigned C6yEr1){return V4Eg_2(01
+,RdZoN,C6yEr1);}__noinline static void __fastcall dAXWu2(volatile
+unsigned long*RdZoN,unsigned C6yEr1,unsigned long vgKFx2){oSdJm(1,
+RdZoN,C6yEr1+0,vgKFx2&0xFFu);oSdJm(1,RdZoN,C6yEr1+01,(vgKFx2>>010)&
+0xFFu);oSdJm(1,RdZoN,C6yEr1+0x2,(vgKFx2>>16)&0xFFu);oSdJm(01,RdZoN,
+C6yEr1+0x3,vgKFx2>>0x18);}__noinline static unsigned long __fastcall
+FqrfM3(volatile unsigned long*RdZoN,unsigned C6yEr1){unsigned long
+Z0e1C2=NmrSW4(1,RdZoN,C6yEr1+0);Z0e1C2+=NmrSW4(1,RdZoN,C6yEr1+0x1)<<8
+;Z0e1C2+=NmrSW4(0x1,RdZoN,C6yEr1+0x2)<<16;Z0e1C2+=NmrSW4(01,RdZoN,
+C6yEr1+3)<<24;return Z0e1C2;}__noinline static void __fastcall Y81UE3
+(kWMzp1*J7Iki4,unsigned C6yEr1,unsigned vgKFx2){volatile unsigned long
+ *RdZoN;;;;RdZoN=&J7Iki4->v6D2d3->_jfrJ1;;;AUUSL3(RdZoN,04,C6yEr1);
+AUUSL3(RdZoN,0x5,vgKFx2);}__noinline static void __fastcall cw78L3(
+kWMzp1*J7Iki4){unsigned X3V8j4=0;{BRFyY2:Y81UE3(J7Iki4,X3V8j4,(X3V8j4
+==24)?1:0);if(++X3V8j4<256)goto BRFyY2;};}__noinline static unsigned
+long __fastcall XpfBS(volatile unsigned long*RdZoN){unsigned long
+iOPn3;AUUSL3(RdZoN,013,0);iOPn3=RtiEy4(RdZoN,013);iOPn3=(iOPn3<<010)|
+RtiEy4(RdZoN,013);iOPn3=(iOPn3<<0x8)|RtiEy4(RdZoN,013);iOPn3=(iOPn3<<
+0x8)|RtiEy4(RdZoN,013);return iOPn3;}__noinline static void UWXL71(
+volatile unsigned long*RdZoN,unsigned long SlE234){AUUSL3(RdZoN,017,(
+SlE234>>24)&0xFFu);AUUSL3(RdZoN,016,(SlE234>>16)&0xFFu);AUUSL3(RdZoN,
+015,(SlE234>>8)&0xFFu);AUUSL3(RdZoN,12,SlE234&0xFFu);}__forceinline
+static int Y3IxL2(unsigned gMQg82,unsigned long jW2b04,eU6Lk2*iO1iw4){
+iO1iw4->PBtXm1=0;iO1iw4->AuCs73=32;iO1iw4->PGh3e4=128|0x4;iO1iw4->
+KZp71=02|(0?128:0);iO1iw4->E7Ual2=0;{if(!(!(gMQg82&16777216ul)))goto
+lA6gX;iO1iw4->E7Ual2|=64;lA6gX:;}{if(!(!(gMQg82&33554432ul)))goto
+oLXWQ;iO1iw4->E7Ual2|=04;goto uDv1H1;oLXWQ:;{iO1iw4->PGh3e4|=64;
+iO1iw4->KZp71|=1;}uDv1H1:;}iO1iw4->daUKU2=0;{if(!(gMQg82&67108864ul))goto
+_mpEV4;iO1iw4->daUKU2=010;_mpEV4:;}iO1iw4->ikuha3=0;iO1iw4->rGUtq3=0;
+iO1iw4->aW7n84=0;iO1iw4->RcNOn=0;iO1iw4->aKuBh3=0;iO1iw4->TrqaA=0;{if
+(!((gMQg82&65536ul)&&(gMQg82&131072ul)))goto teFD23;{;return 0;}
+teFD23:;}{if(!((gMQg82&(65536ul|131072ul))&&(gMQg82&(268435456ul|
+134217728ul))))goto AFhrh2;{;return 0;}AFhrh2:;}switch(gMQg82&017ul){
+case(0ul<<0):iO1iw4->daUKU2=1;iO1iw4->PnawH=0;iO1iw4->gQf6j1=0;return
+0x1;case(03ul<<0):break;case(1ul<<0):iO1iw4->ikuha3|=64;iO1iw4->
+daUKU2|=8;break;case(0x2ul<<0):iO1iw4->ikuha3|=128;return 0x1;case(
+0x4ul<<0):iO1iw4->PBtXm1|=16;break;default:;return 0;}iO1iw4->PnawH=(
+01?16:0)|8|0x2|1;iO1iw4->gQf6j1=16|0x4|(0?01:0);{if(!(gMQg82&65536ul))goto
+sZXIr;{iO1iw4->gQf6j1|=64|0x8;iO1iw4->PBtXm1|=010;}sZXIr:;}{if(!(
+gMQg82&131072ul))goto L37Zk1;{iO1iw4->gQf6j1|=32|2;iO1iw4->aKuBh3=
+0xFF;}L37Zk1:;}{if(!(gMQg82&32768ul))goto fxz9x3;iO1iw4->gQf6j1|=32|
+128;fxz9x3:;}{if(!(gMQg82&256ul))goto uviEm2;iO1iw4->TrqaA=112;uviEm2
+:;}{if(!(gMQg82&512ul))goto JBhqV2;iO1iw4->daUKU2|=16;JBhqV2:;}{if(!(
+(gMQg82&0360ul)>(5ul<<04)))goto vrimc2;{iO1iw4->AuCs73|=4;{if(!(
+gMQg82&8388608ul))goto cU1Kg2;{;return 0;}cU1Kg2:;}switch(gMQg82&
+0360ul){case(0x6ul<<4):{if(!(gMQg82&(16384ul|4096ul|1048576ul|
+4194304ul)))goto wHGgP4;{;return 0;}wHGgP4:;}iO1iw4->E7Ual2|=0x8;
+iO1iw4->PnawH|=04;break;case(0x7ul<<0x4):iO1iw4->PBtXm1|=32;iO1iw4->
+PnawH|=04|128|64|32;break;case(8ul<<0x4):iO1iw4->KZp71|=04|64;iO1iw4
+->PnawH|=4|128|64|32;break;default:;return 0;}iO1iw4->PGh3e4|=8;{if(!
+((gMQg82&524288ul)==0))goto G8e151;iO1iw4->PGh3e4|=16;G8e151:;}iO1iw4
+->aKuBh3&=~32;{if(!(gMQg82&(268435456ul|(268435456ul|134217728ul))))goto
+iNjOw4;{iO1iw4->E7Ual2|=01;iO1iw4->rGUtq3|=2;}iNjOw4:;}{if(!(gMQg82&(
+134217728ul|(268435456ul|134217728ul))))goto wmgB11;{iO1iw4->E7Ual2|=
+16;iO1iw4->aKuBh3&=~0xC0;}wmgB11:;}{if(!(gMQg82&4096ul))goto uF_zA3;
+iO1iw4->PGh3e4|=01;uF_zA3:;}{if(!(gMQg82&1024ul))goto Jonao4;iO1iw4->
+PBtXm1|=64;goto SAgXh1;Jonao4:;{if(!((gMQg82&2048ul)==0))goto BbTsK4;
+iO1iw4->PBtXm1|=0x8;BbTsK4:;}SAgXh1:;}{if(!(gMQg82&16384ul))goto
+Ueefz1;iO1iw4->PBtXm1|=04;Ueefz1:;}}goto mQ8yF3;vrimc2:;{unsigned
+LFVWc4=0;unsigned long rprjq3;{if(!(gMQg82&((268435456ul|134217728ul)|
+16384ul|4096ul|32768ul|65536ul|131072ul|262144ul|524288ul|1048576ul|
+2097152ul|4194304ul|134217728ul|268435456ul)))goto y_DM22;{;return 0;
+}y_DM22:;}iO1iw4->AuCs73|=02;iO1iw4->PBtXm1|=64;iO1iw4->E7Ual2|=8;
+iO1iw4->aW7n84=jW2b04;;{if(!((gMQg82&0360ul)==(5ul<<0x4)))goto ODyYT;
+iO1iw4->aW7n84=0xFFFFFFFFul;ODyYT:;}LFVWc4=0;rprjq3=1ul<<037;{qvoJV3:
+{if(!(iO1iw4->aW7n84&rprjq3))goto WfLqn2;LFVWc4++;WfLqn2:;}if(rprjq3
+>>=0x1)goto qvoJV3;};switch(gMQg82&0360ul){case(0ul<<4):{if(!(LFVWc4
+!=01))goto ilsQH;{;return 0;}ilsQH:;}iO1iw4->RcNOn=0x16;break;case(
+0x1ul<<0x4):{if(!(LFVWc4!=02))goto qCMu6;{;return 0;}qCMu6:;}iO1iw4->
+RcNOn=025;break;case(02ul<<0x4):{if(!(LFVWc4!=04))goto XtTcj4;{;
+return 0;}XtTcj4:;}iO1iw4->RcNOn=024;break;case(03ul<<0x4):{if(!(
+LFVWc4!=0x8))goto a7_mx4;{;return 0;}a7_mx4:;}iO1iw4->RcNOn=19;break;
+case(0x4ul<<4):{if(!(LFVWc4!=16))goto Va2tt3;{;return 0;}Va2tt3:;}
+iO1iw4->RcNOn=0x12;break;case(05ul<<4):{if(!(LFVWc4!=32))goto bZsbt1;
+{;return 0;}bZsbt1:;}iO1iw4->RcNOn=021;break;default:;return 0;}{if(!
+(gMQg82&8388608ul))goto f3lP35;iO1iw4->RcNOn|=8;f3lP35:;}}mQ8yF3:;};
+return 0x1;}__forceinline static int tsz3n4(unsigned jfimS4,qwUGv3*
+xb5nq1){unsigned SHSV72=(xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256;return((
+jfimS4==3u||jfimS4==0x1u)&&SHSV72<=xb5nq1->L8vCo2)||((jfimS4==0x2u||
+jfimS4==0u)&&SHSV72>=xb5nq1->L8vCo2);}__noinline static void ylXZ7(
+qwUGv3*xb5nq1,kWMzp1*J7Iki4,int b9Zs_){xb5nq1->uyKJn2[0]++;J7Iki4->
+YRHFy->Psq0V3++;{if(!(J7Iki4->YRHFy->cJw4g2))goto vi8Hd3;{QD7sk4(&
+J7Iki4->h2LrH3);J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,b9Zs_,2097152ul);
+h2LrH3(&J7Iki4->h2LrH3);}vi8Hd3:;}}__forceinline static void Uwhrn4(
+unsigned jfimS4,unsigned A7Lph2,qwUGv3*xb5nq1,kWMzp1*J7Iki4,int b9Zs_
+){unsigned long inWLN1;volatile unsigned long*RdZoN;RdZoN=&J7Iki4->
+v6D2d3->_jfrJ1;inWLN1=XpfBS(RdZoN);{if(!(xb5nq1->spClj2))goto NQD_Y1;
+{{if(!(inWLN1-xb5nq1->spClj2>A7Lph2))goto BVyzP;ylXZ7(xb5nq1,J7Iki4,
+b9Zs_);BVyzP:;}}NQD_Y1:;}xb5nq1->spClj2=inWLN1;{if(!(xb5nq1->kueUq2&&
+tsz3n4(jfimS4,xb5nq1)&&xb5nq1->Yj6gL2))goto z06ol;{unsigned SHSV72=(
+xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256;xb5nq1->kueUq2=0;QD7sk4(&J7Iki4->
+h2LrH3);xb5nq1->Yj6gL2(J7Iki4->YRHFy,b9Zs_,jfimS4,(jfimS4==03u||
+jfimS4==01u)?256-SHSV72:SHSV72);h2LrH3(&J7Iki4->h2LrH3);}z06ol:;}}
+__forceinline static void aUfOe1(unsigned jfimS4,qwUGv3*xb5nq1){{if(!
+(xb5nq1->Yj6gL2&&xb5nq1->kueUq2==0&&!tsz3n4(jfimS4,xb5nq1)))goto BTL3a
+;xb5nq1->kueUq2=0x1;BTL3a:;}}__forceinline static void aeA8v(qwUGv3*
+xb5nq1,unsigned F46242,Ei5yG Yj6gL2){xb5nq1->kueUq2=0;xb5nq1->L8vCo2=
+F46242;{if(!((xb5nq1->Yj6gL2=Yj6gL2)!=0))goto A3cBz3;xb5nq1->kueUq2=
+01;A3cBz3:;}}static void _3uXJ1(kWMzp1*J7Iki4){{unsigned cYcNq,H4ghS2
+=0;{if(!(J7Iki4->Kt5Iv1[0]))goto mABZV4;{volatile unsigned long*RdZoN
+;unsigned CCKdO2,zQ6M_2,wk4VW,Hdw702;RdZoN=&J7Iki4->v6D2d3->_jfrJ1;
+CCKdO2=dMM0e1(RdZoN,010);{if(!(CCKdO2&32))goto CVByc4;H4ghS2|=8192u;
+CVByc4:;}zQ6M_2=fFvjz3(RdZoN,036);wk4VW=dMM0e1(RdZoN,06);{if(!(wk4VW&
+010))goto UUEy33;H4ghS2|=4u;goto la1Uw1;UUEy33:;{{if(!((J7Iki4->
+Kt5Iv1[0]&240ul)>(05ul<<04)))goto QNnjG2;{{if(!((zQ6M_2&04)))goto
+B2kwf3;H4ghS2|=1024u;B2kwf3:;}{if(!(wk4VW&0x4))goto SZvSz2;H4ghS2|=
+010u;SZvSz2:;}{if(!(wk4VW&1))goto SQSyi;H4ghS2|=2u;SQSyi:;}{if(!((
+J7Iki4->Kt5Iv1[0]&240ul)>(06ul<<04)))goto VtSWk;{{if(!((zQ6M_2&02)))goto
+cKzYE4;H4ghS2|=4096u;cKzYE4:;}{if(!(wk4VW&64))goto oChue3;H4ghS2|=64u
+;oChue3:;}switch(wk4VW&(128|32)){case 128:H4ghS2|=16u;break;case 32:
+H4ghS2|=32u;break;default:wk4VW&=~(128|32);}}VtSWk:;}{if(!(J7Iki4->
+Kt5Iv1[0]&(268435456ul|134217728ul)))goto PcBHe4;{{if(!(zQ6M_2>>4>=13
+))goto uUOUZ4;H4ghS2|=16384u;uUOUZ4:;}{if(!((zQ6M_2&1)))goto J8CgD1;
+H4ghS2|=2048u;J8CgD1:;}}PcBHe4:;}}QNnjG2:;}{if(!(wk4VW&02))goto quUCW1
+;H4ghS2|=01u;quUCW1:;}}la1Uw1:;}{if(!(01&&(wk4VW&16)))goto PNEDs3;{
+H4ghS2|=256u;J7Iki4->YRHFy->io7IZ3[0].FAUQ42++;s3sCI1(RdZoN,0xaa,64);
+s3sCI1(RdZoN,0xaa,0);}PNEDs3:;}Hdw702=dMM0e1(RdZoN,0x7);{if(!(Hdw702&
+4))goto bt72f2;H4ghS2|=128u;bt72f2:;}{if(!(J7Iki4->Kt5Iv1[0]&65536ul))goto
+IPzvA4;{{if(!(Hdw702&64))goto vVvN92;{qwUGv3*xb5nq1=J7Iki4->Nlajt1[0]
+[0x2u];xb5nq1->c5SHY1[xb5nq1->lxfqy2%256]=(unsigned char)fFvjz3(RdZoN
+,31);{if(!((xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256>=256-0x1))goto N5Uxq;{
+xb5nq1->uyKJn2[0]++;xb5nq1->ELKAp3++;}N5Uxq:;}xb5nq1->lxfqy2++;Uwhrn4
+(02u,512,xb5nq1,J7Iki4,0);}vVvN92:;}{if(!(Hdw702&0x8))goto s4jFx3;{
+qwUGv3*xb5nq1=J7Iki4->Nlajt1[0][0x3u];{if(!((xb5nq1->lxfqy2-xb5nq1->
+ELKAp3)%256>=1))goto _N0P51;{unsigned bpv453=xb5nq1->c5SHY1[xb5nq1->
+ELKAp3%256];s3sCI1(RdZoN,0x21,J7Iki4->fV7o35[0].DvwSz1=(unsigned char
+)(bpv453|64));xb5nq1->ELKAp3++;}goto zsCVP1;_N0P51:;xb5nq1->uyKJn2[0]
+++;zsCVP1:;}Uwhrn4(0x3u,512,xb5nq1,J7Iki4,0);}s4jFx3:;}}goto OLrkM2;
+IPzvA4:;{if(!(J7Iki4->Kt5Iv1[0]&131072ul))goto C7R8_3;{{if(!(Hdw702&
+02))goto Ww9nZ4;{int X3V8j4;qwUGv3*xb5nq1=J7Iki4->Nlajt1[0][2u];
+X3V8j4=7;{ERKOn1:xb5nq1->c5SHY1[(xb5nq1->lxfqy2+X3V8j4)%256]=(
+unsigned char)fFvjz3(RdZoN,0130+X3V8j4);if(--X3V8j4>=0)goto ERKOn1;};
+{if(!((xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256>=256-0x8))goto rmURl1;{
+xb5nq1->uyKJn2[0]++;xb5nq1->ELKAp3+=0x8;}rmURl1:;}xb5nq1->lxfqy2+=0x8
+;Uwhrn4(02u,4096,xb5nq1,J7Iki4,0);}Ww9nZ4:;}{if(!(Hdw702&32))goto
+K0Kz1;{qwUGv3*xb5nq1=J7Iki4->Nlajt1[0][3u];{if(!((xb5nq1->lxfqy2-
+xb5nq1->ELKAp3)%256>=8))goto Drfpj;{int X3V8j4=7;{Nf3bE4:s3sCI1(RdZoN
+,0120+X3V8j4,xb5nq1->c5SHY1[(xb5nq1->ELKAp3+X3V8j4)%256]);if(--X3V8j4
+>=0)goto Nf3bE4;};xb5nq1->ELKAp3+=0x8;}goto Ttri;Drfpj:;xb5nq1->
+uyKJn2[0]++;Ttri:;}Uwhrn4(0x3u,4096,xb5nq1,J7Iki4,0);}K0Kz1:;}}C7R8_3
+:;}OLrkM2:;}{if(!(J7Iki4->Kt5Iv1[0]&32768ul))goto Ylr7z2;{{if(!(
+Hdw702&128))goto Cxl7q3;{int X3V8j4;qwUGv3*xb5nq1=J7Iki4->Nlajt1[0][
+0u];X3V8j4=15;{nR9ID4:xb5nq1->c5SHY1[(xb5nq1->lxfqy2+X3V8j4)%256]=(
+unsigned char)fFvjz3(RdZoN,48+X3V8j4);if(--X3V8j4>=0)goto nR9ID4;};{
+if(!((xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256>=256-16))goto gbrGo;{xb5nq1
+->uyKJn2[0]++;xb5nq1->ELKAp3+=16;}gbrGo:;}xb5nq1->lxfqy2+=16;Uwhrn4(
+0u,4096,xb5nq1,J7Iki4,0);}Cxl7q3:;}{if(!(Hdw702&32))goto nPH824;{
+qwUGv3*xb5nq1=J7Iki4->Nlajt1[0][01u];{if(!((xb5nq1->lxfqy2-xb5nq1->
+ELKAp3)%256>=16))goto LZZGY4;{int X3V8j4=017;{psOxv1:s3sCI1(RdZoN,64+
+X3V8j4,J7Iki4->fV7o35[0].FNU7M3[X3V8j4]=xb5nq1->c5SHY1[(xb5nq1->
+ELKAp3+X3V8j4)%256]);if(--X3V8j4>=0)goto psOxv1;};xb5nq1->ELKAp3+=16;
+}goto Znzp11;LZZGY4:;xb5nq1->uyKJn2[0]++;Znzp11:;}Uwhrn4(0x1u,4096,
+xb5nq1,J7Iki4,0);}nPH824:;}}Ylr7z2:;}{if(!(0&&(Hdw702&0x1)))goto
+y5A4M3;{H4ghS2|=512u;J7Iki4->YRHFy->io7IZ3[0].k18ZY3++;s3sCI1(RdZoN,
+0xaa,32);s3sCI1(RdZoN,0xaa,0);}y5A4M3:;}s3sCI1(RdZoN,026,J7Iki4->
+fV7o35[0].PnawH&~(01?wk4VW&~16:wk4VW));s3sCI1(RdZoN,027,J7Iki4->
+fV7o35[0].gQf6j1&~(Hdw702&0x4));{if(!(Hdw702&16))goto _frtg;{J7Iki4->
+YRHFy->io7IZ3[0].sN5Zi1+=(fFvjz3(RdZoN,0)<<010)+fFvjz3(RdZoN,01);{if(
+!((J7Iki4->Kt5Iv1[0]&0360ul)>(0x5ul<<0x4)))goto hQBcc1;{unsigned
+wGgJV2,kUguy3;wGgJV2=fFvjz3(RdZoN,0x2);{if(!(J7Iki4->Kt5Iv1[0]&(
+268435456ul|134217728ul)))goto c2Xt35;J7Iki4->YRHFy->io7IZ3[0].cWGy25
++=((wGgJV2&0x3)<<0x8)+fFvjz3(RdZoN,0x3);c2Xt35:;}kUguy3=fFvjz3(RdZoN,
+04);J7Iki4->YRHFy->io7IZ3[0].xnb4g3+=((kUguy3&0x3)<<0x8)+fFvjz3(RdZoN
+,0x5);J7Iki4->YRHFy->io7IZ3[0].oU5TM+=(kUguy3>>0x2)+((wGgJV2&~03)<<06
+);}hQBcc1:;}J7Iki4->YRHFy->io7IZ3[0].inWLN1++;}_frtg:;}}goto VgzJp1;
+mABZV4:;H4ghS2=32768u;VgzJp1:;}cYcNq=H4ghS2^J7Iki4->oXafA1[0].H4ghS2;
+{if(!(cYcNq))goto LqFyN;{J7Iki4->YRHFy->io7IZ3[0].H4ghS2=J7Iki4->
+oXafA1[0].H4ghS2=H4ghS2;M1Kp62(J7Iki4,0);{if(!(J7Iki4->YRHFy->G7h9S3))goto
+meOKL1;{QD7sk4(&J7Iki4->h2LrH3);J7Iki4->YRHFy->G7h9S3(J7Iki4->YRHFy,0
+,cYcNq);h2LrH3(&J7Iki4->h2LrH3);}meOKL1:;}}LqFyN:;}};{unsigned cYcNq,
+H4ghS2=0;{if(!(J7Iki4->Kt5Iv1[0x1]))goto DpY605;{volatile unsigned
+long*RdZoN;unsigned CCKdO2,zQ6M_2,wk4VW,Hdw702;RdZoN=&J7Iki4->v6D2d3
+->_jfrJ1;CCKdO2=EIMqn1(RdZoN,0x8);{if(!(CCKdO2&32))goto Mlzuh1;H4ghS2
+|=8192u;Mlzuh1:;}zQ6M_2=x2akp(RdZoN,036);wk4VW=EIMqn1(RdZoN,0x6);{if(
+!(wk4VW&0x8))goto B_9IY2;H4ghS2|=04u;goto sWA1f4;B_9IY2:;{{if(!((
+J7Iki4->Kt5Iv1[0x1]&240ul)>(0x5ul<<4)))goto lKr7C;{{if(!((zQ6M_2&04)))goto
+TchrS;H4ghS2|=1024u;TchrS:;}{if(!(wk4VW&0x4))goto oOE2W;H4ghS2|=0x8u;
+oOE2W:;}{if(!(wk4VW&0x1))goto _fJ2B4;H4ghS2|=2u;_fJ2B4:;}{if(!((
+J7Iki4->Kt5Iv1[0x1]&0360ul)>(0x6ul<<04)))goto n_AjF4;{{if(!((zQ6M_2&2
+)))goto YJ3xz2;H4ghS2|=4096u;YJ3xz2:;}{if(!(wk4VW&64))goto pXz9V1;
+H4ghS2|=64u;pXz9V1:;}switch(wk4VW&(128|32)){case 128:H4ghS2|=16u;
+break;case 32:H4ghS2|=32u;break;default:wk4VW&=~(128|32);}}n_AjF4:;}{
+if(!(J7Iki4->Kt5Iv1[0x1]&(268435456ul|134217728ul)))goto K7id2;{{if(!
+(zQ6M_2>>4>=13))goto GNmUv4;H4ghS2|=16384u;GNmUv4:;}{if(!((zQ6M_2&1)))goto
+FCBHJ2;H4ghS2|=2048u;FCBHJ2:;}}K7id2:;}}lKr7C:;}{if(!(wk4VW&02))goto
+_5jq61;H4ghS2|=0x1u;_5jq61:;}}sWA1f4:;}{if(!(01&&(wk4VW&16)))goto
+WvRg31;{H4ghS2|=256u;J7Iki4->YRHFy->io7IZ3[0x1].FAUQ42++;dZK6h3(RdZoN
+,0xaa,64);dZK6h3(RdZoN,0xaa,0);}WvRg31:;}Hdw702=EIMqn1(RdZoN,7);{if(!
+(Hdw702&0x4))goto SUmQ44;H4ghS2|=128u;SUmQ44:;}{if(!(J7Iki4->Kt5Iv1[
+01]&65536ul))goto J4NyB2;{{if(!(Hdw702&64))goto oOqXI4;{qwUGv3*xb5nq1
+=J7Iki4->Nlajt1[01][2u];xb5nq1->c5SHY1[xb5nq1->lxfqy2%256]=(unsigned
+char)x2akp(RdZoN,037);{if(!((xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256>=256-
+1))goto URiEj;{xb5nq1->uyKJn2[0]++;xb5nq1->ELKAp3++;}URiEj:;}xb5nq1->
+lxfqy2++;Uwhrn4(0x2u,512,xb5nq1,J7Iki4,01);}oOqXI4:;}{if(!(Hdw702&0x8
+))goto Sg7Ii;{qwUGv3*xb5nq1=J7Iki4->Nlajt1[01][03u];{if(!((xb5nq1->
+lxfqy2-xb5nq1->ELKAp3)%256>=01))goto cbk1I1;{unsigned bpv453=xb5nq1->
+c5SHY1[xb5nq1->ELKAp3%256];dZK6h3(RdZoN,0x21,J7Iki4->fV7o35[0x1].
+DvwSz1=(unsigned char)(bpv453|64));xb5nq1->ELKAp3++;}goto s0wE55;
+cbk1I1:;xb5nq1->uyKJn2[0]++;s0wE55:;}Uwhrn4(0x3u,512,xb5nq1,J7Iki4,
+0x1);}Sg7Ii:;}}goto TdRVs1;J4NyB2:;{if(!(J7Iki4->Kt5Iv1[0x1]&131072ul
+))goto K7Qbq4;{{if(!(Hdw702&2))goto ojbR01;{int X3V8j4;qwUGv3*xb5nq1=
+J7Iki4->Nlajt1[0x1][02u];X3V8j4=07;{EmxrA2:xb5nq1->c5SHY1[(xb5nq1->
+lxfqy2+X3V8j4)%256]=(unsigned char)x2akp(RdZoN,0x58+X3V8j4);if(--
+X3V8j4>=0)goto EmxrA2;};{if(!((xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256>=
+256-8))goto QptoN3;{xb5nq1->uyKJn2[0]++;xb5nq1->ELKAp3+=8;}QptoN3:;}
+xb5nq1->lxfqy2+=8;Uwhrn4(2u,4096,xb5nq1,J7Iki4,01);}ojbR01:;}{if(!(
+Hdw702&32))goto Ifkj42;{qwUGv3*xb5nq1=J7Iki4->Nlajt1[1][0x3u];{if(!((
+xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256>=0x8))goto YQN8T3;{int X3V8j4=07;{
+grRT_1:dZK6h3(RdZoN,0120+X3V8j4,xb5nq1->c5SHY1[(xb5nq1->ELKAp3+X3V8j4
+)%256]);if(--X3V8j4>=0)goto grRT_1;};xb5nq1->ELKAp3+=010;}goto ATPk83
+;YQN8T3:;xb5nq1->uyKJn2[0]++;ATPk83:;}Uwhrn4(0x3u,4096,xb5nq1,J7Iki4,
+0x1);}Ifkj42:;}}K7Qbq4:;}TdRVs1:;}{if(!(J7Iki4->Kt5Iv1[1]&32768ul))goto
+dhx3O2;{{if(!(Hdw702&128))goto knaph4;{int X3V8j4;qwUGv3*xb5nq1=
+J7Iki4->Nlajt1[1][0u];X3V8j4=15;{CGimB:xb5nq1->c5SHY1[(xb5nq1->lxfqy2
++X3V8j4)%256]=(unsigned char)x2akp(RdZoN,48+X3V8j4);if(--X3V8j4>=0)goto
+CGimB;};{if(!((xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256>=256-16))goto pwG_r2
+;{xb5nq1->uyKJn2[0]++;xb5nq1->ELKAp3+=16;}pwG_r2:;}xb5nq1->lxfqy2+=16
+;Uwhrn4(0u,4096,xb5nq1,J7Iki4,0x1);}knaph4:;}{if(!(Hdw702&32))goto
+OjNlS3;{qwUGv3*xb5nq1=J7Iki4->Nlajt1[0x1][01u];{if(!((xb5nq1->lxfqy2-
+xb5nq1->ELKAp3)%256>=16))goto QPCH7;{int X3V8j4=15;{URQaM4:dZK6h3(
+RdZoN,64+X3V8j4,J7Iki4->fV7o35[01].FNU7M3[X3V8j4]=xb5nq1->c5SHY1[(
+xb5nq1->ELKAp3+X3V8j4)%256]);if(--X3V8j4>=0)goto URQaM4;};xb5nq1->
+ELKAp3+=16;}goto NUiYy1;QPCH7:;xb5nq1->uyKJn2[0]++;NUiYy1:;}Uwhrn4(
+0x1u,4096,xb5nq1,J7Iki4,1);}OjNlS3:;}}dhx3O2:;}{if(!(0&&(Hdw702&0x1)))goto
+xZ7sX;{H4ghS2|=512u;J7Iki4->YRHFy->io7IZ3[1].k18ZY3++;dZK6h3(RdZoN,
+0xaa,32);dZK6h3(RdZoN,0xaa,0);}xZ7sX:;}dZK6h3(RdZoN,026,J7Iki4->
+fV7o35[01].PnawH&~(01?wk4VW&~16:wk4VW));dZK6h3(RdZoN,23,J7Iki4->
+fV7o35[1].gQf6j1&~(Hdw702&04));{if(!(Hdw702&16))goto VKkfq2;{J7Iki4->
+YRHFy->io7IZ3[0x1].sN5Zi1+=(x2akp(RdZoN,0)<<0x8)+x2akp(RdZoN,01);{if(
+!((J7Iki4->Kt5Iv1[01]&0360ul)>(5ul<<0x4)))goto LcjXp2;{unsigned wGgJV2
+,kUguy3;wGgJV2=x2akp(RdZoN,02);{if(!(J7Iki4->Kt5Iv1[0x1]&(268435456ul
+|134217728ul)))goto XSN5P3;J7Iki4->YRHFy->io7IZ3[01].cWGy25+=((wGgJV2
+&3)<<010)+x2akp(RdZoN,0x3);XSN5P3:;}kUguy3=x2akp(RdZoN,04);J7Iki4->
+YRHFy->io7IZ3[1].xnb4g3+=((kUguy3&03)<<0x8)+x2akp(RdZoN,05);J7Iki4->
+YRHFy->io7IZ3[0x1].oU5TM+=(kUguy3>>2)+((wGgJV2&~03)<<06);}LcjXp2:;}
+J7Iki4->YRHFy->io7IZ3[1].inWLN1++;}VKkfq2:;}}goto i5IS4;DpY605:;
+H4ghS2=32768u;i5IS4:;}cYcNq=H4ghS2^J7Iki4->oXafA1[0x1].H4ghS2;{if(!(
+cYcNq))goto YAcOG4;{J7Iki4->YRHFy->io7IZ3[1].H4ghS2=J7Iki4->oXafA1[01
+].H4ghS2=H4ghS2;M1Kp62(J7Iki4,0x1);{if(!(J7Iki4->YRHFy->G7h9S3))goto
+gIo9c2;{QD7sk4(&J7Iki4->h2LrH3);J7Iki4->YRHFy->G7h9S3(J7Iki4->YRHFy,
+0x1,cYcNq);h2LrH3(&J7Iki4->h2LrH3);}gIo9c2:;}}YAcOG4:;}};}__noinline
+static void CLbj94(kWMzp1*J7Iki4,volatile unsigned long*RdZoN){int
+X3V8j4;AUUSL3(RdZoN,0x7,0);X3V8j4=0;{AGHnT4:{J7Iki4->wTSMD1[0][X3V8j4
+]=(unsigned char)X3V8j4;J7Iki4->wTSMD1[0x1][X3V8j4]=(unsigned char)X3V8j4
+;AUUSL3(RdZoN,0x6,X3V8j4);}if(++X3V8j4<0140)goto AGHnT4;};AUUSL3(
+RdZoN,0,J7Iki4->GEt0d|04);}__forceinline static void kvYKl(kWMzp1*
+J7Iki4){J7Iki4->v6D2d3->oSrkU4=0xC000101Ful;J7Iki4->v6D2d3->MDSlK2=
+VpYRo1;J7Iki4->v6D2d3->oSrkU4=0xC060101Ful;}void __attribute__((cdecl
+))TAU32_EnableInterrupts(kWMzp1*J7Iki4){Kf8n_4(&J7Iki4->h2LrH3);
+J7Iki4->v6D2d3->lPIbL4=(unsigned long)~(l9wtw1|GLE_s4|J2Fer3|yn0bR1|
+t57WF3|VpYRo1|eCQDF|ldkSL4);J7Iki4->v6D2d3->uXZM21=0u;kvYKl(J7Iki4);}
+void __attribute__((cdecl))TAU32_DisableInterrupts(kWMzp1*J7Iki4){
+ees1n1(J7Iki4);Kf8n_4(&J7Iki4->h2LrH3);}static void w_2xo4(kWMzp1*
+J7Iki4){kvYKl(J7Iki4);d5Rc74(J7Iki4);_3uXJ1(J7Iki4);p9baI3(J7Iki4);}
+void __attribute__((cdecl))TAU32_BeforeReset(nvFyD4*YRHFy){{if(!(
+YRHFy))goto dLlx84;{volatile f2E883*v6D2d3=(volatile f2E883* )YRHFy->
+BhIif3;{if(!(v6D2d3))goto z7rPl;{v6D2d3->lPIbL4=~0ul;v6D2d3->oSrkU4=
+0ul;v6D2d3->L221t4.BucKo=0ul;v6D2d3->uXZM21=~0ul;v6D2d3->bPudJ3=0ul;}
+z7rPl:;}}dLlx84:;}}static int p9baI3(kWMzp1*J7Iki4){int g0ki44=01750;
+{pY_pO3:{J7Iki4->v6D2d3->oSrkU4=0xC000101Ful;J7Iki4->v6D2d3->MDSlK2=
+VpYRo1;d5Rc74(J7Iki4);_3uXJ1(J7Iki4);{if(!(--g0ki44==0))goto ryhmm;
+goto ETBla3;ryhmm:;}J7Iki4->v6D2d3->oSrkU4=0xC060101Ful;}if(J7Iki4->
+v6D2d3->QiOkk4&0x2)goto pY_pO3;};return 0x1;ETBla3:J7Iki4->v6D2d3->
+lPIbL4|=VpYRo1;J7Iki4->v6D2d3->oSrkU4=0;{if(!(J7Iki4->YRHFy->cJw4g2))goto
+HCntb3;{QD7sk4(&J7Iki4->h2LrH3);J7Iki4->YRHFy->cJw4g2(J7Iki4->YRHFy,-
+2,1048576ul);h2LrH3(&J7Iki4->h2LrH3);}HCntb3:;}return-0x1;}int
+__attribute__((cdecl))TAU32_IsInterruptPending(kWMzp1*J7Iki4){return
+Nt0Ut1(J7Iki4);}__noinline static unsigned __fastcall d5Rc74(kWMzp1*
+J7Iki4){volatile unsigned long*RdZoN;unsigned csvRg2,UYtd71,H4ghS2;
+RdZoN=&J7Iki4->v6D2d3->_jfrJ1;H4ghS2=RtiEy4(RdZoN,0);UYtd71=J7Iki4->
+UYtd71&~1u;{if(!((H4ghS2&64)&&(J7Iki4->GEt0d&8)))goto Q9zdR1;{{if(!(!
+(J7Iki4->UYtd71&1u)))goto _MoA13;J7Iki4->YRHFy->NeqBE4++;_MoA13:;}
+UYtd71|=1u;}Q9zdR1:;}{if(!(H4ghS2&128))goto n395L2;{UYtd71&=~04u;{if(
+!(UYtd71&0x2u))goto hZlaW4;{int NNm8q=96;{if(!(J7Iki4->SP4ZU==0x2))goto
+N63wg2;NNm8q-=32;N63wg2:;}zyF2Y3(J7Iki4,RdZoN,NNm8q);UYtd71=(UYtd71|
+0x4u)&~2u;}hZlaW4:;}}n395L2:;}csvRg2=J7Iki4->UYtd71^UYtd71;{if(!(
+csvRg2))goto vB_J54;{J7Iki4->YRHFy->UYtd71=J7Iki4->UYtd71=UYtd71;{if(
+!(J7Iki4->YRHFy->G7h9S3))goto koOfX1;{QD7sk4(&J7Iki4->h2LrH3);J7Iki4
+->YRHFy->G7h9S3(J7Iki4->YRHFy,-01,csvRg2);h2LrH3(&J7Iki4->h2LrH3);}
+koOfX1:;}}vB_J54:;}return H4ghS2;}int __attribute__((cdecl))TAU32_HandleInterrupt
+(kWMzp1*J7Iki4){int Z0e1C2;Sqi0T3(&J7Iki4->h2LrH3);;Z0e1C2=fRgzh2(
+J7Iki4);QD7sk4(&J7Iki4->h2LrH3);return Z0e1C2;}int __attribute__((
+cdecl))TAU32_SubmitRequest(kWMzp1*J7Iki4,Os1bA3*wkiYO4){int Z0e1C2;
+h2LrH3(&J7Iki4->h2LrH3);Z0e1C2=yG5VL(J7Iki4,wkiYO4);QD7sk4(&J7Iki4->
+h2LrH3);return Z0e1C2;}int __attribute__((cdecl))TAU32_CancelRequest(
+kWMzp1*J7Iki4,Os1bA3*wkiYO4,int hj5891){int Z0e1C2;h2LrH3(&J7Iki4->
+h2LrH3);Z0e1C2=WMa7R(J7Iki4,wkiYO4,hj5891);{if(!(Z0e1C2))goto e8p6a3;
+{;}e8p6a3:;}QD7sk4(&J7Iki4->h2LrH3);return Z0e1C2;}__forceinline
+static int Iyzzx(int NNm8q,unsigned char*UgbwG3,unsigned long hObSM4,
+unsigned char*i3w1H,unsigned char*j0Yx9){const unsigned j12w52=127u;
+const unsigned OULAA3=128u;int iOPn3=0;int X3V8j4=0;{iQFWQ1:{int
+ll1kg3=UgbwG3?UgbwG3[X3V8j4]:(i3w1H[X3V8j4]&~OULAA3);{if(!(ll1kg3>=
+NNm8q))goto ya31H2;ll1kg3=j12w52;ya31H2:;}{if(!(X3V8j4<32))goto SWOC82
+;{{if(!(hObSM4&1))goto vkvip;ll1kg3|=OULAA3;vkvip:;}hObSM4>>=01;}
+SWOC82:;}{if(!(iOPn3||ll1kg3!=i3w1H[X3V8j4]))goto ajFIr1;{j0Yx9[
+X3V8j4]=(unsigned char)ll1kg3;{if(!(!iOPn3))goto ryAiU4;{int uSi9a4;{
+uSi9a4=0;Xwrbb1:if(!(uSi9a4<X3V8j4))goto G_ORW2;goto DTp3J3;oR3jC2:
+uSi9a4++;goto Xwrbb1;DTp3J3:j0Yx9[uSi9a4]=i3w1H[uSi9a4];goto oR3jC2;
+G_ORW2:;}iOPn3=0x1;}ryAiU4:;}}ajFIr1:;}}if(++X3V8j4<NNm8q)goto iQFWQ1
+;};return iOPn3;}__noinline static void zyF2Y3(kWMzp1*J7Iki4,volatile
+unsigned long*RdZoN,int NNm8q){unsigned char*YTCT72;int qgDDD2=-1;int
+X3V8j4=0;{AnAG35:{{if(!(J7Iki4->ITvPG2[X3V8j4]!=J7Iki4->q0ypK[X3V8j4]
+))goto HepqV3;{{if(!(qgDDD2!=X3V8j4))goto uVuAT;AUUSL3(RdZoN,0x7,
+X3V8j4);uVuAT:;}AUUSL3(RdZoN,0x6,J7Iki4->q0ypK[X3V8j4]=J7Iki4->ITvPG2
+[X3V8j4]);qgDDD2=X3V8j4+0x1;}HepqV3:;}}if(++X3V8j4<NNm8q)goto AnAG35;
+};AUUSL3(RdZoN,0,J7Iki4->GEt0d|4);YTCT72=J7Iki4->q0ypK;J7Iki4->q0ypK=
+J7Iki4->eKHB1;J7Iki4->eKHB1=YTCT72;M1Kp62(J7Iki4,(-1));}int
+__attribute__((cdecl))TAU32_SetCrossMatrix(kWMzp1*J7Iki4,unsigned char
+ *WQjAp4,unsigned long hObSM4){int NNm8q;h2LrH3(&J7Iki4->h2LrH3);
+NNm8q=0140;{if(!(J7Iki4->SP4ZU==0x2))goto IM659;NNm8q-=32;IM659:;}{if
+(!(Iyzzx(NNm8q,WQjAp4,hObSM4,J7Iki4->eKHB1,J7Iki4->ITvPG2)))goto
+YZhJh1;{volatile unsigned long*RdZoN;RdZoN=&J7Iki4->v6D2d3->_jfrJ1;{
+if(!(J7Iki4->UYtd71&0x4u))goto O2juJ1;{{if(!(!(J7Iki4->UYtd71&02u)))goto
+ABEyi1;{J7Iki4->YRHFy->UYtd71=J7Iki4->UYtd71|=0x2u;{if(!(J7Iki4->
+YRHFy->G7h9S3))goto xcOQU2;{QD7sk4(&J7Iki4->h2LrH3);J7Iki4->YRHFy->
+G7h9S3(J7Iki4->YRHFy,-1,0x2u);h2LrH3(&J7Iki4->h2LrH3);}xcOQU2:;}}
+ABEyi1:;}}goto F6RDd1;O2juJ1:;{J7Iki4->YRHFy->UYtd71=J7Iki4->UYtd71|=
+4u;zyF2Y3(J7Iki4,RdZoN,NNm8q);}F6RDd1:;}}goto Mxm1G4;YZhJh1:;{{if(!(
+J7Iki4->UYtd71&0x2u))goto lX9V74;{J7Iki4->YRHFy->UYtd71=J7Iki4->
+UYtd71&=~0x2u;{if(!(J7Iki4->YRHFy->G7h9S3))goto Vs72l;{QD7sk4(&J7Iki4
+->h2LrH3);J7Iki4->YRHFy->G7h9S3(J7Iki4->YRHFy,-01,02u);h2LrH3(&J7Iki4
+->h2LrH3);}Vs72l:;}}lX9V74:;}}Mxm1G4:;}QD7sk4(&J7Iki4->h2LrH3);return
+01;}void __attribute__((cdecl))TAU32_LedBlink(kWMzp1*J7Iki4){volatile
+unsigned long*RdZoN;h2LrH3(&J7Iki4->h2LrH3);J7Iki4->YRHFy->UYtd71=
+J7Iki4->UYtd71^=8u;J7Iki4->GEt0d^=16;;RdZoN=&J7Iki4->v6D2d3->_jfrJ1;
+AUUSL3(RdZoN,0,J7Iki4->GEt0d);QD7sk4(&J7Iki4->h2LrH3);}void
+__attribute__((cdecl))TAU32_LedSet(kWMzp1*J7Iki4,int y3yr7){unsigned
+NNh015;h2LrH3(&J7Iki4->h2LrH3);NNh015=J7Iki4->GEt0d&~16;{if(!(y3yr7))goto
+TN3RI3;NNh015|=16;TN3RI3:;}{if(!(J7Iki4->GEt0d!=NNh015))goto XyjFV1;{
+volatile unsigned long*RdZoN;unsigned UYtd71=J7Iki4->UYtd71&~8u;{if(!
+(NNh015&16))goto MT7_U;UYtd71|=0x8u;MT7_U:;}J7Iki4->YRHFy->UYtd71=
+J7Iki4->UYtd71=UYtd71;RdZoN=&J7Iki4->v6D2d3->_jfrJ1;AUUSL3(RdZoN,0,
+J7Iki4->GEt0d=NNh015);}XyjFV1:;}QD7sk4(&J7Iki4->h2LrH3);}static
+__forceinline unsigned long long sHR2d4(unsigned long maKE61,unsigned
+long pNOb85){unsigned long long Z0e1C2;__asm__("mull %2":"=A,A"(
+Z0e1C2):"%a,%a"(maKE61),"r,m"(pNOb85):"cc");return Z0e1C2;}unsigned
+long long __attribute__((cdecl))TAU32_ProbeGeneratorFrequency(
+unsigned long long W4f921){unsigned long SlE234,jSJ9c,rNKzp2=0,IkJYR1
+=(unsigned long)(W4f921>>32);{if(!(((int)IkJYR1)<=0))goto g74P44;
+IkJYR1=2048000;goto lwCTs;g74P44:;{if(!(IkJYR1<2048000-011610))goto
+CoPx_3;IkJYR1=2048000-011610;goto wQGHB2;CoPx_3:;{if(!(IkJYR1>=
+2048000+011610))goto HutZr4;IkJYR1=2048000+011610;goto QTktG2;HutZr4:
+;rNKzp2=(unsigned long)W4f921;QTktG2:;}wQGHB2:;}lwCTs:;}W4f921=(((
+unsigned long long)IkJYR1)<<32)+rNKzp2;W4f921+=65536*0175/2;W4f921>>=
+16;__asm__("divl %3":"=a,a"(SlE234),"=d,d"(jSJ9c):"A,A"(W4f921),"r,m"
+(125):"cc");return sHR2d4(SlE234,0175*65536);}unsigned long long
+__attribute__((cdecl))TAU32_SetGeneratorFrequency(kWMzp1*J7Iki4,
+unsigned long long W4f921){volatile unsigned long*RdZoN;unsigned long
+SlE234;unsigned long jSJ9c,IkJYR1=(unsigned long)(W4f921>>32);{if(!((
+(int)IkJYR1)<=0))goto dDi0r1;goto TnCss1;goto LmtWY4;dDi0r1:;{if(!(
+IkJYR1<2048000-0x1388))goto Zz1C01;goto GjSDd;goto iAj6S2;Zz1C01:;{if
+(!(IkJYR1>=2048000+011610))goto OFReQ2;goto uEgvT;OFReQ2:;}iAj6S2:;}
+LmtWY4:;}RMAeN:W4f921+=65536*0175/2;W4f921>>=16;__asm__("divl %3":
+"=a,a"(SlE234),"=d,d"(jSJ9c):"A,A"(W4f921),"r,m"(0175):"cc");;h2LrH3(
+&J7Iki4->h2LrH3);{if(!(J7Iki4->PpoEe4!=SlE234))goto yqPKN3;{J7Iki4->
+PpoEe4=SlE234;RdZoN=&J7Iki4->v6D2d3->_jfrJ1;UWXL71(RdZoN,SlE234);}
+yqPKN3:;}QD7sk4(&J7Iki4->h2LrH3);return sHR2d4(SlE234,0175*65536);
+TnCss1:W4f921=((unsigned long long)2048000ul)<<32;goto RMAeN;GjSDd:
+W4f921=((unsigned long long)2048000ul-0x1388)<<32;goto RMAeN;uEgvT:
+W4f921=((unsigned long long)2048000ul+011610)<<32;goto RMAeN;}int
+__attribute__((cdecl))TAU32_SetSyncMode(kWMzp1*J7Iki4,unsigned ZDwa01
+){unsigned NNh015;h2LrH3(&J7Iki4->h2LrH3);NNh015=J7Iki4->GEt0d&~043;
+switch(ZDwa01){case 3:NNh015|=32;break;case 01:NNh015|=2;break;case 0
+:NNh015|=0x1;break;case 0x2:{if(!(J7Iki4->SP4ZU!=2))goto nBKvy;{
+NNh015|=03;break;}nBKvy:;}default:QD7sk4(&J7Iki4->h2LrH3);return 0;}{
+if(!(J7Iki4->GEt0d!=NNh015))goto SSGDT3;{volatile unsigned long*RdZoN
+;RdZoN=&J7Iki4->v6D2d3->_jfrJ1;AUUSL3(RdZoN,0,J7Iki4->GEt0d=NNh015);}
+SSGDT3:;}QD7sk4(&J7Iki4->h2LrH3);return 01;}int __attribute__((cdecl))TAU32_SetCasIo
+(kWMzp1*J7Iki4,int t0Vn23){{if(!(J7Iki4->SP4ZU==2))goto lw4bz4;return
+0;goto oFPii4;lw4bz4:;{unsigned NNh015;h2LrH3(&J7Iki4->h2LrH3);NNh015
+=J7Iki4->GEt0d&~010;{if(!(t0Vn23))goto GxG8D3;NNh015|=8;GxG8D3:;}{if(
+!(J7Iki4->GEt0d!=NNh015))goto m08TL1;{volatile unsigned long*RdZoN;
+RdZoN=&J7Iki4->v6D2d3->_jfrJ1;AUUSL3(RdZoN,0,J7Iki4->GEt0d=NNh015);
+M1Kp62(J7Iki4,(-0x1));}m08TL1:;}QD7sk4(&J7Iki4->h2LrH3);return 0x1;}
+oFPii4:;}}int __attribute__((cdecl))TAU32_UpdateIdleCodes(kWMzp1*
+J7Iki4,int b9Zs_,unsigned long BLFVJ4,unsigned char xjK0y2){int Jry9D1
+=0;int X3V8j4;{if(!((b9Zs_!=(-01)&&b9Zs_>0x1)||BLFVJ4==0))goto jIkkW3
+;return 0;jIkkW3:;}{if(!(J7Iki4->SP4ZU==0x2&&b9Zs_>0))goto z1nNq2;
+return 0;z1nNq2:;}h2LrH3(&J7Iki4->h2LrH3);X3V8j4=0;{TpLpS:{{if(!(
+BLFVJ4&01))goto E98ZN1;{{if(!(b9Zs_==(-1)||b9Zs_==0))goto PQet5;{if(!
+(J7Iki4->mmXTK1[0][X3V8j4]!=xjK0y2))goto nBPtF4;{J7Iki4->mmXTK1[0][
+X3V8j4]=xjK0y2;Jry9D1=0x1;}nBPtF4:;}PQet5:;}{if(!(J7Iki4->SP4ZU!=0x2))goto
+N0cAE4;{if(!(b9Zs_==(-1)||b9Zs_==0x1))goto gELJO;{if(!(J7Iki4->mmXTK1
+[01][X3V8j4]!=xjK0y2))goto k8lwU3;{J7Iki4->mmXTK1[01][X3V8j4]=xjK0y2;
+Jry9D1=1;}k8lwU3:;}gELJO:;}N0cAE4:;}}E98ZN1:;}++X3V8j4;}if((32==32||
+X3V8j4<32)&&(BLFVJ4>>=0x1)!=0)goto TpLpS;};{if(!(Jry9D1))goto CjeSb;
+M1Kp62(J7Iki4,b9Zs_);CjeSb:;}QD7sk4(&J7Iki4->h2LrH3);return 1;}int
+__attribute__((cdecl))TAU32_SetIdleCodes(kWMzp1*J7Iki4,unsigned char*
+dQ5DX){int Jry9D1=0;int X3V8j4=(J7Iki4->SP4ZU==0x2)?32-01:32*2-1;{
+Keg62:{if(!(dQ5DX[X3V8j4]>0xF&&dQ5DX[X3V8j4]!=0xFF))goto ZRVsD1;
+return 0;ZRVsD1:;}if(--X3V8j4>=0)goto Keg62;};h2LrH3(&J7Iki4->h2LrH3);
+X3V8j4=(J7Iki4->SP4ZU==2)?32-01:32*2-0x1;{_qLu61:{if(!(dQ5DX[X3V8j4]
+<=0xF&&J7Iki4->mmXTK1[X3V8j4/32][X3V8j4%32]!=dQ5DX[X3V8j4]))goto
+FWoEJ2;{J7Iki4->mmXTK1[X3V8j4/32][X3V8j4%32]=dQ5DX[X3V8j4];Jry9D1=01;
+}FWoEJ2:;}if(--X3V8j4>=0)goto _qLu61;};{if(!(Jry9D1))goto nkDDY;
+M1Kp62(J7Iki4,(-1));nkDDY:;}QD7sk4(&J7Iki4->h2LrH3);return 0x1;}
+__forceinline static int Ji6_v2(unsigned jfimS4,qwUGv3*xb5nq1,
+unsigned char*X3ca,unsigned IOwwG2){unsigned X3V8j4;{if(!(256-(xb5nq1
+->lxfqy2-xb5nq1->ELKAp3)%256<IOwwG2))goto VwVLP1;{return-01;}VwVLP1:;
+}{X3V8j4=0;TpZ785:if(!(X3V8j4<IOwwG2))goto XfnRo3;goto J_oOV2;cLIGU1:
+X3V8j4++;goto TpZ785;J_oOV2:xb5nq1->c5SHY1[(xb5nq1->lxfqy2+X3V8j4)%
+256]=X3ca[X3V8j4];goto cLIGU1;XfnRo3:;}xb5nq1->lxfqy2+=IOwwG2;aUfOe1(
+jfimS4,xb5nq1);return 256-(xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256;}
+__forceinline static int a6vkI2(unsigned jfimS4,qwUGv3*xb5nq1,
+unsigned char*X3ca,unsigned IOwwG2){unsigned X3V8j4;{if(!(256-(xb5nq1
+->lxfqy2-xb5nq1->ELKAp3)%256<IOwwG2))goto WKD831;{return-1;}WKD831:;}
+xb5nq1->ELKAp3-=IOwwG2;{X3V8j4=0;SXW_i:if(!(X3V8j4<IOwwG2))goto bwTTK3
+;goto BknPf3;qr8nF2:X3V8j4++;goto SXW_i;BknPf3:xb5nq1->c5SHY1[(xb5nq1
+->ELKAp3+X3V8j4)%256]=X3ca[X3V8j4];goto qr8nF2;bwTTK3:;}aUfOe1(jfimS4
+,xb5nq1);return 256-(xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256;}
+__forceinline static int zfjz55(unsigned jfimS4,qwUGv3*xb5nq1,
+unsigned char*X3ca,unsigned IOwwG2){unsigned X3V8j4;{if(!((xb5nq1->
+lxfqy2-xb5nq1->ELKAp3)%256<IOwwG2))goto lYL9e1;{return-01;}lYL9e1:;}{
+X3V8j4=0;CjH_c4:if(!(X3V8j4<IOwwG2))goto rJ8cZ2;goto uIVHm2;TPDls1:
+X3V8j4++;goto CjH_c4;uIVHm2:X3ca[X3V8j4]=xb5nq1->c5SHY1[(xb5nq1->
+ELKAp3+X3V8j4)%256];goto TPDls1;rJ8cZ2:;}xb5nq1->ELKAp3+=IOwwG2;
+aUfOe1(jfimS4,xb5nq1);return(xb5nq1->lxfqy2-xb5nq1->ELKAp3)%256;}
+__forceinline static void o0Fou4(unsigned jfimS4,qwUGv3*xb5nq1){
+xb5nq1->lxfqy2=0;xb5nq1->ELKAp3=0;xb5nq1->spClj2=0;{if(!(xb5nq1->
+uyKJn2))goto QGTZB3;xb5nq1->uyKJn2[0]=0;QGTZB3:;}aUfOe1(jfimS4,xb5nq1
+);}int __attribute__((cdecl))TAU32_FifoPutCasAppend(kWMzp1*J7Iki4,int
+b9Zs_,unsigned char*X3ca,unsigned IOwwG2){int Z0e1C2=-02;h2LrH3(&
+J7Iki4->h2LrH3);switch(b9Zs_){case 0:Z0e1C2=Ji6_v2(0x1u,&J7Iki4->
+oXafA1[0].KqthD[01u],X3ca,IOwwG2);break;case 0x1:{if(!(J7Iki4->SP4ZU
+!=2))goto tLnQG3;Z0e1C2=Ji6_v2(01u,&J7Iki4->oXafA1[1].KqthD[0x1u],
+X3ca,IOwwG2);tLnQG3:;}break;case(-1):Z0e1C2=Ji6_v2(01u,&J7Iki4->
+oXafA1[0].KqthD[0x1u],X3ca,IOwwG2);{if(!(J7Iki4->SP4ZU!=2))goto DBLAx1
+;{int Curt94=Ji6_v2(0x1u,&J7Iki4->oXafA1[0x1].KqthD[0x1u],X3ca,IOwwG2
+);{if(!(Curt94<Z0e1C2))goto g1F5_1;Z0e1C2=Curt94;g1F5_1:;}}DBLAx1:;}}
+QD7sk4(&J7Iki4->h2LrH3);return Z0e1C2;}int __attribute__((cdecl))TAU32_FifoPutCasAhead
+(kWMzp1*J7Iki4,int b9Zs_,unsigned char*X3ca,unsigned IOwwG2){int
+Z0e1C2=-2;h2LrH3(&J7Iki4->h2LrH3);switch(b9Zs_){case 0:Z0e1C2=a6vkI2(
+01u,&J7Iki4->oXafA1[0].KqthD[1u],X3ca,IOwwG2);break;case 1:{if(!(
+J7Iki4->SP4ZU!=0x2))goto NXEIY1;Z0e1C2=a6vkI2(0x1u,&J7Iki4->oXafA1[01
+].KqthD[1u],X3ca,IOwwG2);NXEIY1:;}break;case(-01):Z0e1C2=a6vkI2(0x1u,
+&J7Iki4->oXafA1[0].KqthD[1u],X3ca,IOwwG2);{if(!(J7Iki4->SP4ZU!=0x2))goto
+X5pzO3;{int Curt94=a6vkI2(01u,&J7Iki4->oXafA1[0x1].KqthD[0x1u],X3ca,
+IOwwG2);{if(!(Curt94<Z0e1C2))goto flmi45;Z0e1C2=Curt94;flmi45:;}}
+X5pzO3:;}}QD7sk4(&J7Iki4->h2LrH3);return Z0e1C2;}int __attribute__((
+cdecl))TAU32_FifoGetCas(kWMzp1*J7Iki4,int b9Zs_,unsigned char*X3ca,
+unsigned IOwwG2){int Z0e1C2=-0x2;h2LrH3(&J7Iki4->h2LrH3);switch(b9Zs_
+){case 0:Z0e1C2=zfjz55(0u,&J7Iki4->oXafA1[0].KqthD[0u],X3ca,IOwwG2);
+break;case 01:{if(!(J7Iki4->SP4ZU!=2))goto kRvRA;Z0e1C2=zfjz55(0u,&
+J7Iki4->oXafA1[1].KqthD[0u],X3ca,IOwwG2);kRvRA:;}break;}QD7sk4(&
+J7Iki4->h2LrH3);return Z0e1C2;}int __attribute__((cdecl))TAU32_FifoPutFasAppend
+(kWMzp1*J7Iki4,int b9Zs_,unsigned char*X3ca,unsigned IOwwG2){int
+Z0e1C2=-0x2;h2LrH3(&J7Iki4->h2LrH3);switch(b9Zs_){case 0:Z0e1C2=
+Ji6_v2(03u,&J7Iki4->oXafA1[0].KqthD[03u],X3ca,IOwwG2);break;case 1:{
+if(!(J7Iki4->SP4ZU!=0x2))goto xNvbw1;Z0e1C2=Ji6_v2(03u,&J7Iki4->
+oXafA1[01].KqthD[03u],X3ca,IOwwG2);xNvbw1:;}break;case(-1):Z0e1C2=
+Ji6_v2(0x3u,&J7Iki4->oXafA1[0].KqthD[03u],X3ca,IOwwG2);{if(!(J7Iki4->
+SP4ZU!=2))goto VyO7q2;{int Curt94=Ji6_v2(0x3u,&J7Iki4->oXafA1[1].
+KqthD[03u],X3ca,IOwwG2);{if(!(Curt94<Z0e1C2))goto xmEVZ;Z0e1C2=Curt94
+;xmEVZ:;}}VyO7q2:;}}QD7sk4(&J7Iki4->h2LrH3);return Z0e1C2;}int
+__attribute__((cdecl))TAU32_FifoPutFasAhead(kWMzp1*J7Iki4,int b9Zs_,
+unsigned char*X3ca,unsigned IOwwG2){int Z0e1C2=-2;h2LrH3(&J7Iki4->
+h2LrH3);switch(b9Zs_){case 0:Z0e1C2=a6vkI2(0x3u,&J7Iki4->oXafA1[0].
+KqthD[0x3u],X3ca,IOwwG2);break;case 1:{if(!(J7Iki4->SP4ZU!=2))goto
+fNTIT4;Z0e1C2=a6vkI2(0x3u,&J7Iki4->oXafA1[0x1].KqthD[0x3u],X3ca,
+IOwwG2);fNTIT4:;}break;case(-01):Z0e1C2=a6vkI2(3u,&J7Iki4->oXafA1[0].
+KqthD[0x3u],X3ca,IOwwG2);{if(!(J7Iki4->SP4ZU!=2))goto LPFVP2;{int
+Curt94=a6vkI2(0x3u,&J7Iki4->oXafA1[01].KqthD[0x3u],X3ca,IOwwG2);{if(!
+(Curt94<Z0e1C2))goto nor1g1;Z0e1C2=Curt94;nor1g1:;}}LPFVP2:;}}QD7sk4(
+&J7Iki4->h2LrH3);return Z0e1C2;}int __attribute__((cdecl))TAU32_FifoGetFas
+(kWMzp1*J7Iki4,int b9Zs_,unsigned char*X3ca,unsigned IOwwG2){int
+Z0e1C2=-2;h2LrH3(&J7Iki4->h2LrH3);switch(b9Zs_){case 0:Z0e1C2=zfjz55(
+2u,&J7Iki4->oXafA1[0].KqthD[2u],X3ca,IOwwG2);break;case 01:{if(!(
+J7Iki4->SP4ZU!=2))goto OiC8d;Z0e1C2=zfjz55(02u,&J7Iki4->oXafA1[0x1].
+KqthD[0x2u],X3ca,IOwwG2);OiC8d:;}break;}QD7sk4(&J7Iki4->h2LrH3);
+return Z0e1C2;}__noinline static void __fastcall gw6c82(kWMzp1*J7Iki4
+){{unsigned X3V8j4;volatile unsigned long*RdZoN;J7Iki4->fV7o35[0].
+gQf6j1=0;o0Fou4(1u,J7Iki4->Nlajt1[0][0x1u]);o0Fou4(0x3u,J7Iki4->
+Nlajt1[0][0x3u]);RdZoN=&J7Iki4->v6D2d3->_jfrJ1;s3sCI1(RdZoN,32,0233);
+s3sCI1(RdZoN,041,J7Iki4->fV7o35[0].DvwSz1=0xDF);s3sCI1(RdZoN,64,
+J7Iki4->fV7o35[0].FNU7M3[0]=013);X3V8j4=15;{OVovS3:s3sCI1(RdZoN,64+
+X3V8j4,J7Iki4->fV7o35[0].FNU7M3[X3V8j4]=0xDD);if(--X3V8j4)goto OVovS3
+;};s3sCI1(RdZoN,0120,0xFF);s3sCI1(RdZoN,0121,0xFF);s3sCI1(RdZoN,0122,
+0);s3sCI1(RdZoN,0123,0xFF);s3sCI1(RdZoN,0124,0xFF);s3sCI1(RdZoN,0125,
+0xFF);s3sCI1(RdZoN,0126,0xFF);s3sCI1(RdZoN,0127,0xFF);X3V8j4=32;{
+mXOjF3:{s3sCI1(RdZoN,0140+X3V8j4-0x1,J7Iki4->mmXTK1[0][X3V8j4-01]=
+J7Iki4->fV7o35[0].oWLOw3[X3V8j4-0x1]=0xD5);s3sCI1(RdZoN,128+X3V8j4-
+0x1,0xFF);}if(--X3V8j4)goto mXOjF3;};WdFDP4(RdZoN,34,J7Iki4->fV7o35[0
+].nDLY04=03);WdFDP4(RdZoN,0xa0,J7Iki4->fV7o35[0].WtICk3=~0ul);WdFDP4(
+RdZoN,0xa4,J7Iki4->fV7o35[0].M782F4=~0ul);};}__noinline static void
+__fastcall lmuOy2(kWMzp1*J7Iki4){{unsigned X3V8j4;volatile unsigned
+long*RdZoN;J7Iki4->fV7o35[01].gQf6j1=0;o0Fou4(0x1u,J7Iki4->Nlajt1[01]
+[1u]);o0Fou4(0x3u,J7Iki4->Nlajt1[01][0x3u]);RdZoN=&J7Iki4->v6D2d3->
+_jfrJ1;dZK6h3(RdZoN,32,155);dZK6h3(RdZoN,041,J7Iki4->fV7o35[01].
+DvwSz1=0xDF);dZK6h3(RdZoN,64,J7Iki4->fV7o35[01].FNU7M3[0]=013);X3V8j4
+=15;{wavCE:dZK6h3(RdZoN,64+X3V8j4,J7Iki4->fV7o35[1].FNU7M3[X3V8j4]=
+0xDD);if(--X3V8j4)goto wavCE;};dZK6h3(RdZoN,0120,0xFF);dZK6h3(RdZoN,
+0121,0xFF);dZK6h3(RdZoN,0122,0);dZK6h3(RdZoN,0123,0xFF);dZK6h3(RdZoN,
+0124,0xFF);dZK6h3(RdZoN,0125,0xFF);dZK6h3(RdZoN,0126,0xFF);dZK6h3(
+RdZoN,0127,0xFF);X3V8j4=32;{FsUk9:{dZK6h3(RdZoN,96+X3V8j4-1,J7Iki4->
+mmXTK1[1][X3V8j4-01]=J7Iki4->fV7o35[01].oWLOw3[X3V8j4-0x1]=0xD5);
+dZK6h3(RdZoN,128+X3V8j4-1,0xFF);}if(--X3V8j4)goto FsUk9;};dAXWu2(
+RdZoN,042,J7Iki4->fV7o35[0x1].nDLY04=0x3);dAXWu2(RdZoN,0xa0,J7Iki4->
+fV7o35[0x1].WtICk3=~0ul);dAXWu2(RdZoN,0xa4,J7Iki4->fV7o35[0x1].M782F4
+=~0ul);};}static int Vdg6P1(kWMzp1*J7Iki4,Os1bA3*a02Gz4,DCf0T2*esWTk2
+){{if(!(a02Gz4->QvZLK&64u))goto Z2OSv2;{;{if(!(a02Gz4->NpyOc1.gMQg82.
+b9Zs_!=(-01)&&a02Gz4->NpyOc1.gMQg82.b9Zs_>1))goto dC2KI2;{;return 0;}
+dC2KI2:;}{if(!(J7Iki4->SP4ZU==02&&a02Gz4->NpyOc1.gMQg82.b9Zs_>0))goto
+BO9lK4;{;return 0;}BO9lK4:;}{if(!(!Y3IxL2(a02Gz4->NpyOc1.gMQg82.
+CUhqx4,a02Gz4->NpyOc1.gMQg82.DnIa91,&esWTk2->tQcig.kKiv65)))goto
+xHlfL4;{;return 0;}xHlfL4:;}esWTk2->tQcig.G15W41=0;{if(!(a02Gz4->
+NpyOc1.gMQg82.b9Zs_==(-0x1)||a02Gz4->NpyOc1.gMQg82.b9Zs_==0))goto
+l5kPU2;{esWTk2->tQcig.G15W41|=iBs7A2<<0;{if(!((a02Gz4->NpyOc1.gMQg82.
+CUhqx4&017ul)!=(0ul<<0)))goto zC34g4;{{if(!((J7Iki4->Kt5Iv1[0]&017ul)==
+(0ul<<0)))goto ab1tV;esWTk2->tQcig.G15W41|=(cfJmy1|qWaP5|CUmDv|KZEMj4
+)<<0;ab1tV:;}{if(!(((a02Gz4->NpyOc1.gMQg82.CUhqx4&017ul)==(01ul<<0))!=
+((J7Iki4->Kt5Iv1[0]&15ul)==(1ul<<0))))goto rMB_y4;esWTk2->tQcig.
+G15W41|=(qWaP5|CUmDv|KZEMj4)<<0;rMB_y4:;}{if(!(((a02Gz4->NpyOc1.
+gMQg82.CUhqx4&240ul)<=(5ul<<04))!=((J7Iki4->Kt5Iv1[0]&240ul)<=(5ul<<4
+))))goto j7vft;esWTk2->tQcig.G15W41|=(CUmDv|KZEMj4)<<0;j7vft:;}{if(!(
+(J7Iki4->Kt5Iv1[0]^a02Gz4->NpyOc1.gMQg82.CUhqx4)&(0360ul|(268435456ul
+|134217728ul))))goto XQClD;esWTk2->tQcig.G15W41|=KZEMj4<<0;XQClD:;}}
+goto IZIt42;zC34g4:;{esWTk2->tQcig.G15W41|=UsDI23<<0;{if(!((J7Iki4->
+Kt5Iv1[0]&15ul)!=(0ul<<0)))goto JTU4E;esWTk2->tQcig.G15W41|=KZEMj4<<0
+;JTU4E:;}}IZIt42:;}}l5kPU2:;};{if(!((a02Gz4->NpyOc1.gMQg82.b9Zs_==(-
+0x1)||a02Gz4->NpyOc1.gMQg82.b9Zs_==1)&&J7Iki4->SP4ZU!=2))goto Paba02;
+{esWTk2->tQcig.G15W41|=iBs7A2<<1;{if(!((a02Gz4->NpyOc1.gMQg82.CUhqx4&
+15ul)!=(0ul<<0)))goto PMgqJ;{{if(!((J7Iki4->Kt5Iv1[0x1]&017ul)==(0ul
+<<0)))goto Ex2aA2;esWTk2->tQcig.G15W41|=(cfJmy1|qWaP5|CUmDv|KZEMj4)<<
+0x1;Ex2aA2:;}{if(!(((a02Gz4->NpyOc1.gMQg82.CUhqx4&017ul)==(01ul<<0))!=
+((J7Iki4->Kt5Iv1[01]&017ul)==(1ul<<0))))goto GniJJ1;esWTk2->tQcig.
+G15W41|=(qWaP5|CUmDv|KZEMj4)<<01;GniJJ1:;}{if(!(((a02Gz4->NpyOc1.
+gMQg82.CUhqx4&0360ul)<=(0x5ul<<0x4))!=((J7Iki4->Kt5Iv1[0x1]&240ul)<=(
+5ul<<4))))goto Y44wG4;esWTk2->tQcig.G15W41|=(CUmDv|KZEMj4)<<01;Y44wG4
+:;}{if(!((J7Iki4->Kt5Iv1[0x1]^a02Gz4->NpyOc1.gMQg82.CUhqx4)&(0360ul|(
+268435456ul|134217728ul))))goto jE7yf1;esWTk2->tQcig.G15W41|=KZEMj4<<
+01;jE7yf1:;}}goto zDomy3;PMgqJ:;{esWTk2->tQcig.G15W41|=UsDI23<<01;{if
+(!((J7Iki4->Kt5Iv1[01]&017ul)!=(0ul<<0)))goto bf1St1;esWTk2->tQcig.
+G15W41|=KZEMj4<<0x1;bf1St1:;}}zDomy3:;}}Paba02:;};}Z2OSv2:;}return 1;
+}static int K5XcD(kWMzp1*J7Iki4,Os1bA3*a02Gz4,DCf0T2*esWTk2){{if(!(
+a02Gz4->QvZLK&64u))goto DokQ43;{volatile unsigned long*RdZoN;unsigned
+yBXD22=d5Rc74(J7Iki4);J7Iki4->YRHFy->ZCWMs2=yBXD22&(16|32);RdZoN=&
+J7Iki4->v6D2d3->_jfrJ1;{if(!(esWTk2->tQcig.G15W41&(iBs7A2<<0)))goto
+A8NMR4;{unsigned char rGUtq3;;{if(!(J7Iki4->fV7o35[0].E7Ual2!=esWTk2
+->tQcig.kKiv65.E7Ual2))goto BjC5Z;s3sCI1(RdZoN,024,J7Iki4->fV7o35[0].
+E7Ual2=esWTk2->tQcig.kKiv65.E7Ual2);BjC5Z:;}{if(!(J7Iki4->fV7o35[0].
+PGh3e4!=esWTk2->tQcig.kKiv65.PGh3e4))goto UIg3j;s3sCI1(RdZoN,26,
+J7Iki4->fV7o35[0].PGh3e4=esWTk2->tQcig.kKiv65.PGh3e4);UIg3j:;}{if(!(
+J7Iki4->fV7o35[0].KZp71!=esWTk2->tQcig.kKiv65.KZp71))goto duPf84;
+s3sCI1(RdZoN,27,J7Iki4->fV7o35[0].KZp71=esWTk2->tQcig.kKiv65.KZp71);
+duPf84:;}{if(!(J7Iki4->fV7o35[0].ikuha3!=esWTk2->tQcig.kKiv65.ikuha3))goto
+mS2xE2;s3sCI1(RdZoN,0xa8,J7Iki4->fV7o35[0].ikuha3=esWTk2->tQcig.
+kKiv65.ikuha3);mS2xE2:;}{if(!(J7Iki4->fV7o35[0].daUKU2!=esWTk2->tQcig
+.kKiv65.daUKU2))goto zeUwl;{J7Iki4->fV7o35[0].daUKU2=esWTk2->tQcig.
+kKiv65.daUKU2;{if(!(yBXD22&((0==0)?16:32)))goto GTljv4;s3sCI1(RdZoN,
+24,esWTk2->tQcig.kKiv65.daUKU2|96);goto ZbGWr3;GTljv4:;s3sCI1(RdZoN,
+24,esWTk2->tQcig.kKiv65.daUKU2|64);ZbGWr3:;}}zeUwl:;}{if(!(J7Iki4->
+fV7o35[0].PBtXm1!=esWTk2->tQcig.kKiv65.PBtXm1))goto wq7DF1;s3sCI1(
+RdZoN,18,J7Iki4->fV7o35[0].PBtXm1=esWTk2->tQcig.kKiv65.PBtXm1);wq7DF1
+:;}rGUtq3=esWTk2->tQcig.kKiv65.rGUtq3;{if(!(J7Iki4->fV7o35[0].rGUtq3
+!=rGUtq3))goto EGSg3;s3sCI1(RdZoN,0x13,J7Iki4->fV7o35[0].rGUtq3=
+rGUtq3);EGSg3:;}{if(!(J7Iki4->fV7o35[0].AuCs73!=esWTk2->tQcig.kKiv65.
+AuCs73))goto HWkUv3;s3sCI1(RdZoN,16,J7Iki4->fV7o35[0].AuCs73=esWTk2->
+tQcig.kKiv65.AuCs73);HWkUv3:;}{if(!(J7Iki4->fV7o35[0].TrqaA!=esWTk2->
+tQcig.kKiv65.TrqaA))goto Oi41C4;s3sCI1(RdZoN,0xac,J7Iki4->fV7o35[0].
+TrqaA=esWTk2->tQcig.kKiv65.TrqaA);Oi41C4:;}{if(!(J7Iki4->fV7o35[0].
+aKuBh3!=esWTk2->tQcig.kKiv65.aKuBh3))goto LlIil1;s3sCI1(RdZoN,034,
+J7Iki4->fV7o35[0].aKuBh3=esWTk2->tQcig.kKiv65.aKuBh3);LlIil1:;}{if(!(
+J7Iki4->fV7o35[0].RcNOn!=esWTk2->tQcig.kKiv65.RcNOn||J7Iki4->fV7o35[0
+].aW7n84!=esWTk2->tQcig.kKiv65.aW7n84))goto _djv13;{unsigned long
+s_Lmx3=J7Iki4->fV7o35[0^1].aW7n84&~esWTk2->tQcig.kKiv65.aW7n84;{if(!(
+J7Iki4->fV7o35[0^1].aW7n84!=s_Lmx3))goto FsNgS4;{{if(!(0))goto tDCe71
+;WdFDP4(RdZoN,43,J7Iki4->fV7o35[0].aW7n84=s_Lmx3);goto xHgra;tDCe71:;
+dAXWu2(RdZoN,43,J7Iki4->fV7o35[1].aW7n84=s_Lmx3);xHgra:;}}FsNgS4:;}
+WdFDP4(RdZoN,053,J7Iki4->fV7o35[0].aW7n84=esWTk2->tQcig.kKiv65.aW7n84
+);AUUSL3(RdZoN,(0==0)?011:012,32|(J7Iki4->fV7o35[0].RcNOn=esWTk2->
+tQcig.kKiv65.RcNOn));}_djv13:;}{if(!((a02Gz4->NpyOc1.gMQg82.CUhqx4&
+017ul)!=(0ul<<0)))goto njRLK2;{J7Iki4->Kt5Iv1[0]=a02Gz4->NpyOc1.
+gMQg82.CUhqx4;{if(!(J7Iki4->fV7o35[0].PnawH!=esWTk2->tQcig.kKiv65.
+PnawH||J7Iki4->fV7o35[0].gQf6j1!=esWTk2->tQcig.kKiv65.gQf6j1))goto
+Nwbig2;esWTk2->tQcig.G15W41|=cfJmy1<<0;Nwbig2:;}}goto vRxE54;njRLK2:;
+J7Iki4->Kt5Iv1[0]=0;vRxE54:;}}A8NMR4:;};{if(!(esWTk2->tQcig.G15W41&(
+iBs7A2<<0x1)))goto ytc6A4;{unsigned char rGUtq3;;{if(!(J7Iki4->fV7o35
+[0x1].E7Ual2!=esWTk2->tQcig.kKiv65.E7Ual2))goto ObnCM2;dZK6h3(RdZoN,
+0x14,J7Iki4->fV7o35[1].E7Ual2=esWTk2->tQcig.kKiv65.E7Ual2);ObnCM2:;}{
+if(!(J7Iki4->fV7o35[1].PGh3e4!=esWTk2->tQcig.kKiv65.PGh3e4))goto
+HgIKW1;dZK6h3(RdZoN,26,J7Iki4->fV7o35[01].PGh3e4=esWTk2->tQcig.kKiv65
+.PGh3e4);HgIKW1:;}{if(!(J7Iki4->fV7o35[01].KZp71!=esWTk2->tQcig.
+kKiv65.KZp71))goto kF78X1;dZK6h3(RdZoN,27,J7Iki4->fV7o35[1].KZp71=
+esWTk2->tQcig.kKiv65.KZp71);kF78X1:;}{if(!(J7Iki4->fV7o35[1].ikuha3!=
+esWTk2->tQcig.kKiv65.ikuha3))goto L_kbq3;dZK6h3(RdZoN,0xa8,J7Iki4->
+fV7o35[01].ikuha3=esWTk2->tQcig.kKiv65.ikuha3);L_kbq3:;}{if(!(J7Iki4
+->fV7o35[1].daUKU2!=esWTk2->tQcig.kKiv65.daUKU2))goto pZwR;{J7Iki4->
+fV7o35[1].daUKU2=esWTk2->tQcig.kKiv65.daUKU2;{if(!(yBXD22&((0x1==0)?
+16:32)))goto OIUj41;dZK6h3(RdZoN,24,esWTk2->tQcig.kKiv65.daUKU2|0140);
+goto pQ2UC1;OIUj41:;dZK6h3(RdZoN,0x18,esWTk2->tQcig.kKiv65.daUKU2|64);
+pQ2UC1:;}}pZwR:;}{if(!(J7Iki4->fV7o35[0x1].PBtXm1!=esWTk2->tQcig.
+kKiv65.PBtXm1))goto yHbGG2;dZK6h3(RdZoN,18,J7Iki4->fV7o35[1].PBtXm1=
+esWTk2->tQcig.kKiv65.PBtXm1);yHbGG2:;}rGUtq3=esWTk2->tQcig.kKiv65.
+rGUtq3;{if(!(J7Iki4->fV7o35[1].rGUtq3!=rGUtq3))goto AooXh2;dZK6h3(
+RdZoN,023,J7Iki4->fV7o35[01].rGUtq3=rGUtq3);AooXh2:;}{if(!(J7Iki4->
+fV7o35[01].AuCs73!=esWTk2->tQcig.kKiv65.AuCs73))goto FXKBx;dZK6h3(
+RdZoN,16,J7Iki4->fV7o35[01].AuCs73=esWTk2->tQcig.kKiv65.AuCs73);FXKBx
+:;}{if(!(J7Iki4->fV7o35[01].TrqaA!=esWTk2->tQcig.kKiv65.TrqaA))goto
+ULi9T2;dZK6h3(RdZoN,0xac,J7Iki4->fV7o35[1].TrqaA=esWTk2->tQcig.kKiv65
+.TrqaA);ULi9T2:;}{if(!(J7Iki4->fV7o35[0x1].aKuBh3!=esWTk2->tQcig.
+kKiv65.aKuBh3))goto SY7l82;dZK6h3(RdZoN,28,J7Iki4->fV7o35[1].aKuBh3=
+esWTk2->tQcig.kKiv65.aKuBh3);SY7l82:;}{if(!(J7Iki4->fV7o35[0x1].RcNOn
+!=esWTk2->tQcig.kKiv65.RcNOn||J7Iki4->fV7o35[0x1].aW7n84!=esWTk2->
+tQcig.kKiv65.aW7n84))goto t7TM23;{unsigned long s_Lmx3=J7Iki4->fV7o35
+[0x1^1].aW7n84&~esWTk2->tQcig.kKiv65.aW7n84;{if(!(J7Iki4->fV7o35[1^01
+].aW7n84!=s_Lmx3))goto fP14O1;{{if(!(0x1))goto cDkxL3;WdFDP4(RdZoN,
+0x2b,J7Iki4->fV7o35[0].aW7n84=s_Lmx3);goto _ZNHV4;cDkxL3:;dAXWu2(
+RdZoN,0x2b,J7Iki4->fV7o35[0x1].aW7n84=s_Lmx3);_ZNHV4:;}}fP14O1:;}
+dAXWu2(RdZoN,43,J7Iki4->fV7o35[0x1].aW7n84=esWTk2->tQcig.kKiv65.
+aW7n84);AUUSL3(RdZoN,(0x1==0)?011:012,32|(J7Iki4->fV7o35[0x1].RcNOn=
+esWTk2->tQcig.kKiv65.RcNOn));}t7TM23:;}{if(!((a02Gz4->NpyOc1.gMQg82.
+CUhqx4&017ul)!=(0ul<<0)))goto ui2QH1;{J7Iki4->Kt5Iv1[1]=a02Gz4->
+NpyOc1.gMQg82.CUhqx4;{if(!(J7Iki4->fV7o35[01].PnawH!=esWTk2->tQcig.
+kKiv65.PnawH||J7Iki4->fV7o35[01].gQf6j1!=esWTk2->tQcig.kKiv65.gQf6j1))goto
+lJjph3;esWTk2->tQcig.G15W41|=cfJmy1<<1;lJjph3:;}}goto wMk4l3;ui2QH1:;
+J7Iki4->Kt5Iv1[01]=0;wMk4l3:;}}ytc6A4:;};{if(!(esWTk2->tQcig.G15W41&(
+(iBs7A2<<0)|(iBs7A2<<1))))goto KCGlP3;{esWTk2->tQcig.G15W41&=~((
+iBs7A2<<0)|(iBs7A2<<0x1));M1Kp62(J7Iki4,(-0x1));}KCGlP3:;}{if(!(
+esWTk2->tQcig.G15W41&(UsDI23<<0)))goto r5oda2;{;s3sCI1(RdZoN,026,0);
+s3sCI1(RdZoN,0x17,0);gw6c82(J7Iki4);}r5oda2:;}{if(!(esWTk2->tQcig.
+G15W41&(UsDI23<<01)))goto EGxmw4;{;dZK6h3(RdZoN,026,0);dZK6h3(RdZoN,
+0x17,0);lmuOy2(J7Iki4);}EGxmw4:;}esWTk2->tQcig.G15W41&=~((UsDI23<<0)|
+(UsDI23<<01));{if(!(esWTk2->tQcig.G15W41&((GISTQ2<<0)|(GISTQ2<<0x1))))goto
+COx9t4;{esWTk2->tQcig.G15W41&=~((GISTQ2<<0)|(GISTQ2<<0x1));;mdbib4(
+J7Iki4,esWTk2,04);return 01;}COx9t4:;}{if(!(esWTk2->tQcig.G15W41&(
+DEVTm4<<0)))goto J3Ld11;{;s3sCI1(RdZoN,0xaa,0);s3sCI1(RdZoN,0x1d,0);
+s3sCI1(RdZoN,0xaa,128);s3sCI1(RdZoN,0x1d,0x2|1);}J3Ld11:;}{if(!(
+esWTk2->tQcig.G15W41&(DEVTm4<<0x1)))goto lyIxX;{;dZK6h3(RdZoN,0xaa,0);
+dZK6h3(RdZoN,29,0);dZK6h3(RdZoN,0xaa,128);dZK6h3(RdZoN,0x1d,02|01);}
+lyIxX:;}{if(!(esWTk2->tQcig.G15W41&((DEVTm4<<0)|(DEVTm4<<0x1))))goto
+sYPGd4;{esWTk2->tQcig.G15W41&=~((DEVTm4<<0)|(DEVTm4<<0x1));;mdbib4(
+J7Iki4,esWTk2,16*0x4);return 01;}sYPGd4:;}{if(!(esWTk2->tQcig.G15W41&
+(CeDcj3<<0)))goto BBR_Y2;{;s3sCI1(RdZoN,0xaa,0);s3sCI1(RdZoN,29,0);}
+BBR_Y2:;}{if(!(esWTk2->tQcig.G15W41&(CeDcj3<<0x1)))goto c7Vnu1;{;
+dZK6h3(RdZoN,0xaa,0);dZK6h3(RdZoN,0x1d,0);}c7Vnu1:;}{if(!(esWTk2->
+tQcig.G15W41&((CeDcj3<<0)|(CeDcj3<<01))))goto gLNoJ4;{esWTk2->tQcig.
+G15W41&=~((CeDcj3<<0)|(CeDcj3<<1));;mdbib4(J7Iki4,esWTk2,16*4);return
+0x1;}gLNoJ4:;}{if(!(esWTk2->tQcig.G15W41&(CUmDv<<0)))goto gCRyd3;{;
+s3sCI1(RdZoN,0xaa,0);s3sCI1(RdZoN,0xaa,64|32);s3sCI1(RdZoN,16,J7Iki4
+->fV7o35[0].AuCs73|1);s3sCI1(RdZoN,0xaa,0);s3sCI1(RdZoN,16,J7Iki4->
+fV7o35[0].AuCs73);}gCRyd3:;}{if(!(esWTk2->tQcig.G15W41&(CUmDv<<1)))goto
+AzPQ35;{;dZK6h3(RdZoN,0xaa,0);dZK6h3(RdZoN,0xaa,64|32);dZK6h3(RdZoN,
+16,J7Iki4->fV7o35[0x1].AuCs73|0x1);dZK6h3(RdZoN,0xaa,0);dZK6h3(RdZoN,
+16,J7Iki4->fV7o35[01].AuCs73);}AzPQ35:;}{if(!(esWTk2->tQcig.G15W41&((
+CUmDv<<0)|(CUmDv<<01))))goto B8Ifq1;{esWTk2->tQcig.G15W41&=~((CUmDv<<
+0)|(CUmDv<<01));;mdbib4(J7Iki4,esWTk2,16*04);return 1;}B8Ifq1:;}{if(!
+(esWTk2->tQcig.G15W41&(KZEMj4<<0)))goto qViB12;{;dMM0e1(RdZoN,6);
+dMM0e1(RdZoN,0x7);dMM0e1(RdZoN,0x8);J7Iki4->YRHFy->io7IZ3[0].H4ghS2=
+J7Iki4->oXafA1[0].H4ghS2=0;o0Fou4(0u,J7Iki4->Nlajt1[0][0u]);o0Fou4(
+02u,J7Iki4->Nlajt1[0][2u]);}qViB12:;}{if(!(esWTk2->tQcig.G15W41&(
+KZEMj4<<01)))goto W6LzR;{;EIMqn1(RdZoN,0x6);EIMqn1(RdZoN,0x7);EIMqn1(
+RdZoN,8);J7Iki4->YRHFy->io7IZ3[1].H4ghS2=J7Iki4->oXafA1[01].H4ghS2=0;
+o0Fou4(0u,J7Iki4->Nlajt1[0x1][0u]);o0Fou4(02u,J7Iki4->Nlajt1[0x1][
+0x2u]);}W6LzR:;}{if(!(esWTk2->tQcig.G15W41&(cfJmy1<<0)))goto PJxFC3;{
+;s3sCI1(RdZoN,0x16,J7Iki4->fV7o35[0].PnawH=esWTk2->tQcig.kKiv65.PnawH
+);s3sCI1(RdZoN,23,J7Iki4->fV7o35[0].gQf6j1=esWTk2->tQcig.kKiv65.
+gQf6j1);}PJxFC3:;}{if(!(esWTk2->tQcig.G15W41&(cfJmy1<<1)))goto JPbjb2
+;{;dZK6h3(RdZoN,026,J7Iki4->fV7o35[01].PnawH=esWTk2->tQcig.kKiv65.
+PnawH);dZK6h3(RdZoN,027,J7Iki4->fV7o35[0x1].gQf6j1=esWTk2->tQcig.
+kKiv65.gQf6j1);}JPbjb2:;}{if(!(esWTk2->tQcig.G15W41&((KZEMj4<<0)|(
+KZEMj4<<0x1)|(cfJmy1<<0)|(cfJmy1<<0x1))))goto e2IbG;{M1Kp62(J7Iki4,(-
+1));w_2xo4(J7Iki4);esWTk2->tQcig.G15W41&=~((KZEMj4<<0)|(KZEMj4<<1)|(
+cfJmy1<<0)|(cfJmy1<<1));}e2IbG:;}{if(!(esWTk2->tQcig.G15W41==0))goto
+raDWN;{a02Gz4->QvZLK&=~64u;}raDWN:;}}DokQ43:;}return 0;}unsigned long
+__attribute__((cdecl))TAU32_Diag(kWMzp1*J7Iki4,unsigned jwgpJ2,
+unsigned long a0Zcs){volatile unsigned long*RdZoN;unsigned long iOPn3
+=0;h2LrH3(&J7Iki4->h2LrH3);RdZoN=&J7Iki4->v6D2d3->_jfrJ1;switch(
+jwgpJ2){case 01:((RdZoN)[-1])=0;((RdZoN)[0])=0xFFFF;((RdZoN)[-1])=224
+;((RdZoN)[-01])=0;case 0:iOPn3=(((RdZoN)[0])&0xFFFF)|(((RdZoN)[-0x1])<<
+16);break;case 02:((RdZoN)[-1])=a0Zcs>>16;((RdZoN)[0])=a0Zcs&0xFFFF;
+iOPn3=((RdZoN)[0]);break;case 0x3:((RdZoN)[0])=a0Zcs&0xFFFF;((RdZoN)[
+-1])=a0Zcs>>16;iOPn3=((RdZoN)[0]);break;case 0x5:AUUSL3(RdZoN,(a0Zcs
+>>16)&0xFF,(a0Zcs>>0x8)&0xFF);break;case 0x6:AUUSL3(RdZoN,(a0Zcs>>16)&
+0xFF,(a0Zcs>>8)&0xFF);case 04:iOPn3=RtiEy4(RdZoN,(a0Zcs>>16)&0xFF)<<
+010;break;case 0x7:AUUSL3(RdZoN,(a0Zcs>>16)&0xFF,(a0Zcs>>8)&0xFF);
+iOPn3=RtiEy4(RdZoN,0x5);break;case 010:AUUSL3(RdZoN,(a0Zcs>>16)&0xFF,
+(a0Zcs>>8)&0xFF);AUUSL3(RdZoN,0x5,a0Zcs&0xFF);break;case 011:AUUSL3(
+RdZoN,(a0Zcs>>16)&0xFF,(a0Zcs>>010)&0xFF);iOPn3=RtiEy4(RdZoN,05);
+AUUSL3(RdZoN,(a0Zcs>>16)&0xFF,(a0Zcs>>0x8)&0xFF);AUUSL3(RdZoN,0x5,
+a0Zcs&0xFF);break;case 012:AUUSL3(RdZoN,(a0Zcs>>16)&0xFF,(a0Zcs>>8)&
+0xFF);AUUSL3(RdZoN,0x5,a0Zcs&0xFF);AUUSL3(RdZoN,(a0Zcs>>16)&0xFF,(
+a0Zcs>>0x8)&0xFF);iOPn3=RtiEy4(RdZoN,05);break;case 013:AUUSL3(RdZoN,
+(a0Zcs>>16)&0xFF,(a0Zcs>>8)&0xFF);AUUSL3(RdZoN,5,a0Zcs&0xFF);AUUSL3(
+RdZoN,(a0Zcs>>16)&0xFF,(a0Zcs>>0x8)&0xFF);iOPn3=RtiEy4(RdZoN,5);
+AUUSL3(RdZoN,(a0Zcs>>16)&0xFF,(a0Zcs>>0x8)&0xFF);AUUSL3(RdZoN,05,
+iOPn3&a0Zcs&0xFF);break;case 014:{if(!(a0Zcs>2097151999ul))goto XYR2k2
+;iOPn3=~0ul;goto SMwwI;XYR2k2:;{unsigned long i9Vca3=a0Zcs;__asm
+__volatile("mul %2;" "add $2147483648, %0;" "adc $0, %1":"=a"(i9Vca3),
+"=d"(iOPn3):"r"(01422335136ul),"0"(i9Vca3));iOPn3+=a0Zcs+a0Zcs;}SMwwI
+:;}UWXL71(RdZoN,iOPn3);AUUSL3(RdZoN,0,J7Iki4->GEt0d=(J7Iki4->GEt0d&~
+0x23)|32);break;}QD7sk4(&J7Iki4->h2LrH3);return iOPn3;}int
+__attribute__((cdecl))TAU32_SetSaCross(kWMzp1*J7Iki4,jK7VQ3 hzXIT2){
+unsigned char cYVI15=0;{if(!(hzXIT2.ADRH25>4u||hzXIT2.vC4oo>4u))goto
+rsP7X2;return 0;rsP7X2:;}{if(!(!hzXIT2.u6eGG1&&(hzXIT2.ADRH25==0x1u||
+hzXIT2.vC4oo==1u)))goto bAkfW4;return 0;bAkfW4:;}{if(!(J7Iki4->SP4ZU
+==2))goto Mz7sL2;{if(!(hzXIT2.ADRH25==0x3u||hzXIT2.vC4oo!=0u))goto
+PXdWr4;return 0;PXdWr4:;}Mz7sL2:;}{if(!(hzXIT2.u6eGG1))goto yQbCz;
+cYVI15|=64;yQbCz:;}{if(!(hzXIT2.ADRH25))goto qDbQb3;cYVI15|=16|((
+hzXIT2.ADRH25-1)<<0);qDbQb3:;}{if(!(hzXIT2.vC4oo))goto q8PSF2;cYVI15
+|=32|((hzXIT2.vC4oo-01)<<2);q8PSF2:;}{if(!(cYVI15!=J7Iki4->h80jx1))goto
+WYUtG1;{volatile unsigned long*RdZoN;h2LrH3(&J7Iki4->h2LrH3);RdZoN=&
+J7Iki4->v6D2d3->_jfrJ1;AUUSL3(RdZoN,8,J7Iki4->h80jx1=cYVI15);M1Kp62(
+J7Iki4,(-1));QD7sk4(&J7Iki4->h2LrH3);}WYUtG1:;}return 1;}static const
+unsigned long mNYxW2[32]={01u<<0,01u<<0x2,1u<<4,1u<<0x6,01u<<8,1u<<
+012,0x1u<<12,01u<<016,1u<<16,0x1u<<0x12,01u<<024,0x1u<<0x16,1u<<24,1u
+<<0x1a,1u<<0x1c,1u<<0x1e,1u<<0x1,01u<<0x3,1u<<5,1u<<0x7,01u<<011,1u<<
+013,0x1u<<13,01u<<017,1u<<17,0x1u<<0x13,01u<<025,1u<<23,0x1u<<031,01u
+<<27,0x1u<<035,0x1u<<037};__noinline static void M1Kp62(kWMzp1*J7Iki4
+,int Xx6Ti3){unsigned long x2RgK4[02],pGYUX1[2],Ragva2[0x2];unsigned
+long g5AWi,D1OxN4;int FNU7M3;unsigned OS6VN2[0x2];OS6VN2[0]=J7Iki4->
+oXafA1[0].H4ghS2;{if(!((J7Iki4->Kt5Iv1[0]&017ul)==(0x1ul<<0)))goto
+iNQM3;OS6VN2[0]&=~01u;iNQM3:;}OS6VN2[01]=J7Iki4->oXafA1[1].H4ghS2;{if
+(!((J7Iki4->Kt5Iv1[1]&15ul)==(1ul<<0)))goto eoj0m1;OS6VN2[0x1]&=~01u;
+eoj0m1:;}x2RgK4[0]=x2RgK4[1]=0x3;pGYUX1[0]=pGYUX1[1]=0;Ragva2[0]=
+Ragva2[01]=0;g5AWi=J7Iki4->fV7o35[0].aW7n84|J7Iki4->fV7o35[0x1].
+aW7n84;D1OxN4=0;FNU7M3=31;{JkRZr3:{if(!(!J7Iki4->pBSeu3.HcALQ1[FNU7M3
+].V9ej93.hoRsQ4))goto X04Ko3;{unsigned Rf7MZ2=J7Iki4->pBSeu3.HcALQ1[
+FNU7M3].V9ej93.In2Nl4;{if(!(J7Iki4->QEvwb3[Rf7MZ2]&&(J7Iki4->ZWSDs2.
+Avyuu1&(01u<<Rf7MZ2))))goto gWFIT3;D1OxN4|=1u<<FNU7M3;gWFIT3:;}}
+X04Ko3:;}if(--FNU7M3>=0)goto JkRZr3;};FNU7M3=0x1f;{UzdZm4:{unsigned
+long l_AcZ=01u<<FNU7M3;{if(!((J7Iki4->fV7o35[0].RcNOn&16)==0))goto
+jgvi52;{if(!(Xx6Ti3==(-01)||Xx6Ti3==0))goto VA7c_2;{unsigned char
+eSf3B1,PGmy4;unsigned EhXZB1;volatile unsigned long*RdZoN;{if(!(
+FNU7M3==0&&(J7Iki4->Kt5Iv1[0]&0360ul)>(5ul<<4)))goto OO3a03;goto
+LjWek1;OO3a03:;}{if(!(FNU7M3==16&&(J7Iki4->Kt5Iv1[0]&240ul)>(06ul<<
+0x4)))goto NJK9y1;goto LjWek1;NJK9y1:;}eSf3B1=0xDDu;PGmy4=J7Iki4->
+mmXTK1[0][FNU7M3];EhXZB1=J7Iki4->eKHB1[FNU7M3+32* (0+1)]&127;{if(!(
+EhXZB1==127u))goto RLpme3;{x2RgK4[0]|=mNYxW2[FNU7M3];Ragva2[0]|=l_AcZ
+;}goto SQx3H4;RLpme3:;{if(!(EhXZB1<32))goto C3bNb;{{if(!(!(D1OxN4&(
+1ul<<EhXZB1))||(l_AcZ&g5AWi)!=0))goto h_bP43;{x2RgK4[0]|=mNYxW2[
+FNU7M3];pGYUX1[0]|=l_AcZ;}h_bP43:;}{if(!((J7Iki4->Kt5Iv1[0]&0360ul)==
+(0x8ul<<04)&&(!(D1OxN4&(1u<<16))||(g5AWi&(01u<<16))!=0)))goto dIOGi2;
+{eSf3B1=0xFFu;x2RgK4[0]|=mNYxW2[FNU7M3];}dIOGi2:;}}goto AxBoj2;C3bNb:
+;{if(!(EhXZB1<64))goto s0R_k;{{if(!((J7Iki4->fV7o35[0].RcNOn&16)!=0||
+(J7Iki4->oXafA1[0].H4ghS2&(01u|02u|2048u|1024u|32768u))))goto xAdT74;
+{eSf3B1=0xFFu;PGmy4=0xFFu;x2RgK4[0]|=mNYxW2[FNU7M3];pGYUX1[0]|=l_AcZ;
+}goto gVh3P;xAdT74:;{if(!((J7Iki4->oXafA1[0].H4ghS2&((01u|2u|2048u|
+1024u|32768u)|16u|4096u))&&(J7Iki4->Kt5Iv1[0]&4096ul)==0))goto IYF8d1
+;{eSf3B1=0xFFu;x2RgK4[0]|=mNYxW2[FNU7M3];}IYF8d1:;}gVh3P:;}}goto Qzf37
+;s0R_k:;{{if(!((J7Iki4->fV7o35[01].RcNOn&16)!=0||(J7Iki4->oXafA1[01].
+H4ghS2&(1u|2u|2048u|1024u|32768u))))goto QlpOn3;{eSf3B1=0xFFu;PGmy4=
+0xFFu;x2RgK4[0]|=mNYxW2[FNU7M3];pGYUX1[0]|=l_AcZ;}goto OEjBA3;QlpOn3:
+;{if(!((J7Iki4->oXafA1[0x1].H4ghS2&((1u|2u|2048u|1024u|32768u)|16u|
+4096u))&&(J7Iki4->Kt5Iv1[1]&4096ul)==0))goto imkjX3;{eSf3B1=0xFFu;
+x2RgK4[0]|=mNYxW2[FNU7M3];}imkjX3:;}OEjBA3:;}}Qzf37:;}AxBoj2:;}SQx3H4
+:;}RdZoN=&J7Iki4->v6D2d3->_jfrJ1;{if(!(FNU7M3&15u))goto Hw1x02;{{if(!
+(FNU7M3<16))goto wHwkE;{eSf3B1=(J7Iki4->fV7o35[0].FNU7M3[FNU7M3]&
+0xF0u)|(eSf3B1&15u);{if(!(J7Iki4->fV7o35[0].FNU7M3[FNU7M3]!=eSf3B1))goto
+PXvj5;s3sCI1(RdZoN,64+FNU7M3,J7Iki4->fV7o35[0].FNU7M3[FNU7M3]=eSf3B1);
+PXvj5:;}}goto EzYjG;wHwkE:;{eSf3B1=(J7Iki4->fV7o35[0].FNU7M3[FNU7M3-
+16]&15u)|(eSf3B1&0xF0u);{if(!(J7Iki4->fV7o35[0].FNU7M3[FNU7M3-16]!=
+eSf3B1))goto KhdVP3;s3sCI1(RdZoN,64+FNU7M3-16,J7Iki4->fV7o35[0].
+FNU7M3[FNU7M3-16]=eSf3B1);KhdVP3:;}}EzYjG:;}}Hw1x02:;}{if(!(PGmy4!=
+J7Iki4->fV7o35[0].oWLOw3[FNU7M3]))goto wlvGb2;s3sCI1(RdZoN,96+FNU7M3,
+J7Iki4->fV7o35[0].oWLOw3[FNU7M3]=PGmy4);wlvGb2:;}LjWek1:;}VA7c_2:;}
+jgvi52:;};{if(!(J7Iki4->SP4ZU!=0x2))goto KSS8F;{if(!((J7Iki4->fV7o35[
+01].RcNOn&16)==0))goto zr3bw2;{if(!(Xx6Ti3==(-01)||Xx6Ti3==1))goto
+__FnD3;{unsigned char eSf3B1,PGmy4;unsigned EhXZB1;volatile unsigned
+long*RdZoN;{if(!(FNU7M3==0&&(J7Iki4->Kt5Iv1[0x1]&0360ul)>(0x5ul<<04)))goto
+RsG2u4;goto Nqom15;RsG2u4:;}{if(!(FNU7M3==16&&(J7Iki4->Kt5Iv1[0x1]&
+240ul)>(06ul<<4)))goto pdiOe2;goto Nqom15;pdiOe2:;}eSf3B1=0xDDu;PGmy4
+=J7Iki4->mmXTK1[0x1][FNU7M3];EhXZB1=J7Iki4->eKHB1[FNU7M3+32* (0x1+1)]
+&127;{if(!(EhXZB1==127u))goto cFFDu1;{x2RgK4[01]|=mNYxW2[FNU7M3];
+Ragva2[1]|=l_AcZ;}goto CrKFV;cFFDu1:;{if(!(EhXZB1<32))goto bgpE63;{{
+if(!(!(D1OxN4&(01ul<<EhXZB1))||(l_AcZ&g5AWi)!=0))goto kixrg4;{x2RgK4[
+0x1]|=mNYxW2[FNU7M3];pGYUX1[01]|=l_AcZ;}kixrg4:;}{if(!((J7Iki4->
+Kt5Iv1[0x1]&0360ul)==(010ul<<04)&&(!(D1OxN4&(1u<<16))||(g5AWi&(0x1u<<
+16))!=0)))goto dWbRI2;{eSf3B1=0xFFu;x2RgK4[01]|=mNYxW2[FNU7M3];}
+dWbRI2:;}}goto sqUio1;bgpE63:;{if(!(EhXZB1<64))goto GmdgD3;{{if(!((
+J7Iki4->fV7o35[0].RcNOn&16)!=0||(J7Iki4->oXafA1[0].H4ghS2&(1u|0x2u|
+2048u|1024u|32768u))))goto x9P7L4;{eSf3B1=0xFFu;PGmy4=0xFFu;x2RgK4[01
+]|=mNYxW2[FNU7M3];pGYUX1[1]|=l_AcZ;}goto WDh6T;x9P7L4:;{if(!((J7Iki4
+->oXafA1[0].H4ghS2&((1u|2u|2048u|1024u|32768u)|16u|4096u))&&(J7Iki4->
+Kt5Iv1[0]&4096ul)==0))goto AbRV73;{eSf3B1=0xFFu;x2RgK4[1]|=mNYxW2[
+FNU7M3];}AbRV73:;}WDh6T:;}}goto Jd3Ub2;GmdgD3:;{{if(!((J7Iki4->fV7o35
+[0x1].RcNOn&16)!=0||(J7Iki4->oXafA1[01].H4ghS2&(0x1u|02u|2048u|1024u|
+32768u))))goto ggCLj1;{eSf3B1=0xFFu;PGmy4=0xFFu;x2RgK4[0x1]|=mNYxW2[
+FNU7M3];pGYUX1[0x1]|=l_AcZ;}goto ooAwi4;ggCLj1:;{if(!((J7Iki4->oXafA1
+[1].H4ghS2&((0x1u|2u|2048u|1024u|32768u)|16u|4096u))&&(J7Iki4->Kt5Iv1
+[01]&4096ul)==0))goto XW9Wk2;{eSf3B1=0xFFu;x2RgK4[0x1]|=mNYxW2[FNU7M3
+];}XW9Wk2:;}ooAwi4:;}}Jd3Ub2:;}sqUio1:;}CrKFV:;}RdZoN=&J7Iki4->v6D2d3
+->_jfrJ1;{if(!(FNU7M3&017u))goto anpXO2;{{if(!(FNU7M3<16))goto DR1bx1
+;{eSf3B1=(J7Iki4->fV7o35[01].FNU7M3[FNU7M3]&0xF0u)|(eSf3B1&017u);{if(
+!(J7Iki4->fV7o35[01].FNU7M3[FNU7M3]!=eSf3B1))goto l6YAz4;dZK6h3(RdZoN
+,64+FNU7M3,J7Iki4->fV7o35[1].FNU7M3[FNU7M3]=eSf3B1);l6YAz4:;}}goto
+VqOPd4;DR1bx1:;{eSf3B1=(J7Iki4->fV7o35[01].FNU7M3[FNU7M3-16]&15u)|(
+eSf3B1&0xF0u);{if(!(J7Iki4->fV7o35[01].FNU7M3[FNU7M3-16]!=eSf3B1))goto
+jew7t;dZK6h3(RdZoN,64+FNU7M3-16,J7Iki4->fV7o35[1].FNU7M3[FNU7M3-16]=
+eSf3B1);jew7t:;}}VqOPd4:;}}anpXO2:;}{if(!(PGmy4!=J7Iki4->fV7o35[0x1].
+oWLOw3[FNU7M3]))goto tuk1G3;dZK6h3(RdZoN,96+FNU7M3,J7Iki4->fV7o35[01]
+.oWLOw3[FNU7M3]=PGmy4);tuk1G3:;}Nqom15:;}__FnD3:;}zr3bw2:;}KSS8F:;};}
+if(--FNU7M3>=0)goto UzdZm4;};{if(!(Xx6Ti3==(-01)||Xx6Ti3==0))goto
+SudMT3;{volatile unsigned long*RdZoN;unsigned char PBtXm1,rGUtq3,
+Sptqu;unsigned long IBcfz,sxdur;RdZoN=&J7Iki4->v6D2d3->_jfrJ1;{if(!(
+x2RgK4[0]!=J7Iki4->fV7o35[0].nDLY04))goto Im7I32;WdFDP4(RdZoN,042,
+J7Iki4->fV7o35[0].nDLY04=x2RgK4[0]);Im7I32:;}rGUtq3=J7Iki4->fV7o35[0]
+.rGUtq3&0x7u;{if(!(J7Iki4->h80jx1&((0==0)?16:32)))goto n_hAy;{rGUtq3
+|=0xF8u;switch((J7Iki4->h80jx1>>((0==0)?0:0x2))&0x3){case 0:{if(!(!(
+J7Iki4->h80jx1&64)||(g5AWi&(01u<<0))!=0||!(D1OxN4&(0x1u<<0))))goto
+U8qqH3;rGUtq3&=0x7u;U8qqH3:;}break;case 0x1:{if(!((J7Iki4->fV7o35[0].
+RcNOn&16)!=0||(J7Iki4->oXafA1[0].H4ghS2&(1u|0x2u|2048u|1024u|32768u))))goto
+eDFcP3;rGUtq3&=07u;eDFcP3:;}break;case 02:{if(!((J7Iki4->fV7o35[0x1].
+RcNOn&16)!=0||(J7Iki4->oXafA1[1].H4ghS2&(01u|0x2u|2048u|1024u|32768u))))goto
+Z1SZQ;rGUtq3&=7u;Z1SZQ:;}break;case 0x3:break;default:;;}}n_hAy:;}{if
+(!(J7Iki4->fV7o35[0].rGUtq3!=rGUtq3))goto PdKuJ;s3sCI1(RdZoN,0x13,
+J7Iki4->fV7o35[0].rGUtq3=rGUtq3);PdKuJ:;}PBtXm1=J7Iki4->fV7o35[0].
+PBtXm1&~16;IBcfz=pGYUX1[0]|Ragva2[0];{if(!(IBcfz!=J7Iki4->fV7o35[0].
+WtICk3))goto iypdS2;WdFDP4(RdZoN,0xa0,J7Iki4->fV7o35[0].WtICk3=IBcfz);
+iypdS2:;}{if(!(J7Iki4->fV7o35[0].RcNOn&16))goto w4x6p4;{{if(!((J7Iki4
+->fV7o35[0].aW7n84&~D1OxN4)))goto eBc9w4;PBtXm1|=16;goto H5wQ5;eBc9w4
+:;{if(!((J7Iki4->Kt5Iv1[0]&8192ul)&&(OS6VN2[0]&01u)))goto EobCl2;
+PBtXm1|=16;EobCl2:;}H5wQ5:;}}goto oEUKM;w4x6p4:;{{if(!((J7Iki4->
+Kt5Iv1[0]&8192ul)&&(OS6VN2[0]&(0x1u|1024u))))goto k3d_u3;PBtXm1|=16;
+goto OC0wH1;k3d_u3:;{if(!(J7Iki4->Kt5Iv1[0]&262144ul))goto K0PS_4;{
+unsigned long YOy672=pGYUX1[0];{if(!((J7Iki4->Kt5Iv1[0]&0360ul)>(6ul
+<<4)))goto rtRgZ2;YOy672|=65537ul;goto A93PI1;rtRgZ2:;{if(!((J7Iki4->
+Kt5Iv1[0]&240ul)>(05ul<<04)))goto FMXMT1;YOy672|=1ul;FMXMT1:;}A93PI1:
+;}{if(!(YOy672==0xFFFFFFFFul))goto Y59T82;PBtXm1|=16;Y59T82:;}}K0PS_4
+:;}OC0wH1:;}}oEUKM:;}{if(!((J7Iki4->Kt5Iv1[0]&017ul)==(0x4ul<<0)))goto
+DpFo_;PBtXm1|=16;DpFo_:;}{if(!(J7Iki4->fV7o35[0].PBtXm1!=PBtXm1))goto
+_YcFb4;s3sCI1(RdZoN,18,J7Iki4->fV7o35[0].PBtXm1=PBtXm1);_YcFb4:;}
+sxdur=0;Sptqu=J7Iki4->fV7o35[0].FNU7M3[0];{if(!(OS6VN2[0]&((01u|0x2u|
+2048u|1024u|32768u)|16u|4096u)))goto z6j0y3;{Sptqu|=04u;sxdur=01u<<
+16u;}goto t2pBR2;z6j0y3:;Sptqu&=~0x4u;t2pBR2:;}{if(!(J7Iki4->Kt5Iv1[0
+]&1048576ul))goto HLZik4;{Sptqu&=~4u;{if(!(J7Iki4->Kt5Iv1[0]&
+4194304ul))goto wXT2N2;Sptqu|=0x4u;wXT2N2:;}}HLZik4:;}{if(!(J7Iki4->
+fV7o35[0].FNU7M3[0]!=Sptqu))goto cu7WU1;s3sCI1(RdZoN,64,J7Iki4->
+fV7o35[0].FNU7M3[0]=Sptqu);cu7WU1:;}{if(!(J7Iki4->Kt5Iv1[0]&524288ul))goto
+ZGMLO4;{unsigned char DvwSz1=J7Iki4->fV7o35[0].DvwSz1&~32;{if(!(
+J7Iki4->Kt5Iv1[0]&2097152ul))goto KI_rp3;DvwSz1|=32u;KI_rp3:;}{if(!(
+DvwSz1!=J7Iki4->fV7o35[0].DvwSz1))goto r03RA1;s3sCI1(RdZoN,041,J7Iki4
+->fV7o35[0].DvwSz1=DvwSz1);r03RA1:;}}ZGMLO4:;}{if(!(OS6VN2[0]&(1u|02u
+|2048u|1024u|32768u)))goto v7KXO;sxdur=0xFFFFFFFFul;v7KXO:;}{if(!(
+sxdur!=J7Iki4->fV7o35[0].M782F4))goto fBu6j2;WdFDP4(RdZoN,0xa4,J7Iki4
+->fV7o35[0].M782F4=sxdur);fBu6j2:;}}SudMT3:;};{if(!(J7Iki4->SP4ZU!=2))goto
+lcFs74;{if(!(Xx6Ti3==(-01)||Xx6Ti3==1))goto M8iX62;{volatile unsigned
+long*RdZoN;unsigned char PBtXm1,rGUtq3,Sptqu;unsigned long IBcfz,
+sxdur;RdZoN=&J7Iki4->v6D2d3->_jfrJ1;{if(!(x2RgK4[01]!=J7Iki4->fV7o35[
+1].nDLY04))goto KelN_4;dAXWu2(RdZoN,042,J7Iki4->fV7o35[0x1].nDLY04=
+x2RgK4[01]);KelN_4:;}rGUtq3=J7Iki4->fV7o35[01].rGUtq3&0x7u;{if(!(
+J7Iki4->h80jx1&((0x1==0)?16:32)))goto a17ei2;{rGUtq3|=0xF8u;switch((
+J7Iki4->h80jx1>>((0x1==0)?0:0x2))&3){case 0:{if(!(!(J7Iki4->h80jx1&64
+)||(g5AWi&(1u<<0))!=0||!(D1OxN4&(0x1u<<0))))goto ak4S94;rGUtq3&=7u;
+ak4S94:;}break;case 01:{if(!((J7Iki4->fV7o35[0].RcNOn&16)!=0||(J7Iki4
+->oXafA1[0].H4ghS2&(1u|2u|2048u|1024u|32768u))))goto u7xdA3;rGUtq3&=
+7u;u7xdA3:;}break;case 02:{if(!((J7Iki4->fV7o35[1].RcNOn&16)!=0||(
+J7Iki4->oXafA1[0x1].H4ghS2&(01u|2u|2048u|1024u|32768u))))goto WyCc21;
+rGUtq3&=0x7u;WyCc21:;}break;case 0x3:break;default:;;}}a17ei2:;}{if(!
+(J7Iki4->fV7o35[01].rGUtq3!=rGUtq3))goto oDDgs2;dZK6h3(RdZoN,023,
+J7Iki4->fV7o35[1].rGUtq3=rGUtq3);oDDgs2:;}PBtXm1=J7Iki4->fV7o35[1].
+PBtXm1&~16;IBcfz=pGYUX1[01]|Ragva2[1];{if(!(IBcfz!=J7Iki4->fV7o35[0x1
+].WtICk3))goto Lkzmt4;dAXWu2(RdZoN,0xa0,J7Iki4->fV7o35[1].WtICk3=
+IBcfz);Lkzmt4:;}{if(!(J7Iki4->fV7o35[0x1].RcNOn&16))goto PmhvS2;{{if(
+!((J7Iki4->fV7o35[01].aW7n84&~D1OxN4)))goto mYgJ61;PBtXm1|=16;goto
+ChhzO2;mYgJ61:;{if(!((J7Iki4->Kt5Iv1[1]&8192ul)&&(OS6VN2[1]&0x1u)))goto
+G2b703;PBtXm1|=16;G2b703:;}ChhzO2:;}}goto aB9s_3;PmhvS2:;{{if(!((
+J7Iki4->Kt5Iv1[0x1]&8192ul)&&(OS6VN2[01]&(01u|1024u))))goto ziNDy3;
+PBtXm1|=16;goto D9Tnd2;ziNDy3:;{if(!(J7Iki4->Kt5Iv1[0x1]&262144ul))goto
+Cn8Hk1;{unsigned long YOy672=pGYUX1[1];{if(!((J7Iki4->Kt5Iv1[0x1]&
+0360ul)>(06ul<<4)))goto C2o6P2;YOy672|=65537ul;goto dgebC;C2o6P2:;{if
+(!((J7Iki4->Kt5Iv1[1]&240ul)>(05ul<<04)))goto U13PG3;YOy672|=1ul;
+U13PG3:;}dgebC:;}{if(!(YOy672==0xFFFFFFFFul))goto VJ_r55;PBtXm1|=16;
+VJ_r55:;}}Cn8Hk1:;}D9Tnd2:;}}aB9s_3:;}{if(!((J7Iki4->Kt5Iv1[01]&15ul)==
+(4ul<<0)))goto zgrSq2;PBtXm1|=16;zgrSq2:;}{if(!(J7Iki4->fV7o35[0x1].
+PBtXm1!=PBtXm1))goto q1RMD2;dZK6h3(RdZoN,18,J7Iki4->fV7o35[1].PBtXm1=
+PBtXm1);q1RMD2:;}sxdur=0;Sptqu=J7Iki4->fV7o35[01].FNU7M3[0];{if(!(
+OS6VN2[01]&((01u|02u|2048u|1024u|32768u)|16u|4096u)))goto TkL0e2;{
+Sptqu|=04u;sxdur=1u<<16u;}goto IlVem3;TkL0e2:;Sptqu&=~0x4u;IlVem3:;}{
+if(!(J7Iki4->Kt5Iv1[0x1]&1048576ul))goto CIeRo2;{Sptqu&=~4u;{if(!(
+J7Iki4->Kt5Iv1[1]&4194304ul))goto vI2454;Sptqu|=04u;vI2454:;}}CIeRo2:
+;}{if(!(J7Iki4->fV7o35[0x1].FNU7M3[0]!=Sptqu))goto e1zdp3;dZK6h3(
+RdZoN,64,J7Iki4->fV7o35[0x1].FNU7M3[0]=Sptqu);e1zdp3:;}{if(!(J7Iki4->
+Kt5Iv1[1]&524288ul))goto GRELQ2;{unsigned char DvwSz1=J7Iki4->fV7o35[
+0x1].DvwSz1&~32;{if(!(J7Iki4->Kt5Iv1[0x1]&2097152ul))goto DbzEH3;
+DvwSz1|=32u;DbzEH3:;}{if(!(DvwSz1!=J7Iki4->fV7o35[01].DvwSz1))goto
+Yx04h1;dZK6h3(RdZoN,041,J7Iki4->fV7o35[01].DvwSz1=DvwSz1);Yx04h1:;}}
+GRELQ2:;}{if(!(OS6VN2[1]&(1u|02u|2048u|1024u|32768u)))goto MFOQF4;
+sxdur=0xFFFFFFFFul;MFOQF4:;}{if(!(sxdur!=J7Iki4->fV7o35[0x1].M782F4))goto
+AnhYe;dAXWu2(RdZoN,0xa4,J7Iki4->fV7o35[0x1].M782F4=sxdur);AnhYe:;}}
+M8iX62:;}lcFs74:;};}int __attribute__((cdecl))TAU32_SetFifoTrigger(
+kWMzp1*J7Iki4,int b9Zs_,unsigned jfimS4,unsigned F46242,Ei5yG Yj6gL2){
+{if(!(b9Zs_!=(-01)&&b9Zs_>1))goto Wu9eN2;return 0;Wu9eN2:;}{if(!(
+J7Iki4->SP4ZU==02&&b9Zs_>0))goto kOzYw2;return 0;kOzYw2:;}{if(!(
+jfimS4>0x3u||F46242>=256))goto SwvPI;return 0;SwvPI:;}h2LrH3(&J7Iki4
+->h2LrH3);{if(!(b9Zs_==(-01)||b9Zs_==0))goto DGCZj;aeA8v(J7Iki4->
+Nlajt1[0][jfimS4],F46242,Yj6gL2);DGCZj:;}{if(!(J7Iki4->SP4ZU!=0x2))goto
+iqpue4;{if(!(b9Zs_==(-01)||b9Zs_==01))goto XJ98_4;aeA8v(J7Iki4->
+Nlajt1[01][jfimS4],F46242,Yj6gL2);XJ98_4:;}iqpue4:;}QD7sk4(&J7Iki4->
+h2LrH3);return 0x1;}void __attribute__((cdecl))TAU32_ReadTsc(kWMzp1*
+J7Iki4,HJfJJ*TFC2u3){volatile unsigned long*RdZoN;unsigned char*S62iO
+=(unsigned char* )TFC2u3;unsigned X3V8j4;h2LrH3(&J7Iki4->h2LrH3);
+RdZoN=&J7Iki4->v6D2d3->_jfrJ1;AUUSL3(RdZoN,013,0);X3V8j4=010;{oVe401:
+S62iO[X3V8j4-0x1]=(unsigned char)RtiEy4(RdZoN,013);if(--X3V8j4)goto
+oVe401;};QD7sk4(&J7Iki4->h2LrH3);}static const unsigned char GVZnd[]=
+{0117,0347,0377,0377,0142,0377,57,0,0,213,255,255,255,255,255,0377,
+0377,0377,0377,0377,0377,0377,255,255,255,0377,255,255,0377,0377,0377
+,0377,0377,0377,0377,255,255,255,0377,0377,0377,0377,0377,0377,0377,
+0377,0377,255,255,255,255,0377,0377,0377,0377,0377,0377,0377,0377,
+0377,255,255,255,0377,0377,0377,0377,0377,0377,0377,0377,0377,0377,
+255,255,255,0377,0377,0377,0377,128,011,48,129,0x26,208,0x4,152,128,
+19,0,0,031,32,0x3,0144,128,011,0x26,0101,6,0xc8,0,0,0x19,32,0x3,0144,
+128,0144,061,0x1,0,017,12,16,01,0x32,0,0,062,0x1c,0216,19,32,03,0114,
+128,014,48,0214,046,208,4,64,6,0xc8,0140,02,0114,128,011,144,1,56,
+0375,0,0,0x15,160,0x2,0124,128,012,0120,01,42,128,012,0120,1,052,64,
+03,0164,0,0,013,96,0x1,054,128,0x5,0240,0,0,0x2e,160,0x2,0,017,0x12,
+192,02,0130,0,0,21,208,2,052,128,5,168,0,0,0x14,0240,05,0124,128,012,
+0240,02,0124,64,05,168,0,0,21,192,02,104,251,0,0x18,16,0,32,2,0,016,
+168,254,0,0112,152,255,0,15,0x4,0,2,16,0,0,0x2,64,0,0,010,0,026,0x4,0
+,4,64,0,02,0x1,0,014,32,0,0,96,0376,0x18,0,13,4,0,0x3,16,0,0,012,64,
+01,010,0,0,01,0,012,64,0,06,0240,0,0,144,0,0x4,64,1,0,1,0x5,0,014,
+0240,0,0,0136,255,0,4,144,16,128,0,0x7,128,02,0,07,0240,0,0,4,0,021,
+04,0,011,32,0,1,128,0,0x8,32,0,0,024,0,0,208,0375,0,04,64,0,1,8,0,7,4
+,0,010,1,0,054,32,0,0,104,248,0,4,176,0,0,6,0,0x7,128,0x5,0,07,0140,
+01,12,0,021,48,0,011,96,0,1,128,01,0,0x7,0140,0,0,054,0,1,252,0,4,
+0120,0,0,02,0,07,128,0x2,0,7,0240,0,0,04,0,021,48,0,011,32,0,01,128,0
+,010,32,0,0,024,0,1,248,0,0x4,128,0,0,24,0,0x8,19,04,0,06,192,010,48,
+8,0,16,48,1,0,010,128,5,0,0x1,06,0,0x7,128,17,0x18,0x2,208,254,0,4,96
+,0,0,036,0x8,0,07,4,0,010,129,56,0,021,074,32,0,0x8,192,0101,0,0,128,
+07,02,0,0x6,192,0101,36,16,0360,0377,0,04,128,0,0,0x18,0,0x8,4,0,010,
+1,48,0,021,48,32,0,8,128,01,0,0x1,6,0,7,128,1,32,0,0,010,0374,0,04,64
+,0,0,24,0,010,34,0x1,0,6,128,72,48,0,17,48,0,011,128,01,0,0x1,0x6,0,
+07,128,01,16,011,0240,0371,0,0x4,16,0,0,02,0,7,128,0,0x8,32,0,0,04,0,
+7,042,0,06,021,0,0,4,0,011,0240,1,0,0,128,0,0x8,0240,1,0x4,0,0,0x58,
+0376,0,36,014,0,0x6,6,0,013,128,0x1,0,012,128,1,0,1,0360,0374,0,04,48
+,0,011,128,0x5,0,0x7,96,0x1,014,0,07,014,0,0x6,06,0,01,010,0,010,0140
+,0,0x1,128,1,0,07,0140,0,0,0x2c,0,0,104,0373,8,0,03,16,0,011,128,2,0,
+7,0240,0,0,0x4,0,7,012,0,6,05,0,0,128,0,011,32,0,0x1,128,0,8,32,0,0,
+024,0,0,0172,248,0,0x4,192,0,0,128,0,0x8,023,4,0,06,192,0x8,48,0,7,
+012,0,0x6,0x5,0,01,8,0,011,010,0,01,0106,0,010,4,0x18,0x2,16,0377,0,
+04,224,32,6,04,0,07,04,0,8,129,56,010,0,16,12,0,011,64,128,0,0,128,7,
+4,0,0x6,64,64,36,16,0310,0376,4,0,3,192,0,0,0x18,0,010,04,0,010,01,48
+,0,18,010,0,0x8,128,01,0,1,0x6,0,7,128,01,32,0,0,0161,254,0,4,192,0,0
+,24,021,0,0x7,2,0x1,0,6,128,64,48,0,17,48,0,011,128,73,0,0x1,6,0,7,
+128,041,16,8,128,254,0,4,16,0,0,02,0,07,128,0,8,32,0,0,4,0,17,064,128
+,0,010,32,0,012,1,32,0,0,0x4,0,0,112,0374,0,0x2e,48,0,0x1a,152,0374,0
+,04,48,0,0,06,0,07,128,0x5,0,7,96,1,014,0,021,48,0,0x1,1,0,6,0140,0,
+012,0x3,0140,0,0,0x2c,0,0,128,0377,0x8,0,03,16,0,0,2,0,7,128,02,0,07,
+0240,0,0,4,0,17,48,0,011,32,0,012,01,32,0,0,0x14,0,0,042,0377,0,04,
+192,8,0130,0,0x8,19,04,0,6,192,0x8,48,2,0,021,042,0,0,01,0,6,128,011,
+0,011,0x2c,128,011,24,02,0x28,248,0,04,224,32,0x1e,010,0,7,04,0,010,
+129,56,010,0,16,014,128,1,0,07,192,0101,0,011,15,196,0101,36,16,232,
+248,04,0,3,192,0,0,24,0,0x8,04,0,0x8,0x1,48,0,15,2,0,0x3,01,0,0x6,128
+,01,0,011,014,128,01,32,0,0,0241,248,0,4,192,0,0,0x1a,0,8,18,1,0,0x6,
+128,0104,48,0,017,0x8,0,0x2,026,0,07,128,0x1,0,011,014,128,01,144,8,
+136,252,160,128,4,0,01,208,0,0,02,0x1,0,0x6,128,0,010,32,0,0,064,0,17
+,064,0,0,32,0120,64,0,0,64,0,3,32,0,0x1,128,0106,0x2,0,05,1,32,0,0,36
+,02,0334,248,0,0x4,192,0,0x1,010,0,18,48,0,017,0x8,0,0,48,0,0x1,2,0,
+012,04,0,011,16,16,216,0373,128,0,0,014,0,01,48,0,0,16,16,0,06,128,
+0x5,0,7,96,1,12,0,17,48,128,0x1,64,128,0,05,0140,0,0x2,6,0x1,0,5,03,
+0140,0,0,054,0,0,176,0375,010,16,05,0,0x1,16,0,011,128,2,0,7,160,0,0,
+04,0,17,48,128,0,1,2,0,0x5,32,0,2,026,0,6,01,32,0,0,024,0,0,0263,0376
+,0,0,132,48,0101,0,01,02,010,0,8,0x13,04,0,0x6,192,010,0,0,32,0,14,
+021,0,0,128,010,06,0,0,0102,0,0x1,010,4,0,1,128,73,0,0x1,0106,04,0,05
+,12,128,0x49,0x28,0,0,41,0373,96,0,0,074,0,1,32,32,0x6,16,0,0x7,0x4,0
+,010,129,8,0,017,010,0,0,12,128,7,0x32,0,0x1,192,0,03,192,01,0,0,128,
+7,0,6,017,0xc8,0x1,36,0,0,48,248,132,128,48,0,01,192,0,0,0x8,0x8,0,
+0x7,0x4,0,010,0x1,48,0,15,1,0,02,6,64,0,2,131,0,0x2,128,1,0,1,6,0,0x6
+,12,128,1,32,0,0,73,248,0,0,17,48,0,0x1,192,024,136,0,8,0102,0x1,0,
+0x6,128,0120,176,010,0,016,4,0,2,06,128,024,0,1,03,0,02,128,0x1,0,1,
+0x26,01,0,0x5,014,128,1,32,0,0,112,0373,16,0,0x3,16,0,0,0202,0,7,128,
+0,8,32,0,0,0x4,0,17,0x34,128,0,3,64,0x3,0x8,0,01,0240,1,0,0,128,0x6,
+0120,64,2,0x8,0,3,32,0x31,04,01,168,255,0,7,16,0,0x23,16,0,0,48,0,05,
+0x3,0140,0,0x1,128,0x1,0,0x4,16,0,04,128,0,0x1,010,0xc8,0371,0,0x4,48
+,0,0,16,16,0,06,128,0x5,0,07,0140,1,12,0,017,0x1,0,0,48,128,0x1,0,3,
+131,0,0,64,0,0,96,0,02,0x6,64,0,06,0140,0x1,16,0,0,0x28,251,014,0,0x3
+,16,0,011,128,02,0,0x7,0240,0,0,4,0,07,64,1,0,0x5,02,0,0,48,128,0,04,
+0x8,0,0,1,0,0,32,0,0x3,0x1,64,144,2,0,03,0240,0,0,128,010,0142,0375,
+04,0,3,192,4,24,0x1,0,0x7,023,4,0,6,192,010,48,0x1,0,016,010,0,0x1,
+0x8,38,0,0x3,35,0x1,64,0,0x4,64,01,0102,64,0x8,0,0x4,01,0,1,48,0374,0
+,0x4,224,32,06,16,0,0x7,4,0,8,129,56,8,0,6,128,0x1,0,0x7,014,128,07,1
+,0,01,192,3,24,0,01,64,64,0,0,128,1,48,0,0,6,0,04,192,0,0,014,0x8,56,
+0375,16,0,0x3,192,0,0,24,16,0,0x7,4,0x1,0,0x7,0101,48,0,023,06,0,3,
+0x3,0x1,0,01,128,0101,0,0x2,64,128,8,0,0x5,01,0,01,0111,248,0,4,192,0
+,0,8,1,0,07,0102,0,7,128,16,48,0,18,128,06,0,03,043,0,0,64,0,0,128,
+0x5,0,01,0x26,136,010,16,041,0,3,128,0,0x1,0x8,144,0377,0,4,16,0,0,
+0202,64,01,1,0,04,128,0,3,64,0,3,32,0,0,52,0,0x7,64,0x2,0,0x5,32,0,0,
+16,128,024,0x1,0,0x1,64,0,0x2,0x1,32,0,0,48,144,0,0x8,32,49,0x4,0,1,
+0374,0,7,16,0,37,32,010,02,0,011,48,0,011,128,1,0,1,56,0377,0,0x4,48,
+0,0,24,16,01,0,5,128,5,0,2,192,0,0x3,96,0x1,12,0,0x7,64,4,0,5,0140,0,
+0,054,128,3,0,0x2,192,0x3,0,1,03,0140,0,0,074,128,1,0,07,224,0,0,074,
+0,0,136,0374,0x8,0,0x3,16,0,0x2,32,01,0,0x4,128,02,0,02,64,0,0x3,0240
+,0,0,4,041,0,016,32,0,0,148,136,04,0,2,64,32,0x1,0,0,0x1,32,0,0,064,
+128,0,0x8,0240,011,0x5,16,0372,0371,0,4,192,36,0120,16,0x8,1,0,5,023,
+0x4,0,0x2,023,0,02,192,0x8,48,32,0,07,2,0,05,128,011,24,0,0,4,0,03,
+010,2,0,0,014,136,0121,128,0x8,0x26,0,8,72,176,010,0x18,254,0,4,224,0
+,0,0x6,192,0,0x7,4,0,2,192,03,02,0,2,129,0x3c,0,15,224,1,0x25,128,0x2
+,0,0x2,192,0,02,15,192,1,014,128,07,0x4,0,06,224,0,0,56,0,0,0310,0375
+,4,0,3,192,0,0,16,0,0,01,0x1,0,0x5,0x4,1,0,2,3,0,03,0101,48,0,0x8,02,
+0,0x5,128,01,0x28,0,0,02,0,3,0x3,0,1,014,128,0x1,0,01,06,0,0x8,64,48,
+0x8,0241,0372,0,0x4,192,0,0,0130,16,02,0,06,18,0,03,3,0,0x2,128,0x4,
+128,0x8,0,6,64,0,06,128,1,16,0,0,0x4,0,03,0243,0,1,12,128,01,0,0x1,6,
+0,8,011,48,2,224,254,160,144,4,0,1,16,0,0,012,01,0,02,05,0x4,0,0x1,
+128,0,03,64,0,3,32,0,0,4,0,8,2,0,010,128,0,03,64,32,0x28,32,015,32,0,
+0,52,128,0,0x8,32,0,0,0264,8,112,248,128,0,6,8,0,0x1c,1,0,8,8,0,0x5,
+01,0,03,48,0,13,176,0376,0,01,12,0,1,48,0,0,0x18,0x4,0,2,04,0,02,128,
+0x5,0,2,192,0,3,96,1,12,0,021,054,128,5,0,3,1,34,32,014,0140,0,0,48,
+128,01,0,0x7,0140,0,0,48,0,0,128,0371,8,144,0x4,0,01,16,0,0,0x48,0,3,
+64,0x4,0,1,128,0x2,0,02,64,0,3,0240,0,0,4,0,017,01,0,0,148,136,2,0,03
+,041,0,1,014,0x21,0,0,48,128,0,0x8,32,0,0,16,04,0342,252,0,01,062,
+0101,0,0,192,042,24,01,0,0x2,32,04,0,2,19,4,0,0x2,013,0x1,0,0x1,192,8
+,48,011,0,14,010,0,0,24,0,0,3,0,3,042,04,041,128,128,17,128,8,026,0,7
+,128,0x1,0,0,32,0360,0372,0140,0,0,074,0,1,224,0,0,036,4,0,0x2,03,0,
+0x3,4,0,2,192,03,0,0x3,129,56,0,021,36,128,0x4,0,0x2,192,2,0x18,0,0,
+15,0xc8,0101,014,128,0x7,02,0,06,192,0101,0x3c,0,0,216,0375,4,0x1,48,
+0,0x1,192,0,0,24,0x4,0,0x2,0x4,0x4,0,0x2,0x4,0x1,0,02,3,0,03,0101,48,
+0,021,0x28,0,0,0x4,0,04,32,0,0x1,132,1,0,0x1,06,0,0x7,128,01,48,0,0,
+0231,0377,64,137,48,0,01,192,0,0,0x18,1,0,2,8,0,0x3,2,0,3,3,0,0x2,128
+,0,0,48,0,17,16,0,0,2,0,02,128,32,0104,129,054,128,1,0,01,0x6,0,0x7,
+128,1,48,34,32,255,160,136,0,02,144,0,0,02,0,0x7,128,024,024,0,01,64,
+0,0,0x28,32,0205,32,011,0x34,0,15,0240,16,32,128,0x4,0,01,0x1a,64,
+0101,0,1,0205,0240,1,0x4,128,0,3,64,0,0,012,0,0,1,32,0,0,0x4,0,0,0120
+,255,128,0,0x3,192,128,0,011,0x2,0,6,8,136,128,48,0,15,011,1,17,8,02,
+0,01,24,0,0,0x1,0,1,0x8,010,0,0x7,0x2,0,06,8,0371,0,04,48,0,0,0x6,0,7
+,128,0x5,0,3,03,32,0,0,4,96,0x1,12,0,017,128,0,0,054,128,05,0,01,24,0
+,03,04,0140,0,0,014,0,0,0x6,0,4,1,0,0,3,96,0,2,24,249,8,16,1,0,0x1,
+144,024,0x2,0,0x7,128,0x2,0,3,16,2,041,0x8,0240,0,0,4,0,0,0x4,0,05,16
+,0x2,0,0x5,0x8,1,148,136,2,0,0x1,0x18,0,0,010,0x2,0,0,8,32,0x8,0x5,0,
+0,64,02,0,5,01,32,0,0x2,062,0373,0,0,04,0x2,0,0x1,128,0x28,0x18,0,8,
+0x5,192,132,0,0x1,0243,0,0,041,4,64,1,128,0,0,02,0,0x5,16,0x1,0,05,
+136,0,0,0x18,0,0,03,0,0x1,128,16,32,0,1,0x4,128,011,48,0101,0x26,0x1,
+0,02,0x8,04,0102,0114,128,0121,0,0,011,248,254,0140,0,0x3,0360,0,0,
+0x1e,4,0,7,4,0360,0,1,192,0,0,0x18,0,0,013,0,0,01,010,8,7,0,0x5,144,
+0x3,0,0x5,104,1,0x24,128,4,0,01,6,192,0,0,2,0,0,013,224,129,074,128,
+07,0,02,192,0,0,0x18,0,0,15,196,0x1,12,0,0,224,251,0x4,01,0,0x4,0x18,
+0,8,04,192,0,0x2,03,041,32,04,0,0,01,48,136,5,0,0x5,208,0x2,0,0x5,136
+,0,0,24,0,0,02,0,3,0x2,0,1,04,128,1,48,0,0x6,0140,0,0,014,128,0x1,48,
+0,0,129,248,0,0,133,0,02,128,36,26,0,0x8,4,192,0,02,3,64,0x4,0x8,0,0,
+0x1,48,0,0,0x4,0,05,8,2,0,05,4,1,32,0,0,0x4,0,03,0x12,2,0,0,0x8,0,0,
+0x48,48,0,0,0106,01,0,03,0142,0104,014,128,01,48,16,216,255,0,0x1d,
+0x4,0,06,2,0,35,248,251,32,0,0,4,128,0,0,16,0,01,64,0,0,0x8,0,0,01,32
+,0,0,0x4,128,0,0,16,0,0,0x2,64,0,0,0x8,0,0,0x1,32,0,0,0x4,0,0x7,0x2,0
+,06,0x21,0,0,0x4,0,01,16,0,0,2,64,0,0,0x8,0,0,1,32,0,0,04,128,0,0,16,
+0,0,02,64,0,0,8,0,0,1,32,0,0,0x4,0,0,010,254,0,07,0x4,0,0101,216,0377
+,0x24,0,0,0x4,128,0,0,16,0,0,2,64,0,0,010,0,0,1,32,0,0,04,128,0,0,16,
+0,0,0x2,64,0,0,010,0,0,0x1,32,0,0,04,0,15,32,0,0,4,128,64,24,0,0,2,64
+,0,0,0x8,0,0,0x1,32,0,0,04,128,0,0,16,0,0,02,64,0,0,0x8,0,0,01,32,0,0
+,4,0,0,0x2b,0374,12,0,0,010,0,1,32,24,0,011,16,0,0x2,128,0,04,04,010,
+6,0,16,8,0,010,0x2,64,144,8,0,0,1,0,0x6,02,64,144,8,021,011,0375,32,0
+,01,128,0,0,16,0,0,4,64,0,0,010,0,0,0x1,32,0,0,4,128,1,18,0,0,0x2,0,
+01,8,0,0,0x1,0140,128,0,0x14,01,16,0,0,0x2,128,0,0,0x8,0,6,16,0,0,0x2
+,64,0,0,8,0,1,32,0,2,0x38,0374,8,0,0x49,0324,0373,32,0,0,0x4,128,0,0,
+16,0,0,2,64,0,0,0x8,0,0,1,32,0,0,0x4,128,0,0,16,0,0,0x2,64,0,0,010,0,
+0,1,32,0,0,0x4,0,15,32,16,6,128,0,0,16,0,0,2,64,0,0,0x8,0,0,1,32,0,0,
+04,128,0,0,16,0,0,0x2,64,0,0,8,0,0,1,32,0,0x2,168,0372,0,16,128,0,026
+,32,0,013,64,0,0x7,01,0,04,16,0,0x2,04,0,0,0120,248,0,0x7,04,0,035,32
+,0,0x15,16,0,013,248,0376,0,025,129,0,047,02,0,012,176,252,0,0x3d,0x8
+,0,013,0x18,255,0,0x2b,64,0,0x5,16,0,0x16,136,251,0,53,128,0x4,0,011,
+32,0,0x7,56,0373,0,0x14,64,0,0x2b,16,0,0x7,0310,0377,0,06,04,0,011,01
+,32,0,010,010,0,0x13,16,0,0x12,0x4,128,64,8,0,0,104,253,0,06,012,0,
+011,0x4,128,0,0,128,0,0x6,32,0,023,16,0,14,0x8,0,2,1,32,0,0,0x5,0,0,
+208,0374,32,0,0,16,4,02,0,02,2,0,7,04,0,0,034,0,1,0x1,0,3,01,0140,7,0
+,017,0120,32,0,01,16,136,0,011,0202,128,0x1,0,2,192,0,0,8,128,0176,16
+,8,0360,0377,0,01,16,0,0,4,0,017,64,0,027,64,0,016,4,0,07,128,128,010
+,16,0x58,0377,0,02,16,0,0x3,010,0,0x7,2,0,0,32,0,05,128,0,0,16,0x8,0,
+16,16,0,016,0101,0,0x3,32,0,0,2,0,0,64,0,02,0374,0,54,1,128,0,021,16,
+0376,0,0x2,64,0,0x2d,16,0,0x1,64,64,0,5,64,0,0x1,16,0,011,0310,255,0,
+0112,152,0377,16,0,03,16,0,0102,16,0,0,0334,251,0,07,010,0,16,4,0,
+0x12,128,0,0x8,32,0,0,04,0,3,4,0,3,1,0,0x6,0375,8,0,0x26,32,0,0,16,0,
+0,0x1,0,035,146,0377,0,0x35,4,0,8,1,0,011,216,0372,0,54,17,0,0x12,136
+,0377,0,047,32,0,31,64,0,0,248,0371,0x2,0,73,184,0375,0,067,8,0,021,
+24,0377,0,54,2,0,8,02,128,0,0x7,56,0375,0,0x25,128,0,0,64,0,041,0120,
+251,0,0105,8,0,03,16,255,0,0106,32,0,02,152,0375,0,064,02,0,4,128,0,
+013,128,0,01,176,0377,0,032,01,0,024,4,0,03,0x2,0,023,168,248,0,0112,
+152,0377,128,0,06,0x2,01,0,0x1,4,0,011,32,0,25,64,0,03,32,0,0,1,0,04,
+64,0,0,8,0,8,152,0377,0,026,1,0,13,128,0,03,16,16,0,010,01,0,6,0x5,0,
+013,0120,0376,0,01,1,0,01,16,0,0,32,0x4,0,0x12,0x4,0,0x12,010,0,07,32
+,0,010,010,0,0x5,136,64,248,0,0,03,0,0x4,64,0,0x3,18,0,011,64,0,0x32,
+232,0376,0,54,0x4,0,18,152,0373,0,7,02,0,013,128,0,46,0x8,0,4,48,0377
+,0,04,4,0,010,0x4,0,0,0x2,0x1,32,0,1,64,0,02,128,64,16,010,0,16,16,0,
+01,1,0,04,64,0,17,128,248,128,0,4,128,0,017,02,0,027,8,2,0,0x3,128,0,
+0,16,0,0,128,0,0,16,0,0,0x2,0,8,128,0,0,144,0,0,253,0240,0,03,02,128,
+0120,0,01,64,0x1,0,2,010,0,0,01,2,64,0,2,3,0,0,0x28,64,128,0x8,16,0,
+16,8,0240,024,0x2,0,0x2,0120,0102,0141,0x28,32,0,0,4,128,0,01,024,128
+,2,0,2,0x28,0,1,021,32,32,251,0,0,04,0,0,0x6,0,0,0101,32,0x8,0,0,1,2,
+01,0,0,02,0,02,02,128,4,0,0,64,64,136,0,0,32,0,01,128,041,0,014,96,0,
+0,128,64,1,128,0x4,132,0,0,16,0,1,136,0,1,42,6,128,0x4,132,64,0,0,16,
+128,0,0,192,16,32,128,0103,0,0,0x4,248,0377,0,0x3,128,64,128,0x8,64,0
+,3,0x8,0,2,02,0,24,64,0,0,128,0,0,0x1,0,011,2,0,0x3,16,0,04,32,0,0,
+128,64,0,01,0x18,0371,0,0x2,0x8,0,015,64,0,2,128,0,0x13,32,0,04,02,16
+,0,0,8,0,7,8,02,1,0,0,0x2,0,01,32,0,1,64,0,1,16,232,248,64,0,6,128,0,
+0x2,0x2,0,011,16,0,016,32,0,011,32,0,03,16,0,5,0x4,32,0,0,4,0,0x8,96,
+255,0,0x2e,128,0,26,16,0377,0,0,0x1,02,0,0x5,2,0,021,128,0,16,64,0,12
+,8,0,015,216,248,0,06,16,0,012,16,0,0x2,32,0,0x32,152,253,2,0,0x28,02
+,0,015,4,0,16,216,0373,0,7,8,0,7,4,0,0x8,1,0,016,8,0,032,0x4,0,0x2,
+128,0376,0,41,1,0,014,1,0,012,0x4,0,5,216,254,0,0x26,16,0,042,136,
+0377,0,0,64,0,4,16,0,062,0x1,0,016,216,0372,192,0,04,64,0,0,128,0,023
+,16,0,16,0x2,0,01,8,0,01,128,0,03,64,0,013,64,0,02,248,0376,0,0x6,04,
+0,075,0x8,0,0x1,128,0,0,24,251,0,06,32,0,041,1,0,05,0x8,0,0x18,32,
+0374,0,0x6,02,0,051,144,64,0,02,0x28,0,1,32,129,0,05,64,0,2,05,32,0,
+03,0373,0,54,64,0,015,0x8,0,0x3,0120,251,0,7,0x8,0,0x28,128,128,0,0x2
+,0x58,0,02,1,0,05,192,0,02,013,0,03,144,0371,0,54,0x28,0,02,144,0,0x5
+,64,0,02,5,0,03,248,0371,0,06,24,1,0,051,0102,0,0x2,48,64,0,1,132,0,
+06,0x23,2,0,0,134,0x4,16,0x2,0,0,208,0376,0,06,036,0x4,0,0x28,48,0,
+0x3,64,0,0x1,96,0,6,192,03,0,0x1,0x8,0140,0,0x2,0x28,0374,0,49,128,0,
+0x3,64,0,2,01,0,06,03,0,1,8,128,0101,0,01,16,0371,0,0x6,0x58,16,0,
+0x28,64,0102,0,02,32,18,0,0,128,0x28,0,06,0x3,0,0x1,0104,0202,01,0,01
+,0120,0376,0,0x1,4,0,3,0x1a,02,0,0x5,0x34,0,3,128,0,4,32,0,0,0x4,0,
+0x7,0x28,0,6,0x14,0,0,4,0,01,16,0,03,010,0,1,32,129,0,0,128,0,7,0x1,
+32,0,0,52,0,0,0154,251,0,6,24,0,6,48,0,0x4,04,0,14,014,0,0x6,0x6,0,
+032,48,0,0,168,0373,0,0x1,12,0,3,8,16,0,012,0x6,0,6,074,0x8,0,6,014,0
+,06,0x6,0,0,014,0,0x1,0360,0,0x3,0130,0,0x2,01,0,0,128,07,0,6,013,224
+,1,61,0,0,48,0373,8,0,0,0264,32,0,02,0x18,1,0,5,48,0102,0,0x2,02,0,
+0x5,0x28,0264,0,07,012,0,0x6,05,0,0,4,0,0x1,208,0,3,0x28,0,0x3,1,128,
+6,0,6,5,32,8,52,0,0,123,254,0,1,176,0,03,010,0x1,0,0x6,02,0,2,24,0x5,
+0,0x3,128,5,0,0,0x2,0,6,012,0,6,05,0,0,48,02,0,0,192,0,3,48,64,0,1,
+132,0,0x1,198,0,06,134,0x4,144,0,0,0x2,41,0371,0,1,0x3c,010,0,2,036,
+16,0,0x5,0x3c,16,0,02,0x1e,0,04,224,0101,56,16,0,16,074,32,0,0,0360,
+64,0,02,64,0,0x1,0140,0,1,128,0x7,0,06,8,0140,0,0,014,8,208,255,0x4,0
+,0,48,0,03,010,16,0,0x6,32,0,2,0x18,0,0x19,48,0,1,192,0,0x3,64,0,2,01
+,0,01,6,1,0,0x5,010,128,0x1,0,1,12,0375,0,01,48,8,0,02,16,0,7,1,0,0x2
+,26,0,0x4,128,041,176,010,0,16,52,0,1,208,36,0,0x2,32,16,0,0,128,16,1
+,0,0,06,0,06,04,0202,73,0,1,32,251,0,1,0x4,0,3,2,0,011,208,0,0,128,0,
+0x4,0240,129,0x4,0,021,52,0,0x1,16,0,1,64,0,0,010,0,1,32,0,012,1,32,
+137,0,0x1,232,252,0,17,192,0,01,4,0,03,128,0x1,0,18,48,0,0x1a,128,249
+,0,01,014,0,0x4,0x8,0,0x8,192,0,0,0x6,0,0x4,128,0,0,074,8,0,016,02,0,
+0,074,0,1,240,0,1,192,0,0,0x58,0,01,224,1,0,011,013,0,0,01,0,01,16,
+0373,4,0,0,04,0,017,8,3,0,0x4,128,0205,52,2,0,016,02,0,0,52,0,01,16,
+0x28,0,0,64,0,0,0x28,0,0x1,160,0x1,0,011,5,0,0,0x28,0,0x1,0272,0372,
+12,0,01,0x2,0,0x2,152,0,011,192,136,24,0x1,0,03,128,16,0,0,0x2,0,016,
+4,0,0,48,0,02,0102,0,01,0x23,48,64,0,0,128,01,0,011,134,04,132,0,01,
+152,0373,0,01,014,16,0,02,036,4,0,8,48,0,0,0x1e,04,0,3,224,129,0x38,
+16,0,016,02,0,0,0x38,0,1,32,0,1,192,3,0102,0,0x1,224,129,0,011,010,
+0140,0,0x2,128,0372,010,0,0,48,16,0,14,64,24,0,04,128,0,17,0x2,0,0,48
+,0,02,64,0,0x1,3,64,0,0x1,128,0101,0,011,0x8,0,0,1,0,1,0111,0373,0,01
+,48,0,3,24,041,0,011,0x4,26,0,0x5,021,0x31,021,0,016,01,0,0,48,0,1,16
+,0x4,0,0,64,3,32,17,0,0,128,021,0,011,36,0202,32,0,0x1,112,252,0,02,
+0202,0x6,0120,8,27,0102,0,03,0240,1,0,04,02,0,3,0x1,32,0,0,0x34,4,0,
+016,8,0,0,04,0,0x1,16,0,0x1,64,0,0,0x8,0,1,32,0,012,0x1,32,136,0,1,
+136,0372,0,0x2,010,06,128,0,0,24,0,0x4,128,0x1,0,014,48,0,017,04,0,24
+,128,0,2,96,255,0,01,014,0,0,0x6,64,0,0,8,16,0,0x3,128,0x1,0,0x4,0x6,
+0,06,16,0,021,014,0,0x1,48,0,02,3,0130,0,1,224,01,0,011,013,0,0,128,0
+,01,224,0375,0x8,0,0,0x4,0,0,32,136,0,0,24,01,0120,0,03,16,0x2,0,0x3,
+0132,16,0,0x2,64,0x1,0x28,48,32,0,016,010,0,0,4,0,1,16,0,2,32,41,0,01
+,160,1,0,011,5,128,010,0,0x1,0242,248,0,0x1,48,011,198,64,0,0,0x8,0x1
+,0213,0,0x2,128,01,0,4,0x58,04,0,2,0214,0202,0x49,16,0x21,0,16,48,2,0
+,0,192,0,0,01,0,0,0213,48,64,0,0,128,0x5,0,011,134,4,132,0,0x1,176,
+0375,0,01,0x3c,128,07,176,0,0,036,0310,0x3,0,2,96,0,0,0x1,0,03,0x1e,0
+,03,017,224,0x1,0x3c,0,17,0x3c,32,0,0,224,0,1,192,0x3,64,0,1,224,0x1,
+0x1,0,8,0x8,96,0,2,184,0376,04,0,0,48,0,0,0x6,64,0,0,010,0,6,0x1,0,3,
+24,0,04,010,0,0,16,0,017,011,0,0,48,0,0x1,192,0,2,0x3,64,0,0x1,128,1,
+0,011,8,0,0,0x1,0,01,0x21,0372,0,1,52,0,0,0106,132,0,0,144,8,013,01,0
+,0x2,0x8,0,0x4,24,05,0,0x2,0114,128,0x5,041,34,0,14,0x8,0,0,48,0,01,
+192,0,02,03,041,0x14,0,0,128,73,0,011,132,0202,128,0,01,216,0373,16,0
+,01,0202,0,2,26,0102,0,012,128,64,0,0x3,160,129,04,0,0x7,128,0,0x6,
+0x21,0,0,0x34,0,0x1,16,0,0x1,64,011,010,0,0x1,32,129,0,8,0x24,0x1,32,
+0,0x2,064,0372,0,02,010,0,2,24,0,014,0x4,0,03,128,1,0,8,64,0,8,48,0,
+05,0x2,02,0,18,176,252,0,01,014,128,0x1,01,0,0,8,208,03,0,011,06,192,
+0,3,128,0,0x1,16,0,0x7,2,0,5,0144,0,0,48,0,0x1,48,0,1,192,1,0x58,0,
+0x2,1,0x1,0,6,24,0,0,013,224,01,0,02,0371,014,0,0,0x4,128,32,0,0x1,24
+,0101,0243,0,011,2,64,0,03,128,133,0,0x8,128,0,6,41,0,0,48,0,1,16,0,
+01,64,2,0x28,0,013,010,0,0,0x5,160,0x1,0,1,131,248,0x4,0,0,176,8,16,2
+,0,0,0x8,010,010,0x1,0,0x8,24,04,043,02,0,1,128,0,0,48,1,0,0x6,128,0,
+6,128,0105,0,0,012,0,0,192,2,0,01,0x1,48,64,0,0x1,132,0,0x7,0140,0,0,
+134,132,0x1,0x2,0,0,0141,0376,0,0x1,074,0,0,07,0,1,036,128,3,0,011,
+0x1e,192,03,0,2,224,1,0x3d,010,0,0x6,64,0,0x6,224,01,014,0,0x1,224,
+128,0,0,128,0x2,64,0,1,96,0,010,120,32,0x8,224,0x1,0,1,168,0377,04,0,
+0,48,0,0x1,02,0,0,8,16,128,0,011,0x18,0,0,0x3,0,02,128,0,0,01,0,0x8,1
+,0,5,128,01,0,2,192,0,02,1,64,16,0,0x1,129,0,0x7,0140,0,0,8,0202,01,0
+,1,011,0375,0,01,52,128,32,0,1,144,0,0,0x13,0,011,26,0,0,0x3,0,03,1,
+48,0x4,0,016,160,0x1,0,2,192,0,2,02,32,0x4,0,0,128,0,8,96,0,0,132,128
+,0105,0,01,112,254,16,0,0,48,0x2,0,2,2,64,013,2,0,04,128,6,0,0x1,02,0
+,0x4,32,0,0,04,0,0x7,64,0x1,0,05,32,0,0,0x34,0,0,16,0x14,0,01,64,145,
+0x8,0,1,0240,144,0,0,128,4,0x2,0,5,01,32,0,02,120,0377,0,02,010,0,4,
+0x3,0,0x1b,0x2,0,7,48,0,011,128,0,017,136,0377,0,0x1,074,16,0,2,036,0
+,0,01,0,6,0x6,0,1,06,0,04,224,0x1,0,0,16,0,016,96,0,1,128,01,48,0,02,
+129,0130,0,3,0x1,0,0,04,04,0,5,013,224,01,0,0x1,0360,0373,014,0,0,0x4
+,0,3,0232,4,013,02,0,0x5,0x16,02,0,0,02,0,04,0240,0101,0,16,32,0,1,
+128,0,0,16,0,02,16,0x28,0,05,64,0,6,5,0240,0x1,0,1,0142,0372,0x4,0,05
+,64,010,1,0,06,64,0,02,01,0,4,132,48,012,0,06,64,0x2,0,5,128,05,129,
+64,06,192,8,0,1,0x12,061,64,0,0x1,32,0,1,16,0x2,0,5,134,132,011,0,01,
+010,0375,0,01,0x3c,0,03,034,192,0x3,0x1,0,04,128,07,4,0,0,06,010,0,03
+,192,01,0x3c,0,8,0x2,0,5,224,0x1,014,128,7,0342,128,0,0,192,3,64,0,1,
+0140,0,01,128,0x1,0,6,8,224,129,0,0x1,176,251,16,0,0x6,0x4,1,0x1,0,8,
+24,0,05,64,0,010,64,0,6,128,1,0,1,6,208,0,3,64,16,0,0x1,01,0,0x1,4,0,
+6,8,0202,01,0,1,0141,253,0,01,52,0,3,0x18,0,0,0x12,0,06,6,2,0,0,152,
+02,0,3,128,011,176,32,0,14,128,1,0,0,042,06,192,0,02,02,041,1,0,0,64,
+145,0,01,0102,010,0,0x5,0x24,128,0121,0,1,176,248,0,2,0x2,0,0,208,0,0
+,02,64,013,02,0,0x8,128,0,1,104,0,0,015,0x24,0,0,52,04,0,07,1,0,05,
+160,1,0264,0,0x1,208,0,0x1,64,0,0,010,0,0x1,0240,010,0,0,128,0x4,2,0,
+0,26,0,0x3,01,32,16,065,010,0,0,254,0,0x2,010,0,0,192,0,0x2,0x3,0,012
+,0x4,0,0,0140,0,0,014,0,0x1,48,0,7,64,2,0,05,128,1,48,16,0,8,128,0,0,
+1,0,03,24,0,0x6,32,0,0,152,249,0,1,014,0,03,036,0,0,01,0,011,6,0,0x3,
+04,224,0x1,16,0,021,32,32,0,0,48,32,0,0x1,03,0130,0,5,04,4,0,0,036,0,
+03,013,128,0,0,48,16,0,0,248,8,0,0,0x4,0,3,0132,0x4,013,0x2,0,010,2,0
+,03,054,168,011,062,32,0,016,0x1,0,0,16,1,0,0,16,0x2,0,1,03,0x28,0,03
+,1,0,0,32,0,0x1,032,0,0x3,5,128,132,48,0,0,0212,0376,0,1,48,1,0,0,192
+,010,64,8,021,04,0,0x8,152,04,0,1,0101,0104,04,132,16,021,0,14,0x4,
+010,0261,32,0,01,0102,0,01,32,064,64,0,01,04,1,0,0,16,02,0,0,0x18,0,3
+,134,04,129,0,0,02,24,0372,0,0x1,074,8,0,0,0360,128,034,192,0x3,0,011
+,0x1e,0,0x1,24,0,0,017,192,0x1,0x3c,0,017,0140,0,0,12,0,1,32,0,1,192,
+0,0,64,0,1,96,0,1,128,0x1,0,01,0x1c,0,03,8,96,0x1,014,8,0360,0372,4,0
+,0,48,0,01,192,0,01,0x4,01,02,0,0x8,24,0,02,64,0x4,0,0,64,16,0,16,128
+,32,16,0,0,16,64,0,0x1,128,64,16,0,1,0x1,01,0,0,04,4,0,0,24,0,0x3,010
+,02,0,1,32,49,0372,0,01,52,0,1,192,024,152,0,0,0x12,0,011,032,0,2,0x2
+,72,136,0x5,32,0x21,0,16,8,0x2,0,0,16,4,0,1,32,32,0,2,011,0,0x1,18,0,
+0x1,0x18,0,3,04,64,128,128,0,0,216,248,0240,01,0,0,0202,0,02,0x1a,
+0x49,0103,104,0,0,015,0,0x6,152,0,0x1,104,0,0,0x1,32,0,0,0x4,0,017,
+0240,01,064,18,0,0,16,0,0,2,64,0,0,72,64,1,32,0,0,04,128,0,0,16,0,0,
+0x1a,0,3,137,164,48,0x4,0,0,112,0375,128,1,0,0,8,0,02,24,0,0,3,96,0,0
+,014,0,07,04,0,0,0140,0,024,132,0x1,48,0,6,32,0,8,24,0,03,04,128,0,02
+,56,0375,128,0x1,12,128,1,0,0x1,036,192,131,96,0,8,0x1e,0,0x1,120,0,0
+,03,224,0x1,074,0,15,224,1,32,0,0x1,48,32,24,192,0,0,0130,0,0,017,224
+,01,48,128,0x7,192,0,05,013,0,1,48,0,0,224,0375,0x8,16,0x6,128,0,2,
+0132,72,03,0,0,36,0,07,0202,0x2,0,0,104,0,0,01,0240,0121,52,0,0,0x4,0
+,05,16,0x2,0,0x5,168,0x1,16,042,0,0,16,8,0x18,64,0,0,0x28,0,0,13,0240
+,1,48,128,6,192,0,05,5,0,0,0x28,48,0,0,0232,255,128,011,48,012,0106,0
+,1,64,8,8,0141,0,0,054,0,011,0140,0,0,0214,010,132,48,2,02,0,05,16,1,
+0,05,136,0x1,48,01,0,0x1,0102,0x18,011,013,0120,0,0,0214,128,1,0,0,02
+,38,194,0202,64,32,0,0x2,012,0,0,8,178,0,0,144,0371,96,0,0,075,0,0,
+0x7,0x4,0,0,0x4,128,0x3,0x18,32,15,010,0,05,036,0,0x1,112,0,0,017,192
+,01,56,16,07,0,5,144,3,0,5,0310,1,014,010,0,0,32,0,0,0x1e,192,131,64,
+0,0,14,228,0x1,13,160,7,0360,0,0,06,0,0x3,010,0140,0,0,074,16,248,
+0374,04,0,0,48,0,0,0x6,0,1,24,4,0,0x2,12,0x4,0,010,0140,0,0,014,0,0x1
+,061,128,05,0,05,208,0x2,0,5,136,0x1,32,0,2,64,24,16,3,64,0,0,014,128
+,01,0,01,06,193,0,05,010,0,0,01,0x31,32,051,254,0,0,32,0x34,0,0,6,0,
+01,16,1,2,01,132,0114,0,0x6,0x1a,0,1,96,0,0,12,128,05,48,8,4,0,0x5,
+010,02,0,5,132,1,0,0,8,0,0,208,0x4,0130,0,0,0x3,64,0,0,014,144,0101,0
+,0,16,0x16,192,0102,64,0x8,0,0x2,0x8,0,0,021,48,1,0x8,248,0,0x1,010,0
+,16,04,0,0x8,4,0,6,2,0,0x5,64,0,04,0202,0,0x16,0234,0375,32,0,0,0x4,0
+,0,01,16,0,0,2,64,0,0,010,0,0,1,32,0,0,0x4,128,0,0,16,0,0,2,64,0,0,
+0x8,0,0,0x1,32,0,0,0x4,0,0x7,010,0,0x6,4,0,1,128,0,0,32,0,0,2,0,1,8,0
+,0,0x1,32,0,0,04,128,0,0,16,0,0,2,64,0,0,8,0,0,01,32,0,0,04,0,0,176,
+0375,0,065,128,0,0x13,24,0377,0x28,0,0,04,128,0,0,16,0,0,02,64,0,0,
+010,0,0,1,32,0,0,0x4,128,0,0,16,0,0,02,64,0,0,8,0,0,01,32,0,0,04,0,
+017,32,0,0,04,133,0,0,16,0,0,2,64,0,0,010,0,0,1,32,0,0,04,128,0,0,16,
+0,0,02,64,0,0,8,0,0,01,32,0,0,04,0,0,243,249,0,01,010,0,0,32,0,02,03,
+32,01,0,0x8,04,128,0,1,0x14,02,0,0,144,0,0,042,0,017,0120,128,8,0,01,
+0x2,01,128,0x8,0,0,0101,128,0x4,0,06,132,0,0x2,32,0x8,0,0x2,153,0371,
+32,0,01,128,0x1,021,0,03,010,0,0,01,32,0,0,04,128,0,0,16,0,0x1d,1,48,
+0,0,0x2,0,0x1,031,0,01,64,0,0,0x4,0,0,1,16,0,3,16,0,0,03,64,0,0,16,0,
+0,64,0377,0x4,0,06,8,0,19,32,0,054,0111,248,32,0,0,0x4,128,0,0,16,0,
+01,01,32,011,0,0,0x1,32,0,0,4,128,0,0,16,0,0,0x2,64,0,0x1,128,1,0,0,
+144,0,0,01,0,15,0x28,0,0,192,0,0,16,0,0,0x2,0,01,8,0,0,128,0x24,0,0,
+0x4,128,0,0,16,0,0,128,72,0,0,8,0,0,1,32,0,0,4,0,0,144,253,0,0x17,0x8
+,0,25,16,0,0x3,0x8,0,13,1,0,0x2,16,0377,0,24,4,0,023,32,0,27,184,249,
+32,0,24,32,0,0,04,0,18,8,128,0,02,2,0,011,16,0,0x7,1,0x4,0xc8,249,0,2
+,8,0,16,0x4,0,037,128,0,07,010,0,8,0x2,0,0,0x58,0371,0,0x6,32,0,0x1d,
+128,0,02,02,0,0x1f,16,255,0,0x1b,16,0,0x2c,128,0,0,0376,0x2,0,07,2,0,
+013,128,0,0x17,16,0,01,64,0,2,0x2,32,16,4,0,0x8,128,32,0,0x1,2,0,2,
+0274,249,0,4,64,0,0,16,0,0x26,4,32,0,012,8,0,015,224,0372,0,4,16,0,0,
+0x2,128,0,0x5,16,0,1,64,0,03,0x1,0,026,014,32,0,0,0140,0,0x1,128,0,0,
+16,32,2,0,1,4,0,0x6,17,0,1,04,0,02,24,0376,128,01,16,0,0,0x2,64,0x2,0
+,0,0x2,128,0,0x4,128,0120,0,0x4,176,0240,0,02,64,0,0x12,32,0,01,64,16
+,0,01,01,0,0,16,32,0,0,01,0,0,6,132,0,0x4,160,0x1,0,0,02,32,0,0,0120,
+216,0371,32,0,0,16,0,0,4,64,0,3,2,0,012,128,32,0,03,0x1,0,024,32,0,02
+,0x1,0,0,16,0,012,32,0,01,02,0,0x2,128,0377,0102,0,0x6,010,0,045,4,0,
+2,32,0,05,128,0,1,8,04,1,0,07,64,0,0x1,0314,248,0,0112,152,0377,0,37,
+0x2,0,2,02,0,15,128,0,14,16,0375,0,4,1,0,0x7,04,0,011,32,0,0x18,128,0
+,0x12,96,0x2,0,1,0x48,249,0,0x13,0x2,0,07,8,0,024,0x2,0,0x13,04,0,0x1
+,0130,0371,0,021,02,0,0x12,64,0,0x2,0x1,0,17,16,0,014,184,249,0,05,
+128,0,47,02,0,18,24,0375,0,0x27,01,0,0x2,0x1,0,29,136,0376,0,0x1,010,
+0,031,4,0,054,0130,0377,0,27,01,0,0x2d,152,0376,0,06,64,0,012,02,0,6,
+0x4,0,041,128,0,7,32,32,0,1,48,255,0,0x2f,0x4,0,25,216,251,0,0112,152
+,0377,0,0x4,04,0,0104,216,0377,0,16,04,0,037,128,0,024,1,0,0x1,64,
+0376,0,0x5,64,0102,0,0,0x8,0,0x4,128,0,12,16,0,024,64,0,0x16,0120,248
+,0,7,02,0,04,128,0,012,4,0,0,128,16,0,054,0x78,0376,0,0112,152,0377,0
+,36,64,0,2,01,0,32,0310,0373,0,03,02,0,043,8,0,07,64,0,0x6,128,0,0x2,
+2,0,7,128,0,02,184,0371,0,0x25,136,0,1,32,0,32,144,253,0,2,128,0,03,
+128,0,0,64,0,16,128,0,24,04,1,0,02,0101,64,0,015,0xc8,0372,16,0,0,0x2
+,0,3,0x28,64,128,128,0,0x1,0x2,0,0,0x2,64,0,02,1,0,03,0x1,34,0x1,0,18
+,16,0,2,0x1,0,0x14,01,0,0,216,0376,0,010,2,0,16,3,0,034,010,0,2,128,0
+,12,136,0376,0,38,128,0,0x2,128,0,0x1e,16,0377,128,0,0,4,8,0,0,64,0,0
+,0x4,0x4,0,012,0x8,0,0x3,0x4,0,19,64,16,0,0x1,64,32,0x8,0,1,16,16,0,3
+,136,0,0x1,64,8,8,0,0x1,16,4,02,0,0,32,0,0,48,248,16,0x1,01,0,0x1,1,0
+,3,16,0,012,128,0,01,02,128,0,024,0x8,0x1,0,04,1,0,0,0x2,0,1,17,0,03,
+0x4,0,0x5,64,16,0,0,32,0377,0140,0,0,0251,16,0,0,37,0,0,04,010,0,0,8,
+0,0x8,04,0,0,128,2,0,0,0x3,32,0,017,010,0,0x1,128,8,160,0,0,32,64,0x4
+,0,1,18,32,01,0,0x1,5,16,01,0,0,64,0x6,0x8,0,01,32,0x2,04,0,0,015,0,0
+,176,0373,0,0,4,144,8,0,01,32,128,0x4,64,010,0,0,4,0,01,16,0,0,2,01,0
+,0,0x8,0,0,05,0,0x1,0x21,0242,02,0,016,32,0,1,64,128,0x4,4,0120,0x4,
+0120,0,0,1,32,16,129,0x2,32,144,05,0x4,128,0,0,8,0,1,160,16,0,0,3,32,
+32,0,0,144,0375,0,1,16,8,0,0x1,128,0,0,4,0,0x2,04,0,0x1,4,128,0,0,0x1
+,0,0,0x8,0,0,0x1,0,2,0104,0,017,32,0,1,128,0,02,64,0,0x1,128,0,0,32,
+16,0,0,0x2,0,0,16,0,3,02,0,01,32,32,0,0,02,0,02,56,0377,0,011,0x1,0,
+0x24,32,0x1,0,1,0x8,0,6,01,32,0x2,64,0,06,8,64,16,0,0,176,0375,0,3,01
+,0,054,32,0,6,64,0,02,01,0,013,0xc8,248,0,0x15,0x8,0,01,32,0,32,64,0,
+0x6,010,0,02,128,0,02,48,0371,0,0x4,0x2,0,02,64,0,1,02,0,013,0x2,64,0
+,26,2,0,03,164,0,0x1,144,0,013,184,0372,0,6,4,32,2,0,0,128,0,017,8,0,
+15,64,0,0,0x28,0,3,0x4,0,0,01,0,2,32,04,0,02,128,0,0,16,0,01,16,0,0,
+0x2,64,0,0,0x28,0,0,32,0372,0,01,64,0,0x3,0x8,0,0,1,0,06,010,0,01,32,
+0,04,128,0,0,64,0,18,64,0,02,0x1,0,0x3,16,0,0x7,32,0,07,0x38,0375,0,
+0x8,4,0x4,0,037,16,0,0x1e,0xc8,0376,0,0x6,0x4,0,0102,152,251,0,0x1a,
+128,0,14,64,0,13,8,02,0,14,240,0373,0,0,64,0,0x6,04,0,0x4,64,0,1,32,0
+,7,0140,0,0,010,0,017,32,0,0,16,0,026,0x1,0,01,0x38,0374,0,0x4,16,0,0
+,18,4,0,14,64,0,01,64,0104,0,017,32,0,0,04,32,0,0x1,32,0,1,02,0,2,64,
+0,0x2,02,0,01,32,0,0x8,168,0371,0,0x7,0x8,0,016,01,0,015,0x48,0,02,
+0x18,0,02,128,0,07,1,0,14,0x4,128,0,0,8,251,0,7,128,0,16,64,0,0x15,8,
+0,0x6,02,0,011,128,0,05,48,0371,0,017,128,02,0,1,146,32,0,0,0x48,1,0,
+0,32,0x1,01,17,0,16,48,02,0,0x7,1,0,2,32,0,4,3,0,0x4,128,010,48,249,0
+,16,0x2,01,0,0x4,32,0,0x16,16,0,18,2,0,0x5,184,254,0,017,128,5,2,0,0,
+0x1e,0,01,120,0,01,224,1,13,0,021,074,0,010,12,0,1,014,0,0x4,192,0,05
+,074,0,0,0x28,0375,0,15,128,0x24,0,1,012,041,0,0,0x28,0x21,0,0,0240,
+010,0x4,0,17,064,0102,0,0x7,014,0,01,04,0,4,64,144,0,0x4,064,0,0,48,
+0376,0,16,0x4,0,0x1,014,0,1,48,0,1,192,0,0,48,0x4,0,16,48,012,0,0x7,
+054,0,01,48,02,0,0x4,35,04,0,03,48,0102,224,0372,0,017,128,04,0,01,
+012,0,1,0x28,0,01,0240,0,0,56,0,021,074,0,8,15,4,0,0,0x38,0x8,0,03,
+128,03,0,04,56,0,0,0360,0374,0,16,02,0,1,16,0,0x1,64,0,02,1,48,0,021,
+48,0,010,12,0x4,0,0,48,0,5,3,0,0x4,48,0,0,208,251,0,16,0x2,0,01,16,0,
+1,64,0,0x2,1,48,0,17,0264,64,0,7,0214,0,1,48,0,0x5,35,01,0,3,48,011,
+0170,253,0,017,128,36,0,0x1,0x12,0x2,0,0,72,010,0,0,32,041,0,0x8,34,0
+,6,021,0,3,16,32,0,04,015,0,0x2,32,0,8,32,72,0,01,0130,252,0,021,02,0
+,021,014,0,06,6,0,012,014,0,16,0x18,251,0,017,128,0x7,0,01,0x1e,0,01,
+0x78,0,1,224,1,0,8,014,0,0x6,06,0,0x3,64,0,5,12,0,01,014,0,012,64,0,1
+,176,248,0x8,0,016,128,0102,0x2,0,0,138,2,0,0,0x28,012,0,0,0240,0x28,
+0,0x8,012,0,6,0x5,0,4,024,0,4,12,0,1,0x4,0,012,04,0,0x1,0172,0374,0,
+16,0x3,0,0x1,014,0,0x1,48,0,1,192,0,011,012,0,6,05,0,03,192,36,0,0x4,
+32,0,01,176,0,012,0101,0,0x1,16,254,0,017,128,0x2,0,0x1,012,0,01,0x28
+,0,0x1,0240,0,026,240,0,05,0x3,4,0,0,56,8,0,8,0140,0,02,16,0371,4,0,
+017,4,0,0x1,16,0,01,64,0,2,0x1,0,0x15,192,0,0x8,48,0,012,64,0,0x1,
+0141,0372,0,16,4,0,01,16,0,0x1,64,0,2,1,0,025,192,128,0,07,48,0,015,
+240,0377,0,0,136,0,0x1,32,2,0,011,128,0104,010,0,0,0122,32,0,0,0x48,
+042,64,36,1,02,021,0,16,48,2,0,07,0x1,0,0x2,32,0,014,0xc8,0374,0,0x2f
+,16,0,011,128,0,017,255,96,0,1,128,0x1,0,012,128,7,0,01,036,0,01,120,
+32,03,224,0x1,12,0,021,074,0,011,0142,0,0,12,0,015,184,0373,0x28,0,01
+,128,0,013,128,02,010,0,0,0112,32,0,0,0x28,4,1,0240,8,6,0,021,52,0102
+,0,0x7,32,32,0,0,04,0,015,146,253,128,011,0,0x1,0x6,2,0,012,03,0,01,
+12,0,0x1,48,0,0,0114,0310,0,0,48,2,0,16,48,011,0,0x8,0202,0101,48,8,0
+,12,0x28,248,192,0x1,1,0,0,07,0,012,128,02,0,0x1,012,0,0x1,0x28,0,0,
+016,160,0,0,56,16,0,016,0x1,0,0,074,0,010,0x3,224,0x1,56,0,015,0x58,
+0372,132,01,0,01,06,0,013,04,0,1,16,0,0x1,64,0,0,014,0,0,0x1,48,0,15,
+4,0,0,48,0,011,0202,1,48,0,13,201,0373,128,01,0,01,06,0,013,04,0,1,16
+,0,01,64,0,0,014,0,0,1,48,0,017,04,0,0,0264,64,0,0x7,014,128,01,48,0,
+015,0x58,248,0,4,16,72,0,010,128,0104,0,01,18,17,0,0,72,0,0x1,32,0x5,
+0,16,01,0,01,0102,0,07,015,128,021,0,0,32,0,0x2,02,05,0,3,0240,0x1,
+128,8,24,0372,0,17,0x2,0,0x4,32,0,0x2,0x1,0,27,014,0,0,128,0,0x8,32,0
+,0,128,01,0,0x1,224,0371,0,4,192,0,011,128,0x7,0,01,0x1e,16,0,0,0x78,
+0,01,224,01,0,16,5,0,0,074,0,010,014,224,0x1,014,0,3,8,04,0,0,24,0,
+0x1,128,0x1,12,0,0,56,0372,4,0,03,192,0x2,0x1,0,07,128,02,2,0,0,012,0
+,01,0x28,042,0,0,0240,4,0x1,0,017,05,0,0,0x34,0,0x8,014,0240,021,06,0
+,03,0120,0,01,010,0,1,128,1,0x4,0,0,0252,0374,12,0,4,0104,0,011,03,0,
+0x1,014,0,0x1,48,0,1,192,0,0x13,48,012,0,0x8,0202,0101,48,1,0,02,128,
+16,0,0,96,0x4,0,01,64,48,0102,32,0373,0,0x4,112,0,011,128,02,0,0x1,
+012,0,0x1,0x28,0,1,0240,0,021,010,0,0,0x3c,0,010,3,224,01,56,16,0,2,
+036,0,1,120,64,0,0,0140,0,0,0x38,0,0,0x28,0374,0x8,0,03,192,32,0,011,
+0x4,0,0x1,16,0,1,64,0,0x2,01,0,18,48,32,0,8,128,0x1,48,0,0x3,0x8,0,06
+,0x34,0,0,193,0372,0,4,192,04,0,011,4,0,0x1,16,0,01,64,0,2,0x1,0,0x12
+,064,0x2,0,010,160,0x5,062,0,0x3,0130,8,0,1,012,0,0x2,48,0,0,152,0376
+,0,0x4,16,0,011,128,4,0,0,0104,18,041,0,0,72,0102,64,36,17,2,0,017,
+010,0,3,16,042,0,4,13,0,0,16,6,0,0x2,128,032,0,0x1,0x8,36,0,0,0240,0,
+0x2,144,251,0,021,0x2,0,25,011,0,0x1,16,0,07,014,0,0x2,0x8,0,0x2,24,0
+,0x5,0x1,0,01,224,248,0,0x4,192,0,011,128,07,48,0,0,036,0,1,0170,64,
+03,224,1,0,18,12,0,01,64,32,0,04,12,224,1,0,2,48,0,0,036,0,2,64,0,0,
+0140,01,0,1,176,0371,8,0,4,0104,0,8,128,042,18,0,0,012,32,0,0,0x28,
+0x4,0x1,160,0,0,0x2,0,7,128,0x1,0,07,4,0,01,128,0,05,014,0240,01,0,0,
+0x8,0,0,16,0,0,02,16,0,01,04,0,0,0240,0,0x2,0242,0376,0,4,192,0x28,0,
+011,03,192,72,12,0,1,48,0,0,014,0xc8,0,021,17,0,0,48,012,0,0x1,132,0,
+0x4,128,0202,0101,0,0,010,0,0,192,0104,0130,0,4,192,0,02,48,0377,0,
+0x4,48,0,011,128,2,224,0,0,012,0,0x1,0x28,0,0,016,0240,0,19,0x3c,0,
+0x1,240,0,0x5,03,224,0x1,054,0,0x1,224,0,0,036,16,0,0,0x58,32,0,1,01,
+1,0,0,184,0373,0x4,0,03,192,0,012,4,192,0,0,16,0,01,64,0,0,12,0,0,0x1
+,0,8,64,2,0,7,48,0,1,64,0,0x6,128,0x1,01,0,0x1,192,0,0,0x18,0,1,32,0,
+2,0101,0,01,041,0376,0,04,192,132,0,011,0x4,192,0,0,16,0,0x1,64,0,0,
+12,0,0,01,0,010,64,0,0x8,48,0,0x1,192,8,1,0,0x4,0240,17,136,010,0,0,
+192,0,0,0x18,0x8,0,0,64,0x14,0,0,128,16,0,01,176,0377,0,04,16,0,2,16,
+01,0,02,136,0,0,145,0104,0,0x1,0x12,0x8,0140,72,129,0,0,32,021,0,011,
+2,0,5,32,0,1,0102,0,0,0120,136,02,0,0x3,4,128,021,0x4,129,06,0,1,012,
+0,3,128,48,0,0,0x4,0,0,176,248,0,17,4,0,0x7,128,0,025,128,0,0x5,010,
+02,128,16,0x8,0x6,0,1,16,16,0,01,32,0,4,152,248,0,0x4,192,64,0,0,192,
+0,03,0140,0,0,014,128,07,0,01,036,0xc8,0,0,120,0,01,224,0x1,0,8,64,4,
+0,0x5,0140,128,074,0,1,112,0,0x5,013,224,1,0,0,16,0x6,0,01,016,0,0x1,
+24,0,0,017,96,1,0,01,216,0371,0x4,0,03,192,0,0x1,64,0,03,32,0,0,04,
+128,0x2,0x4,0,0,138,64,0,0,0x28,129,0,0,0240,128,0,0x8,128,0,0x6,0240
+,01,064,0,0x1,144,0,0x5,0x5,0242,17,0x2,0x2,6,0,1,0x12,0,1,8,0,0,015,
+160,0,2,0342,251,014,0,04,0104,0,0x1,0143,0,2,128,01,49,0101,0x3,0,1,
+12,0,0,013,48,0,1,192,0,011,128,0,6,128,0x5,48,011,0,0,64,0,0x1,011,0
+,0x2,0x6,128,05,0,0,01,128,0,1,8,0,1,0140,2,0x2c,192,0,2,56,254,0,4,
+240,0,1,128,0x3,0,0x2,192,1,0x38,128,2,0,1,012,128,03,051,0,0x1,0240,
+0,011,64,0x2,0,5,224,129,074,0,1,176,0,0,06,0,3,011,224,0101,12,144,
+01,0,0x1,026,0,1,0170,16,017,010,0x1,13,32,0x58,0376,8,0,4,128,0,0x1,
+3,0,2,128,01,48,0,0,04,0,0x1,16,0,0,03,64,0,02,01,0,16,128,0101,48,32
+,0,0,64,0,0,24,0,3,012,128,0x1,0,0,8,0,02,010,0,01,0140,0,0,014,0x8,
+0101,48,0,0,0141,0373,0,0x4,192,02,0,1,0x3,0,0x2,128,1,48,0,0,04,0,
+0x1,16,0,0,03,64,0,0x2,01,0,011,01,0,0x5,128,05,064,02,0,0,128,0,0,
+152,010,0,02,04,160,5,2,0,3,16,0,1,0140,0,0,0214,128,4,48,18,0120,249
+,0,4,16,128,128,8,0,0x1,34,0,3,128,024,8,0104,0122,0,0,0140,72,02,0,0
+,32,145,0,0,021,0,6,64,0,013,0120,24,02,64,0,0,8,0,0x2,16,0x2,0240,
+0102,0,0x1,0212,32,0x23,0x8,0x24,0,0,32,0,0,064,0,0,192,248,0,0x14,
+010,0,1,32,0,014,2,0,0x8,16,0,0,128,0,6,2,0,0x2,04,04,0,0,16,0,01,01,
+0,3,48,0,0,0x28,251,0,4,64,32,06,0,01,0x18,0,04,128,07,48,0,0,036,192
+,0,0,0170,0,0x1,224,129,014,0,7,64,0,010,014,0,0x1,112,0,0x5,013,224,
+0x1,12,128,0x3,0,01,016,192,0x3,0,0,64,0,0,0140,1,48,0,0,168,252,010,
+0,03,128,0x2,02,0,1,0x8,0,4,128,18,24,0,0,0112,72,0,0,0x28,0x24,0,0,
+160,0,0,0x4,0,017,6,0,0,0x4,0,01,144,0,0x5,05,0242,01,04,128,4,0,1,
+0x12,64,35,4,04,0,0,0240,0,0,48,0,0,041,248,0,4,128,0102,152,0,01,
+0140,64,0,4,03,192,0102,014,0,0,19,48,0,0x1,192,0,0,48,042,0,16,48,32
+,0,0,64,0,0,64,32,0,0,01,36,06,128,5,48,1,2,0,0x1,010,0,0,013,32,0,01
+,192,0,0x1,010,0103,0377,0,04,0360,0,0,0x1c,0x8,0,0,112,0,0x4,128,0x2
+,224,0,0,012,128,0x3,41,0,0x1,0240,0,0,0x38,0,021,074,0,0x1,176,0,0,6
+,192,0,0,24,0,0,011,224,0101,0x38,136,5,0,1,0x16,192,0x3,0132,32,0,01
+,0x1,13,0,0,0130,0371,04,0,03,192,0,0,24,0,0x1,0140,0,0x5,04,192,0,0,
+16,0,0,0x3,64,0,0x2,0x1,48,0,021,48,0,1,64,0,0,0x18,0x8,0x3,0141,64,
+012,128,01,061,0,0,2,0,0x1,8,0,0,0x3,0,3,0101,0,0x1,0202,0371,0,04,
+192,0x28,24,0,0x1,96,0,5,4,192,0,0,16,0,0,03,64,0,02,01,48,0,021,48,0
+,01,128,0,0,24,0,0,3,96,02,4,0240,17,48,0,0,4,0,1,16,0,0,013,0104,024
+,0,0,128,0,02,24,0372,0,0,136,064,0,01,16,0,0,128,0x48,041,2,34,64,
+0x4,136,0,0,145,4,0,1,146,16,0140,72,0202,64,36,129,0,16,32,0,0x1,128
+,0,0,144,010,02,64,17,0144,042,0x8,0,0x2,32,0,0x2,0202,0x4,0,3,0240,0
+,0,128,0x8,0x18,248,0,010,02,0,7,0x4,0,031,8,0,01,16,0,0x1,64,0,0x1,
+0x2,0,01,4,2,128,0,8,32,0,01,0x1,1,0,0,0x78,0375,0140,0,0,48,0,2,128,
+6,0,0,01,0x18,0,0,0x3,0140,0,0,014,128,0x7,0,1,036,208,0,0,120,0,0,
+0x3,0140,129,0,16,128,01,014,0,0x1,0360,0,0x1,192,0x1,24,0,0,013,96,0
+,0,014,0,03,010,0,1,24,0,0x1,224,0,0,074,0,0,0130,0372,0x24,0,0,48,17
+,0,0,192,0x2,2,0,0,02,010,0,0,01,32,0,0,04,128,042,04,0,0,012,0101,0,
+0,0x28,132,1,32,8,0,1,4,0,05,16,02,0,0x5,136,0x1,04,0,0,0246,208,04,1
+,64,0x2,0x8,64,5,042,0,0,0x4,0,0x3,128,2,0,0,010,0,1,32,1,52,0,0,178,
+253,0214,011,48,021,0,01,0104,0x58,32,0x1,0140,129,014,132,01,48,0x1,
+03,0,0x1,014,0,0,19,0x31,0,0,0214,64,0x1,0,1,0x2,0,5,16,1,0,0x5,136,
+011,0x32,011,046,196,02,1,011,01,0140,0102,0x6,128,05,48,012,0,2,152,
+0,1,96,021,0,0,64,0x1,48,0102,112,0375,192,129,074,0,01,48,0,0,034,
+192,2,112,0,0,14,192,129,56,0240,2,0,1,012,128,3,0x28,0,0,016,0x24,
+0x1,0,01,0x7,0,0x5,144,3,0,05,232,1,0x3c,128,0x7,240,0,0,06,128,02,
+112,0,0,011,224,0x1,57,0,0x3,036,04,0,0,0x78,0,0x2,0x1,0x38,0,0,64,
+0377,136,01,48,32,0,01,128,24,0,0,1,0140,0,0,12,128,1,48,0,0,0x4,0,01
+,16,0,0,03,64,0,0,014,0,0,0x1,0,0,128,05,0,5,208,2,0,5,136,01,48,0,0,
+0x6,192,0,0,24,0,0,01,0140,0,0,6,128,0x1,48,0,0x3,0x18,16,0,0,0140,0,
+02,0x1,0,0,8,0361,0373,128,01,48,01,0,1,010,24,0,0,0x2,0140,0,0,014,
+128,1,48,0,0,04,0,0x1,16,0,0,03,64,0,0,014,0,0,01,0,01,04,0,5,0x8,0x2
+,0,5,132,0x5,0x32,0,0,6,196,136,0x58,0x8,02,0140,012,010,128,1,48,0,
+03,24,0,0x1,0140,0,2,01,0,0,0x1,48,0375,0,035,04,0,06,02,0,7,0x8,0,
+011,64,0,14,021,0x28,0376,32,0,0,0x4,128,0,0,16,0,0,0x2,64,0,0,0x8,0,
+0,0x1,32,0,0,0x4,128,0,0,16,0,0,0x2,64,0,0,8,0,0,01,32,0,0,04,0,0x7,2
+,0,6,0x21,0,0x1,128,0,0,16,0,0,02,64,0,0,0x8,0,0,01,0,0x1,0x4,128,0,0
+,16,0,0,0x2,64,0,0,010,0,0,01,32,0,0,4,0,0,232,0376,0,0112,152,255,36
+,0,0,04,128,0,0,16,0,0,2,64,0,0,010,0,0,1,32,0,0,04,128,0,0,16,0,0,02
+,64,0,0,8,0,0,1,32,0,0,0x4,0,15,32,0,0,04,128,0,0,16,0,0,02,64,0,0,8,
+0,0,1,32,0,0,4,128,0,0,16,0,0,2,64,0,0,010,0,0,0x1,32,0,2,0311,254,
+014,04,0,0x1,16,0,1,64,0,0,0x8,0,0,0x1,32,0,0,04,128,0,02,0x2,0,0x1,
+0x8,1,0,0,32,0,01,128,0,017,64,0,0,010,0,4,128,0,0,16,1,02,64,0,0,136
+,0,0,01,32,2,0,0,128,16,021,0,0,2,64,136,136,0,0,0343,0372,128,128,
+0x4,0,0,2,0x12,0,0,8,0x8,0x1,0x21,32,4,132,128,16,16,0x2,64,64,0x8,0,
+0,1,32,0,0,4,132,0,0,16,16,0,16,4,128,0,02,2,0,0x1,012,32,0,0,32,0,0,
+0x4,16,0,0,16,64,0,2,8,0,4,16,24,254,8,0,64,16,0,7,0242,0375,0,01,0x4
+,0,0x1,16,0,011,128,0,0x2,0x2,0,01,8,0,01,32,0,021,32,0,0,0x4,128,0,0
+,16,128,2,0,3,1,32,0,1,128,0,0x2,0x2,0,01,8,0,0,01,0,3,136,0375,0,
+0112,152,255,0,0x36,0x1,0,18,152,0376,0,0x3,01,0,012,010,0,03,0140,0,
+0,64,0,0,32,0,024,0x2,64,0,0x2,01,0,0x2,1,0,2,2,0,05,2,4,0,0x3,32,0,0
+,96,251,128,0,0,64,0,0,2,0,0,0x1,0x8,0,0,1,32,0,0,0x4,128,0,0,16,0,01
+,64,0,0x4,128,04,64,0,0,16,0,16,01,0,2,16,0,0,32,0,0x3,8,0,0x6,02,0,
+0x1,1,0,1,128,128,16,16,0x38,0374,0,025,01,0,063,152,254,0,0,01,0,01,
+04,0,1,16,0,0,2,64,0,0,0x8,0,0,0x1,32,0,01,128,0,05,8,0,01,32,0,36,8,
+0,7,0360,0377,0,02,32,0x2,32,0,010,010,160,0,0,129,0,3,01,0,0,0x4,
+0x28,0,0,17,0x8,0,23,2,0,0x1,04,0,0x7,16,128,0,3,64,0,0,8,176,0374,0,
+0x8,2,0,0x29,16,16,0,0x8,32,0,012,136,0375,0,0x2,16,0x1,32,0,1,64,0,
+05,010,16,0x1,34,0,3,01,0,0,0x2,0104,128,010,16,0,16,160,0x5,0,2,02,
+144,0,0x2,0x2,0,01,16,0,1,16,0,0x1,010,0,0,0x1,0,02,128,0,0,16,48,
+0373,0,0,64,0,0,012,0x4,128,32,0,0x1,64,0,0,16,0,02,16,010,0,0,64,0,0
+,0x8,0,1,32,0,01,128,0,0,16,010,0,16,04,010,0,0x1,128,0,0x4,0x8,0,0x1
+,128,0,0,0x2,64,0,0x5,0x4,0,0,73,024,011,0240,0377,0,01,0x1,010,0,0x1
+,128,0,0x3,32,0,2,4,04,0,0,16,0,0,4,0,1,8,0,0x1,32,0,0,04,32,0,021,32
+,0,014,0x4,128,0,0x5,2,0,0,128,0x8,16,120,0372,0,03,0x4,128,0,3,0x2,0
+,0x2d,0x4,0,014,128,0,02,216,253,0,0x29,0x4,0,06,16,0,0x17,216,0372,0
+,0x2c,64,0,0x15,16,0,05,216,0376,0,0,01,0,5,96,0,1,01,0x2,0,013,16,0,
+38,32,0,8,184,0371,16,0,04,64,0,011,0x8,0,01,2,0,041,64,0,03,32,0,1,
+128,0,02,01,0,4,32,0,0,0354,0374,0,0x5,16,0,36,64,0,035,136,0373,0,
+0112,152,0377,0x8,0,0x5,0x1,0,0102,0262,0374,024,0,0111,0xc8,0373,0,
+012,128,0,05,64,0,010,64,0,45,16,251,0,13,0x2,0,6,01,0,02,01,0,0,128,
+0,36,32,0,07,128,254,0,0112,152,0377,0,0x4,32,16,0,0103,136,0375,0,
+0112,152,255,0,0x16,64,0,27,16,0,21,136,0372,0,01,128,0,2,2,0,58,8,0,
+0x7,56,0375,0,017,64,0,04,0x2,0,0,8,0,026,0x4,128,0,0,0x2,0,3,0x8,0,
+0x1,32,0,8,0x8,0,0,01,0,2,32,0375,0,0x32,01,0,026,136,0376,0,0x28,32,
+0,5,128,0,5,8,0,013,8,0,5,16,0375,0,4,64,0,43,0x2,0240,0,0x3,32,0,0x5
+,0x2,0,4,32,0,04,24,0373,0,045,128,0,03,64,0,0x2,0x2,64,0,5,04,0,03,
+02,0,6,0x4,0,5,0120,0375,0,0x6,16,0,15,128,0,0,64,0,023,64,0,02,64,0,
+0,32,0,0x4,0x2,128,0,0x2,2,0,1,4,0,0x6,232,0372,0,0x1,16,0,0x1,64,0,
+0x2,0x8,0,07,0x26,0,0,16,0,0x1,8,0,026,64,0,3,4,128,0,0,48,0,0,04,0,0
+,0102,0,04,64,0,0,128,0202,0,0x1,02,0,0x1,32,0x8,248,0,38,8,0,042,144
+,255,0,0x2a,32,0,0x1e,184,253,4,0,0x4,32,0x8,0,0,01,0,0,32,04,0,01,16
+,136,0,0,0104,32,0x4,0x8,01,0,0x2,0202,0,01,32,0,16,16,010,0,07,4,64,
+0,1,8,0,0,1,0,3,042,0,0x4,16,192,0372,0,0x31,64,0,0,0x8,0,0,01,32,0,
+0x1,2,0,8,16,0,0,02,128,64,16,0,0,248,248,0,5,0124,0x4,128,0,01,32,
+0x2,0,0x1,0x8,16,0x1,042,64,04,136,0,3,0104,0,01,16,0,16,010,025,0,0,
+16,0,0,02,64,0,0,010,0,0,0x2,72,0x28,0,0,16,024,2,0,0,0x8,0,0,012,031
+,0,0,1,32,0,0,0x5,16,0x28,253,128,0,0,32,0,0x3,010,05,012,160,16,164,
+0x2,0,0,144,015,0,0,0101,32,0x28,0x5,1,0,1,4,02,4,0,015,01,0,0x1,128,
+0102,128,041,0x4,0,0,2,16,0202,0,1,024,32,0,0x1,1,34,160,0,1,64,0,0,
+013,32,0,0,024,136,0x23,0,0,8,208,0372,128,0,5,02,04,0,0,32,32,0x2,
+0x2,0,0,16,010,0,0,0x14,128,010,4,2,0,0x1,04,010,0,021,128,0,0,01,0,
+07,16,0,010,64,0,0,32,0,0,4,64,0,0x1,16,0x8,0371,0,0x1,16,0,0x5,1,0,5
+,32,0,0x18,2,0,5,0x1,0,1,8,0x4,0,8,01,0,02,02,0,2,128,64,0,0x1,152,
+253,0,37,0x8,0,0,010,0,0x21,144,255,0,0x26,1,0,042,136,0376,0,015,4,0
+,1,8,02,0,0,0x4,0,0,02,0,027,128,0,0x4,128,0,5,32,0,015,0x18,255,0x4,
+0,18,64,32,0,0,32,0,1,32,64,0x1,0,0x16,01,0,0x6,16,128,0,0,64,0,0,16,
+0,010,0361,0377,0,051,01,0,036,128,34,0374,0,27,04,0,011,48,0,34,168,
+0373,0,0x28,32,0,32,152,0375,0,0112,152,0377,0,0,64,0,016,05,8,0,0x7,
+06,01,0,0x2d,224,0374,0,024,18,0,0,128,0,027,32,0,1,16,0,0x7,01,0,04,
+0x2,0,0x3,0x8,0,02,160,0376,0,38,02,0,0,0x2,0,0,0140,0,036,248,251,0,
+0101,4,0,0x7,216,251,0,07,64,0,0,8,0,0,0214,4,0,06,64,0,34,0101,010,0
+,03,16,0,03,010,0x4,0101,32,1,064,0,0,0360,255,0,0104,16,12,136,64,0,
+1,72,0373,0,013,017,04,0,06,192,0,0x23,4,0,3,48,0,3,0x38,16,014,224,0
+,2,128,249,0,8,64,0,0,32,0101,0,07,64,0,34,128,0,04,16,0,03,010,0,0,
+0114,041,1,0,0,042,48,0375,0,0x8,3,0,0,041,0,011,139,0,0x21,128,0,4,
+192,32,0,0x3,0101,136,0x8,01,0,0,021,010,0376,0,0x7,192,0,0,0172,0,0,
+016,0,07,192,0x3,0,0x21,07,04,0,0x3,0360,0,0x3,0x18,0,0,03,0240,0,0,
+12,0,0,64,0374,0,011,0x1,0,012,03,0,042,8,0,03,192,0,05,0x8,128,0,02,
+208,0375,0,010,32,0,0,0101,014,0,0x7,64,0x3,0,0x21,64,0,04,208,0,04,
+129,04,4,1,0,0,4,176,248,0,0x6,18,01,0,02,128,041,0,0x8,0140,64,0,013
+,34,0,6,021,0,0x8,104,0,013,010,4,0,0,32,0,0,0x34,0,0,4,0373,0,6,8,04
+,0,27,12,0,06,0x6,0,026,64,0,4,248,0375,0,0x6,016,0,3,03,0,011,0x78,0
+,014,014,0,0x6,06,0,0x8,0170,16,0,13,0140,01,0,0,16,0240,0377,8,0,05,
+18,0,0x3,1,0,0,32,0,07,8,021,0,013,012,0,0x6,0x5,0,8,0x8,0x1,0,013,
+012,0,0,0240,0,0x2,195,0372,0,0x6,16,0,0x3,0114,0,012,0202,0,013,012,
+0,06,0x5,0,0x8,96,0x4,0,013,02,0,0,192,0,0x1,021,0161,0377,0,06,012,0
+,0x3,016,0142,0,0,1,0,0x6,16,0,036,0x78,16,0,012,0x18,64,0,0,32,0x1,
+12,0,0,168,0377,04,0,05,010,0,3,014,0,0,128,0,07,0140,0,054,32,0,1,01
+,0,01,0261,0371,0,06,16,0,3,015,128,17,0,7,96,64,0,035,0140,132,0,012
+,64,04,0,0,128,0,01,4,168,0372,176,041,0,0x4,18,0,0x1,010,0,0,0214,4,
+0,5,0x18,0,1,0140,64,0x1,32,0,28,0202,0,07,02,64,32,014,12,128,32,0,1
+,0x1,224,0377,0,0x6,0x8,0,12,8,0,054,0x3,0,0x2,0x8,0,01,8,0x18,252,0,
+0,64,0,4,026,0,3,017,0,0x6,036,0,01,0x78,0,036,120,0,011,010,0,0,0142
+,0,0,3,0144,01,014,0,0,216,0374,12,8,0,0x4,012,0,1,0140,32,129,4,0,05
+,2,011,0,0,0x8,024,128,0x8,32,0,032,104,0,012,023,0,0,0202,129,0240,0
+,0,4,0,0,0232,254,0x4,011,0,04,014,0,0x2,041,0,013,0202,64,0x4,0,0x1b
+,96,0x4,0,7,128,0x8,013,64,0101,0x2c,196,0,0,48,0,0,64,0373,224,0101,
+0,4,18,0,1,24,0,0,14,0,06,28,0,1,16,0,0,03,0140,0,0,1,0,07,16,0,06,
+010,0,0x8,120,16,0,07,036,192,128,24,0,0,2,32,1,56,010,0170,255,4,
+0101,0,0x4,0x8,0,016,0140,0,1,128,129,0,010,0x2,0,0x6,0x1,0,0x14,03,
+0101,0,2,01,48,0,0,57,254,0,0,16,0,04,16,0,0x2,0101,014,0,06,24,0,01,
+0140,010,014,01,16,0,0x8,4,0,6,2,0,011,021,0,0x8,0x2,011,0140,0104,0,
+0,129,0,0,48,0,0,0360,0371,32,0,012,0x2c,16,0,0,024,0,0x4,03,0,0x1,64
+,0,013,16,0,06,010,0,5,0x2,64,16,0152,0,03,024,0202,6,0,03,16,0x8,014
+,0,0,32,0,0,0x34,0,0,208,248,0,14,32,0,024,014,0,0x6,06,0,0x8,0140,0,
+0x3,32,32,06,0,0x4,0x1,0,05,64,249,0140,0,012,017,0,0x1,0x2c,0,0x3,
+0x6,0,01,0x78,0,27,6,0,0x1,0171,0,0x3,16,0,0,0x6,0,0x2,192,0,0,64,0,
+01,96,1,48,8,224,251,0x28,0,012,129,0x4,0,0,024,0,03,0x2,0,0x1,104,0,
+014,012,0,6,5,0,0x5,02,0,0,32,104,0,03,32,0,0,0246,0,0x2,64,0,0x1,
+0202,0,0,0240,0,0,176,0,0,0172,248,128,01,02,0,013,152,32,0,0x2,24,04
+,0,0,0140,0202,0,032,152,04,32,0140,0,03,16,0,0,06,2,0,02,0x3,0140,
+132,0,0,192,0,0,48,0,0,0x58,0376,224,0x1,0,011,016,0,01,32,0,0x3,0x1c
+,0,1,112,0,014,4,0,06,0x2,0,0x5,034,192,0x2,0161,0,3,0x2c,128,0x7,0,
+0x2,192,3,0x1a,0,01,32,1,074,0x8,0310,0377,132,01,0,12,32,0,0x3,0x18,
+0,1,0140,16,0,013,04,0,0x6,2,0,5,0x18,0,1,0142,0,03,16,0,05,0x3,0140,
+32,0,01,0x1,48,0,0,49,248,128,0x1,0,011,014,0,0x1,16,012,0,0x2,0x1a,0
+,1,96,4,0,013,2,0,6,01,0,05,26,0,0,16,104,0,0x3,32,0,0,026,0x2,0,02,3
+,32,0,1,128,0,0,48,8,0,0,0374,128,0121,0,011,128,0x1,0,0,0x4,0,0x4,
+0x3,0143,0,0,64,0,02,4,0,07,010,0,06,04,0,5,0130,0,1,0x28,36,0,0x3,
+128,0,03,64,3,8,0,01,32,0,1,0x1,184,0374,0,27,48,0,017,0x1,0,05,0x18,
+0x8,0,014,3,0,0,32,0,3,8,0,0,0377,224,0101,0,011,03,0,1,054,0,3,0x6,
+192,0x3,120,0,12,4,0,0x6,010,0,0x5,0x1e,0,0x2,64,0,012,64,0,01,0140,
+01,014,0,0,0x48,0371,0x28,04,0,011,01,0,01,024,0,3,2,64,32,0151,0,4,
+16,0,0x6,16,0,6,8,0,5,0x1a,0,0x8,128,0,04,04,0202,0,0,0240,0,0,4,0,0,
+0163,0376,0,0,8,02,0,010,054,0,1,152,32,0,02,0x58,04,0,0,0140,0202,0,
+03,0102,2,0,5,0x2,0x1,0,05,1,0,05,24,0,0x2,2,0,4,16,0x2,0,2,013,041,
+129,0,0,192,0,0,48,0x2,0231,0375,64,0,012,016,02,0,0,32,0,0x3,28,128,
+0x3,112,0,0x3,014,128,0x2,0,5,64,0x1,0,014,28,0,0x1,24,16,0,03,128,1,
+0,0x2,192,03,24,0,01,32,01,56,010,208,0373,132,01,0,011,014,0,0x1,32,
+0x8,0,02,0x18,0,1,96,16,0,032,0x18,0,010,0x6,02,0,0x2,3,32,0,0x2,01,
+48,0,0,193,248,128,01,2,0,010,015,0,0x1,16,0x2,0,02,0x1a,0,0,0x3,0140
+,01,0,2,128,32,0,025,0x18,0,02,16,0,4,64,0,0x3,0240,32,0x24,0,0,128,0
+,0,48,0,0,160,253,144,0121,0,0,128,0,0,16,0,0x1,64,0,2,128,0x1,0,0,
+164,32,0,0,208,0,0,0x18,64,0,0,0140,64,0,0x3,128,2,0,05,64,1,0,12,18,
+0,1,0x8,0,1,32,0,5,02,64,16,0x28,0,0x1,32,0,0,04,0x6,24,0374,0,016,16
+,0,04,0x8,0,0,96,0,0x1c,0x8,0,12,131,0,0,32,0,4,0x28,0372,224,1,01,0,
+0,0x6,0x4,64,0,0x4,3,0,1,0x2c,0,0x3,036,0xc8,0,0,0170,0,05,04,0,6,0x2
+,0,014,16,0,1,24,0,01,0140,0,0x8,0142,0,01,0140,01,0,0,16,32,251,054,
+010,0,06,64,0,1,1,0,0x1,024,0,0x2,64,0202,64,0,0,104,0,0x1b,0x48,0x8,
+0,0,010,0,1,32,32,0,0x6,011,32,021,0,0,0240,0,0,32,0x2,146,248,0x4,
+0x8,2,0,0,06,1,0104,0,2,1,0,0,014,0,1,0x28,0,0x2,0102,0,01,0243,0140,
+0202,0,4,1,0,05,128,0,015,0120,16,0,0,96,0x2,0,1,132,0,4,64,8,0143,
+0140,16,0,0,192,0,0,0240,16,208,252,64,0,1,128,01,48,0,01,192,0,2,016
+,2,0,0,32,0,1,48,0,0,0x1c,128,3,112,0,0x5,03,0,0x5,128,01,0,014,016,0
+,01,112,16,0,0,64,0,0x5,06,192,0x3,120,0,1,32,0x1,014,0,0,192,0374,
+132,129,0,01,06,0,4,01,0,0,014,0,0x1,32,0,0x4,64,03,0,0,16,0,26,16,16
+,0,0,96,0,1,128,129,0,0x4,0x18,16,02,0140,0,0x2,0x1,48,0,0,41,0372,
+128,011,0,0x1,0106,196,16,0,1,043,0,1,015,0,01,32,0,2,0202,24,64,03,0
+,6,0x4,0,6,02,0,12,8,0,1,0140,0,02,16,0,4,24,128,0x21,0141,024,0,0,
+128,0,1,0x21,216,0377,32,0,0,0x4,0,06,8,0,0,054,48,0,6,0103,0,0,010,0
+,0,01,0,02,128,0,0x6,64,0,011,128,026,16,0x48,0x2,64,0x3,104,0,0,0101
+,0x28,0,03,16,0,1,64,8,12,0,01,32,0,0,0264,8,0x48,253,0,0x1d,0x2,0,06
+,1,0,012,194,0,0x3,0141,0,012,0x3,0,4,32,0,0,64,0377,128,0x1,48,0,06,
+0140,0,0,017,04,0,0x5,06,192,0,0,0x78,0,4,128,0,6,64,0,12,128,6,0,1,2
+,0,0x1,0144,0,3,48,0,02,0x3,0,0x2,96,0x1,48,0,0,0x18,0372,136,01,48,0
+,0x7,32,0101,0,0,16,0x1,0,0x3,0x2,64,0,0,0151,0,0x1,04,0,011,4,0,012,
+128,0,0,04,02,0,0,32,0,0x1,128,32,0,03,16,16,0,1,023,0x1,0,0x1,0240,0
+,0,48,011,063,0371,128,0101,0,0,17,0,6,0x21,0,0x1,136,0,4,0130,0,1,96
+,0202,32,04,0,011,010,0,06,3,0,02,0102,196,136,152,0,0,041,0x2,0x2,
+136,128,0105,0,0x3,0102,0,01,042,02,36,0,0,192,0,0x1,0x4,021,0372,224
+,1,014,0,0x6,24,0,0,016,224,01,0,4,034,132,0,0,0172,0,0,03,0,21,128,
+0x7,176,0,0,036,196,03,0x18,16,0x3,196,0x1,0,0x2,32,0,0x1,192,0,0,24,
+0,1,32,01,014,0,0,0322,253,132,1,0,021,24,64,0,0,01,16,0,0x17,02,0101
+,0,0,0x18,0,0,01,0,02,136,0x1,0,2,192,64,0,0x1,2,96,0,2,0x1,0,1,0104,
+248,128,021,02,0x4,0,06,0101,014,0,0,32,0,04,26,0,0,35,0,0x1,054,0x8,
+0,0x15,36,128,64,0x1a,0,0,0x2,01,16,64,160,1,0,0x3,0x8,0,0x1,011,0141
+,0x24,0,0,128,0,0x1,010,0xc8,0371,32,0,0,0x4,128,0,7,128,0241,05,0,0,
+128,0,0,192,0,0,152,16,0,0,96,64,0,0x2,176,0,017,0240,0205,52,128,6,
+208,132,032,0,01,104,0,0,0101,0x28,0,0,52,6,0,0,16,0,1,64,16,8,0,0,
+128,32,01,52,0x21,010,0372,0,014,128,01,1,0,02,64,0,0x1,128,0,0x5,16,
+0,16,48,0,0,0x6,0,1,24,0,01,0140,0,012,3,1,0,0x1,136,0,0,48,0,0,010,
+0371,0140,0,0x1,128,01,0,06,03,128,0x1,0x1,0,01,0360,64,036,0xc8,0,0,
+0170,0,0x3,0x3c,32,0,6,012,0,6,05,0,0,075,128,7,0,0,64,24,0,0x1,0140,
+0,0x1,0144,0,0x1,16,0,0,48,0,02,0x3,02,0,0,3,0140,1,48,0x8,16,248,
+0x28,0,1,144,0,7,01,128,021,0,0x2,18,04,0202,64,0,0,010,16,0,0x2,4,
+0x2,0x4,0,5,16,2,0,05,8,8,52,128,06,0,0,8,24,0,01,0140,0,0,128,32,0,
+01,0x2,0,0,16,0,2,013,0,1,01,0240,0,0,48,02,0x2,0373,128,145,176,16,6
+,0,0x6,0214,0202,021,1,0,0,16,2,0,2,147,0,0,0202,0,04,0x2,0,0x5,16,01
+,0,0x5,136,16,061,0,0,06,64,136,0,0,0x1,0,1,01,132,128,0121,16,34,0,0
+,192,0x28,0,1,012,0,0,18,0,0,192,0,0,48,34,64,0372,192,0x1,014,128,
+0x7,0x4,0,05,016,224,01,0,0,128,0x1,224,0,0,0x1c,128,3,16,0,3,0x38,0,
+0,07,0,0x5,144,03,0,0x5,232,0x1,56,128,0x7,0360,0,0,6,0x8,0,0,24,16,
+0x3,0344,01,074,0,01,224,0,1,192,128,0x18,0,0,0x2,0x28,01,0x3c,0,0,
+216,0371,132,01,0,1,0x6,0,0x6,014,0,0,01,0,1,06,0,03,03,0140,0,0x4,
+128,05,0,5,208,2,0,5,136,0,0,48,0,0,6,64,0,0,24,04,0,03,136,0x1,16,0,
+0x1,192,0,0x2,2,96,0,0,014,136,0,0,32,0,0,0141,0376,128,01,128,32,0x6
+,0,6,13,0,0,16,01,0,0,16,196,0,0,24,64,0x3,0140,0202,0,0x2,48,0,0,04,
+0,5,8,0x2,0,5,04,129,48,0,0,06,128,64,0130,0,3,64,0240,1,32,16,0,0,
+208,0,0x1,128,1,0141,010,054,0,0,0x1,0,0,34,0,0,0375,0,035,04,0,6,0x2
+,0,0x17,64,0,012,184,0373,32,0,0,04,128,0,0,16,0,0,02,64,0,0,0x8,0,0,
+04,32,0,0,4,128,0,0,16,0,0,8,0,0,129,010,0,0,0x1,32,0,0,4,0,07,0x2,0,
+06,0x21,0,0,0x4,128,0,0,16,0,0,04,64,0,0x2,0x1,64,0,0,04,128,0,02,0x2
+,64,0,0,010,0,0,01,32,0,0,04,0,0,0xc8,248,0,067,64,0,021,152,0373,
+0x2c,0,0,0x4,128,0,0,16,0,0,02,64,0,0,8,0,0,1,32,0,0,0x4,128,0,0,16,0
+,0,02,64,0,0,010,0,0,01,32,0,0,0x4,0,017,32,0,0,0x4,128,0,0,16,0,0,
+0x2,64,0,0,8,1,01,32,0,0,4,128,0,0,16,0,0,2,64,0,0,010,0,0,1,32,0,0,
+0x4,0,0,0363,248,0104,0,0x2,1,0,1,8,0,0x3,32,0,02,0x2,0,0x1,0x2,64,0,
+0,010,16,0,0x3,128,16,0,021,34,0,3,0x5,0,0,16,4,0,01,64,0,0x7,16,0,0,
+32,64,0,0,128,0,0,137,0377,0,0x1,0x5,0,01,16,0,1,64,0,0,0x8,0,01,0x24
+,0,01,144,0,0x1,64,0,0,010,0,0,01,64,0x1,32,0,17,32,0,3,16,0,1,64,0,1
+,16,01,32,0,0,04,128,0,0,16,32,2,64,0,3,0x4,0,1,16,012,248,0x4,0,0111
+,156,0377,0,01,04,128,0,0,16,0,0,0x2,64,0,0,010,0,0,64,0x28,0,0,4,145
+,0,0x1,132,128,16,0120,0,01,1,32,0,01,041,0,14,32,0,1,193,32,0x12,0,0
+,0202,72,0,0,0x8,0,0,1,32,0x28,4,128,0,0,16,0x14,2,64,16,011,0,0,64,
+041,0,01,0x5,0130,0375,0,0102,0x2,0,0,16,0,04,136,253,0,0x1b,32,0,0,
+128,0,0x6,64,0,014,16,0,8,04,0,013,104,248,0,013,01,16,0,0x5,2,0,0x2d
+,0x8,0,0x6,48,0377,0,18,01,0,54,152,254,0,013,02,0,04,32,0,0,0x4,0,
+0x6,16,0,0x1,0x2,0,06,1,0,21,01,0,0x3,1,0,0,32,0,04,232,0376,0,013,
+010,0,04,128,0,0,16,0,0,0x2,0,0x13,0x8,0,25,8,0,0x1,32,0,0,48,0376,0,
+016,04,010,0,0,16,0,0x2,128,0,1,04,0,042,128,0,0,16,0,4,16,0,4,64,255
+,0,0x8,128,0,0x29,0x2,2,0,0,32,0,0x1,042,0,1,16,0,0,64,32,0,05,128,0,
+0,16,0,0,208,253,0,6,0120,0,0,0120,02,0,03,8,0x15,0,0,32,0,2,0120,0x1
+,0,0,0x2a,0,25,2,16,0,0,232,0,0,128,053,0,1,32,01,176,0226,0120,0,0x2
+,32,0x28,32,0,0,164,0,0,184,0373,0,0x2,042,0,03,18,128,0,0,0104,145,
+010,0,0,16,011,0,0x2,02,0,0x7,052,0,016,128,0,05,16,0104,2,0,4,48,0,2
+,2,0,0x4,0x19,128,0x26,0365,38,224,249,0,011,0x2,0,0x3,16,32,0,013,
+010,0,14,32,0,0x6,16,0,5,16,0,011,128,0,0,04,0,0,144,0372,8,0,6,4,0,
+052,02,0,0,01,0,04,4,0,010,04,0,0,64,16,8,024,249,0,0x1d,4,0,6,0x2,0,
+0x23,248,251,0,01,0x2,0,024,128,0,4,02,0,06,1,0,16,128,0,012,32,0,5,
+128,0377,0,027,64,0,43,64,0,04,152,0377,0,3,16,0,06,0x2,0,075,168,
+0374,0,07,128,0,48,128,0,0x1,16,02,64,0,0,0x8,0,3,04,0,1,16,0,0,248,
+0373,0,0x4,0x2,0,07,64,0,0x35,64,0,04,248,0373,0,13,64,64,0,011,0x2,0
+,0x28,04,0,4,8,56,0373,0,0x1f,01,0,0x5,128,0,041,128,0242,253,0x8,0,
+0x15,0x8,0,011,4,0,0x6,2,0,12,0x8,0,015,06,0,0x2,208,0371,0,01,1,0,
+0107,136,255,0,013,0x8,0,6,16,0,0,02,0,0x6,2,0,1,16,0,3,1,0,043,176,
+254,0,042,32,0,06,16,0,5,32,0,23,136,0376,0,042,64,0,06,32,0,0,128,0,
+0x1b,128,176,0371,0,036,16,0,06,0x8,0,27,8,0,0x5,0104,0372,0,027,0x21
+,0,42,8,0,0x5,0x28,0376,0,0,128,0,0,0x8,0,06,16,0,5,0x1,32,0,0x3,32,0
+,0,0x2,0,0x1,0x8,0,23,64,0,2,0x1,0,8,0x1,0,0x5,120,252,0,042,16,0,0x6
+,0x8,0,15,4,0,015,0120,0372,16,0,0,16,0,01,0140,0,0x2,1,0,2,128,0,0x7
+,01,0,0x1,4,128,0,27,16,0,1,128,0,0,16,0,0,2,64,0,0,014,0,03,04,0,1,
+24,0,0,0x28,248,0,0112,152,0377,0,13,32,64,0,021,02,0,6,0x1,0,5,010,0
+,1,32,0,015,04,0,5,0x4,32,248,0,0x1,16,0,01,0x1,0,0x3,32,0,0x5,0x2,64
+,0,1,64,0,02,0x4,0,0x28,0x4,0,0,128,0,0x4,0x8,0374,0,024,2,0,06,32,0,
+017,04,0,1,16,0,0,2,64,0,0,0x8,0,04,128,0,5,0x8,144,0,0,32,0,0x3,0140
+,0377,0x2,0,64,64,0,3,1,0,02,232,253,32,0,010,1,0,02,132,0,07,0x1,0,
+0x2,128,0,0x1b,0x1,0,07,64,0,4,0x4,0,0,128,16,0232,0371,0,1,32,0,02,
+32,0,0x2,0x8,0,0x2,0x1,0,0,010,0,036,16,0,02,010,0,1,32,0,0x6,32,0,01
+,4,128,0,0x4,010,010,112,0373,16,0,0,16,0,0x15,01,0,025,32,0,3,64,0,0
+,0x2,0,0,0x4,32,0,03,1,0,01,0x2,0,0x4,64,0,1,154,254,0,01,172,0,02,64
+,0,0x2,16,012,0,0,64,05,0240,16,0,02,208,2,0,0,64,1,0x1,0,2,5,0,0x3,
+16,0,06,8,0,04,48,0,0,128,02,04,64,012,18,012,1,32,0,0,0240,0,0,0240,
+36,0,01,24,0,0,0101,0x1,0,0,128,0x28,011,0x15,104,248,0,01,0x4,012,0,
+1,164,0,0,0x15,0,0,32,0106,129,010,0,0,128,136,0,0,64,128,0,0,128,0,0
+,32,1,128,0x8,0,0,16,8,0,016,32,0,0,024,0,0,02,16,136,16,0,0,0102,
+0120,0,0,010,01,0,0,132,0,3,128,0,0,147,224,72,014,0240,04,04,053,
+0x78,0374,0,0x2,010,0,0x1,32,0,0,04,0,0,8,0,04,8,0,0,64,0,0x3,32,0,
+0x3,16,16,0,16,16,0,0,02,0,16,129,16,0,0,01,128,0,01,010,0240,0377,0,
+063,8,64,0,0,34,0,0,04,4,0,06,128,0,0,32,0x8,02,0,03,248,0373,0,32,64
+,0,6,32,0,32,216,0375,0,043,01,0,5,128,0,06,16,0,026,144,0376,0120,04
+,64,0,6,128,0,05,8,0,0,0x1,0,04,16,0,1,64,0,16,04,0,03,02,0,1,0x8,0,1
+,32,0,012,010,0,04,0124,0371,0,061,64,0,02,01,0,0x1,04,0,16,0xc8,0376
+,0,0112,152,0377,0,34,128,0,06,64,0,0x4,4,0,24,0120,0377,0,01,4,0,01,
+16,0,0x1,64,0,3,32,0,07,4,0,01,0x1,32,0,0x14,128,0,8,32,0,1,128,0,0,
+16,0,0,02,0,0x3,1,0,1,4,128,232,248,64,0,0x21,16,0,07,16,0,010,04,0,
+0x13,152,0373,0,01,1,0,0x2a,2,0,0,32,0,01,1,32,0,0,4,0,01,16,0,0x1,64
+,0,8,16,0,0x3,152,251,0,19,32,0,0x7,04,0,16,128,0,18,2,2,0,0x5,112,
+255,0,15,0x4,0,015,32,0,0x6,16,0,014,2,0,014,64,64,0,0x5,0310,249,0,
+014,04,0,0x4,64,0,0,72,0,06,16,0,27,32,0,01,128,0,0,16,0,5,0x1,0,1,04
+,0,0,168,0371,0,0x1,48,0,0x8,128,16,0,0x1e,0240,01,024,0,0x1,16,0,0,
+012,0141,0,0x2,01,0,0x8,0x13,0,6,112,251,0,2,16,0,0x2a,32,0,3,0x8,0,
+016,01,0,0x5,16,253,0,1,0x3c,0,010,3,0,31,128,1,45,0,1,176,0,0,026,
+192,2,0,01,013,0,7,192,03,0,0x6,0360,0376,0,0x1,0x4,5,0,7,1,0,32,0x8,
+024,0,01,0120,0,0,012,64,1,0,0x1,05,0,0x7,64,0,0,1,0,05,0310,253,0,
+013,0x2c,16,0,31,010,031,64,0,0,96,0,0,149,144,1,4,0,0,6,16,0,15,72,
+0372,0,1,56,0,010,017,0,037,224,01,0x24,0,01,144,0,0,16,64,0x2,0,0x1,
+011,0,07,128,03,0,06,224,252,0,013,12,0,31,128,1,041,0,1,128,0,0,16,0
+,0,0x2,0,1,8,0,16,240,0373,0,01,48,0,010,12,0,0x1f,128,5,16,011,0,0,
+64,0x24,0x8,011,145,0,01,0104,02,0,07,03,0,6,176,0371,0,0x4,192,2,01,
+0,0,0x3,0,1,1,0,010,32,0140,12,128,16,0,011,34,0,06,021,0,0,0x4,0,1,
+16,0,0,0x2,0141,0,02,0x1,0,16,16,0376,0,011,2,0,013,01,0,12,12,0,06,
+0x6,0,034,0140,0377,0,4,0360,0,1,192,0x3,1,0,0,12,0x4,0,0x6,192,0,0,
+0x78,0,0,03,0,012,12,0,6,6,0,0,0x2c,0,0x1,176,0,0,026,192,0x2,0,01,
+013,0,16,128,251,010,0,03,16,0x4,01,64,32,0,1,64,0,0x7,64,0,0,8,0202,
+0x1,0,012,012,0,06,05,0,0,024,0,1,0120,0,0,012,64,1,0,01,05,0,16,0242
+,0377,0,013,0214,2,0,0x7,013,0,1,054,0x4,0,011,012,0,6,0x5,0,0,24,64,
+0,0,0140,0,0,149,144,0x1,0x4,0,0,0x6,16,0,15,216,0373,0,04,224,0,01,
+128,3,0,0x1,15,0,7,192,3,0162,0,0,15,0,0x14,36,0,01,144,0,0,16,64,02,
+0,1,011,0,16,0130,0373,4,0,012,12,0,010,0x3,0,0x1,12,0,0x14,32,0,1,
+128,0,0,16,0,0,02,0,01,010,0,16,185,248,0,04,192,0,2,03,0,01,0214,02,
+0,0x7,3,96,0,0,12,0,0x14,16,8,0,0,64,32,0x8,02,129,0,0x1,0x4,2,0,017,
+48,0375,0,0x2,02,0,0x6,4,128,144,145,0,1,0x16,8,0,0x1,64,013,0,1,128,
+144,05,176,64,0,16,0x4,0,0,64,24,0,0,2,0141,0,01,132,01,0,0x2,128,0,
+014,0360,0374,0,02,16,0,6,32,0,011,3,1,0,0x2,128,0,056,24,0376,0,0x1,
+014,0,06,24,0,0,0x3,224,1,0,0,128,7,0,0x3,02,02,0,0,3,224,1,074,0,021
+,054,128,01,176,0,0,026,192,02,0x18,0,0,013,0,16,32,0371,0x8,0,0,0x4,
+0,06,8,0,0,0x1,32,0x8,2,128,128,0,0x3,021,0,0x1,01,32,32,04,0x21,0,16
+,0x14,128,0,0,0120,0,0,012,64,1,8,0,0,05,0,0x3,160,0,013,0102,253,0,
+01,48,32,0,5,96,0,0,0114,0,0x8,0x23,0x1,0,0,0114,0,024,24,64,6,0140,0
+,0,149,144,01,0144,042,6,16,0,2,64,0,013,0130,249,0,1,074,0,6,0170,32
+,15,0xc8,1,0,1,0x7,0,2,192,0,2,15,196,1,0x38,0,021,36,128,07,146,0,0,
+16,64,02,0x78,0,0,011,0,0x2,128,01,04,0,012,176,0372,4,0,0,48,0,06,
+0140,0,0,014,0,0x8,0202,0,01,014,0,012,18,0,0x6,011,0,0,32,0,0,6,128,
+0,0,16,0,0,0x2,0140,0,0,010,0,3,0x6,0,013,217,0376,0,0x1,52,0,0x6,
+0140,0,0,014,128,1,0,01,0x6,0,0x3,32,0,01,014,128,01,48,0,0x7,2,0,6,1
+,0,0,144,010,06,64,34,72,32,137,96,0,0,0x24,0x2,0,02,16,0x2,0,012,104
+,252,128,01,0,0x1,64,0,5,04,128,16,0,0,48,0101,6,192,72,0,0,64,010,
+0140,014,128,144,05,0x32,06,0,0x6,0x8,0,06,04,0,0,04,0,01,16,0,0,0x2,
+0141,0,0x2,01,0,0x2,0102,6,0,0x2,0141,35,0x1,0,05,0170,0373,0,0,128,0
+,02,0x2,0,0x4,32,0,0x5,0x2,0,03,1,0,014,18,0,6,011,0,16,0x2,0,0x2,0x2
+,0,06,168,0375,224,0x1,0,0,128,1,0,0x4,24,0,0,0x3,0,0x1,074,128,07,
+0360,0,0x2,0x1,0172,0,0,0x3,224,01,074,0,17,054,0,0x1,176,0,0,0x16,
+192,0x2,0,0x1,013,0,01,12,128,7,0,1,0x6,0,0,03,0,6,184,248,0x28,32,0,
+0,128,0,5,8,0,0,1,0,1,4,0241,32,24,16,0,01,18,8,129,0x1,32,128,04,041
+,0,06,010,0,06,04,0,0,024,0,1,0120,0,0,012,64,01,0,1,0x5,0,1,04,128,0
+,0,4,0,0,2,0,0,34,0x1,0,0x5,0x2,0377,0,03,0106,0x4,0,03,0140,0102,
+0214,04,0,07,128,0,1,0114,4,0,011,0x2,0,0x6,1,0,0,24,64,0,0,0140,0,0,
+149,144,0x1,04,0,0,6,16,0,0,48,042,0,2,24,16,17,0x4,0,0x5,0140,0375,
+192,0x1,0,0,128,07,0,04,0x78,0,0,017,0,0x1,56,0,0,0x7,224,0,1,192,03,
+112,0,0,15,192,1,56,0,07,04,0,6,0x2,0,0,36,0,01,144,0,0,16,64,02,0,
+0x1,011,0,0x1,074,0,0,0x7,0,1,036,192,3,0,06,112,249,0x4,0,0x2,06,0,4
+,96,0,0,12,0,010,0x1,0,0x1,12,0,012,010,0,6,0x4,0,0,32,0,01,128,0,0,
+16,0,0,02,0,1,0x8,0,1,48,0,03,24,0,0,3,0,06,161,0374,128,1,0,1,6,0,
+0x4,0140,0,0,014,0,1,48,0,0,06,192,0,2,131,0140,0,0,014,128,0x1,48,0,
+017,8,0,0,16,012,0,0,64,0x28,136,16,0241,0,01,132,02,0,0,48,128,06,0,
+1,24,0,0,19,1,0,0x5,168,0373,128,0x1,0,0x8,0x4,128,16,0,03,192,72,0,
+0x1,32,0,01,041,0,012,012,0,8,04,0,01,16,0,0,0x2,0141,0,0,104,0,0,1,0
+,07,64,013,0,0,132,0x1,0,0x3,0254,248,0,0,128,0,8,32,0,012,1,0,1,4,0,
+011,32,0,16,96,32,0,011,2,0x1,0,5,144,249,224,1,0,0x7,24,0,0,3,0,4,
+0360,0,01,192,0,2,4,8,0,011,02,0,0x6,5,0,0,054,0,01,176,0,0,0x16,192,
+0x2,0140,0,0,013,0,0x8,3,24,0,0,12,8,0,0x2,16,252,0x28,0x8,1,0,6,8,0,
+0,1,0,4,16,132,0,0,64,0,0x2,72,0,012,0x2,0,8,024,0,1,0120,0,0,012,64,
+01,0140,012,0x5,0,8,34,011,0,0,128,0,03,0343,255,0,011,0140,0104,0114
+,010,0,0x7,3,0,2,16,0,2,2,0,0x5,32,01,0,5,0x2,0,0,24,64,0,0,96,0,0,
+149,144,01,04,0x1,06,16,0,07,011,0144,32,014,8,0,2,217,0373,192,0x1,0
+,0x7,120,0,0,15,0,4,224,0,01,192,3,0x2,0,0,017,0,024,0x24,0,1,144,0,0
+,16,64,02,24,32,011,0,0x7,192,03,0x78,0,0,017,0,0x3,194,0375,04,0,0x8
+,96,0,0,12,0,0x8,03,0,0x1,4,0,3,0x2,0,6,0x1,0,0x7,32,010,0,0,128,32,
+16,0,0,0202,32,0,0,0x8,2,0,7,3,96,0,0,12,0x2,0,2,024,248,128,01,0,07,
+0140,0,0,014,0,0x4,192,0,0x2,3,0,0x1,014,2,0,01,128,0x8,0,5,64,4,0,
+0x7,16,2,0,0,64,0x8,8,0x8,041,0,0,129,132,0,010,023,0141,0,0,0x2c,0,
+03,0x38,255,0,4,208,0,03,8,0,0,041,0,6,0x18,0,0,32,0,01,45,0,18,32,8,
+06,128,06,16,0,0,02,0141,0,02,0x1,0240,1,0x4,0,2,8,0x1,0,3,128,0,0,16
+,0226,64,0114,252,0,4,192,128,0,0x3,64,0,0,0x4,0,0x6,16,0,0,1,0,0,014
+,0x4,0,02,1,0,05,128,0,012,0x6,0,07,128,0x1,0,012,04,0,0,32,0,0,56,
+0372,0,0x4,192,0,03,32,64,0x4,010,0,0x5,0x1e,192,0,0x2,0x8,0x8,0,0x2,
+010,0,0x6,4,0,7,0x2c,0,0,6,176,0,0,0x16,192,02,0,1,013,224,0x1,0,0x2,
+48,0,0x5,0x3,0140,0,0,48,0,0,0x28,253,010,0,03,192,024,0,0x2,64,2,72,
+0,6,0202,0140,0,0x2,0104,0,3,4,0,0x6,02,0,0x6,0x8,0x16,0,0,0x6,0120,0
+,0,012,64,0x1,0,0x1,0x5,0240,01,0,2,16,0,0x5,0x1,32,0,0,32,021,131,
+0376,0,0x5,0x2,0,03,128,128,0,0x8,013,0x2,0,0,0x2c,0x8,0,17,128,64,24
+,64,38,0144,0,0,149,144,01,0x4,0,0,6,144,01,0,0,2,0,0,192,0,05,054,
+128,1,021,0102,0151,248,0,0x4,48,64,0,2,0170,0,0,017,4,0,0x5,034,192,
+03,0,01,03,0,0x12,0142,0,0,36,128,0x7,144,0,0,16,64,0x2,0,0x1,011,192
+,0x1,014,32,0,0,0360,128,0,04,15,228,0x1,074,0,0,0172,0376,4,0,0x3,64
+,0,03,32,0,0,04,0,010,03,0,1,8,0,2,128,01,0,0x5,192,0,0x6,8,0,0,32,
+010,0,0,132,32,16,0,0,0202,0,0x1,010,0202,01,48,16,0,0,192,0,5,014,
+128,01,16,0,0,12,0375,0,05,16,0,02,0140,0x14,054,0x2,0,5,26,0,0,0x3,0
+,1,32,8,0,0x12,0x28,144,0,0,16,64,2,136,32,011,0,01,0x24,128,01,48,0,
+01,192,0,0x5,12,128,1,176,16,232,0372,0,011,8,0,0,041,0,7,64,0x3,0140
+,014,1,4,0,0x1,128,0x4,0,0x5,0104,02,0,07,04,0,1,16,0,0,2,0141,0,0x2,
+01,32,0,02,64,010,0,1,041,0,1,132,128,32,0,02,024,251,0,012,64,0,0,04
+,0,7,0x2,0x1,0,05,2,0,06,0x1,0,05,16,0,0x18,0x4,0,02,232,0377,0,011,
+32,64,04,010,0,0x7,3,121,0,4,128,0,06,0104,0,8,054,0,1,176,0,0,026,
+192,0x2,0,01,013,0,0,64,0,0,128,0x1,0,1,6,0,0x1,24,0,0,0x3,128,129,0,
+02,253,8,0,0x8,64,0x2,0x48,0,8,18,8,32,32,0x2,0,011,4,0,8,0x14,0,0x1,
+0120,0,0,012,64,0x1,0,0x1,0x5,0,0,010,0,0,128,0,02,0x2,0,01,010,0,0,
+01,0,0,0x8,0,1,147,0372,0,012,01,128,0x1,0,7,137,0,1,32,0x2,0,011,010
+,0,06,05,0,0,24,64,0,0,0140,0,0,149,144,0x1,0x4,0,0,06,144,0x1,1,0,0,
+06,010,0,0,0x58,16,0,0,0140,34,014,129,01,0,1,129,0374,0,011,120,16,
+017,0,07,192,3,112,0,0,03,0,0x14,36,0,01,144,0,0,16,64,02,0,01,011,
+0140,0,0x1,128,07,0,1,036,0,1,0170,0,0,15,224,1,0x1,0,0,0162,0377,4,0
+,8,32,0,0,04,0,010,03,0,1,014,0,024,32,010,0,0,128,32,16,010,0202,0,
+0x1,0x8,2,0,2,6,0,0x1,24,0,0x1,0140,0,0,014,128,0101,0,1,0134,0377,0,
+011,96,041,0114,0x2,0,07,3,0142,0,0,04,1,0,19,16,0,01,64,0,0,8,0,0,01
+,0,01,04,0,0,0x28,0,0x1,6,0,1,0x18,0,1,0140,0,0,12,128,0x5,0,0x1,56,
+248,128,1,0,0x4,24,64,0x21,010,0,0,05,132,01,48,0,1,192,72,0,0,1,32,0
+,01,05,0x4,0,021,0240,01,0x4,0,0x1,16,0,0,0x12,0141,0,2,011,48,0,01,
+0102,0,0,192,0,0,24,0,0x2,132,0101,168,8,01,2,0120,251,0,0,128,0,5,8,
+0x2,0x2,0,03,0x1,16,0,03,8,0,0,0x1,0,12,012,0,0x6,05,0,5,8,0,3,4,0,
+0x5,64,0,0,010,0,04,01,0,0,16,0140,248,224,01,0,4,0x1e,0,0,1,0140,32,
+014,0342,01,074,0,1,0360,0,0,06,192,0,02,014,0,024,054,0,1,176,0,0,
+026,192,2,0,0x1,013,0140,0,0,014,0,0x1,240,0,0,0x1e,0,0x1,0x18,0,1,
+0202,01,014,0,0,64,248,0x24,128,0,04,0x2,02,02,0,0,2,0214,32,128,0x4,
+0101,0,0,16,64,0x2,64,0,02,0214,2,0,2,4,0,0x5,16,2,0,0x5,010,132,024,
+0,1,0120,0,0,012,64,01,0,0x1,5,32,0,0,4,0,0x1,16,64,0202,16,0,0,010,0
+,02,137,0x4,0,0,0152,0376,014,0,07,01,0140,17,054,0x2,0,05,0x58,010,
+19,0,01,0114,0x2,0,02,2,0,05,16,01,0,5,0x8,128,0x18,64,0,0,0140,0,0,
+149,144,0x1,04,0,0,012,128,0105,48,16,0,05,0140,0,0x1,132,0120,176,32
+,56,248,192,01,0,0x4,034,192,02,0x78,0,0,017,192,0x1,56,0,0x1,224,0,0
+,036,192,3,0x1,0,0,15,0,3,7,0,0x5,144,0x3,0,0x5,104,0,0,36,0,0x1,144,
+0,0,16,64,0x2,0,01,011,192,0x1,074,0,0x1,224,0,0,28,0,01,120,32,0x3,
+224,1,074,0,0,128,0372,8,0,07,0x1,0140,16,014,010,0,0x5,0x18,0,0,03,0
+,0x1,014,0,0x2,128,05,0,5,208,2,0,5,8,0,0,32,0x8,0,0,128,32,16,0,0,
+0202,0,1,0x8,128,01,48,0,06,0140,0,0,014,128,0,0,48,0,0,145,0372,128,
+01,0,4,24,0,0,2,96,0x4,054,128,0x1,48,0,1,192,0,0,24,0,0,0x3,0,01,014
+,4,0,2,4,0,0x5,8,0x2,0,5,04,16,021,01,0,0,64,4,16,021,17,0,1,0x8,128,
+0x1,48,0,01,208,0,0,0x1a,0,1,96,0,0,0x4,144,021,49,0,0,0130,248,0,1,
+16,0,032,04,0,6,0x2,0,043,0274,254,32,0,0x1,128,0,0,16,0,0,0x2,64,0,0
+,8,0,0,0x1,32,0,0,04,128,0,0,16,0,0x1,64,0,0,8,0,0,1,32,0,0,0x4,0,0x7
+,0x2,0,06,0x21,0,0,4,128,0,0,16,0,0,02,64,0,0,8,0,0,01,32,0,0,4,0,4,
+64,0,0,010,0,0,1,32,0,0,0x4,0,0,208,252,0,0112,152,0377,0x28,0,0,0x4,
+128,0,0,16,0,0,02,64,0,0,8,0,0,01,32,0,0,0x4,128,0,0,16,0,0,0202,0102
+,0,0,0x8,0,0,1,32,0,0,04,0,15,32,0,0,4,128,0,0,16,0,0,0x2,64,0,0,0x8,
+0,0,0x1,32,0,0,0x4,128,160,16,024,0202,0102,0,0,010,0,0,01,32,0,0,4,0
+,0,59,0373,0,0,04,128,0,0,02,0,0,2,64,0,0,0x8,32,0,0,04,0,0,0x4,128,0
+,0,16,0,0,02,72,0,0,0x1,0,0,01,04,0,0,132,128,0,17,16,0,0,0x2,64,0,0,
+64,0,0,0x1,32,0,0,04,0,0,32,16,0,0,18,0102,02,72,0,0,0x8,041,0,0,04,
+128,0,0,16,0,0,0161,251,0,0,128,0,0,16,0,0x1,64,0,0,010,0,0,01,0,0x2,
+128,0,0,16,0,0,2,64,0,0,0x8,0,0x1,32,0,0x3,16,0,14,32,0,6,8,0,03,64,0
+,4,64,0,0,8,0,0x7,26,0372,04,0,0x49,156,255,0,0,0x28,0,0,161,0,01,024
+,128,02,0120,010,0,0,1,0,0,0x28,0,0,0x5,160,0,0,024,0,0,64,0,0x1,012,
+01,0,0,0x28,0,0,5,0,14,32,0,0,4,128,0,0,16,0,0,128,0102,0,0,0x8,0,0,
+0x1,32,0,0,0x4,0,0x5,0120,0x8,0,0,01,32,0,0,0x4,0,0,216,0372,0,037,32
+,0,06,16,0,04,64,0,0x13,0x2,0,06,0xc8,0372,0,024,128,0,0,1,0,0,4,0,0,
+01,0,041,4,0,07,010,0,02,216,0372,0,6,01,0,011,0x8,0,03,1,0,3,02,64,0
+,0x15,16,0,011,4,0,011,0x4,144,253,0,0,0x2,0,12,64,0,0x1d,32,0,0x1,
+136,0,13,64,0,0x2,32,0,0,01,0,3,56,248,0,24,8,128,0,34,0x2,0,03,1,0,
+01,32,0,0,64,0,1,216,0374,0,0,1,32,0,01,128,0,0,16,0,0,0x2,0,0x3,0x1,
+32,0,0,04,128,0,0,16,0,0x1,64,0,0x3,32,0,01,8,0,06,0x4,0,06,02,0,3,16
+,0,0x1,64,0,06,128,0,0,16,0,07,32,0310,0372,0,017,16,0,07,2,04,0,18,
+64,0,02,64,32,8,0,0,128,16,0,0,04,0x4,0,0x1,32,0,0x2,0x4,0x4,0,0x7,
+208,0373,0,05,128,04,0,0x1,1,0,8,8,0,031,16,8,0,04,0x1,64,0,1,34,0,03
+,32,64,0,01,01,0,4,0x8,0,0,010,251,0,1,16,8,0,0,64,128,2,0,0x1,02,0,
+0x4,16,0x2,128,2,2,0,0x3,02,134,0,0x12,128,04,32,02,32,64,0214,0102,0
+,0,57,0,0,0x2,0x2c,0,0x1,16,0x2,0120,128,04,0114,0,0x5,4,128,120,0374
+,32,0,4,0102,0x1,02,0,0,5,0,0,4,01,0,0,0x4,046,0,0,16,2,64,0,0,2,010,
+0,0,64,32,4,04,0132,0,16,32,0x8,0,0,64,32,18,054,0103,0,1,8,02,3,32,0
+,2,2,168,0,0,010,0,3,32,32,0x4,184,0377,0,013,02,0,017,16,0,021,0x8,0
+,0,64,32,0,0,132,0,0x3,02,0,0x5,0x8,0,0x7,128,0120,0372,0,7,0x8,0,3,
+02,0,01,16,0,04,01,0,0x17,16,0,0x3,0x8,0,0,129,0,01,4,128,0,0,4,0,012
+,128,8,16,16,0374,0,014,02,0,18,01,0,0x5,128,0,041,128,0374,0,28,128,
+0,0x6,64,0,0x6,32,0,034,112,0373,0,024,128,0,012,0x2,0,021,0x2,0,013,
+64,0,0x1,16,0,0x5,56,0372,16,0,013,64,0,0x3,32,0,032,0x1,0,0x4,04,16,
+0,0,128,0,0x5,010,0,0,1,32,0,010,36,248,0,011,01,0,015,4,0,34,16,0,12
+,136,0373,0,0x3,16,0,0105,136,254,0x8,0,0,64,0,0,0x8,0,4,128,0,0,1,0,
+0x6,0x28,0,0,0x4,0,46,0x12,0,1,64,0,0,0362,0371,0,014,011,0,013,010,0
+,4,0x1,0,5,128,0,011,04,0,04,64,0,03,32,0,0,4,128,0,0,16,0,01,64,0,2,
+1,0,0,120,253,0,0x23,16,0,0x6,0x8,0,29,8,0377,0,042,128,0,06,64,0,
+0x1e,0120,0373,32,0,3,16,0,0,2,0,7,128,0,0,16,0,0x4,128,0,0,32,0,0x2,
+0x8,0,03,128,0,01,0x4,0,015,32,0,1,128,0,021,104,252,0,59,8,0,13,144,
+0377,0,037,02,0x4,0,0x5,0x1,2,0,4,1,0,26,0xc8,0372,0,0112,152,0377,0,
+012,01,32,0,010,010,0,1,32,0,45,4,0,01,64,0371,0,012,32,0x8,0,0x8,02,
+0,01,010,0,0x2b,0x8,0,03,144,0377,0,0,02,0,013,02,0,0x3,1,0,1,2,128,0
+,0x2,2,0,0x17,32,0,012,01,0,01,04,0,6,48,0373,0,1,04,0,29,2,0,0x21,4,
+0,0x5,184,253,0,05,128,0,04,16,0,0x1,1,32,0,0,4,0,01,16,0,1,64,0,010,
+4,0,06,012,0,011,16,0,010,2,0,03,0x4,0,0x5,96,0375,0,0,128,0,0x6,1,0,
+0x5,16,0,01,64,0,1,128,0,05,16,0,014,128,0,0x8,010,0,013,8,0,07,0172,
+248,0,026,8,0,3,4,0,0x6,1,0,5,192,0,21,02,0,07,0140,0374,0,36,01,0,
+0x15,128,0,5,0x2,0,3,32,0,01,56,0374,0,01,128,0,6,16,64,2,0,013,2,0,
+023,32,0,01,128,0,0x14,64,0,2,010,0374,0,011,192,0,073,0x1,0,0x2,192,
+0373,0,06,0x2,0,0x4,64,0,011,64,0,023,32,0,0x2,2,32,32,0,01,129,0,0,
+32,4,0,4,2,0,0x1,04,0,0x7,0x28,248,0,01,010,0,06,32,0,010,010,0,7,16,
+0,016,128,0,1,0x8,0,2,8,0x4,0,0x3,0202,0,02,0x2,0,0x4,32,16,4,0,0,128
+,0,0,128,0214,0374,0,0,64,024,0,0x3,4,0,0x1,010,0,0,4,64,3,16,0,01,
+0x1,0,0,2,0,0,0121,0,0,32,4,0,02,32,0,2,0x4,8,32,0,04,02,0,0,16,32,96
+,0,1,32,01,32,64,02,144,129,1,48,02,168,0,0x1,128,0,0,02,0,0,0x8,0x8,
+0,0,0x8,64,0x1,2,0,0,01,0,0,0120,249,0,1,144,0,0,0x2,0,0,0140,3,0x4,
+0x2,0,01,0x28,0,01,132,0,0,32,16,32,64,0,0,0x18,0,1,136,024,0,17,128,
+132,18,8,16,129,48,0360,0107,0275,0105,0,0,4,1,03,16,010,64,032,0,0,
+0202,0,02,8,0x21,128,0,0,32,0x8,0120,0374,0,01,010,128,0,1,64,0,0,010
+,0,011,64,0,0x18,64,0,0,16,8,0,0,01,64,0,0,0x4,129,0,01,04,0,1,0x8,
+0x8,0,8,128,0,1,8,24,255,0,8,01,0,01,04,0,013,04,0,23,64,32,0x8,16,0,
+0,64,0,1,0202,0,011,0x8,0,0x2,16,0,0,48,252,0,25,0x1,0,7,64,0,06,32,0
+,036,168,0371,0,012,0x1,0,59,128,0,0x1,0x8,0377,0,36,01,0,4,0x8,0,3,
+32,0,01,128,0,02,0x2,0,01,010,0,017,0x38,0374,0,043,1,0,06,0x1,0,0x7,
+0x2,0,0,32,0,011,128,04,0,03,2,64,0,0,120,254,0,0x15,64,0,0x2,010,0,
+056,128,182,253,0,012,8,0,076,24,0377,0,0112,152,0377,0,013,2,0,074,
+128,0164,0371,0,12,0x1,0,012,021,0,15,4,0,0x2,04,0,0x5,4,0,4,4,8,0,
+014,64,192,0372,0,0x1,64,0,02,64,32,0,1,0x1,0,2,128,0,0,64,0x8,0,0x2,
+0x8,0,45,128,0,0x5,48,0374,0,12,16,0,16,32,0,0x6,16,0,04,64,0,0x1c,
+248,0374,32,0,1,16,0,0,16,0,0,0x2,64,0,3,32,0,0,4,128,0,0,16,0,0,2,0,
+0,0x4,0x8,0,0x1,042,0,0,0x4,0,0x16,0x2,0,0x1,0x8,0,01,32,0,1,128,0,0,
+16,0,0,2,64,0,5,32,0,0,0240,0376,0,3,64,0x2,0,0,64,8,0,5,48,0x6,0,7,
+129,0202,0x1,0,0x19,32,0x29,0,1,32,0,1,138,0,2,2,0,010,176,0372,0,032
+,128,0,032,64,0,18,0130,0373,0,2,128,01,0,1,0x6,0,6,074,0,8,4,0342,01
+,0,0x18,192,0,0,0130,0,1,96,01,014,128,0x5,0,0x1,026,0,010,136,253,0,
+2,128,0,02,2,0,06,04,18,0,0x7,136,32,0,0,01,0,027,64,0,0,0x28,0,0x1,
+160,0,0,04,128,0x2,0,1,012,0,8,128,0371,0,0x3,06,0,0x1,0x18,0x8,0,15,
+32,0,0x1b,0x23,064,1,0,0,192,4,48,0x6,0x13,0,1,0114,0,0x8,0130,0371,0
+,02,128,0x7,0x4,0,0,036,0,6,0x38,0,8,017,0xc8,01,0,24,192,0x3,0x48,64
+,0,0,32,1,0x3d,128,0x4,04,0,0,0x12,16,0,0x7,0170,248,0,0x3,06,0,0x1,
+0x18,0,16,0x4,0,0x1b,0x3,64,0,0x2,01,48,0,0,0x4,0,1,16,0,8,16,0372,0,
+03,06,0,1,24,0,06,48,0,0x8,014,144,1,0,25,0x3,32,18,0,0,128,0x48,48,0
+,0,34,0x1,0,0,136,0x4,0,7,208,255,0,01,176,192,02,010,0,0,64,0x8,0,14
+,0x24,0,013,48,0,06,0x18,0,0,064,0,0x5,32,011,0,0,133,041,0,01,128,0,
+0x2,02,0,0x8,232,0371,0,36,014,0,0x6,6,0,0,48,0,010,8,0,16,120,0376,0
+,01,074,0,0,02,01,0,0,06,0,016,24,0,014,014,0,6,06,0,6,192,0,0,0130,0
+,0,014,0140,1,0,0,128,0x5,0,0x1,026,0,010,112,249,0x8,0,0,4,32,16,0,1
+,2,0,016,010,0,014,012,0,06,0x5,0,0x6,64,0,0,0x28,0,0,72,164,0,0x1,
+128,2,0,0x1,012,0,0x8,218,249,0,03,64,0,0x1,0x18,0x2,0,13,0140,0102,0
+,013,012,0,0x6,05,0,0x1,32,0,4,03,48,0x1,0x4,192,04,0,1,19,0,0x1,0114
+,0,010,0120,0374,0,0x1,56,128,0x5,02,0,0,0x1e,0,016,0170,0,026,014,0,
+04,192,03,0112,64,017,0x28,0x1,0x1,128,04,0x4,0,0,0x12,16,0,7,248,
+0375,4,0,3,4,0,0,0x18,0,016,0140,0,035,03,64,0,0,4,0x2,0x1,0,01,4,0,1
+,16,0,010,0161,253,0,1,48,0,0x3,24,0,016,0140,0,027,16,0,0x4,3,32,16,
+0114,128,64,0,1,0x2,0x1,0,0,010,4,0,07,240,0376,0,03,64,194,0,0,0202,
+0,0x4,160,021,0x31,0x6,0,06,0x24,0,013,16,0,0x6,010,0,0x7,32,011,0,1,
+32,0,0,164,128,0,2,02,0,02,36,0,04,56,0377,0,05,64,0,0,04,0,0x1b,16,0
+,06,010,0,015,16,010,0,014,0x18,0376,0,0x2,128,1,0360,0,0,0x8,0,4,128
+,0101,074,0,0x6,24,0,014,2,0,6,1,0,0x6,192,0,0,0x58,0,0x1,0140,0x1,
+0x1c,128,0x5,0,01,0x16,0,01,0x18,0,05,0x28,248,04,0,1,128,0,0,16,72,
+144,010,0,3,128,011,04,32,0,05,010,0,014,16,0,06,010,0,06,64,0,0,0x28
+,0,0x1,0240,0,0,0x24,128,02,0,1,012,0,01,8,0,05,042,0376,12,0,2,0106,
+010,0,0,64,0,4,128,0,0,2,0,06,0140,01,0,013,02,0,06,01,0,7,023,49,1,0
+,0,192,04,32,0,0,0x13,0,01,0114,0,01,0140,1,0,4,176,0374,0,02,128,07,
+224,0,0,036,16,0,3,224,1,56,0,6,0170,32,0,013,32,0,6,16,0,0x6,192,3,
+0x48,64,0,0,32,0x1,021,128,4,04,0,0,18,16,0,0,0170,64,0,0x4,0140,0375
+,0x8,0,02,0x6,0,0x1,0x8,0,04,128,0101,0,0x7,0140,0,014,02,0,0x6,01,0,
+7,0x3,64,0,0x2,0x1,16,0,0,04,0,1,16,0,0x1,96,0,5,0x31,0371,0,0x3,06,
+192,0,0,0x18,32,0,3,128,01,48,0,06,0140,0,035,0x3,32,021,0,0,128,0104
+,32,0,0,18,01,0,0,72,4,0,0,0140,0,5,56,0372,0,03,64,02,0,0,64,8,0,04,
+144,0,0x6,32,2,36,128,0x4,0,0,4,0,07,042,0,0x6,145,01,0,6,32,011,0,
+0x1,32,0,0,36,128,0,2,2,64,3,104,18,0,0x2,52,0,0,0174,0377,0,024,8,0,
+016,8,0,6,4,128,0,014,16,0,05,0x3,0140,0,0x3,48,0,0,112,253,0,2,128,
+01,0,1,0x6,0,4,96,0,05,0x6,192,0,0,24,0,0,0x3,0,2,32,0,6,02,0,06,0341
+,01,0,0x5,192,0,0,0x58,0,01,0140,1,054,128,5,0,01,0x16,192,03,64,16,0
+,02,48,0,0,56,0372,8,0,01,128,0,02,0x2,0,0x4,32,0,05,0x2,64,0,0,010,0
+,0,0x1,0,2,01,0,06,02,0,0x6,0x21,0,0,1,0,0x4,64,0,0,0x28,0,0x1,0240,0
+,0,0x14,128,02,0,1,012,64,0x3,32,0x2,0,02,48,0,0,219,0376,0,0x3,38,8,
+0,0,0130,0,0x4,128,011,2,0,03,24,021,0143,0140,0,0,0214,010,0,01,041,
+0,6,16,0,6,0x8,0,7,03,0x32,1,0,0,192,0x4,0x18,0,0,023,0,0x1,0114,0,0,
+03,0140,132,0,3,012,0x31,251,0,2,128,07,0,0x1,036,0x8,0,3,224,0x1,0,
+04,0x1e,192,03,120,32,017,0,01,014,0,017,192,1,0,5,192,03,72,64,0,0,
+32,1,0x21,128,0x4,04,0,0,0x12,144,3,24,0,3,014,0,0,218,251,4,0,0x2,06
+,0,0x1,0x18,0,4,128,0x1,0,04,0x18,0,0,0x3,0140,0,0,014,0,0x2,16,04,0,
+0x5,012,02,0,5,05,0,07,03,64,0,0x2,1,16,0,0,4,0,0x1,16,0,0,3,64,64,0,
+04,0334,251,0,3,6,0,0x1,24,0,0x4,128,01,0,0x4,24,0,0,3,96,0,0,12,0,01
+,176,0,0,0x2,0,6,01,0,05,128,0x1,0,6,3,32,024,0,0,128,0120,32,0,0,
+0102,1,0,0,010,05,0x3,0,0,2,0,04,32,0374,16,144,0,1,64,0x2,0,0,64,8,0
+,04,144,0,07,104,16,128,04,0,0,48,146,0,06,0106,0,6,0x3,0,0x6,64,32,
+0x8,0,0,128,36,0,01,138,0,02,0x2,64,3,0,0,36,0,05,0375,0,026,64,0,0x5
+,2,0,5,4,1,0,0x5,02,0,0x7,128,0,023,8,0377,96,0,1,128,1,0,0x1,06,0,
+0x4,0140,0,8,96,16,0x3,0,1,074,128,0,06,72,0,6,0x4,0,7,01,0x58,0,0,
+0x3,0140,01,014,128,0x5,0,0x1,026,192,131,24,0,06,0372,054,0,0x1,128,
+0,2,02,0,04,32,0,010,64,0,0,0x1,0,1,04,32,011,0,5,138,0x4,0,0x5,0x5,0
+,07,0212,0x28,0,0,0x1,0240,0,0,4,128,02,0,0x1,012,64,013,0x8,0,0x5,
+0102,248,132,0205,0,0x1,38,0,0x1,24,03,0,03,128,011,0,7,32,0202,014,
+01,0,0x1a,0x8,0x34,0x1,014,208,4,48,64,19,0,01,0114,0,0,0240,0140,042
+,0,04,168,254,224,1,0,0,128,07,0x4,0,0,0x1e,0,04,224,129,0,0x7,120,0,
+0,15,0,1,56,0,0x17,192,03,72,64,017,32,0x1,0x3d,128,4,4,0,0,0x12,208,
+3,0170,0,5,72,253,132,01,0,0x1,6,0,1,24,0,0x4,128,1,0,0x7,0140,64,014
+,0,0x2,128,2,0,05,64,01,0,016,01,64,16,014,0,0,0101,48,0,0,04,0x1,0,0
+,16,0x4,128,0140,0,0x5,217,0376,128,01,0,0x1,06,0,0x1,0x18,0,4,128,01
+,0,0x7,0140,0,0,12,0,1,48,0,0,010,0,0x6,0x4,0,14,0123,32,04,014,128,
+16,48,0,0,0102,0,1,010,0101,043,0140,0,05,0xc8,0376,0,0x2,128,38,0x1,
+0,0,26,0,3,014,0,0,144,176,64,0106,0,05,36,128,04,0,021,128,01,0,0x5,
+64,0,0,010,0,0,128,36,0,0,4,128,0,0,16,0,0,02,64,0,0,0x8,1,0,4,0310,
+0377,0,03,0x6,0,0x1,24,16,0,03,8,0,03,0x4,0,011,128,0,06,64,0,7,128,0
+,06,128,0,015,16,0,04,152,249,0,3,04,0,01,16,0,3,017,0140,0,0,0x3c,
+128,0x7,0,4,24,0,0,3,0,3,4,0,0x6,02,0,0x5,224,1,0,0x6,01,0x58,0,0,0x3
+,0140,01,0,0,128,5,192,0,0,026,192,0,0,32,16,0,04,48,0372,0x8,0,0x2,
+18,01,0,0,8,04,0,2,0x1,0x28,0,0,04,146,32,8,0,3,0x8,0,0,0x1,0,18,32,
+144,0,06,0242,0x28,0,0,0x1,0240,0,0x1,128,02,192,0,0,012,64,0,0,64,0,
+0x5,062,0377,0,03,0x16,0,01,0130,0,4,128,021,0,07,0140,129,12,0,02,
+128,2,0,0x5,64,0x1,0,14,8,52,1,0114,196,0x4,48,1,0x13,0,0,136,0114,0,
+0,0x13,0,0,132,0,04,16,248,0,2,128,01,4,0,0,0x6,16,0,0x2,016,224,1,
+0x39,0,0,7,0,04,0x78,0,0,017,8,0,021,192,0x1,0,05,192,3,72,64,15,32,
+0x1,075,136,04,0x34,0,0,18,208,131,0170,0,0x5,192,0377,04,0,2,0x4,0,1
+,16,0,04,128,1,0,0x7,0140,0,0,014,0,0x2,128,1,0,5,192,0,017,01,64,16,
+014,0,0,0101,0,01,4,1,0,0,16,0x4,3,32,64,0,4,193,249,0,03,128,0,02,32
+,0,0x2,014,128,1,48,0,0,06,0,0x4,96,0,0,014,0,0x3,01,0,0x5,128,0,0x6,
+128,01,0,6,0123,32,1,014,128,0x4,128,010,18,0,0,128,72,64,3,96,2,0,
+0x4,16,0374,0,0x2,128,32,0,01,012,0x4,0,3,32,48,0,01,0106,192,72,0,01
+,32,012,17,128,04,0,0x2,0x2,0,06,1,0,12,0x2,64,147,8,0,0,0101,34,0,0,
+0x4,128,0,02,02,64,0,0x1,0x24,0,2,176,0,0,104,248,0,4,1,0,0x4,32,0,05
+,4,0,011,128,2,0,0x5,64,1,0,14,0x2,0,021,48,16,32,0377,0,03,2,0,01,
+0x8,4,0,0,24,0,0x1,128,0,1,128,7,240,0,0x1,192,0,0,32,0,0,0x3,0,0x1b,
+0x3,0132,0,0,04,0142,01,0,0,128,05,0,01,026,0,0,03,0x18,0,3,0x3c,0,0,
+0120,0375,0x8,0,0x2,36,01,0,0,64,0,1,8,0,0x2,05,01,128,64,18,0x48,0,0
+,64,0,0,64,021,1,0,012,02,0,06,1,0,07,042,0x28,0,0,0x28,160,0,01,128,
+2,0,0x1,012,0,0,03,010,0,3,064,0,0,58,0375,0,03,16,0,2,011,0,0,96,014
+,0,01,16,0x2,0,0x5,0x3,4,0x1,0214,0,012,010,0,6,04,0,0x6,021,011,48,
+0x1,128,208,0x4,128,0x8,19,0,0x1,0114,0,0x1,0142,0,0x4,012,72,0374,0,
+02,128,07,4,0,0,026,0,01,0x78,0,0x1,224,1,0,01,0x7,224,0,0x1,192,03,
+120,64,017,4,0,0x18,6,192,3,0112,64,15,32,01,13,128,0x4,04,0,0,0x12,
+208,0,0,120,64,0,2,014,0,0,64,248,04,0,02,02,0,2,16,0,0,0140,0,0x1,
+128,64,0,6,0x3,32,0,0,014,0,031,24,8,3,0102,16,4,8,0101,48,32,0x4,0x1
+,0,0,16,04,0,0,96,0,05,0231,0373,0,0x3,134,0,4,96,0,1,128,021,0,0x1,6
+,192,0,02,03,0140,010,014,0,031,0x18,0,0,0x3,32,0,0,0114,128,0,0,48,0
+,0,0x2,0,1,8,0,1,0141,0,05,192,253,0,2,128,026,02,0,0,032,0,0,3,0,2,
+32,0,0,01,0,0,0106,0x4,0,0x1,64,0,0,8,4,041,0202,021,1,0,021,04,0202,
+64,2,72,0,0,64,011,8,0,0,0215,34,0,0,04,128,0,0x2,0122,64,0,1,36,128,
+164,16,05,18,128,0371,0,3,04,0,01,24,4,0,0,0x2,0,014,16,0,013,8,0,06,
+0x4,0,0x1,0x8,0,04,2,1,0,0,8,0,0x6,010,16,0,04,01,0,0x1,56,0376,0,3,
+06,1,0,0,16,196,0x3,0,02,128,0,0x1,128,0x7,0,0x2,192,0,0,32,0,0,0x4,
+224,01,0,0x12,48,32,2,064,0,2,0x3,0130,0,0,12,104,1,12,128,5,0,0x1,
+026,0,0x1,24,0,0,3,128,0,0,16,32,24,0374,010,0,0x2,0x4,0,0x1,0x8,0101
+,32,0x1,0,02,5,2,128,64,02,0,0x1,64,0,0,64,0x14,136,34,0,0,0x1,0,0,
+0x4,0,0x5,16,02,0,0x5,0x8,0,0,48,0,1,16,0,02,18,41,0,0,0x28,0240,0,0,
+4,128,02,0,0x1,012,0,0x1,0x8,0,0,1,0,0,0x1,0,01,0132,0373,0,0x3,18,04
+,0,0,0130,32,0,4,0104,0,6,163,0,0,132,32,0,0x3,2,0,5,16,01,0,0x5,0x8,
+0,0x1,041,026,196,0,02,011,061,01,0104,208,4,48,011,023,0,01,0x14,0,0
+,160,0140,2,0214,128,0,0,176,64,136,0377,0,2,128,07,0,01,0x6,128,0x3,
+0,0x2,224,1,0,01,0x7,0,0x2,192,0x3,120,0,0,017,0310,0x1,0,1,7,0,5,144
+,03,0,0x5,0x8,0,0,054,128,07,0360,64,0,0,192,3,72,64,017,32,01,0x3d,
+128,04,0x4,0,0,0x12,192,0,0,0170,32,017,104,0x1,0x3c,0,0,0x18,0373,04
+,0,02,06,0x4,0,0,16,16,0,0x3,128,0,07,03,32,64,4,0,02,128,5,0,05,208,
+02,0,5,0x8,0,0,48,16,0x6,196,0,2,129,64,16,12,0x8,0101,48,0,0,4,1,0,0
+,16,0,0,131,96,0,0,12,128,0,0,48,32,0371,0374,0,0x3,0x6,0,1,128,0,0,
+0x3,0,02,128,0121,0,0x1,6,0,2,64,0x3,96,0x2,014,144,01,0,0x1,04,0,0x5
+,0x8,02,0,0x5,4,0,0,16,0,0,042,192,0,0x2,3,32,02,014,128,010,064,0,0,
+042,0,0x1,16,0,0,0x23,0140,0,0,014,0,0,01,16,01,176,248,0,024,128,0,
+07,4,0,06,0x2,0,024,010,0,13,064,0377,32,0,0,0x4,128,0,0,16,0,0,2,64,
+0,0,010,0,0,1,32,0,0,04,128,0,0,16,0,0,0x2,0,0x1,0x8,0,0,0x1,32,0,0,4
+,0,0x7,16,0,06,0x28,0,0,0x4,128,0,0,16,0,0,0x2,64,0,0,8,0,0,0x1,32,0,
+0x1,128,0,0,16,0,0,02,128,0,0,0x8,0,0,0x1,32,0,0,0x4,0,0,64,0372,0,
+0112,152,255,0x28,0,0,04,128,0,0,16,0,0,02,64,0,0,0x8,0,0,01,32,0,0,
+0x4,128,0,0,16,0,0,02,64,0,0,8,0,0,1,32,0,0,4,0,017,32,0,0,0x4,128,0,
+0,16,0,0,0x2,64,0,0,0x8,0,0,0x1,32,0,0,0x4,128,0,0,16,0,0,0x2,64,0,0,
+0x8,0,0,01,32,0,0,4,0,0,0243,0374,0,0x1,128,16,0,0x1,0102,0,01,010,1,
+0,0,32,4,0,0,128,16,16,02,0102,0,0x6,132,128,0,16,132,0,015,34,0,03,
+128,144,0,4,0x8,0,0,0131,0374,64,0,02,0x1,0,0x1,04,0,0x1,16,0,1,64,0,
+05,04,128,0,0,16,0,0,02,0,0x2,16,0,16,0x4,128,0,0,32,0,0,2,128,0,0,16
+,0,0,0x2,64,0,0,8,0,0,0x1,16,0,0,04,0,0x1,16,0,0,02,32,0,0x2,0x1a,249
+,0x4,0,73,156,255,32,0,0x1,0205,0,0x1,0x14,02,0,0,0120,010,0,0,64,
+0x21,0,01,0x5,0240,0,0,0x14,02,64,0,0,8,0,0,1,0,0,0x28,0,0,5,0,017,
+0x28,4,128,0,0,16,0,0,02,64,0,0,8,0,0,1,32,0,0x1,128,0,0,16,0,0,0x2,
+64,0,0,0x8,0,0,01,32,0,0,4,0,0,168,0375,0,4,128,0,2,02,0,04,32,0,0,
+0x4,128,0,4,128,0,0x2,128,0,16,01,0,27,0130,0374,0,0x23,32,0,06,16,0,
+0x1d,184,0376,0,02,64,128,0,012,64,0,0x32,64,0,5,144,0377,02,0,15,16,
+0,0x8,0x4,0,024,0x1,0,0x1,0x4,0,012,0x2,0,3,32,0,01,0x4,0x28,0,0,48,
+249,0,1,16,0,0x1,64,0,1,32,1,0,0x1,04,0,0x1,0x12,0,0,02,64,0,06,128,0
+,021,128,0,0x8,4,0,0x12,144,0373,0,027,0x48,0,02,32,0,4,32,0,0x6,16,0
+,14,8,0,011,64,0,0x4,0x8,0377,0,0x1,4,0,1,16,0,3,1,0,0x4,16,0,07,02,0
+,0x1c,0x8,0,0,04,2,0,0,0x4,0,03,4,0,011,0376,0,0x6,0x8,0,39,128,0,0x5
+,32,16,0,0,129,64,0,0x1,2,041,32,0,0,4,128,0,1,02,0,01,010,0,0,0x48,
+252,0,1,0x8,0,0x1,0140,024,2,0,01,0x1,0,0x3,16,0x15,0,4,012,0,1,02,2,
+0x28,0,19,128,0,0x5,24,64,2,054,0x5,0151,0216,0,0,024,128,4,16,0,0,2,
+0,0,1,0,0x1,0x4,0,0,216,0375,0,0,16,01,0,02,4,0,04,010,1,0,01,0122,0,
+3,64,0x8,0,04,16,0x8,0,14,32,0,1,0x28,0,01,48,0,03,12,96,128,0104,
+0x24,0x6,04,0,0,04,16,0,0,112,64,0,0,4,0,0,043,32,014,168,248,0,27,16
+,16,0,021,0x8,0,0x1,64,0,0x5,128,64,0,011,2,0,2,32,217,0372,2,0,012,2
+,04,0,0x24,128,0,03,16,0,02,16,8,2,0,0x1,010,0,0,128,32,0,01,128,128,
+0x8,16,0271,248,0,0x3,0x8,0,27,64,010,0,05,32,4,0,03,128,0,18,8,0,06,
+152,0371,0,0x16,64,0,8,0x8,0,6,12,0,32,0120,0373,0,016,1,0,01,02,0,
+0x37,168,252,16,0,16,32,0,0x8,010,0,16,02,0,0x8,16,0,0,16,64,0,0x2,1,
+0,1,4,0,0x7,36,248,02,0,03,05,0,0103,128,0140,0375,0x4,0,02,16,0,1,64
+,0,0x5,0x4,0,8,01,0,034,8,0,01,32,0,16,0341,0376,0,27,16,0,02,128,0,6
+,64,0,0x21,64,0372,0,0x4,0x6,0,16,128,0,062,112,0377,0,0112,152,255,0
+,0103,32,0,5,152,253,128,0,45,64,0,011,1,0,7,4,0,0x6,24,0376,0,0x4,
+010,0,0,2,0,25,2,0,0x6,01,0,037,8,0376,0,0x6,6,0,0x1b,128,0,0x6,64,0,
+0x1d,24,0375,0,0112,137,0376,0,0112,152,255,0,7,0x8,0,0x13,04,0,046,
+16,0,4,72,255,0,0112,152,0377,0,016,1,0,5,8,0,0x1,01,0,061,255,0,02,
+16,0,010,0x4,0,0x1,16,0,0,4,0,07,128,0,0,16,0x8,64,0,0,32,0,0,64,0,1,
+4,32,0,0,16,0,0,32,0,0x1,128,0,27,0x78,252,0,6,32,0,16,32,04,0,03,16,
+0,02,16,0,2,8,0,0x2,8,0,011,64,0,18,128,128,0377,0,14,4,0,057,64,0,8,
+64,152,0373,0,0x4,0x1,0,01,4,0,04,64,0,0x8,16,0,0,02,0,023,136,0,0,16
+,0,0,1,64,0,01,0x2,0,0x3,128,0,013,128,0,0,56,0375,0,6,72,0,05,0x4,0,
+8,0x1,0,0x1f,32,0,012,0x1,0,04,48,251,64,0,2,1,0,07,64,0,0x8,16,0,0,2
+,0,027,32,0,01,192,0,2,0x2,0x4,0,8,16,0,0,2,0,3,48,0372,0,1,010,0,011
+,64,0,06,64,0,0,16,0,18,64,0,010,128,0,0,32,16,0x4,0,0,64,16,0,0,02,2
+,32,02,0,0,128,0,0x2,010,0,0x1,16,0x28,252,0,013,01,0,0x2c,02,0,0,010
+,0,0x3,010,0104,0,0x3,0x2,128,16,0,0,176,0371,0,0x1,0x8,0,03,0120,0,
+01,64,0x1,01,64,0,2,0x14,0,0x2,128,0,0,16,012,0,0x3,0x5,0,12,64,0,1,3
+,0,0,8,0,0x3,128,0,0,16,32,02,136,128,014,0,0,01,0x2,64,0x6,0120,0120
+,1,0,01,014,0,0,0x5,16,128,0374,0,01,0120,128,0,01,32,0,0,0104,0,3,
+011,0,01,160,18,04,136,34,0,01,192,0,01,64,0,0x5,0x18,0x6,128,0,0x4,
+014,02,0,0,0x8,0,0,3,0,0,1,0x4,192,0,01,17,0141,0,1,0140,32,046,128,
+012,132,128,025,16,0102,2,0,0,0x8,72,128,0x1,32,0x8,112,252,0,01,16,0
+,0x2,64,0,0,010,0,07,0x1,0,016,0x8,010,0,0x5,4,0x4,0,6,32,0,02,01,0,5
+,0x8,0,8,64,0,01,16,0120,0374,0,12,4,0,0x8,32,0,8,16,2,128,0,4,8,0,1,
+8,128,0,0x2,0x2,64,0,2,128,0,3,64,0,01,0x2,0104,32,8,04,1,0,0,010,04,
+128,0,0,16,0,0,0120,255,0,026,0x2,0,6,32,0,6,16,0,8,16,0,012,32,0,012
+,128,0,0,176,254,0,0x13,64,0,010,8,1,0,0,16,0,3,132,0,8,4,0,031,8,
+0376,0,48,128,0,03,1,0,01,0x1,8,0,017,24,0377,0,06,04,0,0x2d,0x7,0,1,
+16,0,16,248,252,0,015,129,0,16,64,0,0x6,32,0,32,128,168,249,0,0112,
+152,0377,0,0x3,0x2,0,19,16,0,3,4,0,0x6,02,0,043,232,248,0,011,128,0,
+03,02,0,3,32,0,013,4,0,0x6,2,0,32,208,0373,0,02,128,0,8,32,0,8,0x8,0,
+29,0x8,0,017,04,0,0x2,0360,0375,0,0x5,0x1,0,0,16,0,0,1,0,01,0x4,0,013
+,010,2,0,25,128,1,0,0,04,0,16,232,0375,0,011,8,0,011,64,0,014,128,0,6
+,64,0,017,04,0,015,216,0377,0,1,04,0,01,16,0,0,16,64,0,02,1,0,1,04,
+128,0,0,16,0,4,128,0,0,32,0,0,0x4,0,0,2,0,0,128,0,04,01,0,0,64,0,3,32
+,0,034,216,254,56,04,0,3,128,0,49,4,128,0,013,32,4,0,1,0116,0377,0,0,
+1,0,02,128,0,0,16,0,062,1,0,013,1,0,0x2,0376,0,0112,152,255,0,0112,
+152,0377,0,0,0x16,192,02,0264,0,0,013,96,0x1,0x2a,64,0x5,168,0,0,45,
+160,2,0124,128,012,0140,0x1,0x2c,128,0x5,176,0,0,026,64,02,0,017,0x15
+,192,02,0130,0,0,013,224,1,054,128,05,176,0,0,026,0240,2,0130,128,012
+,224,2,0x2a,64,013,168,0,0,026,160,0x2,152,255,128,014,144,0x1,134,
+0105,06,0xc8,0,0,0x13,0140,02,0114,128,0141,48,1,38,192,0x4,0310,0,0,
+031,32,03,0144,128,014,128,0x1,0,14,128,011,144,0x1,062,64,0x6,0310,
+0x4,031,32,0x3,0144,128,014,48,0x1,062,224,0x4,0x48,0116,19,104,0130,
+0115,128,12,0x38,0x1,136,0377,0377,0377,};static const unsigned char
+pPgqe2[]={0267,0115,0377,0377,0142,0377,54,0,0,213,255,0377,0377,0377
+,0377,0377,0377,0377,255,255,255,0377,0377,255,0377,0377,0377,0377,
+0377,0377,255,255,255,255,0377,0377,0377,0377,0377,0377,0377,0377,
+0377,255,255,255,0377,0377,0377,0377,0377,0377,0377,0377,0377,0377,
+255,255,255,0377,0,0,014,148,01,48,192,04,152,0,0,031,32,3,0140,2,
+0114,128,011,062,0,0,06,0,017,144,3,0x26,192,0x4,0xc8,01,3,0114,0240,
+011,128,0x1,48,0,0,6,64,0x6,24,0,0,224,0,0,0x12,128,2,72,128,012,0120
+,1,054,128,5,208,0,0,26,64,03,0x58,0,0,011,0,15,168,0,0,0x5,160,0x1,
+0124,128,4,168,0,0,025,64,0x2,72,0,0,011,0240,02,0x24,128,193,0,0x1,
+64,0,063,128,185,0,045,010,0,017,128,0361,0,01,0240,0,012,32,0,0,0x4,
+5,0,0x13,0x14,02,0,017,0202,24,0,0,8,0,0x8,04,0,0,8,5,0x1,0,014,01,0,
+0x5,64,0x4,128,0,016,0140,198,0,01,52,0x6,16,194,128,0,04,0115,0,0x1,
+2,64,0,0,16,0104,0,16,010,0102,012,64,0x3,010,0,0,1,32,0,0,0x34,194,0
+,0,16,64,24,011,0,0,132,184,0,014,0x2,0,24,16,0,0,03,0,0x4,48,0,0x6,
+128,0353,0,0x1,48,128,01,240,64,0,4,014,0140,0,0,014,0,0x12,128,0x1,
+48,0,0,0x16,192,0,0,0130,0,01,0144,01,32,128,05,128,0,0,036,192,0,01,
+0324,0,01,32,138,0,0,16,8,0,4,0x2c,36,0,0,4,0,2,132,0,016,128,0,0,16,
+0,0,012,64,0,0,0x28,0,0,128,160,0,0,16,0242,2,0,0,04,131,72,0,0x1,152
+,0,1,16,18,0106,4,0,05,04,0202,011,0x32,04,0,1,0x8,0,017,198,192,16,
+12,0x1,35,064,0x4,32,196,16,48,011,0103,0,0,010,1,0,0,0x3,128,0257,0,
+0x1,0x3c,128,0x7,224,0,05,15,224,1,074,0,1,176,32,0,016,128,0x7,240,0
+,0,18,136,0x3,0x48,32,03,32,129,12,128,4,062,0,0,28,192,3,0202,0xc8,0
+,0x1,16,0,0,06,0,0x6,014,0202,0x1,48,0,0x2,128,0,15,0x6,192,0,0,16,0,
+0,03,0102,0,0x1,0x8,1,32,8,0x4,0,3,03,128,0252,0,0x1,48,5,0x6,192,0,5
+,0x2c,128,0x1,48,0,02,2,0,017,06,192,0,0,136,04,043,32,0x12,0x2c,128,
+72,0,0x1,042,0x1,0x28,0x18,0,0,03,128,0351,0,1,0x6,128,0x26,021,0,0,
+02,64,0x8,0x8,0,03,2,64,16,16,0,07,144,0,06,72,0,0,0x8,0102,0x2,64,0,
+0,8,0,0,0101,36,0,0,0x24,0202,0,1,132,0x18,73,32,04,129,0,0x3,06,0,
+0x4,2,0,06,1,0,07,48,0,0x6,0x18,0,5,01,0,03,16,0x8,0,0x6,178,96,0,0,
+12,0,0,04,0x1,0,0x1,16,01,96,0,01,0140,0,0,014,128,0x1,0,0x8,48,0,0x6
+,152,1,48,0,0,0x16,192,0x3,0130,0,0x1,0140,01,0x1c,128,05,48,0,0,0x1e
+,16,0x1,128,248,0x28,0,0,4,0,0,18,0,0x1,24,0,0,042,01,32,0,0,32,0,0,4
+,128,0,01,16,0,0x6,0x28,0,06,148,0,0,16,0,0,012,64,1,054,0,1,164,0,0,
+36,128,2,16,0,0,02,0,0,042,34,0316,128,011,062,011,0x6,0,0,02,64,32,
+136,0,0x2,128,17,48,0102,046,0,0,02,1,0,05,0x28,0,6,024,0x6,192,0,0,
+015,01,042,0x32,04,128,0310,16,32,0,0,0103,192,128,0,2,128,0246,224,1
+,0x3c,128,01,0x31,64,0x6,192,03,24,32,0,0,224,1,61,128,07,0362,0,017,
+128,7,0362,0,0,18,136,03,0x48,32,0x3,32,129,024,128,4,242,0,0,28,192,
+131,128,0364,132,1,48,0,0,0x4,193,128,0,1,129,0,0x2,128,1,48,0,0,06,0
+,021,06,192,0,0,16,0,0,02,64,0,0,8,0,0,1,16,0,0,0x4,192,0,0x2,129,144
+,164,128,1,48,0,01,192,0x2,0,0,010,043,0,0,129,0,0,128,01,48,0,0,6,0,
+0,4,0x1,0,016,06,192,0,0,010,04,147,32,16,64,144,64,32,0,0,02,0321,0,
+0,24,0,0,043,128,216,16,0,0,2,02,16,0322,0,1,32,0,0,0154,0x1,0,0,48,
+128,0x34,0202,0,021,128,0x6,0,0,0102,02,64,3,8,0,0,0x1,32,0,0,04,128,
+0,2,24,0,01,0104,155,0,2,0x8,0,0,192,0,4,64,0,2,48,16,0,18,06,0,017,
+16,0,0,128,149,0140,0,0,014,128,0x1,240,0,0,06,192,0,0x2,03,128,0,0,
+32,128,1,0,16,128,0x7,48,0,0,0x16,0,0,3,0132,0,0x1,0144,1,054,128,0x5
+,0,1,036,192,0,0,128,147,0x2c,0,0,4,128,0,0,208,0,0,02,64,0,0x1,34,
+0x1,0,0,021,17,0241,0,17,136,6,16,0,0,012,0,0,013,0x28,0,0,128,160,0,
+0,024,128,02,0,01,0102,0x48,0,0,48,246,132,0x5,0x31,041,0x16,196,0,0,
+152,16,013,0x21,041,0214,0x4,0,0,48,012,0106,1,0,15,16,16,192,2,12,1,
+0,0,0x32,04,0,0,208,16,24,0,0,0103,0,03,0x23,144,145,232,0x1,074,128,
+0x7,0360,0,0,0x1e,192,0x3,0170,0,0,017,224,0101,014,128,07,0,16,132,1
+,0361,128,0x12,0xc8,3,72,32,15,32,129,36,128,0x4,02,0,0,034,192,03,
+129,0314,144,01,48,0,0,06,192,0,0,0x18,0,0,03,32,32,014,128,0,0,32,0,
+0,06,0,16,32,0,0,192,0,0,16,0,1,0102,0,02,01,32,0,0,4,0,03,3,16,129,
+128,01,48,0,0,06,208,0,0,0x18,0,0,03,64,02,12,128,0101,0,0,012,0x6,0,
+16,152,0,0,192,0,0,72,04,0x3,32,021,0,0,132,0104,16,0,0,0x12,01,0,0,
+0x18,0,0,03,0,0,0374,32,16,0x34,144,32,021,0,0,0132,64,043,0154,12,
+0x1,0,0,132,0,0,64,16,16,0,017,128,64,0310,4,2,64,0,0,0x8,0,0,0x1,32,
+0,0,36,128,0,0,192,132,24,64,35,0x4,163,0,0,128,0,2,192,0,0,24,16,0,
+0x8,01,128,0,016,64,0,0,192,128,0,0x7,16,0,04,16,3,128,0226,128,0,0x1
+,16,0x2,1,128,16,0,0,03,0140,0,0x1,104,0,0,014,128,01,0,021,0x2,0360,
+0,0,026,192,3,0x58,0,0x1,0144,1,054,128,5,0360,0,0,036,0,0,02,128,195
+,8,011,129,0,0,024,0,1,136,16,3,0102,021,0,0,32,0,0,4,128,0,0x1,16,0,
+016,16,0104,0324,0,0,012,64,3,0x28,0,0,128,160,0,0,024,128,02,16,0102
+,0202,010,041,042,131,0,0,4,16,0,01,0x1,0,0,0130,0,0,0241,32,8,32,144
+,05,48,6,134,64,2,0x1,0,015,0x4,0,0,192,0,0,014,1,0x23,0x32,4,0,0,208
+,16,24,0,0,0103,0,3,013,128,143,224,0101,074,160,0x7,48,64,0x6,196,03
+,120,0,0,017,224,01,0x3d,128,07,48,0,017,128,07,0341,0,0,0x12,136,3,
+72,32,03,32,129,36,128,4,0342,0,0,0x1c,192,128,0,0,0372,132,0,0,16,0,
+0,02,0,0x1,16,0,0,3,32,16,0,0,128,01,48,0,0,6,0,16,32,0x2,193,0,0,16,
+0,0,131,64,0,0x2,1,16,0,0,4,0,0x3,0202,16,178,128,0101,0240,64,026,1,
+16,0,0,0x2,131,0140,4,0,0,0241,01,48,0,0,6,0,0,04,01,0,015,04,0106,
+208,0,0,8,0x5,043,32,024,014,132,0120,32,0,0,0102,193,0,0,24,0,0,8,0,
+0,198,48,16,6,128,0,0,192,128,0x2,041,0,0,0154,042,1,0,0,132,0,0,192,
+32,0322,0x4,0,016,64,0,0,24,0,0,0x2,64,0,0,014,0,0,0101,0x24,0,01,192
+,0,0,208,0,0,0x18,011,0,0,132,198,0,021,64,32,0,07,012,0,024,192,0,03
+,128,191,128,1,12,0,01,240,64,24,192,0,0,0140,0,0x1,104,0,0,014,0,0,
+0x6,193,64,0,016,164,1,48,0,0,026,192,3,0130,0,0,014,96,0x1,014,128,
+05,192,0,0,0x1e,192,0,1,0317,12,32,04,0,0,32,0x18,0,1,0120,0,0,0140,
+0202,0,0,32,0,0,0x4,0,0,32,192,8,0,0x7,01,0,05,0240,0,0,16,0,0,012,64
+,01,054,0,0,12,164,0,0,0x4,128,2,192,64,0102,0x48,0,0,16,0310,0x4,
+0120,48,0102,026,010,0,0,64,04,3,32,021,32,144,1,0261,64,0,0,128,04,0
+,0x7,0x8,0,0x5,0x4,0x26,0310,042,014,0x1,042,062,4,0,0,208,16,48,16,
+0103,0,0,8,0,0x1,0103,176,143,104,0,0,56,128,1,224,0,0,6,192,0x3,0172
+,0,0,0x3,224,01,0x3c,128,01,0364,64,0,0x7,0x6,0,5,128,7,240,0,0,18,
+136,03,72,32,0x7,32,129,074,128,4,062,32,28,192,0x3,0,0,251,16,0,0,48
+,0,05,3,0140,64,0,0,128,0x1,48,0,0x1,0x2,128,0,15,0x6,192,0,0,16,04,
+0202,64,16,12,0,0,0101,48,0,0,0x4,193,0,0x2,3,32,0361,128,0x28,48,0,0
+,128,192,0,0,010,05,0x3,0140,01,014,0241,0x1,48,0,0,2,224,2,0,017,06,
+192,0,0,0x8,01,013,32,04,014,0202,16,48,0,0,0102,0,0,16,24,0,0,0x3,0,
+0,145,16,132,0x14,128,0x6,16,0,0,64,010,0,0,04,2,0101,162,145,4,0202,
+0,0,208,0,8,05,0,05,128,0x6,16,0,0,2,64,16,8,0,0,0x1,32,0,0,0x4,128,0
+,0,192,010,0x18,1,0,0,04,0373,0,0x1,32,0,0x7,64,0,0x3,16,0,0,192,0,
+010,04,0,014,0x2,0,07,128,0,0,0x8,0,0,128,0346,0140,0,0,054,0,03,0x6,
+192,0,0,24,0,0,0x4,0202,0x1,16,0,0,6,192,64,0,07,1,0,06,0x6,0x34,0,0,
+0x16,192,03,0130,0,1,96,1,0,0,128,05,240,0,0,036,208,0,0,128,255,054,
+0,0,024,0,0,32,8,0x2,03,64,0,0,0x8,0,0,010,0,0,01,042,0x21,32,0xc8,
+010,0,017,026,16,0,0,012,64,01,054,0,0,128,168,0,0,128,136,2,16,0102,
+2,64,0,0,32,237,132,0x1,24,06,16,0310,0x28,0x18,0,0,19,0144,01,32,128
+,0120,128,0,0,16,0x8,0x8,0,07,011,0,0x6,16,192,4,014,01,34,062,04,128
+,196,16,0,0,1,0103,0,0x3,0143,128,137,232,129,32,128,01,48,0,0,036,
+0310,3,0170,32,017,232,0x1,074,0240,1,240,32,0,0x7,0x1,0,05,128,1,
+0341,32,18,136,03,0x48,32,0x3,32,129,014,136,0x4,0342,0,0,0x1c,192,
+0x3,128,0247,144,01,32,010,0,1,128,24,0,0,3,0140,0,0,0x4,128,64,16,0,
+01,192,128,0,0x7,16,0,7,196,0,0,16,4,0202,64,16,12,010,0101,0,1,0x4,
+0x1,0,02,3,16,253,160,1,148,0,0,128,0,0,02,032,0,0,3,96,0,0,054,0202,
+011,48,010,128,192,0x2,0,017,64,192,0,0,72,0,0,19,32,0x1,128,128,4,48
+,0x8,18,192,0,0,24,0,0,0x3,0,0,151,0,0,132,4,0,0,16,0x12,0x8,0202,0,0
+,16,0x48,0,0,0x1,32,0,01,192,0,0,208,0,0x8,02,0,0x5,128,64,0x18,010,3
+,64,0,0,0x8,0,0,0x2d,48,0,1,192,0,0,16,64,24,0x1,0,0,4,0215,0,5,64,0,
+0,010,0,0,2,64,0,05,192,0,8,8,0,027,010,0,1,153,0140,0,0,0x2c,128,01,
+0,0,64,0,0,196,0,0,64,0,01,136,1,12,128,01,0,011,01,0,0x6,0x2,64,0,0,
+026,0,01,0130,0,1,0144,1,014,128,0x5,0,0x1,036,192,0,0,128,168,0x28,0
+,0,0x14,128,0,1,0x2,128,64,0,0,32,8,0,0x1,144,0x4,128,0,0x12,0104,132
+,0x48,012,0,0,8,054,0,0,128,160,0,0,04,128,2,0,0x1,131,72,0,0,16,144,
+128,1,25,6,38,128,0x2,64,16,013,0104,041,32,144,0x5,0x32,17,0106,010,
+0x24,0,14,014,64,0,1,12,1,0,0,0x31,0x4,4,192,16,48,042,0103,192,0104,
+0,1,013,062,0375,224,1,32,128,7,064,32,06,192,03,56,0,0,0x3,224,1,
+0x3c,0,0,7,48,0,017,128,0x7,0361,32,0x12,0xc8,0,0,72,32,017,0x28,129,
+074,128,0x4,0362,0,0,034,192,0x3,128,0376,132,01,32,8,06,0,01,24,4,
+0x3,64,64,014,128,0101,48,0,0,06,0,0,64,0,15,0x2,0101,0,0,16,04,0x3,
+64,16,0x4,4,0101,48,0,0,4,0101,0,0x2,03,0240,0236,0240,01,024,0,0,0x6
+,0,0,0x4,011,0101,0x3,32,0x4,0,0,129,021,48,0,0,0x6,0,0,0x4,0,017,046
+,192,32,8,0,0,16,042,0,0,72,128,0,0,48,0,0,2,0,0,0x28,0x18,0,0,03,128
+,147,176,021,38,0x6,16,18,0,0,64,72,013,104,0,0,32,164,137,04,0202,
+0x16,0321,0,021,8,0102,02,64,0140,0x8,0,0,015,32,0,01,192,0104,208,0,
+0,24,64,03,0,0,151,0,1,16,0,05,0x3,0142,0,0x4,16,06,192,0,24,014,0,
+0x3,2,0x2,0,1,16,3,128,0212,128,0x1,0x2d,128,1,0,01,0x6,0,0,0x2,96,0,
+0,03,128,01,16,0,0,04,192,0,017,0240,01,48,0,0,026,192,03,0130,0,0,12
+,0144,1,014,128,0x5,192,0,0,036,208,3,0,0,0264,0214,1,0x14,128,0,0x2,
+02,0,0,0x21,0141,0,0,1,128,0105,32,041,0102,196,0,0,16,0,05,64,010,0,
+5,0240,0,0,16,0,0,012,64,0x1,0x2c,0,0,0214,0240,0,0,0x4,128,2,192,132
+,2,64,0x3,160,193,132,0104,0x28,0,0,0x26,192,132,0x18,0x8,35,0,0,32,
+0114,132,010,0,0,011,0106,0,0,0x24,0x8,0,05,64,0x4,0,0x5,32,026,192,
+0104,12,0x1,042,062,4,014,208,16,176,64,05,192,04,0,01,03,0,0,0264,
+224,01,32,128,7,0362,0,0,036,192,0,0,031,0,0,017,224,0101,074,128,0x1
+,0x31,0,0,28,0,5,64,016,0,05,160,7,0364,0,0,0x12,136,3,72,32,017,32,
+129,074,128,4,0360,32,28,128,0x3,128,0236,132,0x1,32,0,0,06,192,0,0,
+0x18,0,0,02,0140,16,014,128,1,16,0,0,04,0,0x1,0x16,0,05,64,013,0,5,32
+,6,192,0,0,16,4,2,64,16,0,1,0101,48,0,0,0x4,192,0,02,03,16,144,128,
+0121,36,0,0,6,192,0,0,26,0,0,136,0140,0,0,015,128,041,48,011,64,1,0,0
+,16,0,5,32,8,0,0x5,16,6,192,0,0,136,0,0,131,32,0x2,12,132,0x8,48,0,0,
+0x4,192,0,0,25,64,3,0,0,0322,128,0,0x5,0x8,0,0,0x1,0,01,4,128,0,0x5,
+16,0,0x6,0x8,0,26,0264,0,02,128,0,5,0x8,0,3,04,128,0,0,16,0,0x7,16,0,
+6,8,0x2,0,0x1,0x2,64,0,0,010,0,0,01,32,0,0,04,128,0,0,16,0,0,2,0,02,
+0316,0,0x36,0202,217,0x24,0,0,04,145,0,0,16,132,2,64,0,0,010,0,0,0x1,
+32,0,0,04,128,0,0,16,0,15,128,0,0,16,132,2,64,0,0,0x8,0,0,01,32,0,0,
+0x4,128,0,0,16,0104,0x2,64,0,0,16,0274,12,0,0,16,02,02,0,0,04,0,2,32,
+0,5,16,0,023,36,0,01,010,0x1,0,0x7,24,128,0,0,32,48,212,64,0,0x1,010,
+0,01,64,04,128,0,02,0x2,64,0,0,0x8,0,0,0x1,17,0,16,0x1,32,0,0,04,0,
+0x1,16,0,0,0x1,64,0,0,8,0,0,0x1,0,02,136,0,0,0202,0215,010,0,4,64,0,
+057,32,223,32,0,0,4,128,0,1,4,02,64,0,0,8,0,0,01,32,0,0,0x4,128,0,0,
+16,0,15,128,0,0,16,0,0,2,0,0,136,010,0,0,01,32,0,0,4,128,0,1,136,0,0,
+021,0,0,128,128,32,0,0x6,0x8,0,32,02,0,06,32,0,03,128,241,0,0x1,64,0,
+2,64,0,03,32,0,031,64,0,013,129,0,2,128,196,0,1,4,0,0x1,1,0,0,16,02,0
+,0,136,0,0x2,01,02,0,013,010,0,5,0x1,0,4,64,0,010,64,32,0,2,171,0,1,
+0x5,0x4,0,02,32,16,0,0,042,0,0x1,192,0,02,0x2,02,0,021,64,32,0,04,32,
+0,0x6,4,0,0,8,128,232,010,32,01,64,0,0x3,16,0,0,19,0,1,0x8,0,0,01,32,
+0,0x2,1,0,017,0104,0,0x2,128,0,0x1,2,0,0x2,32,0,05,2,249,0,7,2,0,023,
+128,0,2,128,0,021,64,0,2,191,0,01,16,128,0,0,64,32,0x2,0,0x1,010,16,0
+,0,0x8,0,0,01,0,2,32,0,18,010,0x4,0,0,042,16,4,2,0,011,247,0,2,0x8,
+0x2,0,0,128,0,0,64,0,0x5,16,0,0,02,0x4,0,021,64,0,1,64,0,0,8,0,2,64,
+16,136,0,0,04,32,0,0x1,1,0,0,0235,0,1,8,160,0265,32,192,0x4,64,0,0,16
+,32,0x18,0x4,131,4,128,024,12,0124,1,0,14,024,16,0,0,0x4,0x48,0,0,031
+,32,0252,7,0,0,05,0240,0240,04,128,0120,64,0120,0,0,197,0,2,0x28,48,
+208,026,042,02,0,0,96,0132,014,128,64,0,0,8,192,0127,64,0,15,4,0,0x1,
+24,0104,01,64,16,0x5,0241,0132,208,0x7,0144,132,45,56,64,0334,0,0,
+0357,0,2,8,0,0,64,0,03,32,16,04,32,0,0,1,32,128,64,0,0x13,2,0104,0,1,
+16,04,128,64,16,0,2,32,0x2,0,01,0202,191,012,0,0x3,16,32,0,0,0x4,0,0,
+0x8,64,1,0,4,1,0,16,02,0,1,0x8,0,1,32,0,1,2,0,0x1,010,02,64,0,0,8,0,0
+,128,32,197,0,0x6,2,0,0,01,0,0x3,64,0,0x2,1,0,012,04,0,02,04,0,0x1,
+129,0,0x1,128,0,0x3,0x8,0,0x1,0x8,0,04,128,128,0205,18,0,012,0x8,0,27
+,0x4,0,014,0310,146,144,0x4,0,0x1,02,0,01,014,0,0,128,0,0,16,0x4,128,
+0,0x13,0x1,0,0,128,0,011,0x8,0,04,64,0x4,192,0324,0,0,02,0,1,16,0,036
+,0x8,0x1,0,03,2,0,03,128,0,01,64,0,0x1,010,0,0,128,186,0,4,32,0,8,4,0
+,0,4,32,0,011,2,0,016,02,0,04,32,0,0,04,0,0,128,0275,0,0x1,2,32,0,0,
+128,0,0x8,16,128,1,0,13,16,0,025,128,0341,0,5,2,0,057,128,219,0x12,0,
+0,010,0,0x19,0x2,0,1,8,32,0,024,0x8,0322,2,0,0x7,04,0,0x28,0x2,0,2,
+0240,0237,32,0,3,96,0,37,0x2,0,4,128,0,0,48,64,0,0x1,0342,128,0,03,4,
+0,01,16,0,0x1,64,0x4,042,0,0,4,0x8,02,0,0x12,16,32,0,0,64,0,0,32,0,1,
+128,64,0,3,32,0,03,148,0,03,0x2,0,01,02,0,7,128,0,1,128,0,017,02,0104
+,0,0x1,0x4,1,0,0,16,4,32,0,0,021,8,0x2,041,128,0,0,2,0x1,0,0,0202,
+0112,0x28,0240,128,0240,0202,0x16,0122,0x28,0,01,32,02,0104,0,0,010,
+144,161,0,0,128,0,013,32,0,01,128,0,0,064,64,0120,208,06,16,0114,0101
+,0141,128,5,0240,0,0,0124,192,128,0122,0,0,128,234,144,0124,144,8,252
+,024,5,56,8,64,8,0,0x1,128,0102,16,011,144,16,32,0,017,128,192,0,0,72
+,0x4,224,32,16,0x1,010,0163,128,05,132,128,144,2,144,0341,02,0362,64,
+64,16,16,0,2,0x8,0,4,128,0,0,5,8,0,1,128,0,16,128,0,0,8,4,128,32,16,0
+,01,64,0,6,1,0x2,0323,0,3,2,01,0,0,0x2,0,1,01,0,06,01,0,021,0101,0,3,
+2,0,0x1,128,0,0,1,0x4,0x2,0101,16,0,1,64,128,0246,0,021,128,0,0x14,64
+,0,2,4,0,5,128,0,02,128,0271,0x2,0,8,0x1,0,0,02,0x2,0,0,2,0,0x26,0x8,
+0343,4,0,1,128,04,28,0,0,32,32,0,1,8,01,16,0x4,0,0,128,0,0,014,0,0x13
+,32,0,1,128,0,02,02,0,0,64,8,0,0x4,16,148,0,0x5,0x13,64,0,0x1,64,0,0,
+36,0,0,64,0,025,24,0,0x2,0x8,0,014,1,0314,0,04,128,128,0,8,64,0,0x1,
+128,0,010,64,0,2,64,0,03,32,0,0x1,0x8,0,0x7,16,0,0,16,0,1,0240,242,0,
+011,4,8,0,2,5,0,034,01,0,4,16,0,0x2,128,0364,04,0,0,0x18,0,1,64,01,01
+,0,2,192,0,05,16,0,014,16,0,0x8,04,0,0,16,0,012,0351,0,0,4,0,015,0x28
+,0,0,64,64,0,0x8,041,0,05,128,0,4,0x1,0,0,04,0,012,0357,0,0,2,0,1,128
+,0,3,02,0x4,0,0x1,32,0,0,64,0,016,0x2,0,02,0202,0,01,128,0,0x1,01,0,
+0x8,01,0,0x1,64,0x1,0273,0,0,128,0,0x5,12,128,8,0,0x4,16,0,0,0x4,0,31
+,64,0,02,128,164,16,0,04,16,0,02,32,0,01,64,128,0,0x3,16,0,013,010,0,
+013,17,0,011,158,0,02,16,0,0x5,128,16,0,24,4,128,0,0x1,64,0,0x2,0x4,0
+,1,32,0,0x5,0202,134,0,3,64,0x8,0,0,02,0,6,36,0,2,32,0,18,128,0,1,010
+,0,0,5,0,0,0x8,36,16,16,148,2,129,64,0x2,128,0214,0,14,16,0x8,0,026,8
+,0,02,0x4,02,128,0,5,0x8,0,0,02,246,0,02,128,1,0,011,0x1c,0,01,48,0,
+023,6,0,01,0140,0,0,013,0140,0,0,0x3c,144,0x1,240,0,0,06,192,03,0,0,
+0214,0,0x2,128,0,012,36,0,01,16,0,19,0x2,0,1,96,0,0,011,0x28,0,0,024,
+129,0,0,0120,0x2,0x3,64,021,2,0246,0,03,0106,0,0x1,24,04,0,0x5,32,0,
+0x1,192,2,0x1,0,17,0x18,0x2,0,1,64,8,128,061,24,0,0,046,0142,0,0,0x58
+,0240,01,128,0365,0,0x2,128,07,01,0,0,036,0,6,024,0,1,224,0,0x13,28,0
+,0x1,0x18,0,0,011,192,1,0x14,0,0,7,0120,0,0,034,64,01,128,0337,0,0x3,
+6,0,2,0x4,0,05,16,0,1,192,0,19,0x18,0,3,04,128,01,32,0,0,06,128,0,0,
+0x18,0,0,2,0,0,254,0,3,6,0,011,32,0,1,192,0,19,0x18,0,2,0104,0x4,128,
+0x1,32,0,0,06,128,0,0,0x18,0,0,02,0,0,0375,0,01,04,0,0,64,8,0,0,0x1b,
+0,1,12,0102,0,0x2,4,0,2,32,0,6,0240,0,06,208,0,0,0120,136,128,64,0,2,
+011,0,0,010,0x24,32,16,148,010,128,64,042,128,0365,0,06,0x18,0,06,1,0
+,012,48,0,06,0x18,0,0,128,0,01,010,0,3,0x4,128,0,03,128,0,0,010,0,0,
+129,182,0,2,128,01,48,0,0,0x1e,192,0,0,32,32,0,0,0140,0,0,0x2c,0,01,
+48,0,7,48,0,06,0x18,6,112,0,0,06,192,0,02,017,0140,0,0,0x3c,0240,01,
+240,0,0,0x6,192,0x3,128,0245,0x8,0,0,128,144,0,0,16,0,0,032,64,0,0,64
+,01,0,0,32,0,0,024,0,01,16,0,0x7,0x28,0,6,0x14,026,148,0,0,02,64,0,
+0x2,0105,0x24,0,0,0x14,129,0,0,0120,128,0x2,64,0x1,021,0322,0,2,16,
+026,192,02,0x18,0,0,023,0,0,132,0,0,128,5,24,0,1,192,0x28,0,6,0x28,0,
+06,024,16,0102,0,0,0130,0,0,19,0x1,0,0,06,128,021,26,0,0,0x16,0140,0,
+0,0x18,136,01,176,173,0,1,014,128,07,241,32,034,192,131,120,0,0x1,224
+,129,0x24,0,1,224,0,017,128,07,176,0,0,0x1c,0310,0x3,0,1,5,192,0x1,
+0x14,0,0,7,0122,0,0,034,64,0x1,128,0345,0x4,0,0x2,0x6,192,0,0,0x1a,0,
+0,3,32,16,0,0,128,01,32,0,0x1,192,0,16,0x6,64,0,0,24,0,0,0x3,0,1,8,
+128,0x1,32,0,0,06,128,0,0,24,0,0,0x2,160,195,0,0x1,48,04,06,192,0,0,
+032,0,0,0x3,96,0x4,0,0,128,0x1,16,0,1,192,0,16,0240,144,0,0,0x18,0,0,
+03,0,0x1,0x8,128,0x1,32,0,0,0x6,128,0,0,0x18,0,0,02,0,0,0273,48,0,0,
+04,0,0,64,8,0,0,03,0,0,16,104,0,0,015,0,1,4,128,16,0,0,32,0,016,128,
+0x6,0120,132,128,64,03,010,0,0,137,0x1,010,36,0101,16,148,136,128,64,
+0142,0,0,0376,0,011,0142,0,0,12,0,01,1,0,0,2,0x2,0,7,48,0,06,24,06,
+128,0,01,0x8,3,0,3,128,0,0x5,0x8,0,0,128,0264,0,2,128,01,0360,0,1,192
+,0x3,0,01,017,96,0,0,054,0,0,0x6,48,0,16,6,112,0,0,06,192,3,24,0,0,
+017,0140,0,0,074,128,1,0360,128,0x6,192,3,128,0307,12,0,01,194,0,0,
+208,0,01,64,03,0,1,015,32,0,0,0x14,0,0,0246,16,0,16,0x6,144,0,0,02,64
+,0x3,010,0,0,5,041,0,0,024,194,0,0,0120,0,0,2,64,0101,0240,0234,04,
+0x48,0,0,18,0x6,010,24,0,01,19,0,0,4,014,128,133,0x18,0,0,38,194,042,
+0,6,128,0,6,64,16,0101,0,0,152,16,3,0140,021,6,128,05,25,0,0,06,0140,
+0,0,0x18,128,01,0,0,137,96,0,0,12,128,7,48,0,0,06,196,131,0x18,64,14,
+224,1,36,128,7,224,0,7,64,0,6,0240,0x1,176,0,0,034,128,3,0x78,0,0,05,
+192,1,024,0,0,07,0122,0,0,0x1c,0x48,0x1,0,0,219,132,129,0,1,0x6,0,1,
+24,0,0,0x3,0x2,64,014,128,1,32,0,0,6,193,0,17,64,0,0,24,0,0,0x3,0140,
+0,0,010,128,1,32,0,0,06,128,0,0,24,0,0,02,16,0341,128,5,48,0x5,0x6,0,
+0,024,0x18,0105,0x3,0,0,4,12,128,01,16,0,0,046,192,0,07,64,0,0x6,32,0
+,0,144,0,0,24,64,3,104,0,0,8,128,1,32,0,0,06,128,0,0,24,0,0,2,128,
+0362,32,021,0,0,32,0,0,2,32,26,0,01,0x4,02,01,0,0,010,0x4,128,0,0,208
+,0,16,16,024,0,0,128,64,3,0x8,0,0,41,36,0,0,36,01,16,148,0,0,129,64,2
+,0101,0275,0,0,128,0,0x8,64,0,01,128,0,013,8,0,0x6,04,0,0x3,0x8,3,0,5
+,16,0,3,8,0,0,128,0267,128,0101,074,128,1,0360,0,0,036,196,0,0,120,0,
+0,03,0140,0,0,054,128,01,192,0,7,32,0,6,144,01,192,0,0,06,0,0x1,96,0,
+0,15,0144,0,0,0x3c,128,0x1,0360,0,0,6,192,3,129,152,010,1,0x34,128,0,
+0,208,0,0,0132,64,0,0,104,0,0,01,32,0,0,024,128,0,0,192,16,0,016,128,
+0,0,192,0,0,0x2,0,0x1,0140,0101,045,32,0,0,0x14,146,0,0,0120,04,3,64,
+021,48,214,128,5,176,010,0x16,193,0x28,0,0x1,147,0140,64,014,144,5,
+0x18,0,0,64,0,0,0x2,0,06,16,0,6,0x8,0x6,2,0x8,031,3,8,0,0x1,06,128,
+0x1,25,0,0,0106,0142,0,0,24,128,0x1,144,0261,224,0101,56,0,0,7,240,0,
+0,036,196,3,0170,0,0,15,224,129,36,0,0,1,0362,32,0,0x6,136,0,06,0104,
+07,48,0,0,034,192,128,0170,64,0x5,224,0x1,024,0,0,7,0120,0,0,28,0120,
+1,96,169,132,0101,48,0x8,6,192,128,0,0x1,3,96,0,0,12,128,1,32,0,0,0x6
+,1,32,0,15,6,0,0x1,24,0,0,128,0140,0,0,0x8,128,0x1,32,0,0,0x6,128,0,0
+,24,0,0,02,128,0334,128,5,48,0202,6,208,0,0,0x18,5,0x3,0140,129,014,
+128,01,16,128,0106,0,0,0x8,16,0,06,8,0,06,06,0,0,024,24,0,0,16,0,0,
+041,0x8,160,1,32,0,0,0x6,128,0,0,24,0,0,02,0,0,0341,32,16,48,32,0,0,2
+,0,0,0x1b,0,01,014,0,0,015,32,0,0,4,128,0,0,16,0,0x7,136,0,0x6,164,0,
+0,208,0,0,128,0,0,32,012,0,0,0x49,010,010,36,02,16,148,0102,128,64,
+012,4,0274,0,0,128,48,0,0x3,0x18,0,3,12,0,26,010,0,04,128,0,0,32,0,03
+,8,0,1,0226,0,0,1,074,128,0x1,48,0,1,192,0,0,24,0,01,0140,0,0,0x2c,
+128,1,48,0,0,16,0,5,32,8,0,0x5,144,0x1,48,0,0,0x6,192,03,0140,0,0,017
+,104,0,0,0x3c,128,0x1,240,64,06,192,3,128,195,4,16,54,128,0,0,16,0,01
+,64,0,0,010,0,01,32,0,0,024,128,0,0,16,0,0,042,0,0x6,021,0,5,128,0,0,
+16,0104,0x2,64,3,0,0,0101,0205,32,0,0,0x14,0240,0,0,0120,2,02,64,011,
+36,147,0214,4,176,010,0106,193,0x28,0,0,0x4,35,0144,17,128,128,5,24,0
+,0,046,192,136,0,0x6,64,0,0x6,32,38,192,136,0x18,0x21,131,0140,132,
+0x6,128,0x1,26,0,0,0x26,96,0,0,24,0240,0x1,128,0362,96,128,56,0,0,7,
+0360,0,0,06,192,3,0x78,0,0,03,232,0101,36,0,0,7,0344,0,0,2,0,0x6,01,0
+,0x5,128,07,0362,0,0,034,192,0x3,120,0,0,05,192,0x1,024,0,0,07,0122,0
+,0,034,64,1,128,164,136,128,0,0,32,0x6,192,0,1,4,03,0140,0,1,132,1,32
+,0,0,6,192,0,0,16,0,0x6,0x8,0,06,6,192,0,0,0x18,0,0,128,96,0,0,8,128,
+1,32,0,0,6,128,0,0,24,0,0,2,144,132,128,010,0,0,0202,0x6,192,0,02,03,
+104,0,0,32,0240,01,16,0,0,0x6,192,0,0,32,0,0x6,16,0,05,128,6,208,16,
+24,0,0,32,0,0,0102,010,128,0x1,32,0,0,6,128,0,0,24,0,0,0x2,0,0,176,32
+,132,4,0202,046,04,0,0,3,0,0x1,41,0,0,1,32,0,0,4,128,0,0,208,132,2,0,
+6,1,0,0x6,06,024,0x2,128,64,011,4,0102,137,16,0x8,0x24,1,16,148,64,
+128,64,18,192,0262,0,2,010,0,5,64,32,0,07,010,0,6,4,0,0x6,06,0,0,32,0
+,0,010,0x2,0,0x3,128,0,0,32,0,0x3,010,0,0,2,0263,128,1,034,0,0,06,
+0x31,0,0,0x6,192,0,0,56,0,01,0140,0,0,0x2c,128,07,192,0,017,128,0x7,
+64,0,0,0x6,192,01,24,0,0,017,0140,0,0,0x3c,128,0x1,240,64,6,192,3,0,0
+,199,0x8,16,134,010,64,16,0,0,2,64,0,0,72,0,1,32,0,0,024,128,06,0,0,
+32,0,016,128,0x6,128,32,0x2,64,2,0x8,0,0,05,48,0,0,024,162,0,0,0120,
+04,2,64,041,178,0271,0,0,021,2,0102,0106,196,8,0x18,0x1,0143,32,0,0x1
+,132,021,24,0,0,64,192,128,4,0,0x6,2,0,6,16,0x1,0x2,0x18,0,0,1,96,
+0x24,0x6,128,0x21,0x18,0,0,134,0140,0,0,24,0202,0x1,144,195,96,0,0,
+014,128,7,0360,32,036,196,0x3,0130,0,0,0x3,224,0101,36,0,0,0x1,0362,0
+,017,128,01,0360,128,28,144,2,0170,0,0,05,192,01,024,0,0,07,0120,0,0,
+28,64,01,128,198,0x4,1,0,0,32,2,192,0,0,24,0,0,0x3,32,0,0,014,128,01,
+32,0,0x1,0101,64,0x12,0,6,011,0,0x7,64,0,0,24,64,1,96,0,0,0x8,128,0x1
+,32,0,0,0x6,128,0,0,24,0,0,0x2,144,0247,128,041,0,1,4,193,0,0,0x18,0,
+0,03,64,0,0,0114,161,0x1,16,128,0,0,128,0,017,128,0,0,192,2,25,0,0,
+0x2,0140,0,0,010,128,1,32,0,0,0x6,128,0,0,0x18,0,0,02,128,231,32,132,
+0,0,0240,38,04,0,0,023,05,16,104,0,0,32,0x24,0,0,04,128,0,0,208,132,8
+,0,06,0x4,0,0x5,128,0,0,16,64,128,64,0,0,0x28,64,137,0x4,010,164,32,
+16,148,132,128,64,012,128,0216,0,06,010,0,01,0142,0,0x8,014,0,6,6,0,
+012,8,0,0,64,0,2,128,0,0x5,0x8,0,0,0x1,0317,0,0,1,074,0,0,6,48,0,0,
+016,192,03,0x78,0,0,0x3,0140,0,0,0x2c,128,01,192,0,16,6,64,32,6,192,0
+,0,32,0,0,017,0144,0,0,074,0240,0x1,0360,128,0x6,192,3,128,0325,4,16,
+54,0,0,64,18,0,0,0x12,64,0x3,104,0,0,1,32,0,0,024,128,0,1,36,0,15,64,
+132,0x8,2,64,0,0,64,0,0,05,32,0,0,148,128,0,0,0120,0x8,0x2,64,011,
+0241,218,0214,0x1,0261,0x8,0106,196,042,16,0,0,0x23,0140,0,0,0214,132
+,011,24,0,0,0x26,0310,128,0,0x6,24,0,0x6,0104,198,0,0,0x2,0x18,0x1,
+013,32,0,0,06,128,133,24,0,0,0x16,104,0,0,24,131,01,128,0325,96,0,0,
+0x38,128,07,240,0,0,0x8,192,131,112,0,0,15,224,0101,0x24,0,0,07,0360,
+0,15,128,1,240,128,0x1c,136,131,0130,0,0,0x5,192,1,0x14,0,0,7,0120,0,
+0,0x1c,64,01,128,213,136,1,48,0,0,0x2,192,0,0,8,0,0,0x3,0142,0,0,014,
+128,1,32,0,0,6,64,0,16,06,0101,0,0,24,0,0,3,32,0,0,0x8,128,01,32,0,0,
+06,128,0,0,24,0,0,2,144,193,128,0x28,48,012,36,193,0,0,16,64,0x3,104,
+0,0,13,160,1,16,0,0,0x6,128,4,1,0,016,0106,192,0x2,25,0,0,3,64,0,0,
+0x8,128,01,32,0,0,6,128,0,0,24,0,0,0x2,128,134,0240,0,0,5,128,046,024
+,0104,18,0,0,16,0x8,0,0,01,32,0,0,36,128,6,16,0,15,128,2,16,0,0,128,
+64,0x3,0x28,64,011,16,0x8,36,18,16,148,72,128,64,02,192,184,0,0,01,0,
+0x4,0x8,0,0x1,0x2,0,03,16,0,0,06,0,16,0x28,0,0,04,0,0x1,0x8,0,0,64,0,
+0x2,128,0,5,8,0,0,01,0272,128,0,0,12,16,0x6,64,128,026,192,3,0x78,0,0
+,03,128,1,054,0,0,06,192,0,07,72,0,0x7,0x6,48,0,0,06,192,131,32,0,0,
+15,0140,0,0,074,144,01,0360,64,0x6,192,02,0,0,0377,0x8,0x1,52,02,64,
+129,0,0,012,64,0x3,104,0,0,0x1,0,0,04,026,0,0,0x6,192,0,0,16,0,05,64,
+010,0,05,32,042,24,0,0,0x2,64,0,0,64,0,0,0105,48,0,0,024,128,0,0,0120
+,0,0,2,64,16,0261,208,128,0,0,176,0x8,0106,0x4,0x2,014,0,0,147,96,
+0104,0214,0202,0105,0x18,0,0,0x6,192,36,010,0,5,64,4,0,0x5,32,024,
+0310,0104,0x18,021,131,32,0,0,0x6,128,05,0x18,0,0,0106,104,0,0,24,144
+,0x2,144,0313,0140,01,0x3c,128,0x7,48,32,16,192,0x3,120,0,0,017,96,0,
+0,0x24,128,07,0362,0,0,034,0,0x5,64,016,0,05,0240,07,0360,0,0,0x1c,
+192,0x3,0130,0,0,05,192,0x1,025,0,0,0x7,0120,0,0,28,64,0x2,0,0,0271,
+132,0,0,48,8,2,0,1,8,0,0,3,02,16,014,128,0x1,16,0,0x1,192,128,026,0,5
+,64,013,0,05,32,04,192,0,0,24,0,0x1,042,0,0,0x8,128,1,32,0,0,0x6,128,
+0,0,0x18,0,0,2,144,191,0,0,01,48,01,024,129,04,17,64,03,0,0,0x2,014,
+128,041,32,0,01,196,4,16,0,05,32,010,0,5,16,06,194,0,0,0x18,0,0,03,64
+,0,0,0x8,128,0x1,32,0,0,6,128,0,0,0x18,0,0,02,128,0246,0,03,01,32,0,0
+,132,128,0,3,64,0,5,16,0,06,010,0,06,01,0,3,16,0,0x2,64,0,011,216,32,
+0,0,4,0,4,04,0,02,02,0,1,04,0,0,0x1,16,0,0x7,32,0,0x6,16,0,0x2,0x2,0,
+01,0x2,0,0,1,0,1,04,128,0,0,16,0,0,02,64,0,0,128,0362,0,012,32,0,42,
+128,217,36,0,0,0x4,128,0,0,16,0,0,02,64,0,0,8,0x2,0x1,32,0,0,04,128,0
+,0,16,0,15,128,0,0,16,024,0x2,0,1,12,0x12,0x1,32,0,0,0x4,128,0,0,16,0
+,0,0x2,64,0,0,144,0213,12,0,0,136,0,0,01,36,0,0,128,128,0,0,16,1,64,
+0x2,0,0,010,0,0,16,042,2,0,15,64,36,0,0,64,144,128,0,03,16,1,0,0,64,
+04,0,0x1,021,0,0,48,172,32,0,1,0240,0,0,16,0,0,4,0104,0,1,16,0,0,64,0
+,1,128,1,0,0,128,0,017,02,0,1,010,0,01,16,0,0,0x4,128,0,0,16,0,0,2,64
+,0,0,8,0,0,0x1,128,246,8,0,013,8,0,0x28,160,0323,32,0,0x3,16,0,0x1,64
+,0,0x2,128,32,0,0,4,128,0,19,16,0,1,64,0,0,0x8,0,0,0x1,0,0x1,0x4,0,01
+,16,0,1,64,0,0,128,197,0,011,32,0,0,4,0,0x16,4,32,0,0x7,32,128,0,7,
+0323,0,1,128,0,0x16,010,0x1,0,0x5,36,0,010,16,0,012,0232,0,0x7,64,0,
+0x3,0x8,0,03,0x3,0,023,042,0,0x6,32,0x4,0,02,0101,0,02,146,0,012,64,0
+,4,04,32,0,023,02,18,0,0x7,0x8,0,0x3,0x2,0,0,134,0,16,0x8,0,032,010,0
+,02,04,0,2,192,0,0,128,249,0,01,32,0,023,0120,0,06,0x28,0,06,64,0,0x8
+,02,0,05,135,0,0x4,0x2,0,03,0x21,0,0,0x1,0,025,128,0,0,0102,0,4,16,01
+,0,02,32,2,0102,32,04,0,01,01,0226,010,0,0x5,0x8,0,0x4,128,64,0,2,64,
+0,16,01,024,128,0x8,4,0x1,0,1,04,136,64,16,0,3,8,04,0,0,0x2,0xc8,0,4,
+0x2,0,0,02,32,1,17,0,0,0x2,32,0x28,021,0,01,16,0,15,128,1,54,128,062,
+0120,0,01,32,03,0x28,0,0,5,16,0x1,042,64,0x6,16,0,0,0x7,0365,128,0,3,
+16,0,0,16,010,0,0,0x8,161,04,64,0x2f,16,36,0,0,192,58,0,017,132,128,
+0x3a,042,0x2,012,5,02,184,131,0101,144,0,0,0x2,193,0x27,0x8,04,01,129
+,0335,128,0,012,0x4,0,01,0x4,0,0x1,32,32,0,17,128,0,0x5,0x8,0101,4,
+128,0,0,0104,128,010,132,0,0,128,0311,0x8,0,0x5,0x8,0,04,128,128,0,0,
+8,0,0,64,16,0,016,128,0,0,0101,32,0,0,132,0,2,04,0102,0,03,16,0,4,234
+,0,012,32,0,0,04,0,02,02,0,7,0x8,0x2,0,05,4,0,14,0x8,0,2,4,128,189,18
+,0,0,16,64,0,0,64,0,017,0x4,1,0,0x1,04,0,0x2,0202,0,02,0202,0,2,128,
+16,0,14,72,132,0,0,0x2,0,041,136,4,0,0,16,0,0x4,128,1,0,01,128,0,0,64
+,16,0,0x1,128,0235,16,0,013,0x1,0,23,16,0,04,0x2,010,0,0x2,4,0,1,042,
+0,0x1,64,0374,32,0,0,04,0,19,8,0,6,4,0,0x6,01,0,0x6,0x8,0,0x6,128,174
+,0,013,03,0,0,129,0,025,0120,0,2,01,16,0,014,0226,0,011,16,0,0x17,128
+,0,0x7,04,0,011,4,164,0,48,1,0,4,128,0351,128,0,0,128,0,0,01,0,054,32
+,0,0x4,201,0,0x2f,128,0,0,32,0,3,144,192,32,0,0,16,0,1,0101,0,1,0x4,0
+,0x15,16,0,2,128,0,0,024,0,011,32,02,132,32,8,0x8,129,0,0,0323,32,0,0
+,1,0,1,02,0,02,0101,0,0x2,128,0,0,0x1,136,0,01,32,0,013,16,0,03,64,0,
+02,128,32,16,0,0,128,0,3,64,0,0x1,0102,0,0,128,147,96,0,0,011,0,1,
+0x26,0,0,010,72,1,02,0,01,32,0x28,0241,168,0,1,0240,0,012,32,010,0,
+0x2,0x15,062,0,01,4,0,0,012,64,0,0,32,0,0x1,16,0x1,0x32,64,4,216,0,0,
+193,146,32,64,16,0124,36,64,0x2,0142,05,8,0140,014,129,0x2,0164,0240,
+012,0,0,64,0x4,0,2,0140,16,0,0,1,0,03,32,010,128,64,0,0,132,160,32,
+136,0x3,0166,010,0,1,0202,64,112,04,04,0101,067,8,06,0135,0,0,155,0,
+01,021,0,0x1,64,0,0x1,4,0,0,32,0,1,02,128,0,0,0x8,0,0,64,0,3,64,010,0
+,0,2,0,0x4,04,0,0,041,0,02,32,8,0,04,132,64,04,0,01,0104,64,4,0x8,0x1
+,128,0353,0,0x2,0x8,0x1,0,04,16,16,0,0x1,64,16,0,0x6,32,0,0x6,32,0,
+0x3,02,17,0,1,4,129,0,4,16,160,0,1,16,0,0,16,0,0,129,218,0,012,128,0,
+0,128,0,27,04,0,013,128,0265,0,0,0x1,013,32,0,0,16,0x2,0,1,8,128,0,26
+,03,0,0,0x8,0,0,64,64,0,0,1,0,011,136,0x4,0,4,128,0,0x1,128,2,021,02,
+32,0,0,0x2,0,0x13,01,0,0x6,0x1,0x4,0,0x1,0x8,0,0,64,0,0x1,48,0,0,16,
+0233,0,02,04,128,0,04,0x2,0,0x4,128,0,1,0x12,0,0x18,32,0,0,8,0,1,4,0,
+0x3,129,178,64,0x4,0x8,0,23,4,0,06,0x2,0,0,0x1,0,4,17,0,0,32,0,0x4,
+128,0,02,128,232,32,0,0,4,0,17,164,0,01,64,0,0x3,0122,0,0x1,32,0,0x1,
+128,0,14,0x2,0,0x3,237,0,03,16,0,16,8,0,0x6,04,0,0,32,0,0x7,128,0,011
+,0x2,0,01,128,0254,0,02,010,0,6,0x8,0,4,02,0,0,32,0,0,64,0,0x6,32,0,
+014,0x8,0,0x2,0x1,64,0,3,8,0,0,128,240,0,3,4,04,0,013,16,128,01,0,017
+,8,0,01,02,0,5,0x1,16,0,0x2,0x4,0,01,128,0325,0,021,8,0,05,64,0,011,
+16,02,0,3,0x2,0,2,0104,0,0x1,16,0,0,16,64,0,0,04,0,0,0252,0,04,16,0,
+0x1,128,0,0x4,0x1,0,03,2,0,02,0x5,32,0,04,128,02,16,0,0x2,0x12,16,0,
+0x7,0x4,0,06,128,0,0,0205,0,0x3,16,0x4,0,04,0x1,0,0x4,0x8,0,3,0x1,0,5
+,128,0,6,01,32,0,1,8,0,0,48,0,012,16,0347,32,8,04,128,2,16,04,0x2,0,0
+,3,011,0,0,1,32,0,0,0x34,128,0x26,0,0,0x4,0,16,192,0x48,0x1a,64,01,0,
+0x1,5,128,5,024,041,0,0,208,0,03,128,0372,0,0,128,0,01,04,0,0,128,0,7
+,48,0,0,06,04,128,0,024,0x2,0,1,8,0,1,021,0,6,128,0353,0,0x1,014,128,
+05,64,0,0,026,192,3,0130,0,01,0140,01,014,0,0,4,48,0,021,0360,0,0,
+0x1e,192,0x2,0,01,013,224,0x1,0x2d,0,1,0360,64,0,0x3,0214,0,0,0x8,05,
+128,0x2,128,128,012,64,64,0x28,0,01,160,0,0,0x4,0,0,02,024,0,021,16,0
+,0,0103,72,01,0,0x1,5,32,16,0x14,0,0x1,16,0x4,0,02,128,134,0,0,8,48,2
+,0103,02,042,12,011,0,0,48,36,0,0,0xc8,144,0,0,02,0106,192,0,0x13,128
+,144,011,02,0,0,046,010,0,0,0x28,021,0,0x1,0104,0,3,0261,96,0,0,57,
+136,04,0360,0,0,0x12,192,03,0x48,0,0,0x3,32,1,0x8,136,1,241,128,0,16,
+224,0,0,6,0,0,02,0,0x1,0x8,192,0x1,32,0,01,48,0,4,0361,128,0x1,061,0,
+0,0x4,64,0,0,16,0,1,64,0,0,014,0,0,1,48,0,0,04,192,0,0x13,24,010,0x2,
+0,0x1,010,0,0x1,32,16,0,0,192,0,0x3,128,161,128,0,0,48,0,0,34,193,
+0202,136,0104,3,32,0x12,0114,129,0x48,48,04,64,0321,0,021,192,0,0,152
+,0,0,145,0,1,0104,0202,01,16,0,01,192,132,0,0x3,214,32,0,0,4,128,0,1,
+0102,0x2,0,0,16,010,0,0,01,32,0,0,04,0,0,16,02,4,0,6,136,0,0x6,0104,
+06,192,72,152,64,0,0,0140,04,1,128,5,0x4,041,0106,16,0,0,012,0x3,0,
+0x1,129,0,011,2,0,0x7,128,0,6,48,0,0x6,24,0,0,4,0,1,16,0,1,32,0,02,1,
+0,01,0x4,0,0,16,0,2,165,128,1,014,128,0x5,48,0,0,026,192,0,0,0130,0,0
+,12,0140,1,014,128,01,48,0,0x7,48,0,6,152,0x7,0360,0,0,0x1e,192,02,
+0x78,0,0,013,224,129,0x2c,128,07,064,128,016,0,01,128,164,010,144,4,
+128,2,16,0,0,012,64,0,0,0x28,0,0,64,176,0,0,4,128,0,0,16,0,07,0x28,0,
+6,148,32,18,0104,2,0141,0x1,010,128,0x5,32,0,0,0x14,128,64,16,02,18,0
+,0x1,0240,0246,128,021,176,0,0,0103,194,72,12,011,3,48,36,0214,0xc8,
+144,176,0,0,06,0xc8,132,0,6,0x28,0,6,024,0,3,128,011,2,0,0,0x26,0x8,0
+,0,0x28,021,0,1,042,010,0,0x1,128,197,224,1,071,136,4,0360,0,0,0x12,
+192,3,0111,0,0,017,32,0x1,0x38,136,7,0360,0,16,7,224,0,0,28,0,0,02,
+112,0,0,010,192,0x1,32,0,0,7,0360,0,0,0x16,0,0x2,179,132,1,061,0,0,4,
+192,0,0,16,0,0,3,64,0,0,014,0x4,1,48,0,0,6,192,0,21,02,0,01,8,0,0x1,
+32,0,01,192,128,0x8,0,01,144,0205,128,011,48,0,0,02,193,0,0,010,0x4,
+03,32,16,0114,128,64,48,0,0,6,208,0,16,6,192,0,0,26,0,0,129,0140,0,0,
+4,0202,0x1,16,64,0x6,192,010,18,0,0x1,128,136,32,010,04,128,0,1,0102,
+02,64,010,010,0,0,054,48,0,0,4,0,0,16,02,04,0,017,0x6,192,0x48,032,64
+,0,0,8,0,0,0x1,32,0,0,04,041,0x16,208,0,0,02,2,131,128,219,0,0,128,0,
+7,02,0,07,128,0,16,0x4,0,013,4,0,0,24,0,0x2,132,0,01,13,128,0x5,48,0,
+0,026,0,0,01,0x58,0,0,0x3,0140,01,014,128,0x1,48,0,017,128,07,0360,0,
+0,0x1e,192,02,24,0,0,013,0140,0,0,0x2c,128,0x7,0360,0,0x1,192,3,129,
+0321,0x4,0x4,4,128,2,16,0,0,012,0,0,2,0x2a,0,0,1,0241,0,0,04,128,0,0,
+16,0,15,128,0,0,18,010,03,0120,0x1,0x8,0,0,5,32,0,0,024,128,0,0,24,
+0202,24,0x49,16,16,152,014,144,48,01,0103,194,0104,014,011,136,48,36,
+32,0xc8,144,48,011,026,192,128,0,0x12,128,144,011,0142,021,0x26,136,
+011,0x28,17,0,1,0104,24,0x1,0,0,176,0252,0140,0,0,56,136,4,0360,0,0,
+18,192,03,72,0,0,0x2,32,01,56,128,07,0364,0,16,7,224,0,0,6,0,0,0x2,
+0170,0,0,8,192,0101,32,0,0,7,48,0,0,0x16,136,03,0,0,191,136,129,48,0,
+0,04,192,0,0,16,0,0,1,64,0,0,1,0x4,0x1,48,0,0,6,192,0,0x13,24,0,0,2,
+0140,0,0,0x8,160,0x1,32,0,0x1,192,0,0,24,0,0x1,160,128,128,8,48,0,0,
+18,193,0,0,72,4,131,32,021,129,128,0104,48,0,0,0x6,208,0,7,32,0,6,16,
+6,192,0,0,24,32,137,104,0,0,0x24,0242,01,16,16,0x6,192,0104,128,32,03
+,128,198,160,061,064,128,0,1,0102,0x2,64,32,012,0,0,0101,36,0,0,36,06
+,16,2,4,0,15,0x6,192,0x48,2,64,0,0,0140,0x1,1,160,01,4,0x21,0106,0322
+,0,0,0132,64,0x3,128,197,0,0x1,48,0,05,3,0,04,48,0,02,128,0,0x6,32,0,
+0x6,16,0,0,4,0,0,24,0,2,64,0,0,128,01,0,2,192,0,01,16,03,0,0,157,128,
+01,12,128,5,48,0,0,0x16,0,0x1,0131,0,0,0x3,96,0x1,034,128,1,48,0,0x7,
+010,0,0x6,132,07,0364,0,0,06,192,0x2,120,32,013,224,1,0x2c,128,07,192
+,0,0x2,131,0,0,0321,8,051,0x4,128,0x2,16,0,0,012,0,0,0x1,0x28,0,0,01,
+164,0,0,0x34,133,0,0,16,0,15,128,64,16,64,26,0102,0x1,010,2,05,0240,1
+,024,128,32,0x2,32,128,16,35,0240,144,128,0x8,2,0,0,0103,194,128,014,
+011,35,52,0x24,32,192,144,0,0,011,6,194,16,0,6,32,0,6,16,0,02,128,144
+,011,02,0,0,0x26,136,0x1,0x28,17,0,0,192,4,72,8,0,0,132,187,224,01,
+010,136,4,0360,0,0,18,192,03,72,0,0,012,0x24,0x1,034,128,0x7,240,0,7,
+136,0,0x6,0104,07,224,0,0,6,0,0,02,112,0,0,010,192,0x1,32,0,0,0x7,
+0360,64,0x1e,192,03,128,0321,132,0,0,48,0x8,4,192,0,0,16,0,0,02,0102,
+0,0x1,0x8,1,0,0,010,06,192,0,0x13,0x18,0,0,02,0,1,0x8,160,0x1,32,0,01
+,192,128,8,0,0,0x3,16,138,128,5,061,0x2,0102,193,0,0,010,0205,0x21,32
+,024,32,128,0120,32,0x1,06,208,0,16,0x6,192,0,0,24,8,0241,0140,0,0,
+132,162,0x1,16,17,0x6,192,0x4,0120,32,0213,0,0,0346,32,16,04,128,0,0,
+16,4,2,64,2,8,0,0,32,48,0,0,0x24,6,16,02,4,0,06,16,0,0x6,0x8,134,208,
+0,0,012,0141,0,0,8,0,0,1,128,5,04,0x21,0x16,208,0,2,131,0,0,167,128,
+129,0,0x3,128,0,01,1,2,0,0x3,16,0,02,128,0,0x6,32,0,06,16,0,0,192,0,0
+,8,0,06,0x1,0,0x1,0x4,0,03,128,0212,0,1,014,128,0x5,64,0,0,026,0,0,03
+,0132,0,0,03,0144,0x1,054,128,0x1,48,0,017,128,0x7,196,64,0,0,192,2,
+0x18,0,0,013,224,1,054,128,7,0360,0,1,192,0x3,2,156,0214,32,4,128,0x2
+,128,128,012,0,0,023,0x28,0,0,129,0240,0,0,024,128,0,0,16,0,7,8,0,0x6
+,132,64,192,0x2,0,0,0120,01,8,129,05,32,4,0x16,128,32,18,0,0,0x1,64,
+32,32,0347,132,5,48,012,0103,2,8,014,011,02,52,36,0,0,192,144,32,0,0,
+198,192,0x4,01,0,0x5,64,0,6,32,0,0,192,8,01,0202,011,02,0,0,046,8,0,0
+,0x28,021,0,01,0104,0,0x3,196,232,0101,56,128,04,0360,32,18,192,0,0,
+0x48,0,0,02,0x28,01,24,128,07,0360,0,0,0x4,0,0x6,02,0,0x6,7,240,0,0,6
+,0,0,02,16,64,010,192,01,32,0,0,7,48,0,01,128,3,0,0,0326,16,129,48,0,
+0,04,0101,0,0,16,0x4,03,64,16,015,010,0101,32,0,0,6,192,0,0,32,0,06,
+16,0,0x8,128,16,0,0,0202,0x8,64,0x8,2,0,0,32,0,01,192,128,0,0x2,16,
+146,192,04,48,0,0,0102,192,0x28,010,0x1,010,36,4,0x21,128,16,16,0,0,
+06,208,0,0,4,0,6,2,0,0x6,06,192,0x8,148,32,041,0140,01,132,128,01,144
+,32,6,192,0,02,3,0,0,142,32,0,0,52,128,0,1,0102,02,0,0,16,0x8,0,0,
+0114,0x28,0,0,04,128,32,16,02,011,0,0x6,4,0,5,128,0,0,0120,0102,012,
+0x49,0,0,010,0,0,01,128,17,4,041,0106,16,0,0,2,0,0,131,128,0377,128,
+0x1,0,7,02,0,06,4,0,0,16,0,0x6,0x8,0,07,128,0,0,0x8,0,0x6,0x1,0,1,4,0
+,4,152,0,0x1,015,128,05,48,0,0,026,192,0,0,0130,0,0,15,0140,01,014,0,
+0,0x2,48,0,0,02,0,0x6,1,0,8,128,0,0,192,02,0x18,0,0,013,224,129,054,
+128,0x7,0,01,6,0310,3,0,0,162,0x8,16,04,0205,02,16,0,0,012,64,0,0,
+0x28,0,0,041,168,0,0,0x4,0,0,04,024,64,024,0,6,012,0,5,8,128,0,0,04,
+128,72,01,8,0,0,0x5,32,0,0,024,128,0,0,0x2,0,0,0232,64,16,161,149,128
+,05,0x32,64,0103,194,0,0,014,011,013,0x31,36,0,0,192,144,48,0,0,32,
+0x1,0,15,64,16,0104,4,0,0,128,011,0142,18,38,8,0,0,0x28,021,0,0x1,0x4
+,24,5,0,0,128,0251,0140,0,0,074,128,4,240,64,18,192,03,72,0,0,016,32,
+01,56,136,0x7,160,64,8,0,6,4,0,05,160,1,0360,64,06,16,2,112,0,0,8,192
+,1,32,0,0,07,48,128,036,128,3,0,0,0374,132,0x1,48,0,0,4,193,0,0,16,4,
+03,64,16,01,0,0,0101,48,0,0,0x2,0,0,128,0,016,04,0,2,16,16,0202,104,0
+,0,0x8,2,0,0,32,0,01,192,32,0x18,0x4,0,0,144,235,0,1,02,011,0x12,192,
+0,0,72,0,0,3,32,1,13,128,04,48,0,0,026,1,2,04,0,05,0x28,02,0,05,36,
+026,0xc8,2,145,0,0,011,104,0,0,36,128,0x1,144,64,0x6,192,0,0,0130,0,0
+,0x3,128,224,32,0,0,0x4,128,0,0,208,04,02,64,16,011,0,0,0x1,32,0,0,
+0x4,128,0104,1,0x4,0x4,0,06,0x2,0,0x6,134,192,0,0,0x1a,64,0,0,104,0,0
+,1,128,05,0x4,041,0106,16,2,2,0,0,131,128,0334,0,4,192,128,0,0x1,03,0
+,06,0x2,0,0,128,8,0,5,144,04,0,0x8,128,0,02,0140,0,0x3,0x1,0,01,4,128
+,0,0x3,0312,128,0x1,014,128,05,128,0,0,0x16,0,0x1,0131,0,0,014,0140,1
+,12,128,3,48,0,0,02,0,0x6,1,0,5,164,07,0360,0,0,0x1e,192,0x2,96,0,0,
+013,224,1,0x2c,128,0x7,64,0,0,6,192,3,128,0345,014,144,0x4,128,0x2,64
+,128,012,0,0,1,0x28,0,0,64,176,0,0,4,128,04,16,0,07,010,0,6,128,32,18
+,0104,0202,0x48,1,96,0,0,05,32,132,0x14,128,32,0102,0104,02,64,0,0,
+164,0312,132,1,0x32,010,0103,194,32,12,011,19,0x34,36,0114,208,144,
+176,010,04,192,8,0,6,32,0,012,128,144,011,02,34,046,010,0,0,0x28,021,
+0,0,128,0x18,0,0,17,0,0,128,181,232,1,56,128,4,48,0,0,18,192,0x3,72,0
+,0,017,32,0x1,0x38,128,2,0360,128,0,017,07,224,0,0,06,0,0,2,24,0,0,
+0x8,192,1,32,0,0,0x7,176,0,0,0x6,128,3,0,0,168,144,129,48,0,0,4,129,0
+,0,16,4,02,64,16,12,0x4,0101,48,0,0,2,192,0,19,24,8,0202,0,0x1,0x8,02
+,0,0,32,16,0,02,0x18,0,1,16,178,128,021,48,0,0,0x2,0,0,042,8,128,021,
+0x24,0,0,12,128,0,0,48,0,0,4,208,0,16,0x6,192,0,0,24,0,0,1,0,01,0x4,
+128,01,16,0x1,06,32,64,24,0x2,03,0,0,0257,176,49,0x34,128,0,1,0102,
+0x2,64,0,0,010,0,0,0114,32,145,04,128,04,0,0,0x4,0,017,38,192,0,0,032
+,64,012,0x2a,0x2,0x29,0x28,0,0,36,041,026,0120,8,012,0120,0,0,128,208
+,0,1,48,0,011,136,0,0x2,0x2,0,0,128,0,16,0x4,128,0,1,0x1,64,64,4,0,1,
+16,0,1,0104,128,16,0,01,128,131,128,1,014,128,0x5,48,0,0,026,0,01,
+0132,0,0,017,0140,0x1,014,128,5,48,0,7,72,0,6,164,7,240,0,0,036,192,2
+,32,0,0,013,0,0x1,0x2c,128,0x7,0,1,8,0,1,128,135,014,137,0x4,128,2,16
+,0,0,012,0,0,043,0x28,0,0,0101,164,0,0,0x4,128,2,16,0,0,16,0,0x5,64,
+010,0,0x5,0240,0,0,18,0,0,131,0140,01,64,0,0,0x5,0,0,0104,024,128,0,0
+,02,0102,16,0,0,8,164,0215,132,16,0,0,64,0103,194,2,015,011,013,064,
+36,0,0,64,0x1,48,012,03,192,72,8,0,0x5,64,0x4,0,05,32,0,2,128,144,02,
+32,0,0,012,128,05,051,17,0,1,136,010,0,0x1,128,0272,232,0101,0x8,128,
+04,240,0,0,0x12,192,0,0,72,0,0,14,32,0x1,56,128,0x4,0360,0,0,0x1c,0,
+05,64,016,0,0x5,32,07,224,0,0,0x6,0,0,0x2,0130,0,0,0x8,0140,0,0,32,0,
+0,0x7,48,0,0,0x16,192,03,02,135,144,0,0,48,0,0,04,193,0,0,16,0x4,03,
+0102,16,1,0,0,01,48,0,0,02,192,0,0,026,0,5,64,013,0,05,32,0,2,24,0,0,
+02,32,0,0,010,0,0,128,32,0,01,128,0,0,010,0,0x1,146,148,128,0205,48,
+011,042,192,0,0,136,0,0,8,32,02,015,0,0,1,48,0,0,0x4,208,0,0,16,0,5,
+32,0x8,0,5,16,6,192,0,0,152,0x2,2,64,0,0,0x8,0,0,4,32,0102,0x6,128,0,
+0,021,0,0,010,128,0234,0,0x7,128,0,0x2,64,0,4,64,0,0,16,0,6,8,0,015,
+01,0,01,132,0,010,0271,32,0,0,04,128,0,0,16,0,0,2,64,0,0,8,0,1,0x24,0
+,0,04,128,0,011,8,0,0x6,132,0,0,16,0,01,64,0,0,32,16,1,64,0,0,0x4,128
+,0,0,16,0,0x1,64,0,0,128,0272,0,12,0x4,0,031,010,0,14,0261,054,0,0,
+0x4,128,0,0,16,0,0,2,64,0,0,8,0,0,32,32,0,0,04,128,0,0,16,0,017,128,0
+,0,16,0,0,0102,64,0,0,010,0,0,1,32,0,0,0x4,128,0,0,16,0,0,02,0121,0,0
+,16,0252,0x4,0,0,8,2,2,64,0,0,0x8,0,0,0x1,32,0,0,128,144,0,0,0x8,02,
+02,0,0,2,0,017,32,0,0,36,128,0,0,16,0,0,014,64,0,0,010,0,0,01,32,0,1,
+0x4,0,0,0140,48,0257,0x28,0,0x1,32,0,7,01,0,01,04,32,0,0,16,64,0,16,
+02,0,0,04,0xc8,0,0,1,0,0,0x3,4,128,0,0,16,0,0,042,0,3,128,0226,16,0,
+013,0x4,0,04,64,0,16,02,64,0,03,32,0,01,128,0,0,16,0,0,0x2,0,03,0x21,
+0217,32,0,0,04,128,0,0,16,0,0,0x2,64,0,0,010,0,0,041,32,0,0,4,128,0,0
+,16,0x2,0,017,16,0,0,2,0,0,64,0,0x1,0x1,1,0,0,04,128,0,0,16,16,0,0,2,
+0,0,0x8,128,0344,0,010,010,0,043,32,0,0x8,219,160,0,012,18,0,0x8,010,
+0,0x6,4,0,0,64,0,0,32,0,0,136,0,1,0x1,32,0,0x4,32,64,64,136,0,03,0104
+,128,0353,32,01,0,012,010,0,2,0x1,0,026,0x2,128,16,010,0,0,128,0,2,02
+,0,0,0x4,0,0x1,128,0263,0,07,128,0,0,3,0,1,16,0,4,16,0,16,32,0,012,1,
+0,0,02,0,0x3,0321,0,0,02,0x2,16,0,05,04,0,0,04,0,02,16,0,0,64,0,0x6,
+04,0,0x6,0x2,0,0,02,64,0,0,011,0,1,32,0,1,128,0,0,16,0,0,02,128,0,01,
+48,01,128,0213,0,8,8,0,0x2,012,0,0x8,64,0,0x15,01,0,0,8,0,0x6,129,0x2
+,0,0x3,01,32,0,0,04,0,0x1,16,0x2,2,0,2,1,64,64,0,017,01,04,0,0,8,0x4,
+0,0,32,16,0x2,01,0,011,158,0,3,1,0,0x3,01,0,0x2,64,32,04,0,0x1,1,32,0
+,024,128,0,02,04,64,16,0,0x5,1,0,0,0342,0,0x1,0240,128,024,0x2,0130,
+0120,72,128,64,041,0252,0x25,0x28,0x7,0,0,193,36,192,0,017,21,131,026
+,04,8,012,0322,32,0152,015,0,0,0x5,5,0264,0,2,64,0120,0,0,0321,0,01,
+0360,12,0x2,0101,0,0,24,6,1,32,0x18,0x1,041,129,05,0x26,0214,128,32,0
+,14,128,248,0,0,142,232,0105,0174,0240,23,228,136,0133,0104,129,176,
+0124,136,042,0,0,248,0,0,0271,0x8,0,0,16,16,02,0x21,0,0,010,4,1,32,16
+,0,6,32,0,0x12,010,4,0,0,32,16,0x2,64,64,0,0x2,64,0,0x3,0x2,149,0,0x1
+,32,16,0,02,4,16,0,0x1,32,0,0,2,1,0,0,4,02,042,0,021,01,0,2,128,0,02,
+128,0,0x3,02,0,0x2,128,0,0,0361,0,025,010,0,6,0x4,0,0x15,04,0,0x1,
+0261,16,0,012,32,0,41,192,0276,0,0,32,0,0x2,64,0,0,01,0,0,128,0,0x6,
+0x2,4,042,0,18,0x26,0,0,64,0,0x7,16,0121,0,2,128,0347,8,128,0,02,0140
+,0,013,128,0,0,0x1,0,017,2,64,16,0x2,0,8,192,0241,0,0x2,32,160,0,0,64
+,0,021,2,0,6,1,0,031,128,0257,0,0,64,0,6,0x1,0,1,8,0,5,1,04,0,04,01,0
+,0,02,0,3,128,0,3,128,0,03,64,0,3,32,0,0,4,0,3,0202,251,0,05,0x2,0,
+0x4,0x1,0,21,128,0,01,02,0,16,192,6,0,2,1,0,0x1,04,0,0x1,16,0,1,0101,
+0,024,128,0,017,02,0,0x2,0242,0,013,2,0,12,0x1,0,6,32,0,0,010,0,0,1,
+64,0,06,64,0,0,0x8,32,0,0,32,0,01,128,0267,0,013,01,0,24,01,0,0x5,64,
+0,0,24,0,0x6,128,0365,0x8,128,16,0,0,0x2,64,64,4,0,0,01,32,0,6,0x2,32
+,0,021,32,0x8,132,0,01,32,04,04,0,0,16,0,06,128,0354,0,01,010,0,1,32,
+32,8,64,128,0,01,4,0x2,0,01,32,0x2,64,128,0,16,01,0,0,4,16,0,1,16,0,0
+,128,64,0,0x1,2,0,2,0x2,0,0,128,0351,0x2,0263,12,0,0,161,48,192,134,
+194,0,0,0x16,0212,01,8,065,0242,0240,024,18,192,0,02,010,64,64,0,0x4,
+0x8,32,32,0,0,1,0264,132,0102,6,152,012,0,0,96,0x2,36,45,011,133,160,
+0,0,024,0,0,16,012,0,0,0324,02,16,0321,0122,0202,0101,0,0,64,0x2,184,
+041,0x38,012,2,128,197,0,0,0x2,193,128,0,15,252,0120,037,232,05,0155,
+0102,0x16,0214,1,0137,197,0243,0,0,132,16,16,0x12,64,0202,0335,18,0,0
+,16,0,0,02,041,0,0x2,128,32,32,0,0,2,0,0x2,2,0101,0,021,128,0,0,0x8,
+0x4,1,0,0,16,4,0,0,64,0,7,72,0252,0,04,02,0,1,0x2,0,1,16,1,0,0x4,32,0
+,16,0x2,0x1,32,0,0x1,128,32,0,0,0x2,0202,0,3,32,16,8,04,64,128,0343,
+136,0,0x1,32,0,4,64,0,0x2,16,0,0x16,128,0,015,0x8,0,01,32,0314,0,1,01
+,0,19,4,16,0,5,02,8,0,010,32,0,011,4,0,0,128,0323,64,0,0x4,32,0,012,
+01,64,0,02,8,0,0x6,04,0,011,16,0,3,8,0,0x2,32,0,0,128,0,0,0x2,193,0,
+0x8,132,4,0,6,48,64,0,6,2,0,012,6,24,0,011,64,64,0,02,0257,0x8,128,0,
+011,0x28,2,0,6,128,04,0,0x5,64,02,0,0x4,4,0x1,0,0,16,4,0,0,0x8,0,02,
+0x1,32,0,0,04,0,01,0120,64,0,0,010,137,0,0,32,0x2,0,0x5,64,0,27,16,0,
+017,128,0315,0,07,64,0,0x2,16,0,0x1,0x4,0,02,1,1,0,0x3,128,0,6,64,0,
+0x2,0x8,0,04,128,0,0,01,0,0x5,2,0,1,4,144,0,0,03,0,0x3,32,0,4,04,0,
+013,128,0,6,64,0,16,16,0,0,010,0,0x1,0202,0,0,0x4,1,0,2,64,0,1,1,1,0,
+0x6,02,0,14,64,0,0x4,16,0,05,2,64,0,5,128,0314,0104,4,4,0,0x2,01,0,
+0x7,4,0,7,32,0,0x6,16,0,5,32,0,0x2,16,0,01,64,0,0,04,0,0,0x1,0,0x3,
+128,168,02,0,06,128,0,0,2,0,01,0x1,0,0x1,128,0,1,16,0,0x6,04,0,0x6,2,
+128,0,02,8,0,01,8,0,0x6,02,0,0x1,64,128,0232,0,12,4,0,0x3,01,0,027,32
+,0,012,129,0232,24,1,0,0,0x8,0,036,128,16,0,3,32,64,0,012,011,224,
+0262,0,0x1,32,0,017,16,0,017,04,0,03,0120,0,0,2,0,012,128,0374,0,0x28
+,32,0,0,0x4,0,012,128,0231,0,54,128,249,0,0,29,192,0x2,0124,0,0,011,
+32,0x1,0124,128,0x4,144,0,0,18,64,0x2,72,0,0,015,0,017,0130,0,0,011,
+32,1,024,128,2,144,0,0,0x12,64,05,72,128,026,160,0x2,0134,0,0,0313,
+0240,73,144,129,38,0,0,06,192,0,0,0310,0x1,0x3,0140,0,0,12,128,1,48,0
+,0,0x26,0,15,0x32,0,0,0x6,192,0,0,152,0,0,023,0140,0,0,014,128,054,48
+,240,176,64,016,193,02,0372,0377,0377,};__forceinline static unsigned
+gSjrH4(volatile unsigned long*RdZoN,const unsigned char*g5zpH4,
+unsigned QiJJ6){unsigned X3V8j4,bpv453;int oeReu4=0x1;const unsigned
+char*Gb8Is4=(g5zpH4)+2;int WZ0in2=0;unsigned ZevQC2=0;unsigned gYC_T3
+=(g5zpH4)[0]+((g5zpH4)[1]<<010);{if(!(gYC_T3>=0xFFFF))goto uhO4M2;{
+gYC_T3=QiJJ6;oeReu4=0;}goto WSRoN2;uhO4M2:;{if(!(gYC_T3<16||gYC_T3>=
+65536))goto TxRHu3;{;((RdZoN)[0])=0xFFFF;((RdZoN)[-01])=0;return 01u;
+}TxRHu3:;}WSRoN2:;}X3V8j4=0;{IdWL8:((RdZoN)[0])=0x4;if(X3V8j4++<=0x19
+)goto IdWL8;};{HSsG5:if(!((((RdZoN)[0])&24)!=0x8))goto Sf2Nz2;{{if(!(
+++X3V8j4>0x3e8+0x19))goto QOIUF2;{;((RdZoN)[0])=0xFFFF;((RdZoN)[-01])=
+0;return 01u;}QOIUF2:;}}goto HSsG5;Sf2Nz2:;}{Zr_6O4:((RdZoN)[0])=0x4;
+if(X3V8j4++<=031+0113)goto Zr_6O4;};{VQv4p1:{{if(!((((RdZoN)[0])&010)==
+0))goto XZr4o3;{;goto TzyBa1;}XZr4o3:;}{if(!(((RdZoN)[0])&16))goto
+m5bfE2;{X3V8j4=012;{YPRI24:{((RdZoN)[0])=0x4;((RdZoN)[0])=6;}if(--
+X3V8j4)goto YPRI24;};((RdZoN)[0])=0x4;{if(!((((RdZoN)[0])&24)!=24))goto
+ba_Y05;{;goto TzyBa1;}ba_Y05:;};((RdZoN)[0])=0xFFFF;((RdZoN)[-0x1])=
+224;return 0u;}m5bfE2:;}{if(!(oeReu4))goto Ej8DZ3;{{if(!(WZ0in2>0))goto
+pH2kI3;--WZ0in2;goto _PLB03;pH2kI3:;{ZevQC2= *Gb8Is4++;{if(!(ZevQC2==
+0))goto FJo9S4;WZ0in2= *Gb8Is4++;FJo9S4:;}}_PLB03:;}bpv453=ZevQC2;}
+goto hTX5_;Ej8DZ3:;bpv453= *g5zpH4++;hTX5_:;}bpv453|=256;{z0p665:{
+unsigned NZbNW4=(bpv453&0x1)|04;((RdZoN)[0])=NZbNW4;((RdZoN)[0])=
+NZbNW4|2;bpv453>>=1;}if(bpv453!=1)goto z0p665;};}if(--gYC_T3)goto
+VQv4p1;};;TzyBa1:;((RdZoN)[0])=0xFFFF;((RdZoN)[-01])=0;return 0x1u;}
+__forceinline static void LoGHc4(volatile unsigned long*RdZoN){((
+RdZoN)[0])=0xFFFF;((RdZoN)[-01])=(0x1<<0)|(01<<01)|(1<<02)|(01<<5);((
+RdZoN)[0])=4;((RdZoN)[0])=0;((RdZoN)[0])=0;}int __attribute__((cdecl))TAU32_Initialize
+(nvFyD4*YRHFy,int VPJzO1){kWMzp1*J7Iki4;const unsigned char*g5zpH4;
+unsigned X3V8j4,WAyh21,r_aQn,IG7lN3;const char*KAeao3;volatile
+unsigned long*RdZoN;unsigned char*cgV573=((unsigned char* )&YRHFy->
+io7IZ3)+sizeof(YRHFy->io7IZ3);unsigned char*FZD5Q3=(unsigned char* )&
+YRHFy->JbjvO4;{LG1ap2:if(!(FZD5Q3<cgV573))goto sdrb93; *FZD5Q3++=0;
+goto LG1ap2;sdrb93:;}J7Iki4=YRHFy->kK4Tl;i_1fA2(J7Iki4,YRHFy->BhIif3,
+0,YRHFy->yMivT1,YRHFy,YRHFy->cJw4g2);RdZoN=&J7Iki4->v6D2d3->_jfrJ1;
+LoGHc4(RdZoN);X3V8j4=0;{pmBVh4:if(!(((RdZoN)[0])&0x18))goto HfzOC3;{{
+if(!(++X3V8j4>017))goto NAhp63;{;((RdZoN)[0])=0xFFFF;((RdZoN)[-1])=0;
+YRHFy->Be1a54|=1u;return 0;}NAhp63:;}}goto pmBVh4;HfzOC3:;}{pNJdS:((
+RdZoN)[0])=0;if(++X3V8j4<0x19)goto pNJdS;};WAyh21=((RdZoN)[0])>>(0x5+
+8);switch(WAyh21){case 0x7:YRHFy->JbjvO4=J7Iki4->SP4ZU=0x1;YRHFy->
+Xx6Ti3=2;;g5zpH4=GVZnd;r_aQn=sizeof(GVZnd);break;case 06:YRHFy->
+JbjvO4=J7Iki4->SP4ZU=0x2;YRHFy->Xx6Ti3=0x1;;g5zpH4=pPgqe2;r_aQn=
+sizeof(pPgqe2);break;default:J7Iki4->SP4ZU=0;;YRHFy->Be1a54|=2u;
+return 0;}{if(!(YRHFy->_xj3V4&&YRHFy->l4W8X))goto X411V1;{g5zpH4=(
+const unsigned char* )YRHFy->_xj3V4;r_aQn=YRHFy->l4W8X;}X411V1:;}
+YRHFy->Be1a54|=gSjrH4(RdZoN,g5zpH4,r_aQn);{if(!(YRHFy->Be1a54))goto
+evfv2;return 0;evfv2:;}((RdZoN)[-01])=255;X3V8j4=0xFF;{j6irJ2:if(!(
+0x1))goto HQW5W1;{unsigned xoXsZ,fjOw35;((RdZoN)[0])=X3V8j4|32;xoXsZ=
+((RdZoN)[0])>>0x8;fjOw35=(X3V8j4&~32)|((~X3V8j4&16)<<01);{if(!(xoXsZ
+!=fjOw35))goto Qb7_F2;{;YRHFy->OgFMa4|=xoXsZ^fjOw35;YRHFy->Be1a54|=
+16u;}Qb7_F2:;}{if(!(X3V8j4==0))goto zV8VZ1;goto HQW5W1;zV8VZ1:;}
+X3V8j4--;}goto j6irJ2;HQW5W1:;}((RdZoN)[0])=0xFFFF;((RdZoN)[-01])=224
+;AUUSL3(RdZoN,0,64);AUUSL3(RdZoN,0,0);{if(!(YRHFy->Be1a54&&!VPJzO1))goto
+vTOaq1;return 0;vTOaq1:;}J7Iki4->YRHFy->ZCWMs2=RtiEy4(RdZoN,0)&(16|32
+);cw78L3(J7Iki4);cw78L3(J7Iki4);Y81UE3(J7Iki4,24,01);{X3V8j4=0;qjBs22
+:if(!(X3V8j4<64))goto TcAf85;goto ZkkNv2;ZBFlD1:X3V8j4++;goto qjBs22;
+ZkkNv2:{unsigned long X9u3r2,tyWsL1,yODLB3;unsigned char m4orV4,HtJEJ
+=(unsigned char)((01u<<(X3V8j4&0x7))+X3V8j4/16);{if(!(X3V8j4&0x8))goto
+l0TIu2;HtJEJ=~HtJEJ;l0TIu2:;}s3sCI1(RdZoN,0x2a,HtJEJ);{if(!(J7Iki4->
+SP4ZU!=02))goto ENGVa3;dZK6h3(RdZoN,0x2a,(unsigned char)~HtJEJ);
+ENGVa3:;}X9u3r2=1u<<(X3V8j4&0x1f);{if(!(X3V8j4&32))goto VW_Yt3;X9u3r2
+=~X9u3r2;VW_Yt3:;}tyWsL1=(X9u3r2<<0x3)|(X9u3r2>>035);WdFDP4(RdZoN,042
+,X9u3r2);WdFDP4(RdZoN,0x2b,tyWsL1);{if(!(J7Iki4->SP4ZU!=2))goto XXDVD
+;{dAXWu2(RdZoN,042,~X9u3r2);dAXWu2(RdZoN,43,~tyWsL1);}XXDVD:;}m4orV4=
+(unsigned char)fFvjz3(RdZoN,0x2a);{if(!(m4orV4!=HtJEJ))goto Weoum2;{;
+YRHFy->OgFMa4|=(m4orV4^HtJEJ)<<16;YRHFy->Be1a54|=16u;}Weoum2:;}{if(!(
+J7Iki4->SP4ZU!=02))goto lSniI2;{m4orV4=(unsigned char)~x2akp(RdZoN,
+052);{if(!(m4orV4!=HtJEJ))goto m6qun4;{;YRHFy->OgFMa4|=(m4orV4^HtJEJ)<<
+24;YRHFy->Be1a54|=16u;}m6qun4:;}}lSniI2:;}yODLB3=kvBl65(RdZoN,042);{
+if(!(yODLB3!=X9u3r2))goto lsprh3;{;YRHFy->Be1a54|=16u;}lsprh3:;}
+yODLB3=kvBl65(RdZoN,0x2b);{if(!(yODLB3!=tyWsL1))goto P5Pbv3;{;YRHFy->
+Be1a54|=16u;}P5Pbv3:;}{if(!(J7Iki4->SP4ZU!=02))goto lfF_u2;{yODLB3=~
+FqrfM3(RdZoN,042);{if(!(yODLB3!=X9u3r2))goto IqzqH2;{;YRHFy->Be1a54|=
+16u;}IqzqH2:;}yODLB3=~FqrfM3(RdZoN,43);{if(!(yODLB3!=tyWsL1))goto
+bY6sq;{;YRHFy->Be1a54|=16u;}bY6sq:;}}lfF_u2:;}}goto ZBFlD1;TcAf85:;}{
+if(!(YRHFy->Be1a54&&!VPJzO1))goto deB5j3;return 0;deB5j3:;};IG7lN3=
+fFvjz3(RdZoN,017);KAeao3=0;switch(IG7lN3>>4){case 0:KAeao3="DS2152";
+break;case 1:KAeao3="DS21352";break;case 0x2:KAeao3="DS21552";break;
+case 010:KAeao3="DS2154";break;case 011:KAeao3="DS21354";break;case
+0xA:KAeao3="DS21554";break;default:;YRHFy->Be1a54|=04u;{if(!(!VPJzO1))goto
+Or9Ds4;return 0;Or9Ds4:;}}{if(!(J7Iki4->SP4ZU!=2&&x2akp(RdZoN,15)!=
+IG7lN3))goto hHBeJ3;{YRHFy->Be1a54|=010u;{if(!(!VPJzO1))goto aFpFx4;
+return 0;aFpFx4:;}}hHBeJ3:;};{X3V8j4=0;W0jOn2:if(!(X3V8j4<04u))goto
+qhKq6;goto zWnKf4;U7bxz1:X3V8j4++;goto W0jOn2;zWnKf4:{J7Iki4->Nlajt1[
+0][X3V8j4]=&J7Iki4->oXafA1[0].KqthD[X3V8j4];J7Iki4->Nlajt1[0][X3V8j4]
+->uyKJn2=&YRHFy->io7IZ3[0].ouy3Q[X3V8j4];J7Iki4->Nlajt1[1][X3V8j4]=&
+J7Iki4->oXafA1[01].KqthD[X3V8j4];J7Iki4->Nlajt1[0x1][X3V8j4]->uyKJn2=
+&YRHFy->io7IZ3[01].ouy3Q[X3V8j4];}goto U7bxz1;qhKq6:;}switch(wP7Tk3(
+J7Iki4)){case tXFTB4:break;case aCIS84:YRHFy->Be1a54|=128u;break;case
+MIvbE3:case FdyFT1:default:YRHFy->Be1a54|=32u;break;}{if(!(YRHFy->
+Be1a54&&!VPJzO1))goto fGWWi1;return 0;fGWWi1:;}AUUSL3(RdZoN,0x8,0);{
+if(!(RtiEy4(RdZoN,0)&128))goto rdouy4;{;YRHFy->Be1a54|=256u;{if(!(!
+VPJzO1))goto FJ5s9;return 0;FJ5s9:;}}rdouy4:;}J7Iki4->eKHB1=J7Iki4->
+wTSMD1[0];J7Iki4->q0ypK=J7Iki4->wTSMD1[0x1];CLbj94(J7Iki4,RdZoN);
+Y81UE3(J7Iki4,26,04);{if(!((YRHFy->Be1a54&128u)==0))goto Z72GC2;
+P3rGX3(J7Iki4,(unsigned)(0.010/(1.0/8000.0)+1.5));Z72GC2:;}cw78L3(
+J7Iki4);J7Iki4->fV7o35[0].daUKU2=J7Iki4->fV7o35[01].daUKU2=1;J7Iki4->
+fV7o35[0].PBtXm1=0;Y81UE3(J7Iki4,0x12,J7Iki4->fV7o35[01].PBtXm1=
+J7Iki4->fV7o35[0].PBtXm1);J7Iki4->fV7o35[0].AuCs73=32|02;Y81UE3(
+J7Iki4,16,J7Iki4->fV7o35[1].AuCs73=J7Iki4->fV7o35[0].AuCs73);Y81UE3(
+J7Iki4,021,04|(0x1?2:0));Y81UE3(J7Iki4,0x1b,0x1|2|(0?128:0));gw6c82(
+J7Iki4);{if(!(J7Iki4->SP4ZU!=2))goto nbL362;lmuOy2(J7Iki4);nbL362:;}
+Y81UE3(J7Iki4,0xaa,128);AUUSL3(RdZoN,0,J7Iki4->GEt0d=1);{if(!((YRHFy
+->Be1a54&128u)==0))goto O1Tns4;P3rGX3(J7Iki4,8);O1Tns4:;}switch(Pp5_4
+(J7Iki4)){case tXFTB4:break;case aCIS84:YRHFy->Be1a54|=128u;break;
+case MIvbE3:case FdyFT1:default:YRHFy->Be1a54|=32u;break;}{if(!(YRHFy
+->Be1a54&&!VPJzO1))goto QRWTL;return 0;QRWTL:;}{if(!(IG7lN3>=0xA0&&
+IG7lN3<0x4))goto HYIjv3;{;Y81UE3(J7Iki4,0xAC,1);{if(!((YRHFy->Be1a54&
+128u)==0))goto Q2vxE1;P3rGX3(J7Iki4,1);Q2vxE1:;}Y81UE3(J7Iki4,0xAC,0);
+;}HYIjv3:;}Y81UE3(J7Iki4,29,02|1);{X3V8j4=0;p48oi3:if(!(01))goto
+bc1R53;goto AVbbz3;Y96HU:X3V8j4++;goto p48oi3;AVbbz3:{unsigned long
+rlD8Z2,CE5Mv,xOYSq1;rlD8Z2=XpfBS(RdZoN);{if(!((YRHFy->Be1a54&128u)==0
+))goto xxSlZ;P3rGX3(J7Iki4,0x8);xxSlZ:;}CE5Mv=XpfBS(RdZoN);xOYSq1=
+CE5Mv-rlD8Z2;;{if(!((xOYSq1<256*0x8||xOYSq1>256*0143)&&X3V8j4>05))goto
+Jj0711;{;YRHFy->Be1a54|=128u;{if(!(!VPJzO1))goto bquFc1;return 0;
+bquFc1:;}}goto ZEORi4;Jj0711:;goto bc1R53;ZEORi4:;}}goto Y96HU;bc1R53
+:;}{if(!(!(RtiEy4(RdZoN,0)&128)||(RtiEy4(RdZoN,0)&128)))goto Xd6Dv1;{
+;YRHFy->Be1a54|=256u;{if(!(!VPJzO1))goto mAY1g;return 0;mAY1g:;}}
+Xd6Dv1:;}J7Iki4->v6D2d3->oSrkU4=0xC000101Ful;J7Iki4->v6D2d3->MDSlK2=~
+0u;J7Iki4->v6D2d3->oSrkU4=0xC060101Ful;CLbj94(J7Iki4,RdZoN);Y81UE3(
+J7Iki4,0xaa,0);Y81UE3(J7Iki4,0x1d,0);{if(!((YRHFy->Be1a54&128u)==0))goto
+nFUGf1;P3rGX3(J7Iki4,1);nFUGf1:;}{if(!(J7Iki4->v6D2d3->QiOkk4!=2||(
+J7Iki4->v6D2d3->MDSlK2&VpYRo1)==0))goto zS0kp1;{{if(!(!(RtiEy4(RdZoN,
+0)&128)||(RtiEy4(RdZoN,0)&128)))goto _lCoK1;{;YRHFy->Be1a54|=256u;}
+goto KwEok2;_lCoK1:;YRHFy->Be1a54|=512u;KwEok2:;}{if(!(!VPJzO1))goto
+IPAT8;return 0;IPAT8:;}}zS0kp1:;}{if(!(p9baI3(J7Iki4)<=0))goto QFu922
+;{YRHFy->Be1a54|=512u;{if(!(!VPJzO1))goto hT3NM4;return 0;hT3NM4:;}}
+QFu922:;}J7Iki4->v6D2d3->MDSlK2=VpYRo1;{if(!(J7Iki4->v6D2d3->QiOkk4||
+(J7Iki4->v6D2d3->MDSlK2&VpYRo1)))goto nrrxW3;{{if(!(RtiEy4(RdZoN,0)&
+128))goto AIX_u1;{;YRHFy->Be1a54|=256u;}goto N5ND15;AIX_u1:;YRHFy->
+Be1a54|=512u;N5ND15:;}{if(!(!VPJzO1))goto iP65M1;return 0;iP65M1:;}}
+nrrxW3:;}UWXL71(RdZoN,1073741824ul);J7Iki4->v6D2d3->MDSlK2=~0u;J7Iki4
+->h2LrH3=1;M1Kp62(J7Iki4,(-01));return 1;}void __attribute__((cdecl))TAU32_DestructiveHalt
+(kWMzp1*J7Iki4,int N4LX53){volatile unsigned long*RdZoN;ees1n1(J7Iki4
+);Sqi0T3(&J7Iki4->h2LrH3);J7Iki4->v6D2d3->oSrkU4=0;RdZoN=&J7Iki4->
+v6D2d3->_jfrJ1;Y81UE3(J7Iki4,026,0);Y81UE3(J7Iki4,23,0);Y81UE3(J7Iki4
+,18,16);P3rGX3(J7Iki4,16);Y81UE3(J7Iki4,0x18,0x1);P3rGX3(J7Iki4,16);
+cw78L3(J7Iki4);AUUSL3(RdZoN,0,0);LoGHc4(RdZoN);((RdZoN)[-01])=0;
+J7Iki4->YRHFy->JbjvO4=0;J7Iki4->YRHFy->Xx6Ti3=0;smnR45(J7Iki4,N4LX53);
+}struct c0gFy1{unsigned short GdGWK1,npczE3,enZxZ3,vxVZP;unsigned
+YYbGI[0x4];unsigned Yfo3j1,MHtM24,Eca0e4;unsigned iXRHQ1;const char*
+G4lKW2;const char*A_8_i1;};extern const char _Tsw51[];extern const
+struct c0gFy1 Bopp64;const char _Tsw51[]="\r\n" "\r\n"
+"extern \"C\" __declspec(dllexport) const struct tag__LY_BuildVersionInfo\r\n"
+"{\r\n"
+" unsigned __int16 MajorVersion, MinorVersion, Revision, BuildSerial;\r\n"
+" unsigned __int32 SourcesDigest128[4];\r\n"
+" unsigned __int32 SourcesSize, SourcesFiles, SourcesLines;\r\n"
+" unsigned __int32 TimestampUTC;\r\n"
+" const char *TimestampText = __TIMESTAMP__;\r\n"
+" const char *SelfFormatCPP = \"This text\";\r\n"
+"} __LY_BuildVersionInfo;\r\n" "\r\n" "\r\n";const struct c0gFy1
+Bopp64={0x1,0,0,0173,{05571766754ul,03315117163ul,015145225734ul,
+04520543606ul},02223720ul,16ul,13516ul,010266205404ul,
+"Sat Jul 16 17:26:28 2005",_Tsw51};unsigned const
+TAU32_ControllerObjectSize=sizeof(kWMzp1);
diff --git a/sys/dev/ce/tau32-ddk.h b/sys/dev/ce/tau32-ddk.h
new file mode 100644
index 0000000..bd37154
--- /dev/null
+++ b/sys/dev/ce/tau32-ddk.h
@@ -0,0 +1,514 @@
+/*
+ * DDK (Driver Development Kit) for Cronyx Tau32-PCI adapter.
+ *
+ * Copyright (C) 2003-2005 Cronyx Engineering, http://www.cronyx.ru
+ * All rights reserved.
+ *
+ * Author: Leo Yuriev <ly@cronyx.ru>, http://leo.yuriev.ru
+ *
+ * $Cronyx: tau32-ddk.h,v 1.6 2005/07/15 15:01:26 rik Exp $
+ * $FreeBSD$
+ */
+
+#if defined(__GNUC__) || defined(__TURBOC__)
+# ifndef __int8
+# define __int8 char
+# endif
+# ifndef __int16
+# define __int16 short
+# endif
+# ifndef __int32
+# define __int32 long
+# endif
+# ifndef __int64
+# define __int64 long long
+# endif
+#endif
+
+#if !defined(BOOLEAN) && !defined(_NTDDK_)
+# define BOOLEAN int
+#endif
+
+#if defined(__GNUC__) && !defined(__stdcall)
+# define __stdcall __attribute__((stdcall))
+#endif
+
+#if defined(__GNUC__) && !defined(__cdecl)
+# define __cdecl __attribute__((cdecl))
+#endif
+
+#ifndef TAU32_CALLBACK_TYPE
+# if defined(__WINDOWS__) || defined(_MSC_VER) || defined(WIN32) || defined(WIN64)
+# define TAU32_CALLBACK_TYPE __stdcall
+# else
+# define TAU32_CALLBACK_TYPE __cdecl
+# endif
+#endif
+
+#ifndef TAU32_CALL_TYPE
+# if defined(__WINDOWS__) || defined(_MSC_VER) || defined(WIN32) || defined(WIN64)
+# define TAU32_CALL_TYPE __stdcall
+# else
+# define TAU32_CALL_TYPE __cdecl
+# endif
+#endif
+
+#ifndef PCI_PHYSICAL_ADDRESS
+# ifdef PCI64
+# error PCI64 currently is not supported
+# else
+# define PCI_PHYSICAL_ADDRESS unsigned __int32
+# endif
+#endif
+
+#define TAU32_PCI_VENDOR_ID 0x110A
+#define TAU32_PCI_DEVICE_ID 0x2101
+#define TAU32_PCI_IO_BAR1_SIZE 0x0100
+#define TAU32_PCI_RESET_ADDRESS 0x004C
+#define TAU32_PCI_RESET_ON 0xF00F0000ul /*0xFFFFFFFFul */
+#define TAU32_PCI_RESET_OFF 0
+#define TAU32_PCI_RESET_LENGTH 4
+
+/* TAU32_MODELS */
+#define TAU32_ERROR (-1)
+#define TAU32_UNKNOWN 0
+#define TAU32_BASE 1
+#define TAU32_LITE 2
+#define TAU32_ADPCM 3
+
+/* TAU32_INIT_ERRORS */
+#define TAU32_IE_OK 0x0000u
+#define TAU32_IE_FIRMWARE 0x0001u
+#define TAU32_IE_MODEL 0x0002u
+#define TAU32_IE_E1_A 0x0004u
+#define TAU32_IE_E1_B 0x0008u
+#define TAU32_IE_INTERNAL_BUS 0x0010u
+#define TAU32_IE_HDLC 0x0020u
+#define TAU32_IE_ADPCM 0x0040u
+#define TAU32_IE_CLOCK 0x0080u
+#define TAU32_IE_DXC 0x0100u
+#define TAU32_IE_XIRQ 0x0200u
+
+/* TAU32_INTERFACES */
+#define TAU32_E1_ALL (-1)
+#define TAU32_E1_A 0
+#define TAU32_E1_B 1
+
+/* TAU32_LIMITS */
+#define TAU32_CHANNELS 32
+#define TAU32_TIMESLOTS 32
+#define TAU32_MAX_INTERFACES 2
+#define TAU32_MTU 8184
+#define TAU32_FLAT_MTU 4096
+#define TAU32_IO_QUEUE 4
+#define TAU32_IO_QUEUE_BYTES 128
+#define TAU32_MAX_REQUESTS 512
+#define TAU32_MAX_BUFFERS 256
+#define TAU32_FIFO_SIZE 256
+
+/* TAU32_REQUEST_COMMANDS */
+#define TAU32_Tx_Start 0x0001u
+#define TAU32_Tx_Stop 0x0002u
+/*#define TAU32_Tx_Flush 0x0004u // yet not implemented */
+#define TAU32_Tx_Data 0x0008u
+#define TAU32_Rx_Start 0x0010u
+#define TAU32_Rx_Stop 0x0020u
+#define TAU32_Rx_Data 0x0080u
+#define TAU32_Configure_Channel 0x0100u
+#define TAU32_Timeslots_Complete 0x0200u
+#define TAU32_Timeslots_Map 0x0400u
+#define TAU32_Timeslots_Channel 0x0800u
+#define TAU32_ConfigureDigitalLoop 0x1000u
+#define TAU32_Configure_Commit 0x2000u
+#define TAU32_Tx_FrameEnd 0x4000u
+#define TAU32_Tx_NoCrc 0x8000u
+#define TAU32_Configure_E1 0x0040u
+
+/* TAU32_ERRORS */
+#define TAU32_NOERROR 0x000000ul
+#define TAU32_SUCCESSFUL 0x000000ul
+#define TAU32_ERROR_ALLOCATION 0x000001ul /* not enough tx/rx descriptors */
+#define TAU32_ERROR_BUS 0x000002ul /* PEB could not access to host memory by PCI bus for load/store information */
+#define TAU32_ERROR_FAIL 0x000004ul /* PEB action request failed */
+#define TAU32_ERROR_TIMEOUT 0x000008ul /* PEB action request timeout */
+#define TAU32_ERROR_CANCELLED 0x000010ul
+#define TAU32_ERROR_TX_UNDERFLOW 0x000020ul /* transmission underflow */
+#define TAU32_ERROR_TX_PROTOCOL 0x000040ul /* reserved */
+#define TAU32_ERROR_RX_OVERFLOW 0x000080ul
+#define TAU32_ERROR_RX_ABORT 0x000100ul
+#define TAU32_ERROR_RX_CRC 0x000200ul
+#define TAU32_ERROR_RX_SHORT 0x000400ul
+#define TAU32_ERROR_RX_SYNC 0x000800ul
+#define TAU32_ERROR_RX_FRAME 0x001000ul
+#define TAU32_ERROR_RX_LONG 0x002000ul
+#define TAU32_ERROR_RX_SPLIT 0x004000ul /* frame has splitted between two requests due rx-gap allocation */
+#define TAU32_ERROR_RX_UNFIT 0x008000ul /* frame can't be fit into request buffer */
+#define TAU32_ERROR_TSP 0x010000ul
+#define TAU32_ERROR_RSP 0x020000ul
+#define TAU32_ERROR_INT_OVER_TX 0x040000ul
+#define TAU32_ERROR_INT_OVER_RX 0x080000ul
+#define TAU32_ERROR_INT_STORM 0x100000ul
+#define TAU32_ERROR_INT_E1LOST 0x200000ul
+#define TAU32_WARN_TX_JUMP 0x400000ul
+#define TAU32_WARN_RX_JUMP 0x800000ul
+
+/* TAU32_CHANNEL_MODES */
+#define TAU32_HDLC 0
+#define TAU32_V110_x30 1
+#define TAU32_TMA 2
+#define TAU32_TMB 3
+#define TAU32_TMR 4
+
+/* TAU32_SYNC_MODES */
+#define TAU32_SYNC_INTERNAL 0
+#define TAU32_SYNC_RCV_A 1
+#define TAU32_SYNC_RCV_B 2
+#define TAU32_SYNC_LYGEN 3
+#define TAU32_LYGEN_RESET 0
+
+/* TAU32_CHANNEL_CONFIG_BITS */
+#define TAU32_channel_mode_mask 0x0000000Ful
+#define TAU32_data_inversion 0x00000010ul
+#define TAU32_fr_rx_splitcheck 0x00000020ul
+#define TAU32_fr_rx_fitcheck 0x00000040ul
+#define TAU32_fr_tx_auto 0x00000080ul
+#define TAU32_hdlc_crc32 0x00000100ul
+#define TAU32_hdlc_adjustment 0x00000200ul
+#define TAU32_hdlc_interframe_fill 0x00000400ul
+#define TAU32_hdlc_nocrc 0x00000800ul
+#define TAU32_tma_flag_filtering 0x00001000ul
+#define TAU32_tma_nopack 0x00002000ul
+#define TAU32_tma_flags_mask 0x00FF0000ul
+#define TAU32_tma_flags_shift 16u
+#define TAU32_v110_x30_tr_mask 0x03000000ul
+#define TAU32_v110_x30_tr_shift 24u
+
+typedef struct tag_TAU32_TimeslotAssignment
+{
+ unsigned __int8 TxChannel, RxChannel;
+ unsigned __int8 TxFillmask, RxFillmask;
+} TAU32_TimeslotAssignment;
+
+#define TAU32_CROSS_WIDTH 96
+#define TAU32_CROSS_OFF 127
+typedef unsigned __int8 TAU32_CrossMatrix[TAU32_CROSS_WIDTH];
+
+/* TAU32_INTERFACE_CONFIG_BITS */
+#define TAU32_LineOff (0ul << 0)
+#define TAU32_LineLoopInt (1ul << 0)
+#define TAU32_LineLoopExt (2ul << 0)
+#define TAU32_LineNormal (3ul << 0)
+#define TAU32_LineAIS (4ul << 0)
+#define TAU32_line_mode_mask 0x0000000Ful
+#define TAU32_unframed_64 (0ul << 4)
+#define TAU32_unframed_128 (1ul << 4)
+#define TAU32_unframed_256 (2ul << 4)
+#define TAU32_unframed_512 (3ul << 4)
+#define TAU32_unframed_1024 (4ul << 4)
+#define TAU32_unframed_2048 (5ul << 4)
+#define TAU32_unframed TAU32_unframed_2048
+#define TAU32_framed_no_cas (6ul << 4)
+#define TAU32_framed_cas_set (7ul << 4)
+#define TAU32_framed_cas_cross (8ul << 4)
+#define TAU32_framing_mode_mask 0x000000F0ul
+#define TAU32_monitor 0x00000100ul
+#define TAU32_higain 0x00000200ul
+#define TAU32_sa_bypass 0x00000400ul
+#define TAU32_si_bypass 0x00000800ul
+#define TAU32_cas_fe 0x00001000ul
+#define TAU32_ais_on_loss 0x00002000ul
+#define TAU32_cas_all_ones 0x00004000ul
+#define TAU32_cas_io 0x00008000ul
+#define TAU32_fas_io 0x00010000ul
+#define TAU32_fas8_io 0x00020000ul
+#define TAU32_auto_ais 0x00040000ul
+#define TAU32_not_auto_ra 0x00080000ul
+#define TAU32_not_auto_dmra 0x00100000ul
+#define TAU32_ra 0x00200000ul
+#define TAU32_dmra 0x00400000ul
+#define TAU32_scrambler 0x00800000ul
+#define TAU32_tx_ami 0x01000000ul
+#define TAU32_rx_ami 0x02000000ul
+#define TAU32_ja_tx 0x04000000ul
+#define TAU32_crc4_mf_tx_only 0x08000000ul
+#define TAU32_crc4_mf_rx_only 0x10000000ul
+#define TAU32_crc4_mf (TAU32_crc4_mf_rx_only | TAU32_crc4_mf_tx_only)
+
+/* TAU32_SA_CROSS_VALUES */
+#define TAU32_SaDisable 0u
+#define TAU32_SaSystem 1u
+#define TAU32_SaIntA 2u
+#define TAU32_SaIntB 3u
+#define TAU32_SaAllZeros 4u
+
+typedef struct tag_TAU32_SaCross
+{
+ unsigned __int8 InterfaceA, InterfaceB;
+ unsigned __int8 SystemEnableTs0;
+} TAU32_SaCross;
+
+/* TAU32_INTERFACE_STATUS_BITS */
+#define TAU32_RCL 0x0001u /* receive carrier lost */
+#define TAU32_RLOS 0x0002u /* receive sync lost */
+#define TAU32_RUA1 0x0004u /* received unframed all ones */
+#define TAU32_RRA 0x0008u /* receive remote alarm */
+#define TAU32_RSA1 0x0010u /* receive signaling all ones */
+#define TAU32_RSA0 0x0020u /* receive signaling all zeros */
+#define TAU32_RDMA 0x0040u /* receive distant multiframe alarm */
+#define TAU32_LOTC 0x0080u /* transmit clock lost */
+#define TAU32_RSLIP 0x0100u /* receiver slip event */
+#define TAU32_TSLIP 0x0200u /* transmitter slip event */
+#define TAU32_RFAS 0x0400u /* receiver lost and searching for FAS */
+#define TAU32_RCRC4 0x0800u /* receiver lost and searching for CRC4 MF */
+#define TAU32_RCAS 0x1000u /* received lost and searching for CAS MF */
+#define TAU32_JITTER 0x2000u /* jitter attenuator limit */
+#define TAU32_RCRC4LONG 0x4000u /* G.706 400ms limit of searching for CRC4 */
+#define TAU32_E1OFF 0x8000u /* E1 line power-off */
+#define TAU32_LOS TAU32_RLOS
+#define TAU32_AIS TAU32_RUA1
+#define TAU32_LOF TAU32_RFAS
+#define TAU32_AIS16 TAU32_RSA1
+#define TAU32_LOFM TAU32_RCAS
+#define TAU32_FLOFM TAU32_RDMA
+
+/* TAU32_STATUS */
+#define TAU32_FRCAS 0x0001u /* CAS framer searching for CAS MF */
+#define TAU32_CMWAITING 0x0002u /* Connection memory swap waiting */
+#define TAU32_CMPENDING 0x0004u /* Connection memory swap pending */
+#define TAU32_LED 0x0008u /* Let status (on/off) */
+
+typedef struct tag_TAU32_Controller TAU32_Controller;
+typedef struct tag_TAU32_UserRequest TAU32_UserRequest;
+typedef struct tag_TAU32_UserContext TAU32_UserContext;
+typedef union tag_TAU32_tsc TAU32_tsc;
+typedef struct tag_TAU32_FlatIoContext TAU32_FlatIoContext;
+typedef void(TAU32_CALLBACK_TYPE *TAU32_RequestCallback)(TAU32_UserContext *pContext, TAU32_UserRequest *pUserRequest);
+typedef void(TAU32_CALLBACK_TYPE *TAU32_NotifyCallback)(TAU32_UserContext *pContext, int Item, unsigned NotifyBits);
+typedef void(TAU32_CALLBACK_TYPE *TAU32_FifoTrigger)(TAU32_UserContext *pContext, int Interface, unsigned FifoId, unsigned Level);
+typedef void(TAU32_CALLBACK_TYPE *TAU32_FlatIoCallback)(TAU32_UserContext *pContext, TAU32_FlatIoContext *pFlatIoContext);
+
+union tag_TAU32_tsc
+{
+ unsigned __int32 osc, sync;
+};
+
+struct tag_TAU32_FlatIoContext
+{
+ void *pInternal;
+ PCI_PHYSICAL_ADDRESS PhysicalBufferAddress;
+ unsigned Channel, ItemsCount, EachItemBufferSize;
+ unsigned Received, ActualOffset, Errors;
+#if defined(_NTDDK_)
+ KDPC CallbackDpc;
+ void SetupCallback(PKDEFERRED_ROUTINE DeferredCallbackRoutine, void* pContext)
+ {
+ CallbackDpc.DeferredRoutine = DeferredCallbackRoutine;
+ CallbackDpc.DeferredContext = pContext;
+ }
+ void SetupCallback(TAU32_FlatIoCallback pCallback)
+ {
+ CallbackDpc.DeferredRoutine = (PKDEFERRED_ROUTINE) pCallback;
+ CallbackDpc.DeferredContext = 0;
+ }
+#else
+ TAU32_FlatIoCallback pCallback;
+#endif
+};
+
+/* TAU32_FIFO_ID */
+#define TAU32_FifoId_CasRx 0u
+#define TAU32_FifoId_CasTx 1u
+#define TAU32_FifoId_FasRx 2u
+#define TAU32_FifoId_FasTx 3u
+#define TAU32_FifoId_Max 4u
+
+typedef struct tag_TAU32_E1_State
+{
+ unsigned __int32 TickCounter;
+ unsigned __int32 RxViolations;
+ unsigned __int32 Crc4Errors;
+ unsigned __int32 FarEndBlockErrors;
+ unsigned __int32 FasErrors;
+ unsigned __int32 TransmitSlips;
+ unsigned __int32 ReceiveSlips;
+ unsigned __int32 Status;
+ unsigned __int32 FifoSlip[TAU32_FifoId_Max];
+} TAU32_E1_State;
+
+struct tag_TAU32_UserContext
+{
+ /* fields provided by user for for TAU32_Initiaize() */
+ TAU32_Controller *pControllerObject;
+ PCI_PHYSICAL_ADDRESS ControllerObjectPhysicalAddress;
+ void *PciBar1VirtualAddress;
+ TAU32_NotifyCallback pErrorNotifyCallback;
+ TAU32_NotifyCallback pStatusNotifyCallback;
+#if defined(_NTDDK_)
+ PKINTERRUPT InterruptObject;
+#endif
+ /* TODO: remove from release */
+ #define TAU32_CUSTOM_FIRMWARE
+ #ifdef TAU32_CUSTOM_FIRMWARE
+ void *pCustomFirmware;
+ unsigned CustomFirmwareSize;
+ #endif
+ /* fields filled by TAU32_Initiaize() */
+ int Model;
+ int Interfaces;
+ unsigned InitErrors;
+ unsigned __int32 DeadBits;
+
+ /* fields managed by DDK */
+ unsigned AdapterStatus;
+ unsigned CasIoLofCount;
+ unsigned E1IntLostCount;
+ unsigned CableTypeJumpers;
+ TAU32_E1_State InterfacesInfo[TAU32_MAX_INTERFACES];
+
+ /* fields which are't used by DDK, but nice for user */
+#ifdef TAU32_UserContext_Add
+ TAU32_UserContext_Add
+#endif
+};
+
+struct tag_TAU32_UserRequest
+{
+ /* required fields */
+ void *pInternal; /* internal */
+ unsigned Command; /* in */
+#if defined(_NTDDK_)
+ KDPC CallbackDpc;
+ void SetupCallback(PKDEFERRED_ROUTINE DeferredCallbackRoutine, void* pContext)
+ {
+ CallbackDpc.DeferredRoutine = DeferredCallbackRoutine;
+ CallbackDpc.DeferredContext = pContext;
+ }
+ void SetupCallback(TAU32_RequestCallback pCallback)
+ {
+ CallbackDpc.DeferredRoutine = (PKDEFERRED_ROUTINE) pCallback;
+ CallbackDpc.DeferredContext = 0;
+ }
+#else
+ TAU32_RequestCallback pCallback; /* in */
+#endif
+ unsigned __int32 ErrorCode; /* out */
+
+ union
+ {
+ unsigned ChannelNumber; /* just common field */
+
+ struct
+ {
+ unsigned Channel; /* in */
+ unsigned __int32 Config; /* in */
+ unsigned __int32 AssignedTsMask; /* build channel from timeslots which is selected by mask */
+ } ChannelConfig;
+
+ struct
+ {
+ int Interface;
+ unsigned __int32 Config; /* in */
+ unsigned __int32 UnframedTsMask;
+ } InterfaceConfig;
+
+ struct
+ {
+ unsigned Channel; /* in */
+ PCI_PHYSICAL_ADDRESS PhysicalDataAddress; /* in */
+ unsigned DataLength; /* in */
+ unsigned Transmitted; /* out */
+ } Tx;
+
+ struct
+ {
+ unsigned Channel; /* in */
+ PCI_PHYSICAL_ADDRESS PhysicalDataAddress; /* in */
+ unsigned BufferLength; /* in */
+ unsigned Received; /* out */
+ BOOLEAN FrameEnd; /* out */
+ } Rx;
+
+ BOOLEAN DigitalLoop; /* in, loop by PEB */
+
+ union
+ {
+ TAU32_TimeslotAssignment Complete[TAU32_TIMESLOTS];
+ unsigned __int32 Map[TAU32_CHANNELS];
+ } TimeslotsAssignment;
+ } Io;
+
+ /* fields which are't used by DDK, but nice for user */
+#ifdef TAU32_UserRequest_Add
+ TAU32_UserRequest_Add
+#endif
+};
+
+#define TAU32_IS_REQUEST_RUNNING(pUserRequest) ((pUserRequest)->pInternal != NULL)
+#define TAU32_IS_REQUEST_NOT_RUNNING(pUserRequest) ((pUserRequest)->pInternal == NULL)
+
+#ifndef TAU32_DDK_DLL
+# if defined(_NTDDK_)
+# ifdef TAU32_DDK_IMP
+# define TAU32_DDK_DLL __declspec(dllexport)
+# else
+# define TAU32_DDK_DLL __declspec(dllimport)
+# endif
+# else
+# define TAU32_DDK_DLL
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+ void TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_BeforeReset(TAU32_UserContext *pUserContext);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_Initialize(TAU32_UserContext *pUserContext, BOOLEAN CronyxDiag);
+ void TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_DestructiveHalt(TAU32_Controller *pControllerObject, BOOLEAN CancelRequests);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_IsInterruptPending(TAU32_Controller *pControllerObject);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_HandleInterrupt(TAU32_Controller *pControllerObject);
+ extern unsigned const TAU32_ControllerObjectSize;
+
+ /* LY: все функции ниже, могут реентерабельно вызываться из callback-ов */
+ void TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_EnableInterrupts(TAU32_Controller *pControllerObject);
+ void TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_DisableInterrupts(TAU32_Controller *pControllerObject);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_SubmitRequest(TAU32_Controller *pControllerObject, TAU32_UserRequest *pRequest);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_CancelRequest(TAU32_Controller *pControllerObject, TAU32_UserRequest *pRequest, BOOLEAN BreakIfRunning);
+ void TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_LedBlink(TAU32_Controller *pControllerObject);
+ void TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_LedSet(TAU32_Controller *pControllerObject, BOOLEAN On);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_SetCasIo(TAU32_Controller *pControllerObject, BOOLEAN Enabled);
+ unsigned __int64 TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_ProbeGeneratorFrequency(unsigned __int64 Frequency);
+ unsigned __int64 TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_SetGeneratorFrequency(TAU32_Controller *pControllerObject, unsigned __int64 Frequency);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_SetSyncMode(TAU32_Controller *pControllerObject, unsigned Mode);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_SetCrossMatrix(TAU32_Controller *pControllerObject, unsigned __int8 *pCrossMatrix, unsigned __int32 ReverseMask);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_SetIdleCodes(TAU32_Controller *pControllerObject, unsigned __int8 *pIdleCodes);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_UpdateIdleCodes(TAU32_Controller *pControllerObject, int Interface, unsigned __int32 TimeslotMask, unsigned __int8 IdleCode);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_SetSaCross(TAU32_Controller *pControllerObject, TAU32_SaCross SaCross);
+ int TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_FifoPutCasAppend(TAU32_Controller *pControllerObject, int Interface, unsigned __int8 *pBuffer, unsigned Length);
+ int TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_FifoPutCasAhead(TAU32_Controller *pControllerObject, int Interface, unsigned __int8 *pBuffer, unsigned Length);
+ int TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_FifoGetCas(TAU32_Controller *pControllerObject, int Interface, unsigned __int8 *pBuffer, unsigned Length);
+ int TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_FifoPutFasAppend(TAU32_Controller *pControllerObject, int Interface, unsigned __int8 *pBuffer, unsigned Length);
+ int TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_FifoPutFasAhead(TAU32_Controller *pControllerObject, int Interface, unsigned __int8 *pBuffer, unsigned Length);
+ int TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_FifoGetFas(TAU32_Controller *pControllerObject, int Interface, unsigned __int8 *pBuffer, unsigned Length);
+ BOOLEAN TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_SetFifoTrigger(TAU32_Controller *pControllerObject, int Interface, unsigned FifoId, unsigned Level, TAU32_FifoTrigger Trigger);
+ void TAU32_DDK_DLL TAU32_CALL_TYPE TAU32_ReadTsc(TAU32_Controller *pControllerObject, TAU32_tsc *pResult);
+
+ /* for Cronyx Engineering use only !!! */
+ #define TAU32_CRONYX_P 0
+ #define TAU32_CRONYX_PS 1
+ #define TAU32_CRONYX_PA 2
+ #define TAU32_CRONYX_PB 3
+ #define TAU32_CRONYX_I 4
+ #define TAU32_CRONYX_O 5
+ #define TAU32_CRONYX_U 6
+ #define TAU32_CRONYX_R 7
+ #define TAU32_CRONYX_W 8
+ #define TAU32_CRONYX_RW 9
+ #define TAU32_CRONYX_WR 10
+ #define TAU32_CRONYX_S 11
+ #define TAU32_CRONYX_G 12
+ unsigned __int32 TAU32_CALL_TYPE TAU32_Diag(TAU32_Controller *pControllerObject, unsigned Operation, unsigned __int32 Data);
+
+#ifdef __cplusplus
+}
+#endif
OpenPOWER on IntegriCloud