powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тяпничный koi-8r
47 сообщений из 47, показаны все 2 страниц
Тяпничный koi-8r
    #38841198
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Еще не пятница ну и ладно.

Пару лет назад я и некто Базист/Студентик спорили о хеш-арреях и пользе их применения и оптимизации.
Я предложил в шутку что для некоторых случаях (преобразования кодовых страниц) мы можем найти
функцию которая отображает некий маппинг (к примеру Win1251=>Utf16) но при этом не содержит
вообще массивов, хеш-таблиц e.t.c. Параноидальное использование switch(){..} тоже как-бе не
приветствуется. Тоесть функция должна иметь 8 булевых входов. x1....x8.
(8 бит имеет разрядность 1 символ Win1251) и 16 булевых выходов y1...y16 по количеству бит
16 разрядного символа выхода. Функция должна обеспечивать отображение Win1251=>Utf16.
Тоесть сам код функции и является данными. Или не существует чётких границ.

Далее - в соответствии с традициями булевой алгебры
следует сделать ряд преобразований и получить некую минимальную форму (минимизировать).

Код: plaintext
1.
2.
3.
short getUnicode(byte win1251){
   ....
}



Вопрос эффективности предполагаемой минимизации я так до сих пор не решил. Возможно
минимизация вообще не даст результата и функция будет адской мешаниной булевых форм.

Первый сюрприз пришёл от кодировки. 1251 - оказалась скушна и неинтересна.

https://ru.wikipedia.org/wiki/Windows-1251

Интересующие меня символы кириллицы практически линейно отображаются на диапазон 'A'-'Я',
'a'-'я' в Unicode. Достаточно сделать - несколько if и несколько операций сложения. Символы
псевдографики разбросаны по диапазону Unicode достаточно репрезентативно чтобы занятся
оптимизацией но в рамках общей пользы - неинтересны. У меня - мало текстов которые
их вообще используют. Поэтому - поскипаем 1251.

А вот экзотическая и олд-скульная кодировка koi8-r это настоящее ископаемое.

https://ru.wikipedia.org/wiki/КОИ-8

Для нее простым сложением фиг получишь результат. Вобщем попробую решить этот пасьянс.
Заодно освежу свои знания в минимизациях.

Без массивов и хеш-таблиц. И без switch.

До пятницы.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38841200
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonв соответствии с традициями булевой алгебры
следует сделать ряд преобразований и получить некую минимальную форму (минимизировать).Ничего интересного.
Рисуешь truth table, на входе одна кодировка, на выходе другая.
Потом прогоняешь эту таблицу ну хотя бы через Quine-McCluskey, и получаешь минимальный набор and выражений.
Все.
Много ручной работы и никакой фантазии.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38841223
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl...
Много ручной работы и никакой фантазии.Это точно.
Составить таблицу истинности, потом упрощаем картой Карно.
Схемотехника, раздел Шифраторы/Дешифраторы.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38841228
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, тут примеры посмотри http://csd.faculty.ifmo.ru/files/karnaugh.pdf
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38841333
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О уже накидали советов. Да. Для моего варианта размер карточки Карно будет в 128 клеток.
Это с учотом того что нижняя половина кодовой таблицы 1:1 повторяет unicode. Верхняя
интересна. Итого карточка будет размером 16 на 8 клеток. Но этот старый плут Карно...
он упоминал о том что дескыть карточка имеет смысл для 5-6 аргументов. Для большего
количества делать "склейки" уже сложнее. Теряется визуальное преимущество.

Квайн-Маккласски - читаю. Это основной тренд для решения данной задачи.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38841751
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Таблица будет на порядки быстрее работать чем выражения.
Про читаемость кода я вообще молчу.

Тогда в чем смысл?
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38841766
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не ищу лёгких путей.

Кроме того Квайн ждет...
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38841851
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем вот что я имею в качестве таблиц истинности. Некоторые символы покоцаны, ну и хрен с ними.
koi8-rUnicodeCharx7..x1y14..y1802500─000000010010100000000812502│00000011001010000001082250C┌000001010010100001100832510┐000001110010100010000842514└000010010010100010100852518┘00001011001010001100086251C├000011010010100011100872524┤00001111001010010010088252C┬000100010010100101100892534┴0001001100101001101008A253C┼0001010100101001111008B2580▀0001011100101100000008C2584▄0001100100101100001008D2588█0001101100101100010008E258C▌0001110100101100011008F2590▐000111110010110010000902591░001000010010110010001912592▒001000110010110010010922593▓001001010010110010011932320⌠0010011100011001000009425A0■001010010010110100000952219∙00101011000100001100196221A√001011010001000011010972248≈001011110001001001000982264≤001100010001001100100992265≥0011001100010011001019A00A0 0011010000000101000009B2321⌡0011011100011001000019C00B0°0011100000000101100009D00B2²0011101000000101100109E00B7·0011110000000101101119F00F7÷001111100000011110111A02550═010000010010101010000A12551║010000110010101010001A22552╒010001010010101010010A30451ё010001100010001010001A42553╓010010010010101010011A52554╔010010110010101010100A62555╕010011010010101010101A72556╖010011110010101010110A82557╗010100010010101010111A92558╘010100110010101011000AA2559╙010101010010101011001AB255A╚010101110010101011010AC255B╛010110010010101011011AD255C╜010110110010101011100AE255D╝010111010010101011101AF255E╞010111110010101011110B0255F╟011000010010101011111B12560╠011000110010101100000B22561╡011001010010101100001B30401Ё011001100010000000001B42562╢011010010010101100010B52563╣011010110010101100011B62564╤011011010010101100100B72565╥011011110010101100101B82566╦011100010010101100110B92567╧011100110010101100111BA2568╨011101010010101101000BB2569╩011101110010101101001BC256A╪011110010010101101010BD256B╫011110110010101101011BE256C╬011111010010101101100BF00A9©011111100000010101001C0044Eю100000000010001001110C10430а100000100010000110000C20431б100001000010000110001C30446ц100001100010001000110C40434д100010000010000110100C50435е100010100010000110101C60444ф100011000010001000100C70433г100011100010000110011C80445х100100000010001000101C90438и100100100010000111000CA0439й100101000010000111001CB043Aк100101100010000111010CC043Bл100110000010000111011CD043Cм100110100010000111100CE043Dн100111000010000111101CF043Eо100111100010000111110D0043Fп101000000010000111111D1044Fя101000100010001001111D20440р101001000010001000000D30441с101001100010001000001D40442т101010000010001000010D50443у101010100010001000011D60436ж101011000010000110110D70432в101011100010000110010D8044Cь101100000010001001100D9044Bы101100100010001001011DA0437з101101000010000110111DB0448ш101101100010001001000DC044Dэ101110000010001001101DD0449щ101110100010001001001DE0447ч101111000010001000111DF044Aъ101111100010001001010E0042EЮ110000000010000101110E10410А110000100010000010000E20411Б110001000010000010001E30426Ц110001100010000100110E40414Д110010000010000010100E50415Е110010100010000010101E60424Ф110011000010000100100E70413Г110011100010000010011E80425Х110100000010000100101E90418И110100100010000011000EA0419Й110101000010000011001EB041AК110101100010000011010EC041BЛ110110000010000011011ED041CМ110110100010000011100EE041DН110111000010000011101EF041EО110111100010000011110F0041FП111000000010000011111F1042FЯ111000100010000101111F20420Р111001000010000100000F30421С111001100010000100001F40422Т111010000010000100010F50423У111010100010000100011F60416Ж111011000010000010110F70412В111011100010000010010F8042CЬ111100000010000101100F9042BЫ111100100010000101011FA0417З111101000010000010111FB0428Ш111101100010000101000FC042DЭ111110000010000101101FD0429Щ111110100010000101001FE0427Ч111111000010000100111FF042AЪ111111100010000101010
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38841857
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нет норм. На preview не было видно.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38842074
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем от Карно мозг набекрень может съехать. Тут даже проблема не в том чтобы найти клеящиеся области.
А просто правильно расставить единички в соответствии с кодом Грея. А в исходной таблице этот порядок - иной.
Вобщем шансов стрельнуть в ногу - дофигища.

С Квайном я пока сделал так. Нашёл инструмент который это уже решает. QMC Logic Minimizer.
И в диалоговом режиме загрузил туда табличку. Получил минимизацию.

Пришлось немного поколдовать с адаптацией СДНФ чтобы получить аналогию кода на "C".

Вобщем вот макет. Как-то так должно получится.
Еще не тестил. Возможно он и не работает. Но в любом случае отображение таблицы на булевы вентили
имеет ожидаемый вид.

Предикат f3 - самый компактный из всех других.
f10-f16 будут потолще раза в два.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
int getUnicode(int koi8r){

  if (koi8r<128) return koi8r;

  int H=koi8r&0x1;
  koi8r>>=1;
  int G=koi8r&0x1;
  koi8r>>=1;
  int F=koi8r&0x1;
  koi8r>>=1;
  int E=koi8r&0x1;
  koi8r>>=1;
  int D=koi8r&0x1;                                                                                                           
  koi8r>>=1;
  int C=koi8r&0x1;
  koi8r>>=1;
  int B=koi8r&0x1;
  koi8r>>=1;
  int A=koi8r&0x1;

  int f1  =  0;
  int f2  =  0;
  int f3  =  A & ~B & ~F & ~G  |  A & ~B & ~E & F  |  A & ~B & C & ~G  |  A & ~B & C & ~H  |  A & ~B & ~C & ~E  |  A & ~B & ~C & ~F & H  |  A & ~B & ~D & F  |  A & ~B & E & ~F & H  |  A & ~B & ~D & E ;
  int f4  =  0;
  int f5  =  0;
  /* ........... Other f6 - f16 predicates  ............ */

  return f16<<15|f15<<14|f14<<13|f13<<12|f12<<11|f11<<10|f10<<9|f9<<8|f8<<7|f7<<6|f6<<5|f5<<4|f4<<3|f3<<2|f2<<1|f1;

}



По остальным функциям нужно еще поколдновать с заменой но мне уже лениво. Ищу новый идей и имплементаций.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38843692
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Базист хохочет читая это. Мой вариант уже получается толще. Впрочем меня это не особо
беспокоит. Главное что я получаю квази-аппаратную реализацию декодера.

Фух запарился уже с форматированием этих булевых "колбас". Чуть позже приаттачу более полный вид.

А пока для модульного теста.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
const static int koi8r2unicode[] = {
  0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524,
  0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590,
  0x2591,0x2592,0x2593,0x2320,0x25A0,0x2219,0x221A,0x2248,
  0x2264,0x2265,0x00A0,0x2321,0x00B0,0x00B2,0x00B7,0x00F7,
  0x2550,0x2551,0x2552,0x0451,0x2553,0x2554,0x2555,0x2556,
  0x2557,0x2558,0x2559,0x255A,0x255B,0x255C,0x255D,0x255E,
  0x255F,0x2560,0x2561,0x0401,0x2562,0x2563,0x2564,0x2565,
  0x2566,0x2567,0x2568,0x2569,0x256A,0x256B,0x256C,0x00A9,
  0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433,
  0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,
  0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432,
  0x044C,0x044B,0x0437,0x0448,0x044D,0x0449,0x0447,0x044A,
  0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413,
  0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,
  0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412,
  0x042C,0x042B,0x0417,0x0428,0x042D,0x0429,0x0427,0x042A
};

int getUnicodeCanonical(int koi8r){
  if (koi8r<128) return koi8r;
  return koi8r2unicode[koi8r-128];
}
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38843808
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

я подозреваю, что даже реально аппаратный вариант будет реализован гораздо проще - ПЗУ на 4 килобайта.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38843813
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Зачем просто, когда можно сложно?" (ц) "Техника - молодёжи" с прикольными комиксами
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38843817
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох уж эти консерваторы.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38844389
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПЗУ на 4 килобайта.
зачем так много?
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38844639
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так вобщем. СДНФ. Данные инкапсулированы в коде. Пока без оптимизаций.

Думаю что после свёртки повторений выйдет тако-себе компактный дешифратор.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
int getUnicode(int koi8r){

  if (koi8r<128) return koi8r;

  int H=koi8r&0x1;
  koi8r>>=1;
  int G=koi8r&0x1;
  koi8r>>=1;
  int F=koi8r&0x1;
  koi8r>>=1;
  int E=koi8r&0x1;
  koi8r>>=1;
  int D=koi8r&0x1;                                                                                                           
  koi8r>>=1;
  int C=koi8r&0x1;
  koi8r>>=1;
  int B=koi8r&0x1;
  koi8r>>=1;
  int A=koi8r&0x1;

  int f1  =  0;

  int f2  =  0;

  int f3  =  A & ~B & ~F & ~G  |  
             A & ~B & ~E &  F  |  
             A & ~B &  C & ~G  |  
             A & ~B &  C & ~H  |  
             A & ~B & ~C & ~E  |  
             A & ~B & ~C & ~F & H  |  
             A & ~B & ~D &  F  |  
             A & ~B &  E & ~F & H  |  
             A & ~B & ~D &  E ;

  int f4  =  0;

  int f5  =  0;

  int f6  =  A & ~D  |  
             A & ~E & ~F & ~G  |  
             A & ~E & ~F & ~H  |  
             A & ~E & ~G & ~H  |  
             A & C  & ~E  |  
             A & C  & ~F  |  
             A & C  & ~G  |  
             A & C  & ~H  |  
             A & B ;

  int f7  =  A & ~B & ~C & D & ~E & F  & H  |  
             A & ~B & ~C & D & ~E & F  & G  |  
             A & ~B & ~C & D & E  & ~F & ~G  |  
             A & ~B & ~C & D & ~F & G  & H ;

  int f8  =  A & ~B & ~E & ~G & ~H  |  
             A & ~B & C  & ~E & F  |  
             A & ~B & C  & ~G  |  
             A & ~B & C  & ~H  |  
             A & ~B & ~C & ~D  |  
             A & ~B & ~C & ~E & ~F  |  
             A & ~B & E  & ~F & G & H  |  
             A & ~B & ~D &  E ;

  int f9  =  A & ~B & ~C & ~D  &  E  &  G &  H  |  
             A & ~B & ~C &  E  &  F  |  
             A & ~B & ~C &  D  & ~E  & ~F & ~G  |  
             A & ~B & D  &  E  &  F  &  G &  H  |  
             A & ~B & ~C &  D  & ~F  &  G & ~H  |  
             A & ~B & ~C &  D  &  F  & ~G & ~H ;

  int f10 =  A & ~B &  C & ~D  |  
             A & ~B &  C & ~G  |  
             A & ~B &  C & ~H  |  
             A & ~B &  C &  E  & ~F  |  
             A &  B & ~C & ~D  & ~F  & ~G  & ~H  |  
             A &  B & ~C & ~E  & ~F  &  G  & H   |  
             A &  B & ~C & ~D  & ~E  &  F  & G & ~H  |  
             A &  B & ~C &  D  & ~E  & ~F  & G  |  
             A &  B & ~C &  D  &  F  & ~G  |  
             A &  B & ~C &  D  &  E  &  F  |  
             A & ~B & ~C &  D  &  F  &  G  & H |  
             A & ~B &  D &  E  & ~F  & ~G  |  
             A & ~B &  C & ~E  &  F  |  
             A &  B & ~C &  D  & ~F  &  H  |  
             A &  B & ~C &  D  &  E  & ~G ;

  int f11 =  A & ~C & ~D & ~E &  F &  G & H |  
             A & ~B & ~C &  D & ~F &  G & H |  
             A & ~B &  D &  F & ~G & ~H  |  
             A & ~B &  D &  E  |  
             A &  C &  D & ~G &  H  |  
             A & ~B &  C &  D &  F  |  
             A &  B & ~C & ~D & ~G &  H |  
             A &  B & ~C & ~D & ~F &  G & ~H |  
             A &  B & ~C & ~D &  F & ~G  |  
             A &  B & ~C &  D & ~E & ~F & ~G & ~H  |  
             A &  B & ~C &  D & ~E &  F &  G  |  
             A & ~C &  E & ~F &  G & ~H  |  
             A &  B &  C & ~D & ~F & ~G & ~H  |  
             A &  B &  C & ~E & ~F &  G &  H  |  
             A &  B &  C & ~D & ~E &  F &  G  & ~H  |  
             A &  C &  D &  F & ~G  |  
             A &  C &  D &  E &  F  |  
             A & ~B & ~C &  E & ~F & ~G  |  
             A &  C &  D & ~E & ~F &  G  & ~H  |  
             A &  B & ~C & ~D &  E &  H  |  
             A &  B & ~C & ~D &  E &  F  |  
             A &  C &  D &  E & ~G  |  
             A &  C &  D &  E &  H ; 

  int f12 =  A & ~B & ~D & ~E & ~F &  G & H  |  
             A & ~D &  E & ~F & ~G &  H  |  
             A & ~D &  E & ~F &  G & ~H  |  
             A & ~B & ~C &  D &  E &  F  |  
             A & ~B &  C & ~D  |  
             A &  B & ~D & ~G &  H  |  
             A &  B & ~D & ~F &  G & ~H  |  
             A &  D & ~E & ~F & ~G & ~H  |  
             A &  B &  E & ~F &  G & ~H  |  
             A &  B &  D & ~E &  F &  G  |  
             A & ~B & ~D & ~E &  F & ~H  |  
             A & ~B & ~C & ~E &  F & ~G &  H  |  
             A & ~D &  E &  F &  G &  H  |  
             A & ~B & ~C &  D & ~E & ~G &  H  |  
             A & ~B & ~C &  D & ~E &  G & ~H  |  
             A & ~D & ~E &  F & ~G  |  
             A &  B & ~E &  F &  G &  H  |  
             A &  B & ~D &  E &  H  |  
             A &  B & ~D &  F & ~G  |  
             A &  B & ~D &  E &  G ;

  int f13 =  A & ~B & ~C & ~D &  G & ~H |  
             A & ~B & ~C & ~D &  E & ~F & ~H |  
             A &  C & ~D &  E &  H |  
             A &  C &  D & ~E & ~F & ~G & ~H |  
             A & ~B &  C &  E &  G |  
             A &  B & ~E & ~F & ~G & ~H |  
             A &  B &  E &  H |  
             A &  B &  D & ~F & ~G |  
             A & ~B & ~C & ~D &  F & ~G & H |  
             A & ~B & ~C &  D & ~E &  F & H |  
             A & ~B & ~C &  D & ~E &  F & G |  
             A & ~B &  C &  E &  F |  
             A & ~D &  E &  G & ~H |  
             A &  B & ~D &  E &  F |  
             A &  B &  E &  F & ~G ;

  int f14 =  A & ~B & ~C & ~D &  G & ~H  |  
             A & ~B & ~D & ~E &  F &  G  |  
             A & ~B & ~C &  E & ~F & ~G  |  
             A & ~B & ~C &  D &  E &  F & G  |  
             A &  E & ~F & ~G & ~H |  
             A &  C &  D & ~F & ~G & ~H  |  
             A & ~B &  C & ~E &  F &  G  |  
             A & ~B &  D &  E & ~F & ~G  |  
             A &  B & ~D & ~E & ~F &  G & H  |  
             A &  B &  D & ~E & ~F & ~G  |  
             A &  B &  F &  G & ~H |  
             A &  B &  D &  E & ~H |  
             A & ~B & ~C & ~D &  F & ~H  |  
             A & ~B &  C & ~D &  F &  H  |  
             A &  E &  F &  G & ~H |  
             A &  B & ~D & ~E & ~G & ~H  |  
             A &  B & ~D & ~E &  F & ~G  |  
             A &  B & ~D &  F & ~G &  H  |  
             A &  B & ~D &  E &  F &  H ;

  int f15 =  A & ~B & ~C & ~E & ~F & ~G &  H  |  
             A & ~B & ~C &  D & ~E &  G & ~H  |  
             A & ~B &  C & ~D & ~E & ~F &  G  & ~H  |  
             A & ~B &  C &  F & ~G & ~H  |  
             A &  C & ~D &  F &  G &  H  |  
             A & ~B &  C &  E & ~G & ~H  |  
             A &  C & ~D &  E &  G &  H  |  
             A &  B & ~E & ~F & ~G & ~H  |  
             A &  B & ~D &  G &  H |  
             A &  B & ~D &  E &  F & ~G & ~H  |  
             A &  B &  D & ~F & ~G &  H  |  
             A &  B &  D &  E &  G & ~H  |  
             A & ~B & ~C &  D &  E &  F &  H  |  
             A & ~C &  D &  F &  G & ~H  |  
             A &  C &  D & ~E & ~G & ~H  |  
             A & ~B &  C &  D &  F & ~G  |  
             A & ~B &  C &  D &  E & ~G  |  
             A &  B &  D & ~E & ~G |  
             A &  B &  D & ~E &  F |  
             A &  B &  F &  G &  H ;

  int f16 =  A & ~B &  D & ~E & ~F & ~H  |  
             A &  D & ~E &  F & ~G &  H  |  
             A & ~B &  C & ~D & ~E & ~F  & H |  
             A & ~B &  C & ~D &  F & ~H  |  
             A &  C & ~D &  E & ~H |  
             A &  B & ~D & ~F &  G & ~H  |  
             A &  B & ~D & ~E &  F &  H  |  
             A &  B & ~D &  E & ~H |  
             A &  B &  D & ~E & ~F &  H  |  
             A &  B &  E &  G & ~H |  
             A & ~B &  D &  E & ~F &  H  |  
             A & ~B & ~C &  D &  E &  F  & G |  
             A & ~B &  C &  D &  G &  H  |  
             A &  D & ~E & ~F & ~G & ~H  |  
             A &  D &  E & ~F & ~G &  H  |  
             A &  B &  D &  E &  F & ~G  |  
             A &  C &  D &  E & ~G &  H ;

  return f16    |
         f15<<1 |
         f14<<2 |
         f13<<3 |

         f12<<4 |
         f11<<5 |
         f10<<6 |
         f9 <<7 |

         f8 <<8 |
         f7 <<9 |
         f6 <<10|
         f5 <<11|

         f4 <<12|
         f3 <<13|
         f2 <<14|
         f1 <<15;
}

...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38845149
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Размер getUnicodeCanonical 43 байта код + 256 байт таблица = 299 байт.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
.text:00401FB0 getUnicodeCanonical proc near           ; CODE XREF: sub_402000+56p
.text:00401FB0                                         ; sub_402000+C2p
.text:00401FB0
.text:00401FB0 var_18          = dword ptr -18h
.text:00401FB0 var_14          = dword ptr -14h
.text:00401FB0 var_10          = dword ptr -10h
.text:00401FB0 var_C           = dword ptr -0Ch
.text:00401FB0 var_4           = dword ptr -4
.text:00401FB0 arg_0           = dword ptr  8
.text:00401FB0
.text:00401FB0                 push    ebp
.text:00401FB1                 mov     ebp, esp
.text:00401FB3                 push    ebx
.text:00401FB4                 sub     esp, 14h        ; hWnd
.text:00401FB7                 mov     ebx, [ebp+arg_0]
.text:00401FBA                 mov     [esp+18h+var_C], 0
.text:00401FC2                 mov     [esp+18h+var_10], offset aGetunicodecano ; "getUnicodeCanonical"
.text:00401FCA                 mov     [esp+18h+var_14], offset aGetunicodecano ; "getUnicodeCanonical"
.text:00401FD2                 mov     [esp+18h+var_18], 0
.text:00401FD9                 call    MessageBoxA
.text:00401FDE                 sub     esp, 10h
.text:00401FE1                 cmp     ebx, 7Fh
.text:00401FE4                 jle     short loc_401FED
.text:00401FE6                 mov     ebx, ds:463EC0h[ebx*4]
.text:00401FED
.text:00401FED loc_401FED:                             ; CODE XREF: getUnicodeCanonical+34j
.text:00401FED                 mov     eax, ebx
.text:00401FEF                 mov     ebx, [ebp+var_4]
.text:00401FF2                 leave
.text:00401FF3                 retn
.text:00401FF3 getUnicodeCanonical endp

Размер getUnicode 2994 байта
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.
744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.
757.
758.
759.
760.
761.
762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.
779.
780.
781.
782.
783.
784.
785.
786.
787.
788.
789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
802.
803.
804.
805.
806.
807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.
820.
821.
822.
823.
824.
825.
826.
827.
828.
829.
830.
831.
832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.
852.
853.
854.
855.
856.
857.
858.
859.
860.
861.
862.
863.
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.
878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.
893.
894.
895.
896.
897.
898.
899.
900.
901.
902.
903.
904.
905.
906.
907.
908.
909.
910.
911.
912.
913.
914.
.text:004013F0 getUnicode      proc near               ; CODE XREF: sub_402000+4Cp
.text:004013F0                                         ; sub_402000+CCp
.text:004013F0
.text:004013F0 var_1F8         = dword ptr -1F8h
.text:004013F0 var_1F4         = dword ptr -1F4h
.text:004013F0 var_1F0         = dword ptr -1F0h
.text:004013F0 var_1EC         = dword ptr -1ECh
.text:004013F0 var_1DC         = dword ptr -1DCh
.text:004013F0 var_1CC         = dword ptr -1CCh
.text:004013F0 var_1C8         = dword ptr -1C8h
.text:004013F0 var_1C4         = dword ptr -1C4h
.text:004013F0 var_1C0         = dword ptr -1C0h
.text:004013F0 var_1BC         = dword ptr -1BCh
.text:004013F0 var_1B8         = dword ptr -1B8h
.text:004013F0 var_1B4         = dword ptr -1B4h
.text:004013F0 var_1B0         = dword ptr -1B0h
.text:004013F0 var_1AC         = dword ptr -1ACh
.text:004013F0 var_1A8         = dword ptr -1A8h
.text:004013F0 var_1A4         = dword ptr -1A4h
.text:004013F0 var_1A0         = dword ptr -1A0h
.text:004013F0 var_19C         = dword ptr -19Ch
.text:004013F0 var_198         = dword ptr -198h
.text:004013F0 var_194         = dword ptr -194h
.text:004013F0 var_190         = dword ptr -190h
.text:004013F0 var_18C         = dword ptr -18Ch
.text:004013F0 var_188         = dword ptr -188h
.text:004013F0 var_184         = dword ptr -184h
.text:004013F0 var_180         = dword ptr -180h
.text:004013F0 var_17C         = dword ptr -17Ch
.text:004013F0 var_178         = dword ptr -178h
.text:004013F0 var_174         = dword ptr -174h
.text:004013F0 var_170         = dword ptr -170h
.text:004013F0 var_16C         = dword ptr -16Ch
.text:004013F0 var_168         = dword ptr -168h
.text:004013F0 var_164         = dword ptr -164h
.text:004013F0 var_160         = dword ptr -160h
.text:004013F0 var_15C         = dword ptr -15Ch
.text:004013F0 var_158         = dword ptr -158h
.text:004013F0 var_154         = dword ptr -154h
.text:004013F0 var_150         = dword ptr -150h
.text:004013F0 var_14C         = dword ptr -14Ch
.text:004013F0 var_148         = dword ptr -148h
.text:004013F0 var_144         = dword ptr -144h
.text:004013F0 var_140         = dword ptr -140h
.text:004013F0 var_13C         = dword ptr -13Ch
.text:004013F0 var_138         = dword ptr -138h
.text:004013F0 var_134         = dword ptr -134h
.text:004013F0 var_130         = dword ptr -130h
.text:004013F0 var_12C         = dword ptr -12Ch
.text:004013F0 var_128         = dword ptr -128h
.text:004013F0 var_124         = dword ptr -124h
.text:004013F0 var_120         = dword ptr -120h
.text:004013F0 var_11C         = dword ptr -11Ch
.text:004013F0 var_118         = dword ptr -118h
.text:004013F0 var_114         = dword ptr -114h
.text:004013F0 var_110         = dword ptr -110h
.text:004013F0 var_10C         = dword ptr -10Ch
.text:004013F0 var_108         = dword ptr -108h
.text:004013F0 var_104         = dword ptr -104h
.text:004013F0 var_100         = dword ptr -100h
.text:004013F0 var_FC          = dword ptr -0FCh
.text:004013F0 var_F8          = dword ptr -0F8h
.text:004013F0 var_F4          = dword ptr -0F4h
.text:004013F0 var_F0          = dword ptr -0F0h
.text:004013F0 var_EC          = dword ptr -0ECh
.text:004013F0 var_E8          = dword ptr -0E8h
.text:004013F0 var_E4          = dword ptr -0E4h
.text:004013F0 var_E0          = dword ptr -0E0h
.text:004013F0 var_DC          = dword ptr -0DCh
.text:004013F0 var_D8          = dword ptr -0D8h
.text:004013F0 var_D4          = dword ptr -0D4h
.text:004013F0 var_D0          = dword ptr -0D0h
.text:004013F0 var_CC          = dword ptr -0CCh
.text:004013F0 var_C8          = dword ptr -0C8h
.text:004013F0 var_C4          = dword ptr -0C4h
.text:004013F0 var_C0          = dword ptr -0C0h
.text:004013F0 var_BC          = dword ptr -0BCh
.text:004013F0 var_B8          = dword ptr -0B8h
.text:004013F0 var_B4          = dword ptr -0B4h
.text:004013F0 var_B0          = dword ptr -0B0h
.text:004013F0 var_AC          = dword ptr -0ACh
.text:004013F0 var_A8          = dword ptr -0A8h
.text:004013F0 var_A4          = dword ptr -0A4h
.text:004013F0 var_A0          = dword ptr -0A0h
.text:004013F0 var_9C          = dword ptr -9Ch
.text:004013F0 var_98          = dword ptr -98h
.text:004013F0 var_94          = dword ptr -94h
.text:004013F0 var_90          = dword ptr -90h
.text:004013F0 var_8C          = dword ptr -8Ch
.text:004013F0 var_88          = dword ptr -88h
.text:004013F0 var_84          = dword ptr -84h
.text:004013F0 var_80          = dword ptr -80h
.text:004013F0 var_7C          = dword ptr -7Ch
.text:004013F0 var_78          = dword ptr -78h
.text:004013F0 var_74          = dword ptr -74h
.text:004013F0 var_70          = dword ptr -70h
.text:004013F0 var_6C          = dword ptr -6Ch
.text:004013F0 var_68          = dword ptr -68h
.text:004013F0 var_64          = dword ptr -64h
.text:004013F0 var_60          = dword ptr -60h
.text:004013F0 var_5C          = dword ptr -5Ch
.text:004013F0 var_58          = dword ptr -58h
.text:004013F0 var_54          = dword ptr -54h
.text:004013F0 var_50          = dword ptr -50h
.text:004013F0 var_4C          = dword ptr -4Ch
.text:004013F0 var_48          = dword ptr -48h
.text:004013F0 var_44          = dword ptr -44h
.text:004013F0 var_40          = dword ptr -40h
.text:004013F0 var_3C          = dword ptr -3Ch
.text:004013F0 var_38          = dword ptr -38h
.text:004013F0 var_34          = dword ptr -34h
.text:004013F0 var_30          = dword ptr -30h
.text:004013F0 var_2C          = dword ptr -2Ch
.text:004013F0 var_28          = dword ptr -28h
.text:004013F0 var_24          = dword ptr -24h
.text:004013F0 var_20          = dword ptr -20h
.text:004013F0 var_1C          = dword ptr -1Ch
.text:004013F0 var_C           = dword ptr -0Ch
.text:004013F0 arg_0           = dword ptr  8
.text:004013F0
.text:004013F0                 push    ebp
.text:004013F1                 mov     ebp, esp
.text:004013F3                 push    edi
.text:004013F4                 push    esi
.text:004013F5                 push    ebx
.text:004013F6                 sub     esp, 1ECh       ; hWnd
.text:004013FC                 mov     ebx, [ebp+arg_0]
.text:004013FF                 mov     [esp+1F8h+var_1EC], 0
.text:00401407                 mov     [esp+1F8h+var_1F0], offset aGetunicode ; "getUnicode"
.text:0040140F                 mov     [esp+1F8h+var_1F4], offset aGetunicode ; "getUnicode"
.text:00401417                 mov     [esp+1F8h+var_1F8], 0
.text:0040141E                 call    MessageBoxA
.text:00401423                 sub     esp, 10h
.text:00401426                 cmp     ebx, 7Fh
.text:00401429                 jle     loc_401F99
.text:0040142F                 mov     edx, ebx
.text:00401431                 mov     eax, ebx
.text:00401433                 and     edx, 1
.text:00401436                 sar     eax, 1
.text:00401438                 mov     ecx, ebx
.text:0040143A                 and     eax, 1
.text:0040143D                 sar     ecx, 2
.text:00401440                 mov     [ebp+var_2C], eax
.text:00401443                 and     ecx, 1
.text:00401446                 mov     esi, ebx
.text:00401448                 mov     edi, ebx
.text:0040144A                 sar     esi, 3
.text:0040144D                 sar     edi, 4
.text:00401450                 and     esi, 1
.text:00401453                 and     edi, 1
.text:00401456                 mov     [ebp+var_1DC], esi
.text:0040145C                 mov     [ebp+var_38], edi
.text:0040145F                 mov     eax, ebx
.text:00401461                 mov     edi, ebx
.text:00401463                 sar     eax, 6
.text:00401466                 sar     edi, 5
.text:00401469                 and     eax, 1
.text:0040146C                 and     edi, 1
.text:0040146F                 mov     [ebp+var_28], eax
.text:00401472                 sar     ebx, 7
.text:00401475                 mov     esi, ecx
.text:00401477                 and     ebx, 1
.text:0040147A                 not     esi
.text:0040147C                 not     eax
.text:0040147E                 and     eax, ebx
.text:00401480                 mov     [ebp+var_1C], eax
.text:00401483                 mov     eax, [ebp+var_2C]
.text:00401486                 not     eax
.text:00401488                 mov     [ebp+var_34], eax
.text:0040148B                 and     eax, esi
.text:0040148D                 mov     [ebp+var_70], eax
.text:00401490                 mov     eax, [ebp+var_1DC]
.text:00401496                 not     eax
.text:00401498                 mov     [ebp+var_20], eax
.text:0040149B                 mov     eax, [ebp+var_1C]
.text:0040149E                 and     eax, [ebp+var_20]
.text:004014A1                 mov     [ebp+var_1C8], eax
.text:004014A7                 mov     eax, [ebp+var_1C]
.text:004014AA                 and     eax, edi
.text:004014AC                 mov     [ebp+var_50], eax
.text:004014AF                 and     eax, [ebp+var_34]
.text:004014B2                 mov     [ebp+var_1C4], eax
.text:004014B8                 mov     eax, edx
.text:004014BA                 not     eax
.text:004014BC                 mov     [ebp+var_30], eax
.text:004014BF                 mov     eax, [ebp+var_50]
.text:004014C2                 and     eax, [ebp+var_30]
.text:004014C5                 mov     [ebp+var_1C0], eax
.text:004014CB                 mov     eax, edi
.text:004014CD                 not     eax
.text:004014CF                 mov     [ebp+var_40], eax
.text:004014D2                 mov     eax, [ebp+var_1C]
.text:004014D5                 and     eax, [ebp+var_40]
.text:004014D8                 mov     [ebp+var_6C], eax
.text:004014DB                 and     eax, [ebp+var_20]
.text:004014DE                 mov     [ebp+var_E4], eax
.text:004014E4                 mov     eax, esi
.text:004014E6                 and     eax, edx
.text:004014E8                 mov     [ebp+var_1BC], eax
.text:004014EE                 mov     eax, [ebp+var_38]
.text:004014F1                 not     eax
.text:004014F3                 mov     [ebp+var_4C], eax
.text:004014F6                 mov     eax, [ebp+var_1C]
.text:004014F9                 and     eax, [ebp+var_4C]
.text:004014FC                 mov     [ebp+var_E0], eax
.text:00401502                 mov     eax, [ebp+var_1DC]
.text:00401508                 and     eax, esi
.text:0040150A                 mov     [ebp+var_DC], eax
.text:00401510                 and     eax, [ebp+var_1C]
.text:00401513                 mov     [ebp+var_1B8], eax
.text:00401519                 mov     eax, [ebp+var_E0]
.text:0040151F                 and     eax, [ebp+var_1DC]
.text:00401525                 mov     [ebp+var_1B4], eax
.text:0040152B                 mov     eax, [ebp+var_4C]
.text:0040152E                 and     eax, ebx
.text:00401530                 mov     [ebp+var_D8], eax
.text:00401536                 mov     eax, [ebp+var_20]
.text:00401539                 and     eax, ebx
.text:0040153B                 mov     [ebp+var_1B0], eax
.text:00401541                 and     eax, esi
.text:00401543                 mov     [ebp+var_1AC], eax
.text:00401549                 mov     eax, [ebp+var_34]
.text:0040154C                 and     eax, [ebp+var_30]
.text:0040154F                 mov     [ebp+var_3C], eax
.text:00401552                 mov     eax, ebx
.text:00401554                 and     eax, edi
.text:00401556                 mov     [ebp+var_58], eax
.text:00401559                 mov     eax, [ebp+var_28]
.text:0040155C                 and     eax, ebx
.text:0040155E                 mov     [ebp+var_24], eax
.text:00401561                 mov     eax, [ebp+var_6C]
.text:00401564                 and     eax, [ebp+var_38]
.text:00401567                 mov     [ebp+var_28], eax
.text:0040156A                 and     eax, [ebp+var_20]
.text:0040156D                 mov     [ebp+var_90], eax
.text:00401573                 and     eax, ecx
.text:00401575                 mov     [ebp+var_D4], eax
.text:0040157B                 mov     eax, [ebp+var_28]
.text:0040157E                 and     eax, [ebp+var_1DC]
.text:00401584                 mov     [ebp+var_1A8], eax
.text:0040158A                 mov     eax, [ebp+var_28]
.text:0040158D                 and     eax, esi
.text:0040158F                 mov     [ebp+var_1A4], eax
.text:00401595                 and     eax, [ebp+var_2C]
.text:00401598                 mov     [ebp+var_1A0], eax
.text:0040159E                 mov     eax, [ebp+var_20]
.text:004015A1                 and     eax, ecx
.text:004015A3                 mov     [ebp+var_19C], eax
.text:004015A9                 mov     eax, [ebp+var_50]
.text:004015AC                 and     eax, [ebp+var_19C]
.text:004015B2                 mov     [ebp+var_D0], eax
.text:004015B8                 mov     eax, [ebp+var_6C]
.text:004015BB                 and     eax, [ebp+var_4C]
.text:004015BE                 mov     [ebp+var_8C], eax
.text:004015C4                 mov     eax, [ebp+var_E4]
.text:004015CA                 and     eax, esi
.text:004015CC                 mov     [ebp+var_198], eax
.text:004015D2                 mov     eax, [ebp+var_2C]
.text:004015D5                 and     eax, edx
.text:004015D7                 mov     [ebp+var_44], eax
.text:004015DA                 mov     eax, [ebp+var_8C]
.text:004015E0                 and     eax, [ebp+var_1DC]
.text:004015E6                 mov     [ebp+var_194], eax
.text:004015EC                 mov     eax, [ebp+var_6C]
.text:004015EF                 and     eax, [ebp+var_1DC]
.text:004015F5                 mov     [ebp+var_190], eax
.text:004015FB                 mov     eax, [ebp+var_1C]
.text:004015FE                 and     eax, [ebp+var_38]
.text:00401601                 mov     [ebp+var_CC], eax
.text:00401607                 and     eax, [ebp+var_1DC]
.text:0040160D                 mov     [ebp+var_C8], eax
.text:00401613                 mov     eax, [ebp+var_44]
.text:00401616                 and     eax, ecx
.text:00401618                 mov     [ebp+var_88], eax
.text:0040161E                 mov     eax, [ebp+var_28]
.text:00401621                 and     eax, ecx
.text:00401623                 mov     [ebp+var_18C], eax
.text:00401629                 mov     eax, [ebp+var_50]
.text:0040162C                 and     eax, [ebp+var_1DC]
.text:00401632                 mov     [ebp+var_84], eax
.text:00401638                 mov     eax, [ebp+var_24]
.text:0040163B                 and     eax, [ebp+var_40]
.text:0040163E                 mov     [ebp+var_C4], eax
.text:00401644                 and     eax, [ebp+var_4C]
.text:00401647                 mov     [ebp+var_68], eax
.text:0040164A                 and     eax, esi
.text:0040164C                 mov     [ebp+var_188], eax
.text:00401652                 mov     eax, [ebp+var_44]
.text:00401655                 and     eax, esi
.text:00401657                 mov     [ebp+var_184], eax
.text:0040165D                 and     eax, [ebp+var_20]
.text:00401660                 mov     [ebp+var_180], eax
.text:00401666                 mov     eax, [ebp+var_30]
.text:00401669                 and     eax, [ebp+var_2C]
.text:0040166C                 mov     [ebp+var_28], eax
.text:0040166F                 and     eax, ecx
.text:00401671                 mov     [ebp+var_C0], eax
.text:00401677                 mov     eax, [ebp+var_20]
.text:0040167A                 and     eax, [ebp+var_C0]
.text:00401680                 mov     [ebp+var_17C], eax
.text:00401686                 mov     eax, [ebp+var_C4]
.text:0040168C                 and     eax, [ebp+var_38]
.text:0040168F                 mov     [ebp+var_80], eax
.text:00401692                 and     eax, [ebp+var_20]
.text:00401695                 mov     [ebp+var_178], eax
.text:0040169B                 and     eax, esi
.text:0040169D                 mov     [ebp+var_174], eax
.text:004016A3                 mov     eax, [ebp+var_34]
.text:004016A6                 and     eax, ecx
.text:004016A8                 mov     [ebp+var_48], eax
.text:004016AB                 mov     eax, [ebp+var_80]
.text:004016AE                 and     eax, [ebp+var_1DC]
.text:004016B4                 mov     [ebp+var_170], eax
.text:004016BA                 mov     eax, [ebp+var_C8]
.text:004016C0                 and     eax, esi
.text:004016C2                 mov     [ebp+var_16C], eax
.text:004016C8                 and     eax, [ebp+var_34]
.text:004016CB                 mov     [ebp+var_168], eax
.text:004016D1                 mov     eax, [ebp+var_40]
.text:004016D4                 and     eax, ebx
.text:004016D6                 mov     [ebp+var_BC], eax
.text:004016DC                 mov     eax, [ebp+var_48]
.text:004016DF                 and     eax, [ebp+var_30]
.text:004016E2                 mov     [ebp+var_164], eax
.text:004016E8                 mov     eax, [ebp+var_58]
.text:004016EB                 and     eax, [ebp+var_38]
.text:004016EE                 mov     [ebp+var_64], eax
.text:004016F1                 mov     eax, [ebp+var_34]
.text:004016F4                 and     eax, edx
.text:004016F6                 mov     [ebp+var_40], eax
.text:004016F9                 mov     eax, [ebp+var_50]
.text:004016FC                 and     eax, [ebp+var_38]
.text:004016FF                 mov     [ebp+var_B8], eax
.text:00401705                 and     eax, ecx
.text:00401707                 and     edi, [ebp+var_24]
.text:0040170A                 mov     [ebp+var_160], eax
.text:00401710                 mov     [ebp+var_158], edi
.text:00401716                 mov     eax, [ebp+var_2C]
.text:00401719                 and     edi, [ebp+var_4C]
.text:0040171C                 and     eax, ecx
.text:0040171E                 mov     [ebp+var_154], edi
.text:00401724                 mov     [ebp+var_15C], eax
.text:0040172A                 mov     edi, [ebp+var_3C]
.text:0040172D                 mov     eax, [ebp+var_64]
.text:00401730                 and     edi, esi
.text:00401732                 and     eax, [ebp+var_1DC]
.text:00401738                 mov     [ebp+var_60], edi
.text:0040173B                 mov     [ebp+var_B4], eax
.text:00401741                 mov     edi, [ebp+var_190]
.text:00401747                 mov     eax, [ebp+var_64]
.text:0040174A                 and     edi, [ebp+var_70]
.text:0040174D                 and     eax, [ebp+var_20]
.text:00401750                 mov     [ebp+var_150], edi
.text:00401756                 mov     [ebp+var_14C], eax
.text:0040175C                 mov     edi, [ebp+var_68]
.text:0040175F                 and     eax, esi
.text:00401761                 and     edi, [ebp+var_1DC]
.text:00401767                 mov     [ebp+var_148], eax
.text:0040176D                 mov     [ebp+var_144], edi
.text:00401773                 mov     eax, [ebp+var_B4]
.text:00401779                 mov     edi, [ebp+var_E0]
.text:0040177F                 and     eax, [ebp+var_34]
.text:00401782                 and     edi, [ebp+var_20]
.text:00401785                 mov     [ebp+var_140], eax
.text:0040178B                 mov     [ebp+var_13C], edi
.text:00401791                 mov     eax, [ebp+var_D8]
.text:00401797                 mov     edi, [ebp+var_1A8]
.text:0040179D                 and     eax, [ebp+var_1DC]
.text:004017A3                 and     edi, ecx
.text:004017A5                 mov     [ebp+var_B0], eax
.text:004017AB                 and     eax, esi
.text:004017AD                 mov     [ebp+var_138], eax
.text:004017B3                 mov     [ebp+var_AC], edi
.text:004017B9                 mov     eax, [ebp+var_50]
.text:004017BC                 mov     edi, [ebp+var_24]
.text:004017BF                 and     eax, [ebp+var_4C]
.text:004017C2                 and     edi, [ebp+var_4C]
.text:004017C5                 mov     [ebp+var_A8], eax
.text:004017CB                 mov     [ebp+var_54], edi
.text:004017CE                 mov     eax, [ebp+var_28]
.text:004017D1                 and     eax, esi
.text:004017D3                 and     edi, eax
.text:004017D5                 mov     [ebp+var_134], eax
.text:004017DB                 mov     [ebp+var_130], edi
.text:004017E1                 mov     eax, [ebp+var_24]
.text:004017E4                 mov     edi, [ebp+var_38]
.text:004017E7                 and     eax, [ebp+var_1DC]
.text:004017ED                 and     edi, ebx
.text:004017EF                 mov     [ebp+var_7C], eax
.text:004017F2                 mov     [ebp+var_12C], edi
.text:004017F8                 mov     eax, [ebp+var_20]
.text:004017FB                 and     edi, [ebp+var_20]
.text:004017FE                 mov     [ebp+var_5C], edi
.text:00401801                 and     edi, [ebp+var_60]
.text:00401804                 mov     [ebp+var_128], edi
.text:0040180A                 mov     edi, [ebp+var_24]
.text:0040180D                 and     edi, [ebp+var_38]
.text:00401810                 and     eax, edi
.text:00401812                 mov     [ebp+var_A4], eax
.text:00401818                 and     eax, ecx
.text:0040181A                 mov     [ebp+var_124], eax
.text:00401820                 mov     eax, [ebp+var_13C]
.text:00401826                 and     eax, ecx
.text:00401828                 mov     [ebp+var_120], eax
.text:0040182E                 mov     eax, [ebp+var_48]
.text:00401831                 and     eax, edx
.text:00401833                 mov     [ebp+var_11C], eax
.text:00401839                 mov     eax, [ebp+var_90]
.text:0040183F                 and     eax, [ebp+var_28]
.text:00401842                 mov     [ebp+var_118], eax
.text:00401848                 mov     eax, [ebp+var_24]
.text:0040184B                 and     eax, [ebp+var_20]
.text:0040184E                 mov     [ebp+var_114], eax
.text:00401854                 mov     eax, [ebp+var_54]
.text:00401857                 and     eax, [ebp+var_1DC]
.text:0040185D                 mov     [ebp+var_78], eax
.text:00401860                 and     ebx, [ebp+var_1DC]
.text:00401866                 mov     eax, [ebp+var_54]
.text:00401869                 mov     [ebp+var_1CC], ebx
.text:0040186F                 and     eax, [ebp+var_48]
.text:00401872                 mov     [ebp+var_110], eax
.text:00401878                 mov     eax, [ebp+var_8C]
.text:0040187E                 and     eax, [ebp+var_2C]
.text:00401881                 mov     [ebp+var_10C], eax
.text:00401887                 mov     eax, [ebp+var_58]
.text:0040188A                 and     eax, [ebp+var_4C]
.text:0040188D                 mov     [ebp+var_108], eax
.text:00401893                 and     eax, [ebp+var_1DC]
.text:00401899                 mov     [ebp+var_A0], eax
.text:0040189F                 mov     eax, [ebp+var_114]
.text:004018A5                 and     eax, [ebp+var_60]
.text:004018A8                 mov     [ebp+var_104], eax
.text:004018AE                 mov     eax, [ebp+var_70]
.text:004018B1                 and     eax, edi
.text:004018B3                 and     edi, [ebp+var_1DC]
.text:004018B9                 mov     [ebp+var_100], eax
.text:004018BF                 mov     eax, [ebp+var_8C]
.text:004018C5                 and     eax, ecx
.text:004018C7                 mov     [ebp+var_FC], eax
.text:004018CD                 mov     eax, [ebp+var_78]
.text:004018D0                 and     eax, ecx
.text:004018D2                 mov     [ebp+var_9C], eax
.text:004018D8                 mov     eax, [ebp+var_AC]
.text:004018DE                 and     eax, [ebp+var_2C]
.text:004018E1                 mov     [ebp+var_F8], eax
.text:004018E7                 mov     eax, [ebp+var_54]
.text:004018EA                 and     eax, [ebp+var_20]
.text:004018ED                 mov     [ebp+var_98], eax
.text:004018F3                 mov     eax, [ebp+var_A4]
.text:004018F9                 and     eax, esi
.text:004018FB                 mov     [ebp+var_F4], eax
.text:00401901                 mov     eax, [ebp+var_24]
.text:00401904                 and     eax, [ebp+var_15C]
.text:0040190A                 mov     [ebp+var_F0], eax
.text:00401910                 mov     [ebp+var_94], edi
.text:00401916                 mov     edi, [ebp+var_A8]
.text:0040191C                 mov     eax, [ebp+var_98]
.text:00401922                 and     edi, ecx
.text:00401924                 and     eax, ecx
.text:00401926                 mov     [ebp+var_EC], edi
.text:0040192C                 mov     [ebp+var_E8], eax
.text:00401932                 mov     edi, [ebp+var_20]
.text:00401935                 mov     eax, [ebp+var_A8]
.text:0040193B                 and     edi, esi
.text:0040193D                 mov     ebx, [ebp+var_130]
.text:00401943                 and     edi, eax
.text:00401945                 or      ebx, [ebp+var_128]
.text:0040194B                 mov     [ebp+var_74], edi
.text:0040194E                 mov     eax, [ebp+var_DC]
.text:00401954                 and     eax, [ebp+var_40]
.text:00401957                 and     eax, [ebp+var_12C]
.text:0040195D                 or      ebx, eax
.text:0040195F                 mov     eax, [ebp+var_30]
.text:00401962                 and     eax, esi
.text:00401964                 and     eax, [ebp+var_20]
.text:00401967                 and     eax, [ebp+var_CC]
.text:0040196D                 or      ebx, eax
.text:0040196F                 mov     eax, [ebp+var_5C]
.text:00401972                 and     eax, [ebp+var_11C]
.text:00401978                 or      ebx, eax
.text:0040197A                 mov     eax, [ebp+var_7C]
.text:0040197D                 and     eax, [ebp+var_28]
.text:00401980                 or      ebx, eax
.text:00401982                 mov     eax, [ebp+var_A0]
.text:00401988                 and     eax, [ebp+var_30]
.text:0040198B                 or      ebx, eax
.text:0040198D                 mov     eax, [ebp+var_78]
.text:00401990                 and     eax, [ebp+var_30]
.text:00401993                 or      ebx, eax
.text:00401995                 mov     eax, [ebp+var_B8]
.text:0040199B                 and     eax, [ebp+var_44]
.text:0040199E                 or      ebx, eax
.text:004019A0                 mov     eax, [ebp+var_94]
.text:004019A6                 and     eax, [ebp+var_48]
.text:004019A9                 or      ebx, eax
.text:004019AB                 mov     eax, edi
.text:004019AD                 mov     edi, [ebp+var_2C]
.text:004019B0                 and     eax, edx
.text:004019B2                 or      edi, edx
.text:004019B4                 or      ebx, eax
.text:004019B6                 and     edi, [ebp+var_D4]
.text:004019BC                 mov     eax, [ebp+var_EC]
.text:004019C2                 and     eax, [ebp+var_30]
.text:004019C5                 or      ebx, eax
.text:004019C7                 mov     eax, [ebp+var_E8]
.text:004019CD                 and     eax, edx
.text:004019CF                 or      ebx, eax
.text:004019D1                 mov     eax, [ebp+var_F4]
.text:004019D7                 and     eax, edx
.text:004019D9                 or      ebx, eax
.text:004019DB                 mov     eax, [ebp+var_16C]
.text:004019E1                 and     eax, edx
.text:004019E3                 or      ebx, eax
.text:004019E5                 mov     eax, [ebp+var_140]
.text:004019EB                 and     eax, edx
.text:004019ED                 or      ebx, eax
.text:004019EF                 mov     eax, [ebp+var_1A0]
.text:004019F5                 or      ebx, [ebp+var_F8]
.text:004019FB                 and     eax, edx
.text:004019FD                 or      edi, eax
.text:004019FF                 mov     eax, [ebp+var_1A8]
.text:00401A05                 and     eax, [ebp+var_70]
.text:00401A08                 or      edi, eax
.text:00401A0A                 mov     eax, [ebp+var_1B0]
.text:00401A10                 shl     edi, 9
.text:00401A13                 and     eax, [ebp+var_3C]
.text:00401A16                 or      ebx, edi
.text:00401A18                 mov     edi, [ebp+var_24]
.text:00401A1B                 or      edi, [ebp+var_D8]
.text:00401A21                 or      edi, eax
.text:00401A23                 mov     eax, [ebp+var_58]
.text:00401A26                 and     eax, [ebp+var_20]
.text:00401A29                 or      edi, eax
.text:00401A2B                 mov     eax, [ebp+var_58]
.text:00401A2E                 and     eax, esi
.text:00401A30                 or      edi, eax
.text:00401A32                 mov     eax, [ebp+var_58]
.text:00401A35                 and     eax, [ebp+var_34]
.text:00401A38                 or      edi, eax
.text:00401A3A                 mov     eax, [ebp+var_58]
.text:00401A3D                 and     eax, [ebp+var_30]
.text:00401A40                 or      edi, eax
.text:00401A42                 mov     eax, [ebp+var_1AC]
.text:00401A48                 and     eax, [ebp+var_34]
.text:00401A4B                 or      edi, eax
.text:00401A4D                 mov     eax, [ebp+var_1AC]
.text:00401A53                 and     eax, [ebp+var_30]
.text:00401A56                 or      edi, eax
.text:00401A58                 mov     eax, [ebp+var_190]
.text:00401A5E                 shl     edi, 0Ah
.text:00401A61                 and     eax, ecx
.text:00401A63                 or      ebx, edi
.text:00401A65                 mov     edi, [ebp+var_C8]
.text:00401A6B                 and     edi, [ebp+var_88]
.text:00401A71                 or      edi, eax
.text:00401A73                 mov     eax, [ebp+var_194]
.text:00401A79                 and     eax, [ebp+var_44]
.text:00401A7C                 or      edi, eax
.text:00401A7E                 mov     eax, [ebp+var_90]
.text:00401A84                 and     eax, [ebp+var_70]
.text:00401A87                 or      edi, eax
.text:00401A89                 mov     eax, [ebp+var_18C]
.text:00401A8F                 and     eax, [ebp+var_3C]
.text:00401A92                 or      edi, eax
.text:00401A94                 mov     eax, [ebp+var_1A0]
.text:00401A9A                 and     eax, [ebp+var_30]
.text:00401A9D                 or      edi, eax
.text:00401A9F                 mov     eax, [ebp+var_1C8]
.text:00401AA5                 shl     edi, 7
.text:00401AA8                 and     eax, [ebp+var_3C]
.text:00401AAB                 or      ebx, edi
.text:00401AAD                 mov     edi, [ebp+var_1C0]
.text:00401AB3                 or      edi, [ebp+var_1C4]
.text:00401AB9                 or      edi, [ebp+var_1B4]
.text:00401ABF                 or      edi, eax
.text:00401AC1                 mov     eax, [ebp+var_1B8]
.text:00401AC7                 or      edi, [ebp+var_D0]
.text:00401ACD                 or      edi, [ebp+var_8C]
.text:00401AD3                 and     eax, [ebp+var_44]
.text:00401AD6                 or      edi, eax
.text:00401AD8                 mov     eax, [ebp+var_1C]
.text:00401ADB                 or      edi, [ebp+var_198]
.text:00401AE1                 and     eax, [ebp+var_70]
.text:00401AE4                 shl     edi, 8
.text:00401AE7                 or      ebx, edi
.text:00401AE9                 mov     edi, [ebp+var_1C8]
.text:00401AEF                 and     edi, ecx
.text:00401AF1                 or      edi, [ebp+var_1C4]
.text:00401AF7                 or      edi, eax
.text:00401AF9                 mov     eax, [ebp+var_6C]
.text:00401AFC                 or      edi, [ebp+var_1C0]
.text:00401B02                 and     eax, [ebp+var_1BC]
.text:00401B08                 or      edi, [ebp+var_E4]
.text:00401B0E                 or      edi, eax
.text:00401B10                 mov     eax, [ebp+var_E0]
.text:00401B16                 and     eax, ecx
.text:00401B18                 or      edi, eax
.text:00401B1A                 mov     eax, [ebp+var_1B8]
.text:00401B20                 and     eax, edx
.text:00401B22                 or      edi, eax
.text:00401B24                 mov     eax, [ebp+var_38]
.text:00401B27                 or      edi, [ebp+var_1B4]
.text:00401B2D                 and     eax, [ebp+var_44]
.text:00401B30                 shl     edi, 0Dh
.text:00401B33                 not     eax
.text:00401B35                 or      ebx, edi
.text:00401B37                 and     eax, [ebp+var_50]
.text:00401B3A                 mov     edi, [ebp+var_C4]
.text:00401B40                 or      eax, [ebp+var_D0]
.text:00401B46                 and     edi, [ebp+var_180]
.text:00401B4C                 or      eax, edi
.text:00401B4E                 mov     edi, [ebp+var_84]
.text:00401B54                 and     edi, esi
.text:00401B56                 or      eax, edi
.text:00401B58                 mov     edi, [ebp+var_68]
.text:00401B5B                 and     edi, [ebp+var_17C]
.text:00401B61                 or      eax, edi
.text:00401B63                 mov     edi, [ebp+var_80]
.text:00401B66                 and     edi, [ebp+var_48]
.text:00401B69                 or      eax, edi
.text:00401B6B                 mov     edi, [ebp+var_80]
.text:00401B6E                 and     edi, [ebp+var_1BC]
.text:00401B74                 or      eax, edi
.text:00401B76                 mov     edi, [ebp+var_188]
.text:00401B7C                 and     edi, [ebp+var_3C]
.text:00401B7F                 or      eax, edi
.text:00401B81                 mov     edi, [ebp+var_170]
.text:00401B87                 and     edi, ecx
.text:00401B89                 or      eax, edi
.text:00401B8B                 mov     edi, [ebp+var_18C]
.text:00401B91                 and     edi, [ebp+var_44]
.text:00401B94                 or      eax, edi
.text:00401B96                 mov     edi, [ebp+var_170]
.text:00401B9C                 or      eax, [ebp+var_168]
.text:00401BA2                 and     edi, [ebp+var_34]
.text:00401BA5                 or      eax, edi
.text:00401BA7                 mov     edi, [ebp+var_174]
.text:00401BAD                 and     edi, [ebp+var_2C]
.text:00401BB0                 or      eax, edi
.text:00401BB2                 mov     edi, [ebp+var_B0]
.text:00401BB8                 shl     eax, 6
.text:00401BBB                 and     edi, [ebp+var_28]
.text:00401BBE                 or      ebx, eax
.text:00401BC0                 mov     eax, [ebp+var_7C]
.text:00401BC3                 and     eax, edx
.text:00401BC5                 or      eax, [ebp+var_104]
.text:00401BCB                 or      eax, [ebp+var_100]
.text:00401BD1                 or      eax, edi
.text:00401BD3                 mov     edi, [ebp+var_7C]
.text:00401BD6                 and     edi, [ebp+var_48]
.text:00401BD9                 or      eax, edi
.text:00401BDB                 mov     edi, [ebp+var_A0]
.text:00401BE1                 and     edi, edx
.text:00401BE3                 or      eax, edi
.text:00401BE5                 mov     edi, [ebp+var_84]
.text:00401BEB                 and     edi, [ebp+var_2C]
.text:00401BEE                 or      eax, edi
.text:00401BF0                 mov     edi, [ebp+var_84]
.text:00401BF6                 and     edi, ecx
.text:00401BF8                 or      eax, edi
.text:00401BFA                 mov     edi, [ebp+var_148]
.text:00401C00                 or      eax, [ebp+var_9C]
.text:00401C06                 and     edi, [ebp+var_3C]
.text:00401C09                 or      eax, edi
.text:00401C0B                 mov     edi, [ebp+var_FC]
.text:00401C11                 and     edi, [ebp+var_40]
.text:00401C14                 or      eax, edi
.text:00401C16                 mov     edi, [ebp+var_D4]
.text:00401C1C                 and     edi, edx
.text:00401C1E                 or      eax, edi
.text:00401C20                 mov     edi, [ebp+var_D4]
.text:00401C26                 and     edi, [ebp+var_2C]
.text:00401C29                 or      eax, edi
.text:00401C2B                 mov     edi, [ebp+var_194]
.text:00401C31                 and     edi, esi
.text:00401C33                 mov     [ebp+var_1C], edi
.text:00401C36                 mov     edi, [ebp+var_10C]
.text:00401C3C                 or      [ebp+var_1C], edi
.text:00401C3F                 mov     edi, [ebp+var_30]
.text:00401C42                 and     [ebp+var_1C], edi
.text:00401C45                 mov     edi, [ebp+var_64]
.text:00401C48                 or      eax, [ebp+var_1C]
.text:00401C4B                 and     edi, [ebp+var_60]
.text:00401C4E                 shl     eax, 3
.text:00401C51                 or      ebx, eax
.text:00401C53                 mov     eax, [ebp+var_60]
.text:00401C56                 or      eax, [ebp+var_C0]
.text:00401C5C                 and     eax, [ebp+var_1CC]
.text:00401C62                 or      eax, edi
.text:00401C64                 mov     edi, [ebp+var_F0]
.text:00401C6A                 and     edi, [ebp+var_30]
.text:00401C6D                 or      eax, edi
.text:00401C6F                 mov     edi, [ebp+var_D0]
.text:00401C75                 or      eax, [ebp+var_150]
.text:00401C7B                 and     edi, [ebp+var_2C]
.text:00401C7E                 or      eax, edi
.text:00401C80                 mov     edi, [ebp+var_98]
.text:00401C86                 and     edi, [ebp+var_184]
.text:00401C8C                 or      eax, edi
.text:00401C8E                 mov     edi, [ebp+var_94]
.text:00401C94                 and     edi, [ebp+var_30]
.text:00401C97                 or      eax, edi
.text:00401C99                 mov     edi, [ebp+var_98]
.text:00401C9F                 and     edi, [ebp+var_3C]
.text:00401CA2                 or      eax, edi
.text:00401CA4                 mov     edi, [ebp+var_110]
.text:00401CAA                 and     edi, edx
.text:00401CAC                 or      eax, edi
.text:00401CAE                 mov     edi, [ebp+var_10C]
.text:00401CB4                 or      eax, [ebp+var_168]
.text:00401CBA                 and     edi, [ebp+var_30]
.text:00401CBD                 or      eax, edi
.text:00401CBF                 mov     edi, [ebp+var_120]
.text:00401CC5                 and     edi, [ebp+var_2C]
.text:00401CC8                 or      eax, edi
.text:00401CCA                 mov     edi, [ebp+var_F4]
.text:00401CD0                 and     edi, [ebp+var_34]
.text:00401CD3                 or      eax, edi
.text:00401CD5                 mov     edi, [ebp+var_FC]
.text:00401CDB                 and     edi, [ebp+var_30]
.text:00401CDE                 or      eax, edi
.text:00401CE0                 mov     edi, [ebp+var_EC]
.text:00401CE6                 and     edi, edx
.text:00401CE8                 or      eax, edi
.text:00401CEA                 mov     edi, [ebp+var_E8]
.text:00401CF0                 and     edi, [ebp+var_34]
.text:00401CF3                 or      eax, edi
.text:00401CF5                 mov     edi, [ebp+var_9C]
.text:00401CFB                 and     edi, edx
.text:00401CFD                 or      eax, edi
.text:00401CFF                 mov     edi, [ebp+var_20]
.text:00401D02                 or      eax, [ebp+var_F8]
.text:00401D08                 and     edi, [ebp+var_48]
.text:00401D0B                 shl     eax, 2
.text:00401D0E                 or      ebx, eax
.text:00401D10                 mov     eax, [ebp+var_54]
.text:00401D13                 and     eax, [ebp+var_40]
.text:00401D16                 or      eax, [ebp+var_A8]
.text:00401D1C                 mov     [ebp+var_20], edi
.text:00401D1F                 mov     edi, [ebp+var_D8]
.text:00401D25                 and     [ebp+var_20], edi
.text:00401D28                 mov     edi, [ebp+var_7C]
.text:00401D2B                 or      eax, [ebp+var_20]
.text:00401D2E                 and     edi, [ebp+var_134]
.text:00401D34                 or      eax, [ebp+var_130]
.text:00401D3A                 or      eax, [ebp+var_128]
.text:00401D40                 or      eax, edi
.text:00401D42                 mov     edi, [ebp+var_B0]
.text:00401D48                 and     edi, [ebp+var_88]
.text:00401D4E                 or      eax, edi
.text:00401D50                 mov     edi, [ebp+var_114]
.text:00401D56                 and     edi, [ebp+var_88]
.text:00401D5C                 or      eax, edi
.text:00401D5E                 mov     edi, [ebp+var_138]
.text:00401D64                 or      eax, [ebp+var_110]
.text:00401D6A                 and     edi, [ebp+var_28]
.text:00401D6D                 or      eax, edi
.text:00401D6F                 mov     edi, [ebp+var_E4]
.text:00401D75                 and     edi, [ebp+var_11C]
.text:00401D7B                 or      eax, edi
.text:00401D7D                 mov     edi, [ebp+var_78]
.text:00401D80                 and     edi, edx
.text:00401D82                 or      eax, edi
.text:00401D84                 mov     edi, [ebp+var_78]
.text:00401D87                 and     edi, [ebp+var_2C]
.text:00401D8A                 or      eax, edi
.text:00401D8C                 mov     edi, [ebp+var_124]
.text:00401D92                 or      eax, [ebp+var_AC]
.text:00401D98                 and     edi, [ebp+var_2C]
.text:00401D9B                 and     esi, [ebp+var_2C]
.text:00401D9E                 or      eax, edi
.text:00401DA0                 and     esi, [ebp+var_13C]
.text:00401DA6                 mov     edi, [ebp+var_120]
.text:00401DAC                 and     edi, [ebp+var_30]
.text:00401DAF                 or      eax, edi
.text:00401DB1                 mov     edi, [ebp+var_90]
.text:00401DB7                 and     edi, [ebp+var_40]
.text:00401DBA                 or      eax, edi
.text:00401DBC                 mov     edi, [ebp+var_138]
.text:00401DC2                 or      eax, [ebp+var_118]
.text:00401DC8                 and     edi, [ebp+var_34]
.text:00401DCB                 or      edi, esi
.text:00401DCD                 mov     esi, [ebp+var_38]
.text:00401DD0                 and     edi, edx
.text:00401DD2                 and     esi, [ebp+var_C0]
.text:00401DD8                 or      eax, edi
.text:00401DDA                 and     esi, [ebp+var_BC]
.text:00401DE0                 shl     eax, 4
.text:00401DE3                 mov     edi, [ebp+var_1DC]
.text:00401DE9                 or      ebx, eax
.text:00401DEB                 mov     eax, [ebp+var_50]
.text:00401DEE                 and     eax, [ebp+var_164]
.text:00401DF4                 or      eax, [ebp+var_104]
.text:00401DFA                 or      eax, esi
.text:00401DFC                 mov     esi, [ebp+var_108]
.text:00401E02                 and     esi, [ebp+var_88]
.text:00401E08                 or      eax, esi
.text:00401E0A                 mov     esi, [ebp+var_54]
.text:00401E0D                 and     esi, [ebp+var_44]
.text:00401E10                 or      eax, esi
.text:00401E12                 mov     esi, [ebp+var_F0]
.text:00401E18                 and     esi, edx
.text:00401E1A                 or      eax, esi
.text:00401E1C                 mov     esi, [ebp+var_84]
.text:00401E22                 or      eax, [ebp+var_124]
.text:00401E28                 and     esi, [ebp+var_3C]
.text:00401E2B                 or      eax, esi
.text:00401E2D                 mov     esi, [ebp+var_A0]
.text:00401E33                 and     esi, [ebp+var_44]
.text:00401E36                 or      eax, esi
.text:00401E38                 mov     esi, [ebp+var_100]
.text:00401E3E                 and     esi, edx
.text:00401E40                 or      eax, esi
.text:00401E42                 mov     esi, [ebp+var_94]
.text:00401E48                 and     esi, [ebp+var_28]
.text:00401E4B                 and     edi, [ebp+var_34]
.text:00401E4E                 or      eax, esi
.text:00401E50                 and     edi, [ebp+var_B8]
.text:00401E56                 mov     esi, [ebp+var_14C]
.text:00401E5C                 and     esi, [ebp+var_3C]
.text:00401E5F                 or      eax, esi
.text:00401E61                 mov     esi, [ebp+var_A4]
.text:00401E67                 or      eax, edi
.text:00401E69                 and     esi, [ebp+var_34]
.text:00401E6C                 or      eax, esi
.text:00401E6E                 mov     esi, [ebp+var_198]
.text:00401E74                 or      eax, [ebp+var_118]
.text:00401E7A                 and     esi, [ebp+var_40]
.text:00401E7D                 or      eax, esi
.text:00401E7F                 mov     esi, [ebp+var_74]
.text:00401E82                 and     esi, [ebp+var_28]
.text:00401E85                 or      eax, esi
.text:00401E87                 mov     esi, [ebp+var_9C]
.text:00401E8D                 and     esi, [ebp+var_3C]
.text:00401E90                 or      eax, esi
.text:00401E92                 mov     esi, [ebp+var_160]
.text:00401E98                 and     esi, [ebp+var_34]
.text:00401E9B                 or      eax, esi
.text:00401E9D                 mov     esi, [ebp+var_AC]
.text:00401EA3                 and     esi, edx
.text:00401EA5                 or      eax, esi
.text:00401EA7                 mov     esi, [ebp+var_CC]
.text:00401EAD                 add     eax, eax
.text:00401EAF                 and     esi, [ebp+var_164]
.text:00401EB5                 or      ebx, eax
.text:00401EB7                 or      esi, [ebp+var_C8]
.text:00401EBD                 mov     eax, [ebp+var_DC]
.text:00401EC3                 and     eax, [ebp+var_28]
.text:00401EC6                 and     eax, [ebp+var_BC]
.text:00401ECC                 or      esi, eax
.text:00401ECE                 mov     eax, [ebp+var_64]
.text:00401ED1                 and     eax, [ebp+var_40]
.text:00401ED4                 or      esi, eax
.text:00401ED6                 mov     eax, [ebp+var_158]
.text:00401EDC                 and     eax, [ebp+var_180]
.text:00401EE2                 or      esi, eax
.text:00401EE4                 mov     eax, [ebp+var_64]
.text:00401EE7                 and     eax, [ebp+var_48]
.text:00401EEA                 or      esi, eax
.text:00401EEC                 mov     eax, [ebp+var_68]
.text:00401EEF                 or      esi, [ebp+var_160]
.text:00401EF5                 and     eax, [ebp+var_40]
.text:00401EF8                 or      esi, eax
.text:00401EFA                 mov     eax, [ebp+var_68]
.text:00401EFD                 and     eax, [ebp+var_48]
.text:00401F00                 or      esi, eax
.text:00401F02                 mov     eax, [ebp+var_154]
.text:00401F08                 and     eax, [ebp+var_60]
.text:00401F0B                 or      esi, eax
.text:00401F0D                 mov     eax, [ebp+var_154]
.text:00401F13                 and     eax, [ebp+var_17C]
.text:00401F19                 or      esi, eax
.text:00401F1B                 mov     eax, [ebp+var_B4]
.text:00401F21                 and     eax, ecx
.text:00401F23                 and     ecx, [ebp+var_144]
.text:00401F29                 or      esi, eax
.text:00401F2B                 mov     eax, [ebp+var_B4]
.text:00401F31                 or      esi, [ebp+var_150]
.text:00401F37                 and     eax, edx
.text:00401F39                 or      esi, [ebp+var_140]
.text:00401F3F                 and     edx, [ebp+var_144]
.text:00401F45                 or      esi, eax
.text:00401F47                 mov     eax, [ebp+var_188]
.text:00401F4D                 and     eax, [ebp+var_28]
.text:00401F50                 or      esi, eax
.text:00401F52                 mov     eax, [ebp+var_178]
.text:00401F58                 and     eax, [ebp+var_15C]
.text:00401F5E                 or      esi, eax
.text:00401F60                 mov     eax, [ebp+var_148]
.text:00401F66                 and     eax, [ebp+var_28]
.text:00401F69                 or      esi, eax
.text:00401F6B                 mov     eax, [ebp+var_19C]
.text:00401F71                 or      esi, edx
.text:00401F73                 and     eax, [ebp+var_4C]
.text:00401F76                 or      esi, ecx
.text:00401F78                 and     eax, [ebp+var_BC]
.text:00401F7E                 or      eax, [ebp+var_1A4]
.text:00401F84                 and     eax, [ebp+var_44]
.text:00401F87                 or      esi, eax
.text:00401F89                 mov     eax, [ebp+var_174]
.text:00401F8F                 and     eax, [ebp+var_3C]
.text:00401F92                 or      esi, eax
.text:00401F94                 shl     esi, 5
.text:00401F97                 or      ebx, esi
.text:00401F99
.text:00401F99 loc_401F99:                             ; CODE XREF: getUnicode+39j
.text:00401F99                 lea     esp, [ebp-0Ch]
.text:00401F9C                 mov     eax, ebx
.text:00401F9E                 pop     ebx
.text:00401F9F                 pop     esi
.text:00401FA0                 pop     edi
.text:00401FA1                 leave
.text:00401FA2                 retn
.text:00401FA2 getUnicode      endp

...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38845150
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Размер getUnicodeSwitch 1412 байт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
int getUnicodeSwitch(int koi8r)
{
    MessageBoxA(NULL,"getUnicodeSwitch","getUnicodeSwitch",MB_OK);

    if (koi8r<128) return koi8r;
    switch(koi8r)
    {
    case 128:
        return 9472;
        break;
    case 129:
        return 9474;
        break;
    case 130:
        return 9484;
        break;
    case 131:
        return 9488;
        break;
    case 132:
        return 9492;
        break;
    case 133:
        return 9496;
        break;
    case 134:
        return 9500;
        break;
    case 135:
        return 9508;
        break;
    case 136:
        return 9516;
        break;
    case 137:
        return 9524;
        break;
    case 138:
        return 9532;
        break;
    case 139:
        return 9600;
        break;
    case 140:
        return 9604;
        break;
    case 141:
        return 9608;
        break;
    case 142:
        return 9612;
        break;
    case 143:
        return 9616;
        break;
    case 144:
        return 9617;
        break;
    case 145:
        return 9618;
        break;
    case 146:
        return 9619;
        break;
    case 147:
        return 8992;
        break;
    case 148:
        return 9632;
        break;
    case 149:
        return 8729;
        break;
    case 150:
        return 8730;
        break;
    case 151:
        return 8776;
        break;
    case 152:
        return 8804;
        break;
    case 153:
        return 8805;
        break;
    case 154:
        return 160;
        break;
    case 155:
        return 8993;
        break;
    case 156:
        return 176;
        break;
    case 157:
        return 178;
        break;
    case 158:
        return 183;
        break;
    case 159:
        return 247;
        break;
    case 160:
        return 9552;
        break;
    case 161:
        return 9553;
        break;
    case 162:
        return 9554;
        break;
    case 163:
        return 1105;
        break;
    case 164:
        return 9555;
        break;
    case 165:
        return 9556;
        break;
    case 166:
        return 9557;
        break;
    case 167:
        return 9558;
        break;
    case 168:
        return 9559;
        break;
    case 169:
        return 9560;
        break;
    case 170:
        return 9561;
        break;
    case 171:
        return 9562;
        break;
    case 172:
        return 9563;
        break;
    case 173:
        return 9564;
        break;
    case 174:
        return 9565;
        break;
    case 175:
        return 9566;
        break;
    case 176:
        return 9567;
        break;
    case 177:
        return 9568;
        break;
    case 178:
        return 9569;
        break;
    case 179:
        return 1025;
        break;
    case 180:
        return 9570;
        break;
    case 181:
        return 9571;
        break;
    case 182:
        return 9572;
        break;
    case 183:
        return 9573;
        break;
    case 184:
        return 9574;
        break;
    case 185:
        return 9575;
        break;
    case 186:
        return 9576;
        break;
    case 187:
        return 9577;
        break;
    case 188:
        return 9578;
        break;
    case 189:
        return 9579;
        break;
    case 190:
        return 9580;
        break;
    case 191:
        return 169;
        break;
    case 192:
        return 1102;
        break;
    case 193:
        return 1072;
        break;
    case 194:
        return 1073;
        break;
    case 195:
        return 1094;
        break;
    case 196:
        return 1076;
        break;
    case 197:
        return 1077;
        break;
    case 198:
        return 1092;
        break;
    case 199:
        return 1075;
        break;
    case 200:
        return 1093;
        break;
    case 201:
        return 1080;
        break;
    case 202:
        return 1081;
        break;
    case 203:
        return 1082;
        break;
    case 204:
        return 1083;
        break;
    case 205:
        return 1084;
        break;
    case 206:
        return 1085;
        break;
    case 207:
        return 1086;
        break;
    case 208:
        return 1087;
        break;
    case 209:
        return 1103;
        break;
    case 210:
        return 1088;
        break;
    case 211:
        return 1089;
        break;
    case 212:
        return 1090;
        break;
    case 213:
        return 1091;
        break;
    case 214:
        return 1078;
        break;
    case 215:
        return 1074;
        break;
    case 216:
        return 1100;
        break;
    case 217:
        return 1099;
        break;
    case 218:
        return 1079;
        break;
    case 219:
        return 1096;
        break;
    case 220:
        return 1101;
        break;
    case 221:
        return 1097;
        break;
    case 222:
        return 1095;
        break;
    case 223:
        return 1098;
        break;
    case 224:
        return 1070;
        break;
    case 225:
        return 1040;
        break;
    case 226:
        return 1041;
        break;
    case 227:
        return 1062;
        break;
    case 228:
        return 1044;
        break;
    case 229:
        return 1045;
        break;
    case 230:
        return 1060;
        break;
    case 231:
        return 1043;
        break;
    case 232:
        return 1061;
        break;
    case 233:
        return 1048;
        break;
    case 234:
        return 1049;
        break;
    case 235:
        return 1050;
        break;
    case 236:
        return 1051;
        break;
    case 237:
        return 1052;
        break;
    case 238:
        return 1053;
        break;
    case 239:
        return 1054;
        break;
    case 240:
        return 1055;
        break;
    case 241:
        return 1071;
        break;
    case 242:
        return 1056;
        break;
    case 243:
        return 1057;
        break;
    case 244:
        return 1058;
        break;
    case 245:
        return 1059;
        break;
    case 246:
        return 1046;
        break;
    case 247:
        return 1042;
        break;
    case 248:
        return 1068;
        break;
    case 249:
        return 1067;
        break;
    case 250:
        return 1047;
        break;
    case 251:
        return 1064;
        break;
    case 252:
        return 1069;
        break;
    case 253:
        return 1065;
        break;
    case 254:
        return 1063;
        break;
    case 255:
        return 1066;
        break;
    }
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.
744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.
757.
758.
759.
760.
761.
762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.
779.
780.
781.
782.
783.
784.
785.
786.
787.
788.
789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
802.
803.
804.
805.
806.
807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.
820.
821.
822.
823.
824.
825.
826.
827.
828.
829.
830.
831.
832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.
852.
853.
854.
855.
856.
857.
858.
859.
860.
861.
862.
863.
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.
878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.
893.
894.
.text:00401F70 getUnicodeSwitch proc near              ; CODE XREF: sub_402500+23p
.text:00401F70                                         ; sub_402500+5Cp ...
.text:00401F70
.text:00401F70 var_18          = dword ptr -18h
.text:00401F70 var_14          = dword ptr -14h
.text:00401F70 var_10          = dword ptr -10h
.text:00401F70 var_C           = dword ptr -0Ch
.text:00401F70 var_4           = dword ptr -4
.text:00401F70 arg_0           = dword ptr  8
.text:00401F70
.text:00401F70                 push    ebp
.text:00401F71                 mov     ebp, esp
.text:00401F73                 push    ebx
.text:00401F74                 sub     esp, 14h        ; hWnd
.text:00401F77                 mov     ebx, [ebp+arg_0]
.text:00401F7A                 mov     [esp+18h+var_C], 0
.text:00401F82                 mov     [esp+18h+var_10], offset aGetunicodeswit ; "getUnicodeSwitch"
.text:00401F8A                 mov     [esp+18h+var_14], offset aGetunicodeswit ; "getUnicodeSwitch"
.text:00401F92                 mov     [esp+18h+var_18], 0
.text:00401F99                 call    MessageBoxA
.text:00401F9E                 sub     esp, 10h
.text:00401FA1                 cmp     ebx, 7Fh
.text:00401FA4                 jle     short loc_401FC0
.text:00401FA6                 add     ebx, 0FFFFFF80h
.text:00401FA9                 cmp     ebx, 7Fh
.text:00401FAC                 jbe     short loc_401FD0
.text:00401FAE                 db      66h
.text:00401FAE                 nop
.text:00401FB0                 jmp     short loc_401FC2
.text:00401FB2 ; ---------------------------------------------------------------------------
.text:00401FB2
.text:00401FB2 loc_401FB2:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00401FB2                                         ; DATA XREF: .rdata:0046528Co
.text:00401FB2                 mov     ebx, 427h
.text:00401FB7                 mov     esi, esi
.text:00401FB9                 lea     edi, [edi+0]
.text:00401FC0
.text:00401FC0 loc_401FC0:                             ; CODE XREF: getUnicodeSwitch+34j
.text:00401FC0                                         ; getUnicodeSwitch+6Cj ...
.text:00401FC0                 mov     eax, ebx
.text:00401FC2
.text:00401FC2 loc_401FC2:                             ; CODE XREF: getUnicodeSwitch+40j
.text:00401FC2                 mov     ebx, [ebp+var_4]
.text:00401FC5                 leave
.text:00401FC6                 retn
.text:00401FC6 ; ---------------------------------------------------------------------------
.text:00401FC7                 align 10h
.text:00401FD0
.text:00401FD0 loc_401FD0:                             ; CODE XREF: getUnicodeSwitch+3Cj
.text:00401FD0                 jmp     ds:off_465094[ebx*4]
.text:00401FD7
.text:00401FD7 loc_401FD7:                             ; DATA XREF: .rdata:00465290o
.text:00401FD7                 mov     ebx, 42Ah
.text:00401FDC                 jmp     short loc_401FC0
.text:00401FDE ; ---------------------------------------------------------------------------
.text:00401FDE
.text:00401FDE loc_401FDE:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00401FDE                                         ; DATA XREF: .rdata:off_465094o
.text:00401FDE                 mov     ebx, 2500h
.text:00401FE3                 jmp     short loc_401FC0
.text:00401FE5 ; ---------------------------------------------------------------------------
.text:00401FE5
.text:00401FE5 loc_401FE5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00401FE5                                         ; DATA XREF: .rdata:00465098o
.text:00401FE5                 mov     ebx, 2502h
.text:00401FEA                 jmp     short loc_401FC0
.text:00401FEC ; ---------------------------------------------------------------------------
.text:00401FEC
.text:00401FEC loc_401FEC:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00401FEC                                         ; DATA XREF: .rdata:0046509Co
.text:00401FEC                 mov     ebx, 250Ch
.text:00401FF1                 jmp     short loc_401FC0
.text:00401FF3 ; ---------------------------------------------------------------------------
.text:00401FF3
.text:00401FF3 loc_401FF3:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00401FF3                                         ; DATA XREF: .rdata:004650A0o
.text:00401FF3                 mov     ebx, 2510h
.text:00401FF8                 jmp     short loc_401FC0
.text:00401FFA ; ---------------------------------------------------------------------------
.text:00401FFA
.text:00401FFA loc_401FFA:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00401FFA                                         ; DATA XREF: .rdata:004650A4o
.text:00401FFA                 mov     ebx, 2514h
.text:00401FFF                 nop
.text:00402000                 jmp     short loc_401FC0
.text:00402002 ; ---------------------------------------------------------------------------
.text:00402002
.text:00402002 loc_402002:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402002                                         ; DATA XREF: .rdata:004650A8o
.text:00402002                 mov     ebx, 2518h
.text:00402007                 jmp     short loc_401FC0
.text:00402009 ; ---------------------------------------------------------------------------
.text:00402009
.text:00402009 loc_402009:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402009                                         ; DATA XREF: .rdata:004650ACo
.text:00402009                 mov     ebx, 251Ch
.text:0040200E                 db      66h
.text:0040200E                 nop
.text:00402010                 jmp     short loc_401FC0
.text:00402012 ; ---------------------------------------------------------------------------
.text:00402012
.text:00402012 loc_402012:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402012                                         ; DATA XREF: .rdata:004650B0o
.text:00402012                 mov     ebx, 2524h
.text:00402017                 jmp     short loc_401FC0
.text:00402019 ; ---------------------------------------------------------------------------
.text:00402019
.text:00402019 loc_402019:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402019                                         ; DATA XREF: .rdata:004650B4o
.text:00402019                 mov     ebx, 252Ch
.text:0040201E                 db      66h
.text:0040201E                 nop
.text:00402020                 jmp     short loc_401FC0
.text:00402022 ; ---------------------------------------------------------------------------
.text:00402022
.text:00402022 loc_402022:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402022                                         ; DATA XREF: .rdata:004650B8o
.text:00402022                 mov     ebx, 2534h
.text:00402027                 jmp     short loc_401FC0
.text:00402029 ; ---------------------------------------------------------------------------
.text:00402029
.text:00402029 loc_402029:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402029                                         ; DATA XREF: .rdata:004650BCo
.text:00402029                 mov     ebx, 253Ch
.text:0040202E                 db      66h
.text:0040202E                 nop
.text:00402030                 jmp     short loc_401FC0
.text:00402032 ; ---------------------------------------------------------------------------
.text:00402032
.text:00402032 loc_402032:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402032                                         ; DATA XREF: .rdata:off_4650C0o
.text:00402032                 mov     ebx, 2580h
.text:00402037                 jmp     short loc_401FC0
.text:00402039 ; ---------------------------------------------------------------------------
.text:00402039
.text:00402039 loc_402039:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402039                                         ; DATA XREF: .rdata:004650C4o
.text:00402039                 mov     ebx, 2584h
.text:0040203E                 db      66h
.text:0040203E                 nop
.text:00402040                 jmp     loc_401FC0
.text:00402045 ; ---------------------------------------------------------------------------
.text:00402045
.text:00402045 loc_402045:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402045                                         ; DATA XREF: .rdata:004650C8o
.text:00402045                 mov     ebx, 2588h
.text:0040204A                 jmp     loc_401FC0
.text:0040204F ; ---------------------------------------------------------------------------
.text:0040204F
.text:0040204F loc_40204F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040204F                                         ; DATA XREF: .rdata:004650CCo
.text:0040204F                 mov     ebx, 258Ch
.text:00402054                 jmp     loc_401FC0
.text:00402059 ; ---------------------------------------------------------------------------
.text:00402059
.text:00402059 loc_402059:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402059                                         ; DATA XREF: .rdata:004650D0o
.text:00402059                 mov     ebx, 2590h
.text:0040205E                 db      66h
.text:0040205E                 nop
.text:00402060                 jmp     loc_401FC0
.text:00402065 ; ---------------------------------------------------------------------------
.text:00402065
.text:00402065 loc_402065:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402065                                         ; DATA XREF: .rdata:004650D4o
.text:00402065                 mov     ebx, 2591h
.text:0040206A                 jmp     loc_401FC0
.text:0040206F ; ---------------------------------------------------------------------------
.text:0040206F
.text:0040206F loc_40206F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040206F                                         ; DATA XREF: .rdata:004650D8o
.text:0040206F                 mov     ebx, 2592h
.text:00402074                 jmp     loc_401FC0
.text:00402079 ; ---------------------------------------------------------------------------
.text:00402079
.text:00402079 loc_402079:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402079                                         ; DATA XREF: .rdata:004650DCo
.text:00402079                 mov     ebx, 2593h
.text:0040207E                 db      66h
.text:0040207E                 nop
.text:00402080                 jmp     loc_401FC0
.text:00402085 ; ---------------------------------------------------------------------------
.text:00402085
.text:00402085 loc_402085:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402085                                         ; DATA XREF: .rdata:004650E0o
.text:00402085                 mov     ebx, 2320h
.text:0040208A                 jmp     loc_401FC0
.text:0040208F ; ---------------------------------------------------------------------------
.text:0040208F
.text:0040208F loc_40208F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040208F                                         ; DATA XREF: .rdata:004650E4o
.text:0040208F                 mov     ebx, 25A0h
.text:00402094                 jmp     loc_401FC0
.text:00402099 ; ---------------------------------------------------------------------------
.text:00402099
.text:00402099 loc_402099:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402099                                         ; DATA XREF: .rdata:004650E8o
.text:00402099                 mov     ebx, 2219h
.text:0040209E                 db      66h
.text:0040209E                 nop
.text:004020A0                 jmp     loc_401FC0
.text:004020A5 ; ---------------------------------------------------------------------------
.text:004020A5
.text:004020A5 loc_4020A5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004020A5                                         ; DATA XREF: .rdata:004650ECo
.text:004020A5                 mov     ebx, 221Ah
.text:004020AA                 jmp     loc_401FC0
.text:004020AF ; ---------------------------------------------------------------------------
.text:004020AF
.text:004020AF loc_4020AF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004020AF                                         ; DATA XREF: .rdata:004650F0o
.text:004020AF                 mov     ebx, 2248h
.text:004020B4                 jmp     loc_401FC0
.text:004020B9 ; ---------------------------------------------------------------------------
.text:004020B9
.text:004020B9 loc_4020B9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004020B9                                         ; DATA XREF: .rdata:004650F4o
.text:004020B9                 mov     ebx, 2264h
.text:004020BE                 db      66h
.text:004020BE                 nop
.text:004020C0                 jmp     loc_401FC0
.text:004020C5 ; ---------------------------------------------------------------------------
.text:004020C5
.text:004020C5 loc_4020C5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004020C5                                         ; DATA XREF: .rdata:004650F8o
.text:004020C5                 mov     ebx, 2265h
.text:004020CA                 jmp     loc_401FC0
.text:004020CF ; ---------------------------------------------------------------------------
.text:004020CF
.text:004020CF loc_4020CF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004020CF                                         ; DATA XREF: .rdata:004650FCo
.text:004020CF                 mov     ebx, 0A0h
.text:004020D4                 jmp     loc_401FC0
.text:004020D9 ; ---------------------------------------------------------------------------
.text:004020D9
.text:004020D9 loc_4020D9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004020D9                                         ; DATA XREF: .rdata:00465100o
.text:004020D9                 mov     ebx, 2321h
.text:004020DE                 db      66h
.text:004020DE                 nop
.text:004020E0                 jmp     loc_401FC0
.text:004020E5 ; ---------------------------------------------------------------------------
.text:004020E5
.text:004020E5 loc_4020E5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004020E5                                         ; DATA XREF: .rdata:00465104o
.text:004020E5                 mov     ebx, 0B0h
.text:004020EA                 jmp     loc_401FC0
.text:004020EF ; ---------------------------------------------------------------------------
.text:004020EF
.text:004020EF loc_4020EF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004020EF                                         ; DATA XREF: .rdata:00465108o
.text:004020EF                 mov     ebx, 0B2h
.text:004020F4                 jmp     loc_401FC0
.text:004020F9 ; ---------------------------------------------------------------------------
.text:004020F9
.text:004020F9 loc_4020F9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004020F9                                         ; DATA XREF: .rdata:0046510Co
.text:004020F9                 mov     ebx, 0B7h
.text:004020FE                 db      66h
.text:004020FE                 nop
.text:00402100                 jmp     loc_401FC0
.text:00402105 ; ---------------------------------------------------------------------------
.text:00402105
.text:00402105 loc_402105:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402105                                         ; DATA XREF: .rdata:00465110o
.text:00402105                 mov     ebx, 0F7h
.text:0040210A                 jmp     loc_401FC0
.text:0040210F ; ---------------------------------------------------------------------------
.text:0040210F
.text:0040210F loc_40210F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040210F                                         ; DATA XREF: .rdata:00465114o
.text:0040210F                 mov     ebx, 2550h
.text:00402114                 jmp     loc_401FC0
.text:00402119 ; ---------------------------------------------------------------------------
.text:00402119
.text:00402119 loc_402119:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402119                                         ; DATA XREF: .rdata:00465118o
.text:00402119                 mov     ebx, 2551h
.text:0040211E                 db      66h
.text:0040211E                 nop
.text:00402120                 jmp     loc_401FC0
.text:00402125 ; ---------------------------------------------------------------------------
.text:00402125
.text:00402125 loc_402125:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402125                                         ; DATA XREF: .rdata:0046511Co
.text:00402125                 mov     ebx, 2552h
.text:0040212A                 jmp     loc_401FC0
.text:0040212F ; ---------------------------------------------------------------------------
.text:0040212F
.text:0040212F loc_40212F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040212F                                         ; DATA XREF: .rdata:00465120o
.text:0040212F                 mov     ebx, 451h
.text:00402134                 jmp     loc_401FC0
.text:00402139 ; ---------------------------------------------------------------------------
.text:00402139
.text:00402139 loc_402139:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402139                                         ; DATA XREF: .rdata:00465124o
.text:00402139                 mov     ebx, 2553h
.text:0040213E                 db      66h
.text:0040213E                 nop
.text:00402140                 jmp     loc_401FC0
.text:00402145 ; ---------------------------------------------------------------------------
.text:00402145
.text:00402145 loc_402145:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402145                                         ; DATA XREF: .rdata:00465128o
.text:00402145                 mov     ebx, 2554h
.text:0040214A                 jmp     loc_401FC0
.text:0040214F ; ---------------------------------------------------------------------------
.text:0040214F
.text:0040214F loc_40214F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040214F                                         ; DATA XREF: .rdata:0046512Co
.text:0040214F                 mov     ebx, 2555h
.text:00402154                 jmp     loc_401FC0
.text:00402159 ; ---------------------------------------------------------------------------
.text:00402159
.text:00402159 loc_402159:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402159                                         ; DATA XREF: .rdata:00465130o
.text:00402159                 mov     ebx, 2556h
.text:0040215E                 db      66h
.text:0040215E                 nop
.text:00402160                 jmp     loc_401FC0
.text:00402165 ; ---------------------------------------------------------------------------
.text:00402165
.text:00402165 loc_402165:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402165                                         ; DATA XREF: .rdata:00465134o
.text:00402165                 mov     ebx, 2557h
.text:0040216A                 jmp     loc_401FC0
.text:0040216F ; ---------------------------------------------------------------------------
.text:0040216F
.text:0040216F loc_40216F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040216F                                         ; DATA XREF: .rdata:00465138o
.text:0040216F                 mov     ebx, 2558h
.text:00402174                 jmp     loc_401FC0
.text:00402179 ; ---------------------------------------------------------------------------
.text:00402179
.text:00402179 loc_402179:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402179                                         ; DATA XREF: .rdata:0046513Co
.text:00402179                 mov     ebx, 2559h
.text:0040217E                 db      66h
.text:0040217E                 nop
.text:00402180                 jmp     loc_401FC0
.text:00402185 ; ---------------------------------------------------------------------------
.text:00402185
.text:00402185 loc_402185:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402185                                         ; DATA XREF: .rdata:00465140o
.text:00402185                 mov     ebx, 255Ah
.text:0040218A                 jmp     loc_401FC0
.text:0040218F ; ---------------------------------------------------------------------------
.text:0040218F
.text:0040218F loc_40218F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040218F                                         ; DATA XREF: .rdata:00465144o
.text:0040218F                 mov     ebx, 255Bh
.text:00402194                 jmp     loc_401FC0
.text:00402199 ; ---------------------------------------------------------------------------
.text:00402199
.text:00402199 loc_402199:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402199                                         ; DATA XREF: .rdata:00465148o
.text:00402199                 mov     ebx, 255Ch
.text:0040219E                 db      66h
.text:0040219E                 nop
.text:004021A0                 jmp     loc_401FC0
.text:004021A5 ; ---------------------------------------------------------------------------
.text:004021A5
.text:004021A5 loc_4021A5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004021A5                                         ; DATA XREF: .rdata:0046514Co
.text:004021A5                 mov     ebx, 255Dh
.text:004021AA                 jmp     loc_401FC0
.text:004021AF ; ---------------------------------------------------------------------------
.text:004021AF
.text:004021AF loc_4021AF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004021AF                                         ; DATA XREF: .rdata:00465150o
.text:004021AF                 mov     ebx, 255Eh
.text:004021B4                 jmp     loc_401FC0
.text:004021B9 ; ---------------------------------------------------------------------------
.text:004021B9
.text:004021B9 loc_4021B9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004021B9                                         ; DATA XREF: .rdata:00465154o
.text:004021B9                 mov     ebx, 255Fh
.text:004021BE                 db      66h
.text:004021BE                 nop
.text:004021C0                 jmp     loc_401FC0
.text:004021C5 ; ---------------------------------------------------------------------------
.text:004021C5
.text:004021C5 loc_4021C5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004021C5                                         ; DATA XREF: .rdata:00465158o
.text:004021C5                 mov     ebx, 2560h
.text:004021CA                 jmp     loc_401FC0
.text:004021CF ; ---------------------------------------------------------------------------
.text:004021CF
.text:004021CF loc_4021CF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004021CF                                         ; DATA XREF: .rdata:0046515Co
.text:004021CF                 mov     ebx, 2561h
.text:004021D4                 jmp     loc_401FC0
.text:004021D9 ; ---------------------------------------------------------------------------
.text:004021D9
.text:004021D9 loc_4021D9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004021D9                                         ; DATA XREF: .rdata:00465160o
.text:004021D9                 mov     ebx, 401h
.text:004021DE                 db      66h
.text:004021DE                 nop
.text:004021E0                 jmp     loc_401FC0
.text:004021E5 ; ---------------------------------------------------------------------------
.text:004021E5
.text:004021E5 loc_4021E5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004021E5                                         ; DATA XREF: .rdata:00465164o
.text:004021E5                 mov     ebx, 2562h
.text:004021EA                 jmp     loc_401FC0
.text:004021EF ; ---------------------------------------------------------------------------
.text:004021EF
.text:004021EF loc_4021EF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004021EF                                         ; DATA XREF: .rdata:00465168o
.text:004021EF                 mov     ebx, 2563h
.text:004021F4                 jmp     loc_401FC0
.text:004021F9 ; ---------------------------------------------------------------------------
.text:004021F9
.text:004021F9 loc_4021F9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004021F9                                         ; DATA XREF: .rdata:0046516Co
.text:004021F9                 mov     ebx, 2564h
.text:004021FE                 db      66h
.text:004021FE                 nop
.text:00402200                 jmp     loc_401FC0
.text:00402205 ; ---------------------------------------------------------------------------
.text:00402205
.text:00402205 loc_402205:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402205                                         ; DATA XREF: .rdata:00465170o
.text:00402205                 mov     ebx, 2565h
.text:0040220A                 jmp     loc_401FC0
.text:0040220F ; ---------------------------------------------------------------------------
.text:0040220F
.text:0040220F loc_40220F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040220F                                         ; DATA XREF: .rdata:00465174o
.text:0040220F                 mov     ebx, 2566h
.text:00402214                 jmp     loc_401FC0
.text:00402219 ; ---------------------------------------------------------------------------
.text:00402219
.text:00402219 loc_402219:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402219                                         ; DATA XREF: .rdata:00465178o
.text:00402219                 mov     ebx, 2567h
.text:0040221E                 db      66h
.text:0040221E                 nop
.text:00402220                 jmp     loc_401FC0
.text:00402225 ; ---------------------------------------------------------------------------
.text:00402225
.text:00402225 loc_402225:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402225                                         ; DATA XREF: .rdata:0046517Co
.text:00402225                 mov     ebx, 2568h
.text:0040222A                 jmp     loc_401FC0
.text:0040222F ; ---------------------------------------------------------------------------
.text:0040222F
.text:0040222F loc_40222F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040222F                                         ; DATA XREF: .rdata:00465180o
.text:0040222F                 mov     ebx, 2569h
.text:00402234                 jmp     loc_401FC0
.text:00402239 ; ---------------------------------------------------------------------------
.text:00402239
.text:00402239 loc_402239:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402239                                         ; DATA XREF: .rdata:00465184o
.text:00402239                 mov     ebx, 256Ah
.text:0040223E                 db      66h
.text:0040223E                 nop
.text:00402240                 jmp     loc_401FC0
.text:00402245 ; ---------------------------------------------------------------------------
.text:00402245
.text:00402245 loc_402245:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402245                                         ; DATA XREF: .rdata:00465188o
.text:00402245                 mov     ebx, 256Bh
.text:0040224A                 jmp     loc_401FC0
.text:0040224F ; ---------------------------------------------------------------------------
.text:0040224F
.text:0040224F loc_40224F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040224F                                         ; DATA XREF: .rdata:0046518Co
.text:0040224F                 mov     ebx, 256Ch
.text:00402254                 jmp     loc_401FC0
.text:00402259 ; ---------------------------------------------------------------------------
.text:00402259
.text:00402259 loc_402259:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402259                                         ; DATA XREF: .rdata:00465190o
.text:00402259                 mov     ebx, 0A9h
.text:0040225E                 db      66h
.text:0040225E                 nop
.text:00402260                 jmp     loc_401FC0
.text:00402265 ; ---------------------------------------------------------------------------
.text:00402265
.text:00402265 loc_402265:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402265                                         ; DATA XREF: .rdata:00465194o
.text:00402265                 mov     ebx, 44Eh
.text:0040226A                 jmp     loc_401FC0
.text:0040226F ; ---------------------------------------------------------------------------
.text:0040226F
.text:0040226F loc_40226F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040226F                                         ; DATA XREF: .rdata:00465198o
.text:0040226F                 mov     ebx, 430h
.text:00402274                 jmp     loc_401FC0
.text:00402279 ; ---------------------------------------------------------------------------
.text:00402279
.text:00402279 loc_402279:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402279                                         ; DATA XREF: .rdata:0046519Co
.text:00402279                 mov     ebx, 431h
.text:0040227E                 db      66h
.text:0040227E                 nop
.text:00402280                 jmp     loc_401FC0
.text:00402285 ; ---------------------------------------------------------------------------
.text:00402285
.text:00402285 loc_402285:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402285                                         ; DATA XREF: .rdata:004651A0o
.text:00402285                 mov     ebx, 446h
.text:0040228A                 jmp     loc_401FC0
.text:0040228F ; ---------------------------------------------------------------------------
.text:0040228F
.text:0040228F loc_40228F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040228F                                         ; DATA XREF: .rdata:004651A4o
.text:0040228F                 mov     ebx, 434h
.text:00402294                 jmp     loc_401FC0
.text:00402299 ; ---------------------------------------------------------------------------
.text:00402299
.text:00402299 loc_402299:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402299                                         ; DATA XREF: .rdata:004651A8o
.text:00402299                 mov     ebx, 435h
.text:0040229E                 db      66h
.text:0040229E                 nop
.text:004022A0                 jmp     loc_401FC0
.text:004022A5 ; ---------------------------------------------------------------------------
.text:004022A5
.text:004022A5 loc_4022A5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004022A5                                         ; DATA XREF: .rdata:004651ACo
.text:004022A5                 mov     ebx, 444h
.text:004022AA                 jmp     loc_401FC0
.text:004022AF ; ---------------------------------------------------------------------------
.text:004022AF
.text:004022AF loc_4022AF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004022AF                                         ; DATA XREF: .rdata:004651B0o
.text:004022AF                 mov     ebx, 433h
.text:004022B4                 jmp     loc_401FC0
.text:004022B9 ; ---------------------------------------------------------------------------
.text:004022B9
.text:004022B9 loc_4022B9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004022B9                                         ; DATA XREF: .rdata:004651B4o
.text:004022B9                 mov     ebx, 445h
.text:004022BE                 db      66h
.text:004022BE                 nop
.text:004022C0                 jmp     loc_401FC0
.text:004022C5 ; ---------------------------------------------------------------------------
.text:004022C5
.text:004022C5 loc_4022C5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004022C5                                         ; DATA XREF: .rdata:004651B8o
.text:004022C5                 mov     ebx, 438h
.text:004022CA                 jmp     loc_401FC0
.text:004022CF ; ---------------------------------------------------------------------------
.text:004022CF
.text:004022CF loc_4022CF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004022CF                                         ; DATA XREF: .rdata:004651BCo
.text:004022CF                 mov     ebx, 439h
.text:004022D4                 jmp     loc_401FC0
.text:004022D9 ; ---------------------------------------------------------------------------
.text:004022D9
.text:004022D9 loc_4022D9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004022D9                                         ; DATA XREF: .rdata:004651C0o
.text:004022D9                 mov     ebx, 43Ah
.text:004022DE                 db      66h
.text:004022DE                 nop
.text:004022E0                 jmp     loc_401FC0
.text:004022E5 ; ---------------------------------------------------------------------------
.text:004022E5
.text:004022E5 loc_4022E5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004022E5                                         ; DATA XREF: .rdata:004651C4o
.text:004022E5                 mov     ebx, 43Bh
.text:004022EA                 jmp     loc_401FC0
.text:004022EF ; ---------------------------------------------------------------------------
.text:004022EF
.text:004022EF loc_4022EF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004022EF                                         ; DATA XREF: .rdata:004651C8o
.text:004022EF                 mov     ebx, 43Ch
.text:004022F4                 jmp     loc_401FC0
.text:004022F9 ; ---------------------------------------------------------------------------
.text:004022F9
.text:004022F9 loc_4022F9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004022F9                                         ; DATA XREF: .rdata:004651CCo
.text:004022F9                 mov     ebx, 43Dh
.text:004022FE                 db      66h
.text:004022FE                 nop
.text:00402300                 jmp     loc_401FC0
.text:00402305 ; ---------------------------------------------------------------------------
.text:00402305
.text:00402305 loc_402305:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402305                                         ; DATA XREF: .rdata:004651D0o
.text:00402305                 mov     ebx, 43Eh
.text:0040230A                 jmp     loc_401FC0
.text:0040230F ; ---------------------------------------------------------------------------
.text:0040230F
.text:0040230F loc_40230F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040230F                                         ; DATA XREF: .rdata:004651D4o
.text:0040230F                 mov     ebx, 43Fh
.text:00402314                 jmp     loc_401FC0
.text:00402319 ; ---------------------------------------------------------------------------
.text:00402319
.text:00402319 loc_402319:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402319                                         ; DATA XREF: .rdata:004651D8o
.text:00402319                 mov     ebx, 44Fh
.text:0040231E                 db      66h
.text:0040231E                 nop
.text:00402320                 jmp     loc_401FC0
.text:00402325 ; ---------------------------------------------------------------------------
.text:00402325
.text:00402325 loc_402325:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402325                                         ; DATA XREF: .rdata:004651DCo
.text:00402325                 mov     ebx, 440h
.text:0040232A                 jmp     loc_401FC0
.text:0040232F ; ---------------------------------------------------------------------------
.text:0040232F
.text:0040232F loc_40232F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040232F                                         ; DATA XREF: .rdata:004651E0o
.text:0040232F                 mov     ebx, 441h
.text:00402334                 jmp     loc_401FC0
.text:00402339 ; ---------------------------------------------------------------------------
.text:00402339
.text:00402339 loc_402339:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402339                                         ; DATA XREF: .rdata:004651E4o
.text:00402339                 mov     ebx, 442h
.text:0040233E                 db      66h
.text:0040233E                 nop
.text:00402340                 jmp     loc_401FC0
.text:00402345 ; ---------------------------------------------------------------------------
.text:00402345
.text:00402345 loc_402345:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402345                                         ; DATA XREF: .rdata:004651E8o
.text:00402345                 mov     ebx, 443h
.text:0040234A                 jmp     loc_401FC0
.text:0040234F ; ---------------------------------------------------------------------------
.text:0040234F
.text:0040234F loc_40234F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040234F                                         ; DATA XREF: .rdata:004651ECo
.text:0040234F                 mov     ebx, 436h
.text:00402354                 jmp     loc_401FC0
.text:00402359 ; ---------------------------------------------------------------------------
.text:00402359
.text:00402359 loc_402359:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402359                                         ; DATA XREF: .rdata:004651F0o
.text:00402359                 mov     ebx, 432h
.text:0040235E                 db      66h
.text:0040235E                 nop
.text:00402360                 jmp     loc_401FC0
.text:00402365 ; ---------------------------------------------------------------------------
.text:00402365
.text:00402365 loc_402365:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402365                                         ; DATA XREF: .rdata:004651F4o
.text:00402365                 mov     ebx, 44Ch
.text:0040236A                 jmp     loc_401FC0
.text:0040236F ; ---------------------------------------------------------------------------
.text:0040236F
.text:0040236F loc_40236F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040236F                                         ; DATA XREF: .rdata:004651F8o
.text:0040236F                 mov     ebx, 44Bh
.text:00402374                 jmp     loc_401FC0
.text:00402379 ; ---------------------------------------------------------------------------
.text:00402379
.text:00402379 loc_402379:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402379                                         ; DATA XREF: .rdata:004651FCo
.text:00402379                 mov     ebx, 437h
.text:0040237E                 db      66h
.text:0040237E                 nop
.text:00402380                 jmp     loc_401FC0
.text:00402385 ; ---------------------------------------------------------------------------
.text:00402385
.text:00402385 loc_402385:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402385                                         ; DATA XREF: .rdata:00465200o
.text:00402385                 mov     ebx, 448h
.text:0040238A                 jmp     loc_401FC0
.text:0040238F ; ---------------------------------------------------------------------------
.text:0040238F
.text:0040238F loc_40238F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040238F                                         ; DATA XREF: .rdata:00465204o
.text:0040238F                 mov     ebx, 44Dh
.text:00402394                 jmp     loc_401FC0
.text:00402399 ; ---------------------------------------------------------------------------
.text:00402399
.text:00402399 loc_402399:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402399                                         ; DATA XREF: .rdata:00465208o
.text:00402399                 mov     ebx, 449h
.text:0040239E                 db      66h
.text:0040239E                 nop
.text:004023A0                 jmp     loc_401FC0
.text:004023A5 ; ---------------------------------------------------------------------------
.text:004023A5
.text:004023A5 loc_4023A5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004023A5                                         ; DATA XREF: .rdata:0046520Co
.text:004023A5                 mov     ebx, 447h
.text:004023AA                 jmp     loc_401FC0
.text:004023AF ; ---------------------------------------------------------------------------
.text:004023AF
.text:004023AF loc_4023AF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004023AF                                         ; DATA XREF: .rdata:00465210o
.text:004023AF                 mov     ebx, 44Ah
.text:004023B4                 jmp     loc_401FC0
.text:004023B9 ; ---------------------------------------------------------------------------
.text:004023B9
.text:004023B9 loc_4023B9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004023B9                                         ; DATA XREF: .rdata:00465214o
.text:004023B9                 mov     ebx, 42Eh
.text:004023BE                 db      66h
.text:004023BE                 nop
.text:004023C0                 jmp     loc_401FC0
.text:004023C5 ; ---------------------------------------------------------------------------
.text:004023C5
.text:004023C5 loc_4023C5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004023C5                                         ; DATA XREF: .rdata:00465218o
.text:004023C5                 mov     ebx, 410h
.text:004023CA                 jmp     loc_401FC0
.text:004023CF ; ---------------------------------------------------------------------------
.text:004023CF
.text:004023CF loc_4023CF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004023CF                                         ; DATA XREF: .rdata:0046521Co
.text:004023CF                 mov     ebx, 411h
.text:004023D4                 jmp     loc_401FC0
.text:004023D9 ; ---------------------------------------------------------------------------
.text:004023D9
.text:004023D9 loc_4023D9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004023D9                                         ; DATA XREF: .rdata:00465220o
.text:004023D9                 mov     ebx, 426h
.text:004023DE                 db      66h
.text:004023DE                 nop
.text:004023E0                 jmp     loc_401FC0
.text:004023E5 ; ---------------------------------------------------------------------------
.text:004023E5
.text:004023E5 loc_4023E5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004023E5                                         ; DATA XREF: .rdata:00465224o
.text:004023E5                 mov     ebx, 414h
.text:004023EA                 jmp     loc_401FC0
.text:004023EF ; ---------------------------------------------------------------------------
.text:004023EF
.text:004023EF loc_4023EF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004023EF                                         ; DATA XREF: .rdata:00465228o
.text:004023EF                 mov     ebx, 415h
.text:004023F4                 jmp     loc_401FC0
.text:004023F9 ; ---------------------------------------------------------------------------
.text:004023F9
.text:004023F9 loc_4023F9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004023F9                                         ; DATA XREF: .rdata:0046522Co
.text:004023F9                 mov     ebx, 424h
.text:004023FE                 db      66h
.text:004023FE                 nop
.text:00402400                 jmp     loc_401FC0
.text:00402405 ; ---------------------------------------------------------------------------
.text:00402405
.text:00402405 loc_402405:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402405                                         ; DATA XREF: .rdata:00465230o
.text:00402405                 mov     ebx, 413h
.text:0040240A                 jmp     loc_401FC0
.text:0040240F ; ---------------------------------------------------------------------------
.text:0040240F
.text:0040240F loc_40240F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040240F                                         ; DATA XREF: .rdata:00465234o
.text:0040240F                 mov     ebx, 425h
.text:00402414                 jmp     loc_401FC0
.text:00402419 ; ---------------------------------------------------------------------------
.text:00402419
.text:00402419 loc_402419:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402419                                         ; DATA XREF: .rdata:00465238o
.text:00402419                 mov     ebx, 418h
.text:0040241E                 db      66h
.text:0040241E                 nop
.text:00402420                 jmp     loc_401FC0
.text:00402425 ; ---------------------------------------------------------------------------
.text:00402425
.text:00402425 loc_402425:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402425                                         ; DATA XREF: .rdata:0046523Co
.text:00402425                 mov     ebx, 419h
.text:0040242A                 jmp     loc_401FC0
.text:0040242F ; ---------------------------------------------------------------------------
.text:0040242F
.text:0040242F loc_40242F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040242F                                         ; DATA XREF: .rdata:00465240o
.text:0040242F                 mov     ebx, 41Ah
.text:00402434                 jmp     loc_401FC0
.text:00402439 ; ---------------------------------------------------------------------------
.text:00402439
.text:00402439 loc_402439:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402439                                         ; DATA XREF: .rdata:00465244o
.text:00402439                 mov     ebx, 41Bh
.text:0040243E                 db      66h
.text:0040243E                 nop
.text:00402440                 jmp     loc_401FC0
.text:00402445 ; ---------------------------------------------------------------------------
.text:00402445
.text:00402445 loc_402445:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402445                                         ; DATA XREF: .rdata:00465248o
.text:00402445                 mov     ebx, 41Ch
.text:0040244A                 jmp     loc_401FC0
.text:0040244F ; ---------------------------------------------------------------------------
.text:0040244F
.text:0040244F loc_40244F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040244F                                         ; DATA XREF: .rdata:0046524Co
.text:0040244F                 mov     ebx, 41Dh
.text:00402454                 jmp     loc_401FC0
.text:00402459 ; ---------------------------------------------------------------------------
.text:00402459
.text:00402459 loc_402459:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402459                                         ; DATA XREF: .rdata:00465250o
.text:00402459                 mov     ebx, 41Eh
.text:0040245E                 db      66h
.text:0040245E                 nop
.text:00402460                 jmp     loc_401FC0
.text:00402465 ; ---------------------------------------------------------------------------
.text:00402465
.text:00402465 loc_402465:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402465                                         ; DATA XREF: .rdata:00465254o
.text:00402465                 mov     ebx, 41Fh
.text:0040246A                 jmp     loc_401FC0
.text:0040246F ; ---------------------------------------------------------------------------
.text:0040246F
.text:0040246F loc_40246F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040246F                                         ; DATA XREF: .rdata:00465258o
.text:0040246F                 mov     ebx, 42Fh
.text:00402474                 jmp     loc_401FC0
.text:00402479 ; ---------------------------------------------------------------------------
.text:00402479
.text:00402479 loc_402479:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402479                                         ; DATA XREF: .rdata:0046525Co
.text:00402479                 mov     ebx, 420h
.text:0040247E                 db      66h
.text:0040247E                 nop
.text:00402480                 jmp     loc_401FC0
.text:00402485 ; ---------------------------------------------------------------------------
.text:00402485
.text:00402485 loc_402485:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402485                                         ; DATA XREF: .rdata:00465260o
.text:00402485                 mov     ebx, 421h
.text:0040248A                 jmp     loc_401FC0
.text:0040248F ; ---------------------------------------------------------------------------
.text:0040248F
.text:0040248F loc_40248F:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:0040248F                                         ; DATA XREF: .rdata:00465264o
.text:0040248F                 mov     ebx, 422h
.text:00402494                 jmp     loc_401FC0
.text:00402499 ; ---------------------------------------------------------------------------
.text:00402499
.text:00402499 loc_402499:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:00402499                                         ; DATA XREF: .rdata:00465268o
.text:00402499                 mov     ebx, 423h
.text:0040249E                 db      66h
.text:0040249E                 nop
.text:004024A0                 jmp     loc_401FC0
.text:004024A5 ; ---------------------------------------------------------------------------
.text:004024A5
.text:004024A5 loc_4024A5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004024A5                                         ; DATA XREF: .rdata:0046526Co
.text:004024A5                 mov     ebx, 416h
.text:004024AA                 jmp     loc_401FC0
.text:004024AF ; ---------------------------------------------------------------------------
.text:004024AF
.text:004024AF loc_4024AF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004024AF                                         ; DATA XREF: .rdata:00465270o
.text:004024AF                 mov     ebx, 412h
.text:004024B4                 jmp     loc_401FC0
.text:004024B9 ; ---------------------------------------------------------------------------
.text:004024B9
.text:004024B9 loc_4024B9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004024B9                                         ; DATA XREF: .rdata:00465274o
.text:004024B9                 mov     ebx, 42Ch
.text:004024BE                 db      66h
.text:004024BE                 nop
.text:004024C0                 jmp     loc_401FC0
.text:004024C5 ; ---------------------------------------------------------------------------
.text:004024C5
.text:004024C5 loc_4024C5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004024C5                                         ; DATA XREF: .rdata:00465278o
.text:004024C5                 mov     ebx, 42Bh
.text:004024CA                 jmp     loc_401FC0
.text:004024CF ; ---------------------------------------------------------------------------
.text:004024CF
.text:004024CF loc_4024CF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004024CF                                         ; DATA XREF: .rdata:0046527Co
.text:004024CF                 mov     ebx, 417h
.text:004024D4                 jmp     loc_401FC0
.text:004024D9 ; ---------------------------------------------------------------------------
.text:004024D9
.text:004024D9 loc_4024D9:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004024D9                                         ; DATA XREF: .rdata:00465280o
.text:004024D9                 mov     ebx, 428h
.text:004024DE                 db      66h
.text:004024DE                 nop
.text:004024E0                 jmp     loc_401FC0
.text:004024E5 ; ---------------------------------------------------------------------------
.text:004024E5
.text:004024E5 loc_4024E5:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004024E5                                         ; DATA XREF: .rdata:00465284o
.text:004024E5                 mov     ebx, 42Dh
.text:004024EA                 jmp     loc_401FC0
.text:004024EF ; ---------------------------------------------------------------------------
.text:004024EF
.text:004024EF loc_4024EF:                             ; CODE XREF: getUnicodeSwitch:loc_401FD0j
.text:004024EF                                         ; DATA XREF: .rdata:00465288o
.text:004024EF                 mov     ebx, 429h
.text:004024F4                 jmp     loc_401FC0
.text:004024F4 getUnicodeSwitch endp

З.Ы. Компилятор mingw 4.4.0. Вызов MessageBox добавил для быстрого поиска функций в IDA.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38845279
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не спеши с выводами бро! Логическая схему уже в пути...
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38845768
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Репорт по моей вчерашней активности.

Добавил несколько очевидных temporary variables. Субъективно - ужалось. Размер бинаря - не мерял.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
int getUnicode(int koi8r){

  if (koi8r<128) return koi8r;

  int H=koi8r&0x1;
  koi8r>>=1;
  int G=koi8r&0x1;
  koi8r>>=1;
  int F=koi8r&0x1;
  koi8r>>=1;
  int E=koi8r&0x1;
  koi8r>>=1;
  int D=koi8r&0x1;                                                                                                           
  koi8r>>=1;
  int C=koi8r&0x1;
  koi8r>>=1;
  int B=koi8r&0x1;
  koi8r>>=1;
  int A=koi8r&0x1;


  int t1  = A & ~B;

  int t2  = A & B;

  int t3  = A & C;

  int t4  = A & D;

  int t5  = A & ~D;

  int t6  = A & ~C;

  int t7  = A & ~E;

  int t8  = A & E;


  int f3  =  t1 & ~F & ~G  |  
             t1 & ~E &  F  |  
             t1 &  C & ~G  |  
             t1 &  C & ~H  |  
             t1 & ~C & ~E  |  
             t1 & ~C & ~F & H  |  
             t1 & ~D &  F  |  
             t1 &  E & ~F & H  |  
             t1 & ~D &  E ;


  int f6  =  t5  |  
             t7  & ~F & ~G  |  
             t7  & ~F & ~H  |  
             t7  & ~G & ~H  |  
             t3  & ~E  |  
             t3  & ~F  |  
             t3  & ~G  |  
             t3  & ~H  |  
             t2 ;

  int f7  =  t1 & ~C & D & ~E & F  & H  |  
             t1 & ~C & D & ~E & F  & G  |  
             t1 & ~C & D & E  & ~F & ~G  |  
             t1 & ~C & D & ~F & G  & H ;

  int f8  =  t1 & ~E & ~G & ~H  |  
             t1 & C  & ~E & F  |  
             t1 & C  & ~G  |  
             t1 & C  & ~H  |  
             t1 & ~C & ~D  |  
             t1 & ~C & ~E & ~F  |  
             t1 & E  & ~F & G & H  |  
             t1 & ~D &  E ;

  int f9  =  t1 & ~C & ~D  &  E  &  G &  H  |  
             t1 & ~C &  E  &  F  |  
             t1 & ~C &  D  & ~E  & ~F & ~G  |  
             t1 & D  &  E  &  F  &  G &  H  |  
             t1 & ~C &  D  & ~F  &  G & ~H  |  
             t1 & ~C &  D  &  F  & ~G & ~H ;

  int f10 =  t1 &  C & ~D  |  
             t1 &  C & ~G  |  
             t1 &  C & ~H  |  
             t1 &  C &  E  & ~F  |  
             t2 & ~C & ~D  & ~F  & ~G  & ~H  |  
             t2 & ~C & ~E  & ~F  &  G  & H   |  
             t2 & ~C & ~D  & ~E  &  F  & G & ~H  |  
             t2 & ~C &  D  & ~E  & ~F  & G  |  
             t2 & ~C &  D  &  F  & ~G  |  
             t2 & ~C &  D  &  E  &  F  |  
             t1 & ~C &  D  &  F  &  G  & H |  
             t1 &  D &  E  & ~F  & ~G  |  
             t1 &  C & ~E  &  F  |  
             t2 & ~C &  D  & ~F  &  H  |  
             t2 & ~C &  D  &  E  & ~G ;

  int f11 =  t6 & ~D & ~E &  F &  G & H |  
             t1 & ~C &  D & ~F &  G & H |  
             t1 &  D &  F & ~G & ~H  |  
             t1 &  D &  E  |  
             t3 &  D & ~G &  H  |  
             t1 &  C &  D &  F  |  
             t2 & ~C & ~D & ~G &  H |  
             t2 & ~C & ~D & ~F &  G & ~H |  
             t2 & ~C & ~D &  F & ~G  |  
             t2 & ~C &  D & ~E & ~F & ~G & ~H  |  
             t2 & ~C &  D & ~E &  F &  G  |  
             t6 &  E & ~F &  G & ~H  |  
             t2 &  C & ~D & ~F & ~G & ~H  |  
             t2 &  C & ~E & ~F &  G &  H  |  
             t2 &  C & ~D & ~E &  F &  G  & ~H  |  
             t3 &  D &  F & ~G  |  
             t3 &  D &  E &  F  |  
             t1 & ~C &  E & ~F & ~G  |  
             t3 &  D & ~E & ~F &  G  & ~H  |  
             t2 & ~C & ~D &  E &  H  |  
             t2 & ~C & ~D &  E &  F  |  
             t3 &  D &  E & ~G  |  
             t3 &  D &  E &  H ; 

  int f12 =  t1 & ~D & ~E & ~F &  G & H  |  
             t5 &  E & ~F & ~G &  H  |  
             t5 &  E & ~F &  G & ~H  |  
             t1 & ~C &  D &  E &  F  |  
             t1 &  C & ~D  |  
             t2 & ~D & ~G &  H  |  
             t2 & ~D & ~F &  G & ~H  |  
             t4 & ~E & ~F & ~G & ~H  |  
             t2 &  E & ~F &  G & ~H  |  
             t2 &  D & ~E &  F &  G  |  
             t1 & ~D & ~E &  F & ~H  |  
             t1 & ~C & ~E &  F & ~G &  H  |  
             t5 &  E &  F &  G &  H  |  
             t1 & ~C &  D & ~E & ~G &  H  |  
             t1 & ~C &  D & ~E &  G & ~H  |  
             t5 & ~E &  F & ~G  |  
             t2 & ~E &  F &  G &  H  |  
             t2 & ~D &  E &  H  |  
             t2 & ~D &  F & ~G  |  
             t2 & ~D &  E &  G ;

  int f13 =  t1 & ~C & ~D &  G & ~H |  
             t1 & ~C & ~D &  E & ~F & ~H |  
             t3 & ~D &  E &  H |  
             t3 &  D & ~E & ~F & ~G & ~H |  
             t1 &  C &  E &  G |  
             t2 & ~E & ~F & ~G & ~H |  
             t2 &  E &  H |  
             t2 &  D & ~F & ~G |  
             t1 & ~C & ~D &  F & ~G & H |  
             t1 & ~C &  D & ~E &  F & H |  
             t1 & ~C &  D & ~E &  F & G |  
             t1 &  C &  E &  F |  
             t5 &  E &  G & ~H |  
             t2 & ~D &  E &  F |  
             t2 &  E &  F & ~G ;

  int f14 =  t1 & ~C & ~D &  G & ~H  |  
             t1 & ~D & ~E &  F &  G  |  
             t1 & ~C &  E & ~F & ~G  |  
             t1 & ~C &  D &  E &  F & G  |  
             t8 & ~F & ~G & ~H |  
             t3 &  D & ~F & ~G & ~H  |  
             t1 &  C & ~E &  F &  G  |  
             t1 &  D &  E & ~F & ~G  |  
             t2 & ~D & ~E & ~F &  G & H  |  
             t2 &  D & ~E & ~F & ~G  |  
             t2 &  F &  G & ~H |  
             t2 &  D &  E & ~H |  
             t1 & ~C & ~D &  F & ~H  |  
             t1 &  C & ~D &  F &  H  |  
             t8 &  F &  G & ~H |  
             t2 & ~D & ~E & ~G & ~H  |  
             t2 & ~D & ~E &  F & ~G  |  
             t2 & ~D &  F & ~G &  H  |  
             t2 & ~D &  E &  F &  H ;

  int f15 =  t1 & ~C & ~E & ~F & ~G &  H  |  
             t1 & ~C &  D & ~E &  G & ~H  |  
             t1 &  C & ~D & ~E & ~F &  G  & ~H  |  
             t1 &  C &  F & ~G & ~H  |  
             t3 & ~D &  F &  G &  H  |  
             t1 &  C &  E & ~G & ~H  |  
             t3 & ~D &  E &  G &  H  |  
             t2 & ~E & ~F & ~G & ~H  |  
             t2 & ~D &  G &  H |  
             t2 & ~D &  E &  F & ~G & ~H  |  
             t2 &  D & ~F & ~G &  H  |  
             t2 &  D &  E &  G & ~H  |  
             t1 & ~C &  D &  E &  F &  H  |  
             t6 &  D &  F &  G & ~H  |  
             t3 &  D & ~E & ~G & ~H  |  
             t1 &  C &  D &  F & ~G  |  
             t1 &  C &  D &  E & ~G  |  
             t2 &  D & ~E & ~G |  
             t2 &  D & ~E &  F |  
             t2 &  F &  G &  H ;

  int f16 =  t1 &  D & ~E & ~F & ~H  |  
             t4 & ~E &  F & ~G &  H  |  
             t1 &  C & ~D & ~E & ~F  & H |  
             t1 &  C & ~D &  F & ~H  |  
             t3 & ~D &  E & ~H |  
             t2 & ~D & ~F &  G & ~H  |  
             t2 & ~D & ~E &  F &  H  |  
             t2 & ~D &  E & ~H |  
             t2 &  D & ~E & ~F &  H  |  
             t2 &  E &  G & ~H |  
             t1 &  D &  E & ~F &  H  |  
             t1 & ~C &  D &  E &  F  & G |  
             t1 &  C &  D &  G &  H  |  
             t4 & ~E & ~F & ~G & ~H  |  
             t4 &  E & ~F & ~G &  H  |  
             t2 &  D &  E &  F & ~G  |  
             t3 &  D &  E & ~G &  H ;

  return f16    |
         f15<<1 |
         f14<<2 |
         f13<<3 |
         f12<<4 |
         f11<<5 |
         f10<<6 |
         f9 <<7 |
         f8 <<8 |
         f7 <<9 |
         f6 <<10|
         f3 <<13;
}

...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38846180
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, 2967 байта
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38846437
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D'oh!
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38847487
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый чел. Замерь пожалуйста размер бинарника для 3 варианта.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
#include <stdint.h>

typedef uint16_t mainLogicType;

int getUnicode3(register mainLogicType koi8r){

  if (koi8r<128) {
	return koi8r;
  }

  register mainLogicType nkoi8r = ~koi8r;

  #define H (koi8r&0x1)
  #define G ((koi8r>>1)&0x1)
  #define F ((koi8r>>2)&0x1)
  #define E ((koi8r>>3)&0x1)
  #define D ((koi8r>>4)&0x1)
  #define C ((koi8r>>5)&0x1)
  #define B ((koi8r>>6)&0x1)
  #define A ((koi8r>>7)&0x1)

  #define NH (nkoi8r&0x1)
  #define NG ((nkoi8r>>1)&0x1)
  #define NF ((nkoi8r>>2)&0x1)
  #define NE ((nkoi8r>>3)&0x1)
  #define ND ((nkoi8r>>4)&0x1)
  #define NC ((nkoi8r>>5)&0x1)
  #define NB ((nkoi8r>>6)&0x1)
  #define NA ((nkoi8r>>7)&0x1)


  mainLogicType f3  =  A & NB & NF & NG |  
             A & NB & NE & F |  
             A & NB & C & NG |  
             A & NB & C & NH |  
             A & NB & NC & NE |  
             A & NB & NC & NF & H |  
             A & NB & ND & F |  
             A & NB & E & NF & H |  
             A & NB & ND & E ;

  mainLogicType f6  =  A & ND |  
             A & NE & NF & NG |  
             A & NE & NF & NH |  
             A & NE & NG & NH |  
             A & C & NE |  
             A & C & NF |  
             A & C & NG |  
             A & C & NH |  
             A & B ;

  mainLogicType f7  =  A & NB & NC & D & NE & F & H |  
             A & NB & NC & D & NE & F & G |  
             A & NB & NC & D & E & NF & NG |  
             A & NB & NC & D & NF & G & H ;

  mainLogicType f8  =  A & NB & NE & NG & NH |  
             A & NB & C & NE & F |  
             A & NB & C & NG |  
             A & NB & C & NH |  
             A & NB & NC & ND |  
             A & NB & NC & NE & NF |  
             A & NB & E & NF & G & H |  
             A & NB & ND & E ;

  mainLogicType f9  =  A & NB & NC & ND & E & G & H |  
             A & NB & NC & E & F |  
             A & NB & NC & D & NE & NF & NG |  
             A & NB & D & E & F & G & H |  
             A & NB & NC & D & NF & G & NH |  
             A & NB & NC & D & F & NG & NH ;

  mainLogicType f10 =  A & NB & C & ND |  
             A & NB & C & NG |  
             A & NB & C & NH |  
             A & NB & C & E & NF |  
             A & B & NC & ND & NF & NG & NH |  
             A & B & NC & NE & NF & G & H  |  
             A & B & NC & ND & NE & F & G & NH |  
             A & B & NC & D & NE & NF & G |  
             A & B & NC & D & F & NG |  
             A & B & NC & D & E & F |  
             A & NB & NC & D & F & G & H |  
             A & NB & D & E & NF & NG |  
             A & NB & C & NE & F |  
             A & B & NC & D & NF & H |  
             A & B & NC & D & E & NG ;

  mainLogicType f11 =  A & NC & ND & NE & F & G & H |  
             A & NB & NC & D & NF & G & H |  
             A & NB & D & F & NG & NH |  
             A & NB & D & E |  
             A & C & D & NG & H |  
             A & NB & C & D & F |  
             A & B & NC & ND & NG & H |  
             A & B & NC & ND & NF & G & NH |  
             A & B & NC & ND & F & NG |  
             A & B & NC & D & NE & NF & NG & NH |  
             A & B & NC & D & NE & F & G |  
             A & NC & E & NF & G & NH |  
             A & B & C & ND & NF & NG & NH |  
             A & B & C & NE & NF & G & H |  
             A & B & C & ND & NE & F & G & NH |  
             A & C & D & F & NG |  
             A & C & D & E & F |  
             A & NB & NC & E & NF & NG |  
             A & C & D & NE & NF & G & NH |  
             A & B & NC & ND & E & H |  
             A & B & NC & ND & E & F |  
             A & C & D & E & NG |  
             A & C & D & E & H ; 

  mainLogicType f12 =  A & NB & ND & NE & NF & G & H |  
             A & ND & E & NF & NG & H |  
             A & ND & E & NF & G & NH |  
             A & NB & NC & D & E & F |  
             A & NB & C & ND |  
             A & B & ND & NG & H |  
             A & B & ND & NF & G & NH |  
             A & D & NE & NF & NG & NH |  
             A & B & E & NF & G & NH |  
             A & B & D & NE & F & G |  
             A & NB & ND & NE & F & NH |  
             A & NB & NC & NE & F & NG & H |  
             A & ND & E & F & G & H |  
             A & NB & NC & D & NE & NG & H |  
             A & NB & NC & D & NE & G & NH |  
             A & ND & NE & F & NG |  
             A & B & NE & F & G & H |  
             A & B & ND & E & H |  
             A & B & ND & F & NG |  
             A & B & ND & E & G ;

  mainLogicType f13 =  A & NB & NC & ND & G & NH |  
             A & NB & NC & ND & E & NF & NH |  
             A & C & ND & E & H |  
             A & C & D & NE & NF & NG & NH |  
             A & NB & C & E & G |  
             A & B & NE & NF & NG & NH |  
             A & B & E & H |  
             A & B & D & NF & NG |  
             A & NB & NC & ND & F & NG & H |  
             A & NB & NC & D & NE & F & H |  
             A & NB & NC & D & NE & F & G |  
             A & NB & C & E & F |  
             A & ND & E & G & NH |  
             A & B & ND & E & F |  
             A & B & E & F & NG ;

  mainLogicType f14 =  A & NB & NC & ND & G & NH |  
             A & NB & ND & NE & F & G |  
             A & NB & NC & E & NF & NG |  
             A & NB & NC & D & E & F & G |  
             A & E & NF & NG & NH |  
             A & C & D & NF & NG & NH |  
             A & NB & C & NE & F & G |  
             A & NB & D & E & NF & NG |  
             A & B & ND & NE & NF & G & H |  
             A & B & D & NE & NF & NG |  
             A & B & F & G & NH |  
             A & B & D & E & NH |  
             A & NB & NC & ND & F & NH |  
             A & NB & C & ND & F & H |  
             A & E & F & G & NH |  
             A & B & ND & NE & NG & NH |  
             A & B & ND & NE & F & NG |  
             A & B & ND & F & NG & H |  
             A & B & ND & E & F & H ;

  mainLogicType f15 =  A & NB & NC & NE & NF & NG & H |  
             A & NB & NC & D & NE & G & NH |  
             A & NB & C & ND & NE & NF & G & NH |  
             A & NB & C & F & NG & NH |  
             A & C & ND & F & G & H |  
             A & NB & C & E & NG & NH |  
             A & C & ND & E & G & H |  
             A & B & NE & NF & NG & NH |  
             A & B & ND & G & H |  
             A & B & ND & E & F & NG & NH |  
             A & B & D & NF & NG & H |  
             A & B & D & E & G & NH |  
             A & NB & NC & D & E & F & H |  
             A & NC & D & F & G & NH |  
             A & C & D & NE & NG & NH |  
             A & NB & C & D & F & NG |  
             A & NB & C & D & E & NG |  
             A & B & D & NE & NG |  
             A & B & D & NE & F |  
             A & B & F & G & H ;

  mainLogicType f16 =  A & NB & D & NE & NF & NH |  
             A & D & NE & F & NG & H |  
             A & NB & C & ND & NE & NF & H |  
             A & NB & C & ND & F & NH |  
             A & C & ND & E & NH |  
             A & B & ND & NF & G & NH |  
             A & B & ND & NE & F & H |  
             A & B & ND & E & NH |  
             A & B & D & NE & NF & H |  
             A & B & E & G & NH |  
             A & NB & D & E & NF & H |  
             A & NB & NC & D & E & F & G |  
             A & NB & C & D & G & H |  
             A & D & NE & NF & NG & NH |  
             A & D & E & NF & NG & H |  
             A & B & D & E & F & NG |  
             A & C & D & E & NG & H ;

  return f16    |
         f15<<1 |
         f14<<2 |
         f13<<3 |
         f12<<4 |
         f11<<5 |
         f10<<6 |
         f9 <<7 |
         f8 <<8 |
         f7 <<9 |
         f6 <<10|
         f3 <<13;
}
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38847570
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3866 байт.

mayton, чудес не бывает, сильно меньше код не сделаешь.
Минимальное булевое выражение ты получил, его уже не сократишь, а булевых операций в нем много.
Код для х86 будет в районе 3800-3900.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38848705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем несколько мыслей по сабж.

Нужен генератор МДНФ (минимальной дизьюнктивной формы).

Исходными данными при этом являются:

- целевой ЯП в котором будет минимизированная функция (C/C++/Java/C#)
- исходные данные в табличном формате (CSV) Набор аргументов {X}, и функций {Y}
- дополнительные атрибуты такие как: представление входных данных в исходнике (набор булевых переменных,
биты целого числа, строка) и представление выходных данных (набор булевых функций или одна функция с биткартой
результата).
- метод решения (диаграммы вейча, квайн, метод неопределённых коэффициентов).

По поводу метода.

Диаграммы Вейча - для небольших наборов аргументов (до 5-6). Поэтому - неитересен.

Квайн - для произвольных наборов но требует дополнительных структур данных и поиски
по ним.

Метод неопределённых коэффицентов . требует построения булевой матрицы не менее 2^{X} строк
и колонок в количестве сумм всех сочетаний от 1 до {X} (формулу чуть позже уточню).
Временную сложность пока не могу оценить.

В силу экзотичности - под катом обучающе видео.
[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38848748
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВобщем несколько мыслей по сабж.

Нужен генератор МДНФ (минимальной дизьюнктивной формы). А зачем???
Долго думал, так и не понял что за задачу ты решаешь.

Единственная, на мой взгляд, область в которой подобное может потребоваться это создание микросхем.

maytonИсходными данными при этом являются:

- целевой ЯП в котором будет минимизированная функция (C/C++/Java/C#)Но если ты действительно увлекся железом, то за ЯП надо брать HDL и/или его диалекты с кузенами (VHDL, AHDL, Verilog и тд).
А из практических реализаций можешь посмотреть на продукты Altera. Последние годы они дают свой Quartus за бесплатно (но с регистрацией и ограничениями по эмулятору). Вроде есть и другие подобные продукты (и даже совсем бесплатные), но я с ними не работал вообще и не помню сейчас ни одного названия. Поищи в линуксовых репозиториях по слову vhdl и получишь с дюжину разных вариантов.

И кстати, в Quartus упрощатель таблиц работает как раз на Quine-McCluskey...
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38849048
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но если ты действительно увлекся железом
Увы нет.

Но за совет спасибо.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38849800
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здарова челы. Вобщем отойдя от бутербродов и икрой и паштетов и коньяка (ох уж эти
праздники) я вконце-то концов подошёл к тестам. К разработке через TDD мать ево так.

Значит что мне нужно? Тестовые наборы для Квайна. Среди таковых
будут.

1) Тривиальные тесты. Когда Y{i}==X{j}. Один из аргументов полностью повторяет функцию.
Прочие аргументы - сокращаются.

2) Тождесвенные. Когда Y{i}=C{i} где С - это константы. Формула не зависит от аргументов вообще.

3) Тест классического дешифратора 7(8) сегментного цифрового индикатора (типа электронных часов).
На вход поступает 4 сигнала в BCD/Bin коде а на выходе мы имеем 7 сигналов для свечения сегментов цифр.
Данную задачу я решал в техникуме в рамках толи курсовой толи лабы при проектировании какой-то железяки
поэтому остаточные знания остались.

4) Тест справочника мобильных операторов. На вход поступают 2-3 BCD цифры (из телефонного номера)
на выходе - множество предикатов принадлежности телефонного номера к компании/бренду. Из особенностей
данного теста - взаимоисключаемость. Номер не может принадлежать двум операторам следовательно
на всём множестве Y{i} только одно даёт истину для одного набора аргументов. Это легко проверяется.

5) Прочие нагрузочные тесты. Сюда-же можно включить koi8r-unicode decoder. Как бенчмарк.
Его будем тестить только таблично.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38849807
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько мыслей по поводу Карно/Вейча.

Начав рисовать вручную тест я кое-что забыл. В некоторых наборах исходных данных
существуют НЕОПРЕДЕЛЁННЫЕ/ЗАПРЕЩЕННЫЕ комбинации (НК).

Смысл и семантика НК полностью возлагается на инженера которые проектировал
устройство. В моём конкретном случае - это цифровые сигналы от 0xA до 0xF
которые подаются на вход дешифратору. Поскольку для них нет десятичной цифры
то и вопрос отображения стоит по другому. Либо мы отображаем нули. Нет свечения.
Либо все единицы. (Горит восьмёрка). Либо проектируем КАК НАМ УДОБНО
с плавающим значением Y{i} выбирая то состояние которое лучше склеится
или поглотится при оптимизации. При этом исходим из предположения
что НК никогда не придёт на вход и следовательно состояние функции
после оптимизации для НК нам безразлично.

Я и выбираю последний вариант. Это очень удобно для Карно/Вейча.
На картинке я отмечаю НК крестиками и склеиваю их с ближайшими
единичками максимально-возможным покрытием.

Для Квайна этот аспект игнорируется. Как мне быть с квайном для НК - пока не знаю.

(В скобках замечу что я использую Карно только для самоконтроля и написания теста).

В реализации его не будет. Будет только Квайн.

На картинке внизу две последние формулы отображают мои две попытки написать
формулу методом Карно.

Карно-1 - это функция Y1 для варинта когда запрещённые комбинации я отображал в
нули.

Карно-2 - это та-же функция Y1 для варианта когда НК я заменил на крестики
и соптимизировал лучше.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851467
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько мыслей.

Мне понадобился Код Грея. Для рисования толстых карт (512 на 512) элементов.
На бумажке рисовать не буду но пространственная когерентность элементов
открывает некоторые графические возможности которые мне интересны.

Код: plaintext
1.
2.
3.
4.
unsigned int grayencode(unsigned int g) 
{
    return g ^ (g >> 1);
}



Например B&W растровое изображение может быть (теоретически) представлено
композицией булевой функцией множества аргументов. При этом на компактность
и лаконичность формулы влияют прямоугольные группы пикселов кратные 2^N.

Речь не идёт о компрессии. Здесь скорее всего будет фейл но сам по себе
побочный эффект весьма забавен.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851503
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНапример B&W растровое изображение может быть (теоретически) представлено
композицией булевой функцией множества аргументов. При этом на компактность
и лаконичность формулы влияют прямоугольные группы пикселов кратные 2^N.

Речь не идёт о компрессии. Здесь скорее всего будет фейл но сам по себе
побочный эффект весьма забавен.
Из практических применений B&W растра видится только хранение сканов документов, с достаточным разрешением чтобы распечатать можно было. Это примерно 200-300 dpi разрешение. Т.е. лист A4 от 1650*2300 точек.

Архиваторы жмут такие BMP очень хорошо (более чем в 10 раз), думаю за счет большого количества одноцветных последовательностей точек.

Если запись такой функции будет компактнее, то вполне возможно практическое применение. Но что-то подсказывает что компактнее не будет.

PS Вписывание размеров в 2^N необязательно, достаточно ближайшее большее, а то что выходит за границы считать любым состоянием.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851652
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня не стоит задачи делать архивацию. Это скорее творческий эксперимент для
проверки минимизации для больших объёмов.

А для уменьшения размера bi-level лучше всего подходит JBIG.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851764
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаю поток сознания.

Проблема выколотой точки. В некоторых случаях область непрерывных единичек
распознаётся как простой импликант (2-3 аргумента) за исключением 1-2 "выколотых" точек.

См. скрин ниже.

Приведу пример. Квадратная область единичек удоволетворяет формуле



за исключением выколотой точки



Интуитивное (без применения полного метода Карно) я создаю следующую формулу.



Вобщем я утверждаю что она удовлетворяет множеству единичек (на скрине).

Меня привлекает этот подход тем что фильтруя единичные одинокие нулевые точки
я СУЩЕСТВЕННО сокращаю импликант.

Фильтрация таких точек с точки зрения растровых фильтров - тривиальна.

Равно как и их детектирование.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851766
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851778
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Далее я воспроизведу flow вычислений согласно методу Карно.
Следующие области (импликанты)















Объединяются в формулу (2):
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851782
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чорт. Латекс глюканул. Ладно запишу так.

Код: plaintext
1.
y = x1x5!x6 + x1x5x7 + x1x5x6!x7!x8 + x1!x2x5 + x1x3x5 + x1x2!x3!x4x5



Попытка вынести за скобки x1x5. Получаем формулу (2):

Код: plaintext
1.
y = x1x5( !x6 + x7 + x6!x7!x8 + !x2 + x3 + x2!x3x4 )



Согласно формуле (1) было:

Код: plaintext
1.
y = x1x5!(x1x2!x3x4x5x6!x7x8)



Явно было меньше операций.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851790
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, ты маньяк

Зачем сам себе грузишь мозг теорией микросхемотехники? В программировании она малопригодна. Это более низкий уровень.

Разве что по итогу изышлений возмешь горсть микросхем и паяльник. Оно тебе надо?
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851796
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще пару дней погружу и перестану.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851797
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕще пару дней погружу и перестану.
И правильно. Я бы до сих пор паял (один полезный девайс спроектировал и спаял), образование паяльное, но с паяльником не дружу, руки не оттуда растут, потому и подался в программисты.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851806
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я очень сложный чел. И у меня (на самом деле) в любой задаче стоит гланая постановка (и около
десятка второстепенных). В минимизации булевых функций таковые есть:
- обфускация данных/стеганография
- оптимизация производительности
- овладевание ручными методиками минимизации. Глубокий анализ. Обобщение.
- код Грея
- Ассемблер x86
- Байткод Java
- Персептрон
- Инженерная графика/факсимильные изображения.

Поэтому блуждание и рыскание в стороны - вокруг 1 технологии - это одна из форм моего досуга.
Сочетая приятное тык скыть с полезным.

А в радио-технике у меня еще более огроменный список дел. Я вот галогеновый фонарь
с датчиком уже месяц не могу установить. Камеру-регистратор чинить надо. Эпоксидку
купить. Свой старый комп на DDR2 надо поднять и поставить Пингвина. Фотик Кэнон перепрошить.
Вобщем как-то вот в таком аспекте.

А минимизация это просто так. Чтоб было под каким флагом ходить.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851810
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ вот галогеновый фонарь
с датчиком уже месяц не могу установить.
И зря. Это важнее. Надо отвлекаться от теории на приземленные вещи. Именно это важно. Всем нужен конечный результат. Теория никому не нужна. На ней выезжают разве что ученые с мировым именем, но их единицы и стремится попасть в их круг бесполезно.
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851853
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QMC Logic Minimizer работающий по методу Квайна повис на анализе функции с 18 аргументами и
262144 наборами значений. В качестве исходных данных была взята bi-level картинка с изображением
фотографии Че-Гевары. Разрешение 512 на 512. По вертикали и по горизонтали по 9 булевых аргументов
в порядке кода Грея.

Ответа от него я не дождался. Но для эксперимента были заготовлены копии этой картинки в разрешения
16x16,32x32,64x64,128x128...e.t.c.

Для варианта 16x16 минимизированная функция выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
f1  =  A' B' C' D' F' H  +  A' B' C' D' E G H'  +  A' B' C' E F' H  +  A' B' D F' G'  +  C D' E' F  +  A' C D' F H  +  
A' B C F  +  B E' G H'  +  A B C' D' F  +  A C E' F  +  A D E' F H  +  B' C' D' E' F' G'  +  A' C D' G' H'  +  
A' D E' F' G'  +  A' B D E' G'  +  A' E F' G' H'  +  A' B D' F H  +  C' D' E F' G' H'  +  A B C' F H  +  
A C D F G' H'  +  B C D F H  +  C D' E' G' H'  +  B' D E F' G' H'  +  A B' C' D G' H'  +  A' C E' F' G'  +  
A' B D' F G'  +  A B E' F 


Поясню по формуле. Аргументы QMC маркирует буквами A...Z. Штрих - операция инверсии.
Символ плюс - оператор логической дизъюнкции.

В данном конкретном случае A..D - биты координаты y, E..H - биты координаты x.

Чуть позже попробую с разрешениями повыше.

Ссылки по теме:
https://sourceforge.net/projects/qmclm/
https://www.google.com/search?q=che guevara ext:png
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38851885
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Мне становится все любопытнее и любопытнее. ЗАЧЕМ???
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38852099
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты опоздал с этим вопросом лет на восемь. Лучше спроси зачем мы модерируем этот форум?
Have fun? Или просто spend time? Или всё всместе?
...
Рейтинг: 0 / 0
Тяпничный koi-8r
    #38906547
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskymayton,

Таблица будет на порядки быстрее работать чем выражения.
Про читаемость кода я вообще молчу.

Тогда в чем смысл?

Обфускация алгоритма. В IOCCC можно учавствовать :)
Было интересно, но в принципе , учитывая что все кодовые страницы объединяет весовой принцип, понятно что принципиально всё это возможно было сделать.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Тяпничный koi-8r
    #39245059
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Up! Не ждали!

Пора вернуться к Че-Геваре.

Долго глядел на этот блок. Думал о расчетах булевых выражений на стеке. Не хватает сноровки...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  mainLogicType f16 =  A & NB & D & NE & NF & NH |  
             A & D & NE & F & NG & H |  
             A & NB & C & ND & NE & NF & H |  
             A & NB & C & ND & F & NH |  
             A & C & ND & E & NH |  
             A & B & ND & NF & G & NH |  
             A & B & ND & NE & F & H |  
             A & B & ND & E & NH |  
             A & B & D & NE & NF & H |  
             A & B & E & G & NH |  
             A & NB & D & E & NF & H |  
             A & NB & NC & D & E & F & G |  
             A & NB & C & D & G & H |  
             A & D & NE & NF & NG & NH |  
             A & D & E & NF & NG & H |  
             A & B & D & E & F & NG |  
             A & C & D & E & NG & H ;



Думаю в стековой машине код существенно станет короче.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Тяпничный koi-8r
    #39578081
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Апну тему.

Минимизация снова востребована. Но в этот раз условия немного
другие.

Мне надо минимизировать просто размер исходника. Сейчас это выглядит в XML/DSL
примерно так (я скипаю XML-теговую разметку и оставляю суть):

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
rule R1 & R2 &R3 .... RN {
  action1();
  action2();
}

rule ...... {
  action2();
  action3();
}

..



Где R1...RN - некие бизнес-предикаты которые определяют свойства биржевого месседжа.
Логика трансформирует эти рулы в исполняемый код и на ходу компилит в бинарь.
Секций rule - порядка 20 штук. Предикатов среднем от 1 до 8. Есть не только коньюнкции.

У этой модели есть некое хранимое состояние которое появляется в action. Но это нам
не особо важно.

Я по прежнему не автоматизировал расчет методом Квайна-МакКласски. Каюсь. Надо возобновить.
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тяпничный koi-8r
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]