diff options
author | Roman Kurakin <rik@FreeBSD.org> | 2006-01-27 09:02:09 +0000 |
---|---|---|
committer | Roman Kurakin <rik@FreeBSD.org> | 2006-01-27 09:02:09 +0000 |
commit | 2ee4be8ec62d89e0f6a9794d21e252d85faee50b (patch) | |
tree | 368e7beda95804d8e2aad23d3d2962109dbac5d5 /sys/dev/ce | |
parent | d042befb986bfdab6e40a99b111a1a27533a537c (diff) | |
download | src-2ee4be8ec62d89e0f6a9794d21e252d85faee50b.tar.gz src-2ee4be8ec62d89e0f6a9794d21e252d85faee50b.zip |
Initial import of ce(4) driver for Cronyx Tau-PCI/32 adapters.
Not yet connected to the build.
Notes
Notes:
svn path=/head/; revision=154899
Diffstat (limited to 'sys/dev/ce')
-rw-r--r-- | sys/dev/ce/ceddk.c | 1522 | ||||
-rw-r--r-- | sys/dev/ce/ceddk.h | 201 | ||||
-rw-r--r-- | sys/dev/ce/if_ce.c | 2681 | ||||
-rw-r--r-- | sys/dev/ce/ng_ce.h | 31 | ||||
-rw-r--r-- | sys/dev/ce/tau32-ddk.c | 4322 | ||||
-rw-r--r-- | sys/dev/ce/tau32-ddk.h | 514 |
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 000000000000..bc9801292090 --- /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 000000000000..8cd8c67774bb --- /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 000000000000..1735169050a8 --- /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 000000000000..b8e9604c4f5e --- /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 000000000000..ee27874ddd0b --- /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 000000000000..bd37154a6a5a --- /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 |