From fdcdc005c92b3dde024ab682d07cd2eb62fc1096 Mon Sep 17 00:00:00 2001 From: Pieter Robyns Date: Thu, 3 Aug 2017 15:05:33 +0200 Subject: [PATCH] Improved accuracy --- examples/qa_BasicTest_usrp.log | 54 +++++++++++++++++----------------- lib/decoder_impl.cc | 21 +++++++------ lib/tables.h | 4 +-- 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/examples/qa_BasicTest_usrp.log b/examples/qa_BasicTest_usrp.log index ee003ae..3967bad 100644 --- a/examples/qa_BasicTest_usrp.log +++ b/examples/qa_BasicTest_usrp.log @@ -1,13 +1,13 @@ --------- Test Results on 2017-08-03 14:37:40 --------- +-------- Test Results on 2017-08-03 14:59:58 --------- Test serie 0: [u'01 23 45 67 89 ab cd ef'] * 10 Test 1 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) - Test 2 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 9 out of 10 ( 90.00%) + Test 2 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 7 out of 10 ( 70.00%) Test 3 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) Test 4 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) Test 5 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) Test 6 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) Test 7 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) - => Total passed: 39 out of 70 (55.71%) + => Total passed: 37 out of 70 (52.86%) Test serie 1: [u'11 11 11'] * 1 Test 8 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%) @@ -22,42 +22,42 @@ Test serie 1: [u'11 11 11'] * 1 Test serie 2: [u'11 11 11'] * 5 Test 15 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%) Test 16 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 5 out of 5 (100.00%) - Test 17 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 3 out of 5 ( 60.00%) - Test 18 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 5 out of 5 (100.00%) + Test 17 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 5 ( 0.00%) + Test 18 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 4 out of 5 ( 80.00%) Test 19 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%) - Test 20 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 4 out of 5 ( 80.00%) + Test 20 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%) Test 21 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%) - => Total passed: 32 out of 35 (91.43%) + => Total passed: 24 out of 35 (68.57%) Test serie 3: [u'aa aa aa aa'] * 3 - Test 22 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 3 ( 0.00%) + Test 22 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%) Test 23 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 3 out of 3 (100.00%) Test 24 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%) Test 25 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%) Test 26 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%) Test 27 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%) - Test 28 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 0 out of 3 ( 0.00%) - => Total passed: 6 out of 21 (28.57%) + Test 28 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%) + => Total passed: 12 out of 21 (57.14%) Test serie 4: [u'ff ff ff ff'] * 1 - Test 29 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) - Test 30 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) + Test 29 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%) + Test 30 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%) Test 31 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) Test 32 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) Test 33 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%) Test 34 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) Test 35 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) - => Total passed: 1 out of 7 (14.29%) + => Total passed: 3 out of 7 (42.86%) Test serie 5: [u'ff ff ff ff'] * 10 - Test 36 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) - Test 37 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) + Test 36 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 9 out of 10 ( 90.00%) + Test 37 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 8 out of 10 ( 80.00%) Test 38 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) Test 39 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) Test 40 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) Test 41 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) - Test 42 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) - => Total passed: 10 out of 70 (14.29%) + Test 42 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) + => Total passed: 37 out of 70 (52.86%) Test serie 6: [u'55 55 55 55'] * 3 Test 43 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%) @@ -80,35 +80,35 @@ Test serie 7: [u'55 55 55 55'] * 10 => Total passed: 40 out of 70 (57.14%) Test serie 8: [u'88 88 88 88'] * 1 - Test 57 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) + Test 57 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%) Test 58 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%) Test 59 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) Test 60 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) Test 61 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%) Test 62 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) - Test 63 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) - => Total passed: 2 out of 7 (28.57%) + Test 63 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%) + => Total passed: 4 out of 7 (57.14%) Test serie 9: [u'88 88 88 88'] * 5 - Test 64 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 5 ( 0.00%) + Test 64 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%) Test 65 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 5 out of 5 (100.00%) Test 66 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 5 ( 0.00%) Test 67 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%) Test 68 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%) Test 69 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%) - Test 70 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 0 out of 5 ( 0.00%) - => Total passed: 10 out of 35 (28.57%) + Test 70 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%) + => Total passed: 20 out of 35 (57.14%) Test serie 10: [u'88 88 88 88'] * 10 - Test 71 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) + Test 71 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) Test 72 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 10 out of 10 (100.00%) Test 73 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) Test 74 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) Test 75 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) Test 76 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) - Test 77 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%) - => Total passed: 20 out of 70 (28.57%) + Test 77 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) + => Total passed: 40 out of 70 (57.14%) - ====== Total passed: 177 out of 413 (42.86%) ====== + ====== Total passed: 234 out of 413 (56.66%) ====== diff --git a/lib/decoder_impl.cc b/lib/decoder_impl.cc index b40c602..d34d202 100644 --- a/lib/decoder_impl.cc +++ b/lib/decoder_impl.cc @@ -476,18 +476,21 @@ namespace gr { this->instantaneous_frequency(samples, samples_ifreq, this->d_samples_per_symbol); - for (uint32_t i = 1u; i < this->d_number_of_bins - 2u; i++) { - if (samples_ifreq[this->d_decim_factor * i] - samples_ifreq[this->d_decim_factor * (i + 1u)] > 0.2f) { - return (i + !is_header) ^ (uint32_t)pow(2, d_sf); + float max_gradient = 0.2f; + float gradient = 0.0f; + uint32_t max_index = 0; + for (uint32_t i = 0u; i < this->d_number_of_bins - 2u; i++) { + gradient = samples_ifreq[this->d_decim_factor * i] - samples_ifreq[this->d_decim_factor * (i + 1u)]; + if (gradient > max_gradient) { + max_gradient = gradient; + max_index = i+1; } } - const float zero_bin = samples_ifreq[0u] - samples_ifreq[this->d_decim_factor * 2u]; - const float high_bin = samples_ifreq[(this->d_number_of_bins - 2u) * this->d_decim_factor] - samples_ifreq[this->d_number_of_bins * this->d_decim_factor - 1u]; - - // Prefer first bin over last. (First bin == 0 or 1?) - return zero_bin > 0.2f || zero_bin > high_bin - ? this->d_number_of_bins : 1u; + if(max_index == 0) + return max_index; + else + return this->d_number_of_bins - 1 - max_index; } bool decoder_impl::demodulate(const gr_complex *samples, const bool is_header) { diff --git a/lib/tables.h b/lib/tables.h index b382fd5..d8bc008 100644 --- a/lib/tables.h +++ b/lib/tables.h @@ -37,9 +37,7 @@ namespace gr { const uint8_t prng_payload[] = { 0xff, 0xff, 0x2d, 0xff, 0x78, 0xff, 0xe1, 0xff, 0x00, 0xff, 0xd2, 0x2d, 0x55, 0x78, 0x4b, 0xe1, 0x66, 0x00, 0x1e, 0xd2, 0xff, 0x55, 0x2d, 0x4b, 0x78, 0x66, 0xe1, 0x1e, 0xd2, 0xff, 0x87, 0x2d, 0xcc, 0x78, 0xaa, 0xe1, 0xb4, 0xd2, 0x99, 0x87, 0xe1, 0xcc, 0x00, 0xaa, 0x00, 0xb4, 0x00, 0x99, 0x00, 0xe1, 0xd2, 0x00, 0x55, 0x00, 0x99, 0x00, 0xe1, 0x00, 0xd2, 0xd2, 0x87, 0x55, 0x1e, 0x99, 0x2d, 0xe1, 0x78, 0xd2, 0xe1, 0x87, 0xd2, 0x1e, 0x55, 0x2d, 0x99, 0x78, 0x33, 0xe1, 0x55, 0xd2, 0x4b, 0x55, 0x66, 0x99, 0x1e, 0x33, 0x2d, 0x55, 0x78, 0x4b, 0xe1, 0x66, 0x00, 0x1e, 0x00, 0x2d, 0x00, 0x78, 0xd2, 0xe1, 0x87, 0x00, 0xcc, 0x00, 0x78, 0x00, 0x33, 0xd2, 0x55, 0x87, 0x99, 0xcc, 0x33, 0x78, 0x55, 0x33, 0x99, 0x55, 0x33, 0x99, 0x87, 0x33, 0xcc, 0x55, 0xaa, 0x99, 0x66, 0x33, 0x1e, 0x87, 0x2d, 0xcc, 0x78, 0xaa, 0x33, 0x66, 0x55, 0x1e, 0x99, 0x2d, 0xe1, 0x78, 0x00, 0x33, 0x00, 0x55, 0xd2, 0x99, 0x55, 0xe1, 0x4b, 0x00, 0xb4, 0x00, 0x4b, 0xd2, 0x66, 0x55, 0xcc, 0x4b, 0xaa, 0xb4, 0x66, 0x4b, 0xcc, 0x66, 0xaa, 0xcc, 0xb4, 0xaa, 0x4b, 0x66, 0x66, 0xcc, 0xcc, 0xaa, 0x78, 0xb4, 0x33, 0x4b, 0x55, 0x66, 0x4b, 0xcc, 0x66, 0x78, 0xcc, 0x33, 0x78, 0x55, 0xe1, 0x4b, 0x00, 0x66, 0xd2, 0xcc, 0x87, 0x78, 0x1e, 0xe1, 0xff, 0x00, 0xff, 0xd2, 0x2d, 0x87, 0xaa, 0x1e, 0x66, 0xff, 0xcc, 0xff, 0xaa, 0x2d, 0x66, 0xaa, 0x1e, 0x66, 0xff, 0xcc, 0x2d, 0xaa, 0xaa, 0x66, 0xb4, 0x1e, 0x4b, 0xff, 0x66, 0x2d, 0x1e, 0xaa, 0x2d, 0xb4, 0xaa, 0x4b, 0xb4, 0x66, 0x99, 0x1e, 0xe1, 0x2d, 0xd2, 0xaa, 0x55, 0xb4, 0x99, 0x99, 0xe1, 0xe1, 0x00, 0xd2, 0xd2, 0x55, 0x87, 0x99, 0xcc, 0xe1, 0xaa, 0x00, 0x66, 0xd2, 0xcc, 0x87, 0x78, 0xcc, 0xe1, 0xaa, 0xd2, 0x66, 0x87, 0xcc, 0x1e, 0x78, 0xff, 0xe1, 0x2d, 0xd2, 0x78, 0x87, 0x33, 0x1e, 0x87, 0xff, 0x1e, 0x2d, 0x2d, 0x78, 0x78, 0x33, 0x33, 0x87, 0x87, 0x1e, 0xcc, 0x2d, 0x78, 0x78, 0xe1, 0x33, 0xd2, 0x87, 0x55, 0xcc, 0x4b, 0x78, 0x66, 0xe1, 0xcc, 0xd2, 0xaa, 0x55, 0xb4, 0x4b, 0x99, 0x66, 0x33, 0xcc, 0x55, 0xaa, 0x99, 0xb4, 0xe1, 0x99, 0xd2, 0x33, 0x55, 0x55, 0x4b, 0x99, 0xb4, 0xe1, 0x99, 0xd2, 0x33, 0x55, 0x55, 0x4b, 0x4b, 0xb4, 0xb4, 0x99, 0x4b, 0x33, 0xb4, 0x55, 0x99, 0x4b, 0x33, 0xb4, 0x87, 0x4b, 0x1e, 0xb4, 0x2d, 0x99, 0xaa, 0x33, 0x66, 0x87, 0x1e, 0x1e, 0x2d, 0x2d, 0xaa, 0xaa, 0x66, 0x66, 0xcc, 0x1e, 0x78, 0x2f, 0x37, 0xa2, 0xa7, 0x76, 0x1f, 0x8c, 0x7f, 0x78, 0x2f, 0x33, 0xa2, 0xa7, 0x62, 0x1e, 0x0e, 0x7f, 0xbe, 0x2d, 0xff, 0xa4, 0xdf, 0x76, 0x2d, 0x5f, 0xaa, 0x7f, 0xf4, 0xfb, 0x93, 0xdf, 0x33, 0x3c, 0x87, 0xaa, 0x4c, 0xb6, 0x78, 0x91, 0x13, 0x33, 0x97, 0x82, 0x4c, 0x8c, 0xa8, 0x7c, 0xb4, 0x33, 0x6b, 0x8e, 0xb4, 0x5c, 0xd9, 0xa8, 0xe5, 0xbc, 0xf2, 0x5b, 0x86, 0xf4, 0x4c, 0x99, 0x68, 0xc5, 0xe9, 0xd2, 0x02, 0x87, 0x41, 0x4c, 0xd2, 0x2a, 0x87, 0xed, 0x3e, 0x00, 0x2d, 0x01, 0x2a, 0xd2, 0xb4, 0x83, 0x49, 0x16, 0xa4, 0x0c, 0x0b, 0xaa, 0x34, 0xb6, 0x4f, 0x4b, 0x6e, 0x94, 0x0f, 0x4b, 0x3f, 0xb4, 0xfd, 0x4f, 0x25, 0x46, 0x68, 0x1f, 0x73, 0x7f, 0x55, 0xff, 0x4d, 0x2d, 0x9c, 0x68, 0x99, 0x32, 0x61, 0x15, 0x00, 0x4f, 0xd0, 0xb4, 0x65, 0x98, 0xd1, 0xe1, 0xb3, 0x02, 0x87, 0xde, 0x1e, 0x55, 0xee, 0xf9, 0xff, 0xb3, 0xff, 0x95, 0xfb, 0x36, 0x00, 0x01, 0x40, 0x80, 0x87, 0x75, 0xc0, 0x03, - /* - 0xff, 0xff, 0x2e, 0xff, 0x5c, 0xff, 0xe8, 0xff, 0x00, 0xff, 0xd1, 0x2e, 0x72, 0x5c, 0x65, 0xe8, 0x4b, 0x00, 0x17, 0xd1, 0xff, 0x72, 0x2e, 0x65, 0x5c, 0x4b, 0xe8, 0x17, 0xd1, 0xff, 0xa3, 0x2e, 0xc6, 0x5c, 0x8d, 0xe8, 0x9a, 0xd1, 0xb4, 0xa3, 0xe8, 0xc6, 0x00, 0x8d, 0x00, 0x9a, 0x00, 0xb4, 0x00, 0xe8, 0xd1, 0x00, 0x72, 0x00, 0xb4, 0x00, 0xe8, 0x00, 0xd1, 0xd1, 0xa3, 0x72, 0x17, 0xb4, 0x2e, 0xe8, 0x5c, 0xd1, 0xe8, 0xa3, 0xd1, 0x17, 0x72, 0x2e, 0xb4, 0x5c, 0x39, 0xe8, 0x72, 0xd1, 0x65, 0x72, 0x4b, 0xb4, 0x17, 0x39, 0x2e, 0x72, 0x5c, 0x65, 0xe8, 0x4b, 0x00, 0x17, 0x00, 0x2e, 0x00, 0x5c, 0xd1, 0xe8, 0xa3, 0x00, 0xc6, 0x00, 0x5c, 0x00, 0x39, 0xd1, 0x72, 0xa3, 0xb4, 0xc6, 0x39, 0x5c, 0x72, 0x39, 0xb4, 0x72, 0x39, 0xb4, 0xa3, 0x39, 0xc6, 0x72, 0x8d, 0xb4, 0x4b, 0x39, 0x17, 0xa3, 0x2e, 0xc6, 0x5c, 0x8d, 0x39, 0x4b, 0x72, 0x17, 0xb4, 0x2e, 0xe8, 0x5c, 0x00, 0x39, 0x00, 0x72, 0xd1, 0xb4, 0x72, 0xe8, 0x65, 0x00, 0x9a, 0x00, 0x65, 0xd1, 0x4b, 0x72, 0xc6, 0x65, 0x8d, 0x9a, 0x4b, 0x65, 0xc6, 0x4b, 0x8d, 0xc6, 0x9a, 0x8d, 0x65, 0x4b, 0x4b, 0xc6, 0xc6, 0x8d, 0x5c, 0x9a, 0x39, 0x65, 0x72, 0x4b, 0x65, 0xc6, 0x4b, 0x5c, 0xc6, 0x39, 0x5c, 0x72, 0xe8, 0x65, 0x00, 0x4b, 0xd1, 0xc6, 0xa3, 0x5c, 0x17, 0xe8, 0xff, 0x00, 0xff, 0xd1, 0x2e, 0xa3, 0x8d, 0x17, 0x4b, 0xff, 0xc6, 0xff, 0x8d, 0x2e, 0x4b, 0x8d, 0x17, 0x4b, 0xff, 0xc6, 0x2e, 0x8d, 0x8d, 0x4b, 0x9a, 0x17, 0x65, 0xff, 0x4b, 0x2e, 0x17, 0x8d, 0x2e, 0x9a, 0x8d, 0x65, 0x9a, 0x4b, 0xb4, 0x17, 0xe8, 0x2e, 0xd1, 0x8d, 0x72, 0x9a, 0xb4, 0xb4, 0xe8, 0xe8, 0x00, 0xd1, 0xd1, 0x72, 0xa3, 0xb4 - */ + /*0xff, 0xff, 0x2e, 0xff, 0x5c, 0xff, 0xe8, 0xff, 0x00, 0xff, 0xd1, 0x2e, 0x72, 0x5c, 0x65, 0xe8, 0x4b, 0x00, 0x17, 0xd1, 0xff, 0x72, 0x2e, 0x65, 0x5c, 0x4b, 0xe8, 0x17, 0xd1, 0xff, 0xa3, 0x2e, 0xc6, 0x5c, 0x8d, 0xe8, 0x9a, 0xd1, 0xb4, 0xa3, 0xe8, 0xc6, 0x00, 0x8d, 0x00, 0x9a, 0x00, 0xb4, 0x00, 0xe8, 0xd1, 0x00, 0x72, 0x00, 0xb4, 0x00, 0xe8, 0x00, 0xd1, 0xd1, 0xa3, 0x72, 0x17, 0xb4, 0x2e, 0xe8, 0x5c, 0xd1, 0xe8, 0xa3, 0xd1, 0x17, 0x72, 0x2e, 0xb4, 0x5c, 0x39, 0xe8, 0x72, 0xd1, 0x65, 0x72, 0x4b, 0xb4, 0x17, 0x39, 0x2e, 0x72, 0x5c, 0x65, 0xe8, 0x4b, 0x00, 0x17, 0x00, 0x2e, 0x00, 0x5c, 0xd1, 0xe8, 0xa3, 0x00, 0xc6, 0x00, 0x5c, 0x00, 0x39, 0xd1, 0x72, 0xa3, 0xb4, 0xc6, 0x39, 0x5c, 0x72, 0x39, 0xb4, 0x72, 0x39, 0xb4, 0xa3, 0x39, 0xc6, 0x72, 0x8d, 0xb4, 0x4b, 0x39, 0x17, 0xa3, 0x2e, 0xc6, 0x5c, 0x8d, 0x39, 0x4b, 0x72, 0x17, 0xb4, 0x2e, 0xe8, 0x5c, 0x00, 0x39, 0x00, 0x72, 0xd1, 0xb4, 0x72, 0xe8, 0x65, 0x00, 0x9a, 0x00, 0x65, 0xd1, 0x4b, 0x72, 0xc6, 0x65, 0x8d, 0x9a, 0x4b, 0x65, 0xc6, 0x4b, 0x8d, 0xc6, 0x9a, 0x8d, 0x65, 0x4b, 0x4b, 0xc6, 0xc6, 0x8d, 0x5c, 0x9a, 0x39, 0x65, 0x72, 0x4b, 0x65, 0xc6, 0x4b, 0x5c, 0xc6, 0x39, 0x5c, 0x72, 0xe8, 0x65, 0x00, 0x4b, 0xd1, 0xc6, 0xa3, 0x5c, 0x17, 0xe8, 0xff, 0x00, 0xff, 0xd1, 0x2e, 0xa3, 0x8d, 0x17, 0x4b, 0xff, 0xc6, 0xff, 0x8d, 0x2e, 0x4b, 0x8d, 0x17, 0x4b, 0xff, 0xc6, 0x2e, 0x8d, 0x8d, 0x4b, 0x9a, 0x17, 0x65, 0xff, 0x4b, 0x2e, 0x17, 0x8d, 0x2e, 0x9a, 0x8d, 0x65, 0x9a, 0x4b, 0xb4, 0x17, 0xe8, 0x2e, 0xd1, 0x8d, 0x72, 0x9a, 0xb4, 0xb4, 0xe8, 0xe8, 0x00, 0xd1, 0xd1, 0x72, 0xa3, 0xb4*/ }; } }