vm_entry:
0000  17 04 00 01 F9                        CALL validate_serial
0005  11 19 00 01 F8 01 FF FF FF FF         JE vm_fail, EAX, 0xFFFFFFFF/*-1*/
000F  07 06 03 03                           XOR ECX, ECX
0013  01 0B 07 00 00 00 E0                  MOV EDI, 0x000000E0
loc_01A:
001A  17 04 00 02 5D                        CALL vm_strlen
001F  12 19 00 01 F8 01 00 00 00 06         JNE vm_fail, EAX, 6
0029  02 0B 07 00 00 00 07                  ADD EDI, 7
0030  09 01 03                              INC ECX
0033  12 19 00 00 1A 03 00 00 00 03         JNE loc_01A, ECX, 3
003D  07 06 03 03                           XOR ECX, ECX
0041  01 0B 07 00 00 00 E0                  MOV EDI, 0x000000E0
loc_048:
0048  17 04 00 02 7D                        CALL map_charset_indices
004D  09 01 07                              INC EDI
0050  09 01 03                              INC ECX
0053  12 19 00 00 48 03 00 00 00 03         JNE loc_048, ECX, 3
005D  07 06 03 03                           XOR ECX, ECX
0061  01 0B 07 00 00 00 E0                  MOV EDI, 0x000000E0
0068  01 0B 02 00 00 00 9B                  MOV EBX, 0x0000009B
loc_06F:
006F  17 04 00 02 AF                        CALL decode_base41_group
0074  11 19 00 01 F8 01 FF FF FF FF         JE vm_fail, EAX, 0xFFFFFFFF/*-1*/
007E  01 10 02 01                           MOV [EBX], EAX
0082  02 0B 02 00 00 00 04                  ADD EBX, 4
0089  02 0B 07 00 00 00 07                  ADD EDI, 7
0090  09 01 03                              INC ECX
0093  12 19 00 00 6F 03 00 00 00 03         JNE loc_06F, ECX, 3
009D  01 07 09 00 00 9B                     MOV R9, [serial_words_3x32]
00A3  0F 09 09 07                           ROL R9, 7
00A7  01 0C 00 00 9B 09                     MOV [serial_words_3x32], R9
00AD  01 07 09 00 00 9F                     MOV R9, [mem+0x09F]
00B3  0E 09 09 09                           ROR R9, 9
00B7  01 0C 00 00 9F 09                     MOV [mem+0x09F], R9
00BD  01 07 09 00 00 A3                     MOV R9, [mem+0x0A3]
00C3  0E 09 09 0B                           ROR R9, 0x0B
00C7  01 0C 00 00 A3 09                     MOV [mem+0x0A3], R9
00CD  01 07 01 00 00 9F                     MOV EAX, [mem+0x09F]
00D3  07 0C 00 00 9B 01                     XOR [serial_words_3x32], EAX
00D9  02 0C 00 00 A3 01                     ADD [mem+0x0A3], EAX
00DF  01 07 01 00 00 9B                     MOV EAX, [serial_words_3x32]
00E5  03 0C 00 00 A3 01                     SUB [mem+0x0A3], EAX
00EB  17 04 00 02 FF                        CALL expand_name
00F0  17 04 00 04 17                        CALL derive_name_hash
00F5  01 0C 00 00 A7 01                     MOV [name_hash], EAX
00FB  17 04 00 03 6C                        CALL derive_name_pair
0100  01 07 01 00 00 9B                     MOV EAX, [serial_words_3x32]
0106  01 0C 00 00 93 01                     MOV [work_block_8], EAX
010C  01 07 01 00 00 9F                     MOV EAX, [mem+0x09F]
0112  01 0B 09 00 00 00 93                  MOV R9, 0x00000093
0119  02 0B 09 00 00 00 04                  ADD R9, 4
0120  01 10 09 01                           MOV [R9], EAX
0124  01 0B 03 00 00 00 0A                  MOV ECX, 0x0000000A
loc_12B:
012B  01 0B 04 00 00 00 AB                  MOV EDX, 0x000000AB
0132  01 0B 01 00 00 00 93                  MOV EAX, 0x00000093
0139  17 04 00 04 58                        CALL encrypt_block_once
013E  0A 01 13                              DEC CL
0141  12 17 00 01 2B 13 00                  JNE loc_12B, CL, 0
0148  17 04 00 03 F2                        CALL name_dword_sum
014D  01 0B 09 00 00 00 93                  MOV R9, 0x00000093
0154  02 0B 09 00 00 00 04                  ADD R9, 4
015B  12 16 00 01 F8 01 09                  JNE vm_fail, EAX, [R9]
0162  01 07 01 00 00 A3                     MOV EAX, [mem+0x0A3]
0168  01 0B 09 00 00 00 93                  MOV R9, 0x00000093
016F  02 0B 09 00 00 00 04                  ADD R9, 4
0176  01 10 09 01                           MOV [R9], EAX
017A  01 07 01 00 00 A7                     MOV EAX, [name_hash]
0180  01 0C 00 00 B3 01                     MOV [final_key_2x32], EAX
0186  01 0B 09 00 00 00 B3                  MOV R9, 0x000000B3
018D  02 0B 09 00 00 00 04                  ADD R9, 4
0194  01 13 09 6B 79 74 5F                  MOV [R9], 0x6B79745F
019B  01 0B 03 00 00 00 0F                  MOV ECX, 0x0000000F
loc_1A2:
01A2  01 0B 04 00 00 00 B3                  MOV EDX, 0x000000B3
01A9  01 0B 01 00 00 00 93                  MOV EAX, 0x00000093
01B0  17 04 00 04 58                        CALL encrypt_block_once
01B5  0A 01 03                              DEC ECX
01B8  12 19 00 01 A2 03 00 00 00 00         JNE loc_1A2, ECX, 0
01C2  01 0B 07 00 00 00 93                  MOV EDI, 0x00000093
01C9  01 0B 08 00 00 00 2A                  MOV ESI, 0x0000002A
01D0  07 06 03 03                           XOR ECX, ECX
loc_1D4:
01D4  01 08 0F 07                           MOV AL, [EDI]
01D8  12 16 00 01 F8 0F 08                  JNE vm_fail, AL, [ESI]
01DF  09 01 07                              INC EDI
01E2  09 01 08                              INC ESI
01E5  09 01 03                              INC ECX
01E8  12 19 00 01 D4 03 00 00 00 08         JNE loc_1D4, ECX, 8
01F2  01 0D 00 01 09 01                     MOV [valid], 1
vm_fail:
01F8  1E                                    HALT
validate_serial:
01F9  07 06 01 01                           XOR EAX, EAX
01FD  07 06 04 04                           XOR EDX, EDX
0201  01 0B 07 00 00 00 E0                  MOV EDI, 0x000000E0
loc_208:
0208  01 08 0F 07                           MOV AL, [EDI]
020C  12 17 00 02 1F 0F 2D                  JNE loc_21F, AL, 0x2D
0213  09 01 04                              INC EDX
0216  01 11 07 00                           MOV [EDI], 0
021A  10 04 00 02 3C                        JMP loc_23C
loc_21F:
021F  01 0B 03 00 00 00 00                  MOV ECX, 0
loc_226:
0226  11 16 00 02 3C 0F 03                  JE loc_23C, AL, [ECX]
022D  09 01 03                              INC ECX
0230  12 1F 00 02 26 03 00                  JNE loc_226, [ECX], 0
0237  10 04 00 02 55                        JMP loc_255
loc_23C:
023C  09 01 07                              INC EDI
023F  12 1F 00 02 08 07 00                  JNE loc_208, [EDI], 0
0246  12 19 00 02 55 04 00 00 00 02         JNE loc_255, EDX, 2
0250  07 06 01 01                           XOR EAX, EAX
0254  1A                                    RET
loc_255:
0255  01 0B 01 FF FF FF FF                  MOV EAX, 0xFFFFFFFF/*-1*/
025C  1A                                    RET
vm_strlen:
025D  01 06 08 07                           MOV ESI, EDI
loc_261:
0261  01 08 0F 08                           MOV AL, [ESI]
0265  11 17 00 02 74 0F 00                  JE loc_274, AL, 0
026C  09 01 08                              INC ESI
026F  10 04 00 02 61                        JMP loc_261
loc_274:
0274  03 06 08 07                           SUB ESI, EDI
0278  01 06 01 08                           MOV EAX, ESI
027C  1A                                    RET
map_charset_indices:
027D  07 06 04 04                           XOR EDX, EDX
0281  01 08 0F 07                           MOV AL, [EDI]
0285  01 0B 02 00 00 00 00                  MOV EBX, 0
028C  0A 01 02                              DEC EBX
loc_28F:
028F  09 01 02                              INC EBX
0292  12 16 00 02 8F 0F 02                  JNE loc_28F, AL, [EBX]
0299  03 0B 02 00 00 00 00                  SUB EBX, 0
02A0  01 10 07 11                           MOV [EDI], BL
02A4  09 01 07                              INC EDI
02A7  12 1F 00 02 7D 07 00                  JNE map_charset_indices, [EDI], 0
02AE  1A                                    RET
decode_base41_group:
02AF  18 01 02                              PUSH EBX
02B2  07 06 02 02                           XOR EBX, EBX
02B6  07 06 01 01                           XOR EAX, EAX
02BA  01 06 04 07                           MOV EDX, EDI
02BE  02 0B 07 00 00 00 05                  ADD EDI, 5
02C5  03 0B 04 00 00 00 01                  SUB EDX, 1
02CC  01 0B 08 00 00 00 01                  MOV ESI, 1
loc_2D3:
02D3  07 06 01 01                           XOR EAX, EAX
02D7  01 08 0F 07                           MOV AL, [EDI]
02DB  04 06 01 08                           IMUL EAX, ESI
02DF  02 06 02 01                           ADD EBX, EAX
02E3  04 0B 08 00 00 00 29                  IMUL ESI, 0x00000029
02EA  0A 01 07                              DEC EDI
02ED  12 14 00 02 D3 07 04                  JNE loc_2D3, EDI, EDX
02F4  09 01 07                              INC EDI
02F7  01 06 01 02                           MOV EAX, EBX
02FB  19 01 02                              POP EBX
02FE  1A                                    RET
expand_name:
02FF  01 0B 08 00 00 00 BB                  MOV ESI, 0x000000BB
0306  01 06 04 08                           MOV EDX, ESI
030A  02 07 04 00 01 05                     ADD EDX, [name_len]
0310  01 0B 07 00 00 00 33                  MOV EDI, 0x00000033
0317  02 0B 07 00 00 00 5F                  ADD EDI, 0x0000005F
031E  07 06 03 03                           XOR ECX, ECX
0322  07 06 01 01                           XOR EAX, EAX
loc_326:
0326  07 08 0F 08                           XOR AL, [ESI]
032A  07 09 0F 75                           XOR AL, 0x75
032E  02 06 0F 13                           ADD AL, CL
0332  02 0B 03 00 00 00 03                  ADD ECX, 3
0339  07 0B 03 00 00 00 45                  XOR ECX, 0x00000045
0340  0F 09 03 03                           ROL ECX, 3
0344  09 01 08                              INC ESI
0347  01 10 07 0F                           MOV [EDI], AL
034B  11 19 00 03 6B 07 00 00 00 33         JE loc_36B, EDI, 0x00000033
0355  0A 01 07                              DEC EDI
0358  12 14 00 03 26 08 04                  JNE loc_326, ESI, EDX
035F  01 0B 08 00 00 00 BB                  MOV ESI, 0x000000BB
0366  10 04 00 03 26                        JMP loc_326
loc_36B:
036B  1A                                    RET
derive_name_pair:
036C  01 0B 01 13 A1 DC B4                  MOV EAX, 0x13A1DCB4
0373  01 0B 02 45 E8 AD C1                  MOV EBX, 0x45E8ADC1
037A  01 0B 03 00 00 00 28                  MOV ECX, 0x00000028
loc_381:
0381  01 0B 07 00 00 00 33                  MOV EDI, 0x00000033
0388  01 06 08 07                           MOV ESI, EDI
038C  02 0B 08 00 00 00 30                  ADD ESI, 0x00000030
0393  01 06 04 08                           MOV EDX, ESI
loc_397:
0397  07 08 01 07                           XOR EAX, [EDI]
039B  0F 09 01 03                           ROL EAX, 3
039F  02 08 01 08                           ADD EAX, [ESI]
03A3  02 0B 07 00 00 00 04                  ADD EDI, 4
03AA  02 0B 08 00 00 00 04                  ADD ESI, 4
03B1  12 14 00 03 97 07 04                  JNE loc_397, EDI, EDX
03B8  07 06 01 02                           XOR EAX, EBX
03BC  01 06 09 01                           MOV R9, EAX
03C0  01 06 0A 02                           MOV R10, EBX
03C4  01 06 02 09                           MOV EBX, R9
03C8  01 06 01 0A                           MOV EAX, R10
03CC  0A 01 03                              DEC ECX
03CF  12 19 00 03 81 03 00 00 00 00         JNE loc_381, ECX, 0
03D9  01 0C 00 00 AB 01                     MOV [name_pair_2x32], EAX
03DF  01 0B 09 00 00 00 AB                  MOV R9, 0x000000AB
03E6  02 0B 09 00 00 00 04                  ADD R9, 4
03ED  01 10 09 02                           MOV [R9], EBX
03F1  1A                                    RET
name_dword_sum:
03F2  07 06 01 01                           XOR EAX, EAX
03F6  01 0B 07 00 00 00 33                  MOV EDI, 0x00000033
03FD  01 06 08 07                           MOV ESI, EDI
0401  02 0B 08 00 00 00 5D                  ADD ESI, 0x0000005D
loc_408:
0408  02 08 01 07                           ADD EAX, [EDI]
040C  09 01 07                              INC EDI
040F  12 14 00 04 08 07 08                  JNE loc_408, EDI, ESI
0416  1A                                    RET
derive_name_hash:
0417  01 0B 01 1A 2B 3C 4D                  MOV EAX, 0x1A2B3C4D
041E  01 0B 03 00 00 00 FF                  MOV ECX, 0x000000FF
loc_425:
0425  01 0B 07 00 00 00 33                  MOV EDI, 0x00000033
042C  01 06 08 07                           MOV ESI, EDI
0430  02 0B 08 00 00 00 5D                  ADD ESI, 0x0000005D
loc_437:
0437  01 08 02 07                           MOV EBX, [EDI]
043B  07 06 01 02                           XOR EAX, EBX
043F  0F 09 01 07                           ROL EAX, 7
0443  09 01 07                              INC EDI
0446  12 14 00 04 37 07 08                  JNE loc_437, EDI, ESI
044D  0A 01 13                              DEC CL
0450  12 17 00 04 25 13 00                  JNE loc_425, CL, 0
0457  1A                                    RET
encrypt_block_once:
0458  1C                                    PUSHAD
0459  18 01 01                              PUSH EAX
045C  01 08 03 04                           MOV ECX, [EDX]
0460  01 0C 00 01 0A 03                     MOV [temp_key_2x32], ECX
0466  01 06 09 04                           MOV R9, EDX
046A  02 0B 09 00 00 00 04                  ADD R9, 4
0471  01 08 03 09                           MOV ECX, [R9]
0475  01 0B 09 00 00 01 0A                  MOV R9, 0x0000010A
047C  02 0B 09 00 00 00 04                  ADD R9, 4
0483  01 10 09 03                           MOV [R9], ECX
0487  17 04 00 06 82                        CALL derive_selector
048C  01 06 08 01                           MOV ESI, EAX
0490  19 01 07                              POP EDI
0493  07 06 01 01                           XOR EAX, EAX
0497  01 0B 03 00 00 00 64                  MOV ECX, 0x00000064
loc_49E:
049E  07 06 02 02                           XOR EBX, EBX
04A2  01 06 09 07                           MOV R9, EDI
04A6  01 06 02 09                           MOV EBX, R9
04AA  02 0B 02 00 00 00 07                  ADD EBX, 7
04B1  01 06 0A 04                           MOV R10, EDX
loc_4B5:
04B5  01 08 0F 09                           MOV AL, [R9]
04B9  07 08 0F 0A                           XOR AL, [R10]
04BD  09 01 0A                              INC R10
04C0  03 08 0F 0A                           SUB AL, [R10]
04C4  0A 01 0A                              DEC R10
04C7  02 09 0F 12                           ADD AL, 0x12
04CB  01 10 09 0F                           MOV [R9], AL
04CF  09 01 0A                              INC R10
04D2  09 01 09                              INC R9
04D5  12 14 00 04 B5 09 02                  JNE loc_4B5, R9, EBX
04DC  07 06 02 02                           XOR EBX, EBX
loc_4E0:
04E0  01 06 09 07                           MOV R9, EDI
04E4  01 08 0A 09                           MOV R10, [R9]
04E8  0F 09 0A 03                           ROL R10, 3
04EC  01 10 09 0A                           MOV [R9], R10
04F0  02 0B 09 00 00 00 04                  ADD R9, 4
04F7  01 08 0A 09                           MOV R10, [R9]
04FB  0E 09 0A 03                           ROR R10, 3
04FF  01 10 09 0A                           MOV [R9], R10
0503  01 06 09 07                           MOV R9, EDI
0507  01 06 0A 04                           MOV R10, EDX
050B  01 08 01 0A                           MOV EAX, [R10]
050F  07 10 09 01                           XOR [R9], EAX
0513  02 0B 0A 00 00 00 04                  ADD R10, 4
051A  02 0B 09 00 00 00 04                  ADD R9, 4
0521  01 08 01 0A                           MOV EAX, [R10]
0525  07 10 09 01                           XOR [R9], EAX
0529  01 06 09 07                           MOV R9, EDI
052D  01 06 0A 04                           MOV R10, EDX
0531  02 10 09 01                           ADD [R9], EAX
0535  01 08 01 0A                           MOV EAX, [R10]
0539  02 0B 09 00 00 00 04                  ADD R9, 4
0540  02 10 09 01                           ADD [R9], EAX
0544  09 01 02                              INC EBX
0547  12 19 00 04 E0 02 00 00 00 10         JNE loc_4E0, EBX, 0x00000010
0551  07 06 02 02                           XOR EBX, EBX
0555  01 0B 06 00 00 00 20                  MOV EBP, 0x00000020
loc_55C:
055C  17 04 00 07 64                        CALL test_selector_bit
0561  11 19 00 05 A9 01 00 00 00 00         JE loc_5A9, EAX, 0
056B  18 01 06                              PUSH EBP
056E  16 19 00 05 89 06 00 00 00 07         JBE loc_589, EBP, 7
loc_578:
0578  03 0B 06 00 00 00 07                  SUB EBP, 7
057F  13 19 00 05 78 06 00 00 00 07         JA loc_578, EBP, 7
loc_589:
0589  01 06 09 04                           MOV R9, EDX
058D  02 06 09 02                           ADD R9, EBX
0591  01 08 0F 09                           MOV AL, [R9]
0595  01 06 09 07                           MOV R9, EDI
0599  02 06 09 06                           ADD R9, EBP
059D  07 10 09 0F                           XOR [R9], AL
05A1  19 01 06                              POP EBP
05A4  10 04 00 05 D9                        JMP loc_5D9
loc_5A9:
05A9  18 01 02                              PUSH EBX
05AC  16 19 00 05 C7 02 00 00 00 07         JBE loc_5C7, EBX, 7
loc_5B6:
05B6  03 0B 02 00 00 00 07                  SUB EBX, 7
05BD  13 19 00 05 B6 02 00 00 00 07         JA loc_5B6, EBX, 7
loc_5C7:
05C7  01 06 09 07                           MOV R9, EDI
05CB  02 06 09 02                           ADD R9, EBX
05CF  0B 03 09                              NOT [R9]
05D2  07 10 09 11                           XOR [R9], BL
05D6  19 01 02                              POP EBX
loc_5D9:
05D9  09 01 02                              INC EBX
05DC  14 19 00 05 EA 02 00 00 00 08         JB loc_5EA, EBX, 8
05E6  07 06 02 02                           XOR EBX, EBX
loc_5EA:
05EA  0A 01 06                              DEC EBP
05ED  12 19 00 05 5C 06 00 00 00 00         JNE loc_55C, EBP, 0
05F7  07 06 02 02                           XOR EBX, EBX
05FB  01 06 09 07                           MOV R9, EDI
loc_5FF:
05FF  01 08 0F 09                           MOV AL, [R9]
0603  18 01 07                              PUSH EDI
0606  02 0B 07 00 00 00 07                  ADD EDI, 7
060D  03 06 07 02                           SUB EDI, EBX
0611  07 10 07 0F                           XOR [EDI], AL
0615  19 01 07                              POP EDI
0618  01 08 0F 09                           MOV AL, [R9]
061C  0F 09 0F 03                           ROL AL, 3
0620  01 10 09 0F                           MOV [R9], AL
0624  09 01 09                              INC R9
0627  09 01 02                              INC EBX
062A  12 19 00 05 FF 02 00 00 00 08         JNE loc_5FF, EBX, 8
0634  01 06 09 07                           MOV R9, EDI
0638  01 08 01 09                           MOV EAX, [R9]
063C  0F 09 01 07                           ROL EAX, 7
0640  01 10 09 01                           MOV [R9], EAX
0644  02 0B 09 00 00 00 04                  ADD R9, 4
064B  01 08 01 09                           MOV EAX, [R9]
064F  0E 09 01 07                           ROR EAX, 7
0653  01 10 09 01                           MOV [R9], EAX
0657  0A 01 03                              DEC ECX
065A  12 19 00 04 9E 03 00 00 00 00         JNE loc_49E, ECX, 0
0664  01 0B 09 00 00 01 0A                  MOV R9, 0x0000010A
066B  01 13 09 00 00 00 00                  MOV [R9], 0
0672  02 0B 09 00 00 00 04                  ADD R9, 4
0679  01 13 09 00 00 00 00                  MOV [R9], 0
0680  1D                                    POPAD
0681  1A                                    RET
derive_selector:
0682  07 06 02 02                           XOR EBX, EBX
loc_686:
0686  01 0B 09 00 00 01 0A                  MOV R9, 0x0000010A
068D  09 01 09                              INC R9
0690  02 06 09 02                           ADD R9, EBX
0694  01 08 0F 09                           MOV AL, [R9]
0698  0A 01 09                              DEC R9
069B  02 10 09 0F                           ADD [R9], AL
069F  03 10 09 11                           SUB [R9], BL
06A3  01 0B 09 00 00 01 0A                  MOV R9, 0x0000010A
06AA  01 08 01 09                           MOV EAX, [R9]
06AE  0F 09 01 05                           ROL EAX, 5
06B2  01 10 09 01                           MOV [R9], EAX
06B6  02 0B 09 00 00 00 04                  ADD R9, 4
06BD  01 08 01 09                           MOV EAX, [R9]
06C1  0E 09 01 05                           ROR EAX, 5
06C5  01 10 09 01                           MOV [R9], EAX
06C9  09 01 02                              INC EBX
06CC  12 19 00 06 86 02 00 00 00 07         JNE loc_686, EBX, 7
06D6  07 06 01 01                           XOR EAX, EAX
06DA  07 06 02 02                           XOR EBX, EBX
06DE  07 06 03 03                           XOR ECX, ECX
06E2  01 0B 07 00 00 00 45                  MOV EDI, 0x00000045
loc_6E9:
06E9  01 0B 09 00 00 01 0A                  MOV R9, 0x0000010A
06F0  02 06 09 02                           ADD R9, EBX
06F4  01 08 0F 09                           MOV AL, [R9]
06F8  02 06 03 01                           ADD ECX, EAX
06FC  04 06 07 07                           IMUL EDI, EDI
0700  09 01 03                              INC ECX
0703  04 06 03 07                           IMUL ECX, EDI
0707  09 01 02                              INC EBX
070A  12 19 00 06 E9 02 00 00 00 04         JNE loc_6E9, EBX, 4
0714  18 01 03                              PUSH ECX
0717  07 06 01 01                           XOR EAX, EAX
071B  07 06 02 02                           XOR EBX, EBX
071F  07 06 03 03                           XOR ECX, ECX
0723  01 0B 07 00 00 00 35                  MOV EDI, 0x00000035
loc_72A:
072A  01 0B 09 00 00 01 0A                  MOV R9, 0x0000010A
0731  02 0B 09 00 00 00 04                  ADD R9, 4
0738  02 06 09 02                           ADD R9, EBX
073C  01 08 0F 09                           MOV AL, [R9]
0740  03 06 03 01                           SUB ECX, EAX
0744  04 06 07 07                           IMUL EDI, EDI
0748  09 01 03                              INC ECX
074B  04 06 03 07                           IMUL ECX, EDI
074F  09 01 02                              INC EBX
0752  12 19 00 07 2A 02 00 00 00 04         JNE loc_72A, EBX, 4
075C  19 01 01                              POP EAX
075F  04 06 01 03                           IMUL EAX, ECX
0763  1A                                    RET
test_selector_bit:
0764  18 01 06                              PUSH EBP
0767  18 01 08                              PUSH ESI
076A  01 0B 01 00 00 00 01                  MOV EAX, 1
0771  10 04 00 07 7A                        JMP loc_77A
loc_776:
0776  0D 09 01 01                           SHL EAX, 1
loc_77A:
077A  0A 01 06                              DEC EBP
077D  12 19 00 07 76 06 FF FF FF FF         JNE loc_776, EBP, 0xFFFFFFFF/*-1*/
0787  08 06 08 01                           AND ESI, EAX
078B  11 19 00 07 A1 08 00 00 00 00         JE loc_7A1, ESI, 0
0795  01 0B 01 00 00 00 01                  MOV EAX, 1
079C  10 04 00 07 A5                        JMP loc_7A5
loc_7A1:
07A1  07 06 01 01                           XOR EAX, EAX
loc_7A5:
07A5  19 01 08                              POP ESI
07A8  19 01 06                              POP EBP
07AB  1A                                    RET
