                pusha
00401395                 call    decrypt_exception_handler
0040139A                 popa
0040139B                 mov     eax, [esp+4]
0040139F                 mov     edx, [eax+0Ch]
004013A2                 mov     eax, [eax]
004013A4                 mov     ebx, [esp+0Ch]
004013A8                 xor     ecx, ecx
004013AA                 mov     eax, [ebx+0ACh]
004013B0                 and     eax, 0Fh
004013B3                 test    al, al
004013B5                 jz      short loc_40142C
004013B7                 cmp     al, 1
004013B9                 jz      short loc_4013C7
004013BB                 cmp     al, 2
004013BD                 jz      loc_4014BE
004013C3                 cmp     al, 3
004013C5                 jz      short loc_401419
004013C7 
004013C7 loc_4013C7:                             ; CODE XREF: CODE:004013B9j
004013C7                 pusha
004013C8                 mov     eax, [ebx+0B0h]
004013CE                 lea     edi, [ebx+4]
004013D1                 call    sub_401408
004013D6                 stosd
004013D7                 xor     eax, 499602D2h
004013DC                 call    sub_401408
004013E1                 stosd
004013E2                 rol     eax, 4
004013E5                 call    sub_401408
004013EA                 stosd
004013EB                 xor     eax, [ebx+0B0h]
004013F1                 call    sub_401408
004013F6                 stosd
004013F7                 and     dword ptr [ebx+14h], 0
004013FB                 mov     dword ptr [ebx+18h], 155h
00401402                 popa
00401403                 jmp     loc_4014D6
00401408 
00401408 ;  S U B R O U T I N E 
00401408 
00401408 
00401408 sub_401408      proc near               ; CODE XREF: CODE:004013D1p
00401408                                         ; CODE:004013DCp ...
00401408                 sub     eax, 10000h
0040140D                 test    eax, eax
0040140F                 jns     short locret_401418
00401411                 neg     eax
00401413                 sub     eax, 10001h
00401418 
00401418 locret_401418:                          ; CODE XREF: sub_401408+7j
00401418                 retn
00401418 sub_401408      endp
00401418 
00401419 ; ---------------------------------------------------------------------------
00401419 
00401419 loc_401419:                             ; CODE XREF: CODE:004013C5j
00401419                 pusha
0040141A                 xor     eax, eax
0040141C                 lea     edi, [ebx+4]
0040141F                 mov     ecx, 6
00401424                 repe stosd
00401426                 popa
00401427                 jmp     loc_4014D6
0040142C ; ---------------------------------------------------------------------------
0040142C 
0040142C loc_40142C:                             ; CODE XREF: CODE:004013B5j
0040142C                 pusha
0040142D                 mov     ebp, 4278484Bh
00401432                 call    sub_40149C
00401437                 mov     eax, [ebx+4]
0040143A                 add     eax, [ebx+8]
0040143D                 xor     eax, [ebx+0Ch]
00401440                 add     eax, [ebx+10h]
00401443                 mov     ecx, [ebx+0ACh]
00401449                 shr     ecx, 4
0040144C                 xor     eax, ecx
0040144E                 rol     eax, cl
00401450                 add     ax, cx
00401453                 mov     esi, [ebx+9Ch]
00401459                 mov     ecx, [ebx+0A4h]
0040145F 
0040145F loc_40145F:                             ; CODE XREF: CODE:0040146Ej
0040145F                 lodsb
00401460                 xchg    al, ah
00401462                 imul    edi
00401464                 add     eax, edi
00401466                 rol     eax, cl
00401468                 sub     ax, di
0040146B                 xor     eax, ebp
0040146D                 dec     ecx
0040146E                 jnz     short loc_40145F
00401470                 call    sub_401408
00401475                 mov     [ebx+0B0h], eax
0040147B                 mov     [ebx+4], eax
0040147E                 xor     eax, edi
00401480                 call    sub_401408
00401485                 dec     eax
00401486                 mov     [ebx+8], eax
00401489                 shr     eax, 1
0040148B                 mov     [ebx+0Ch], eax
0040148E                 and     dword ptr [ebx+14h], 0
00401492                 mov     dword ptr [ebx+18h], 155h
00401499                 popa
0040149A                 jmp     short loc_4014D6
0040149C 
0040149C ;  S U B R O U T I N E 
0040149C 
0040149C 
0040149C sub_40149C      proc near               ; CODE XREF: CODE:00401432p
0040149C                 call    $+5
004014A1                 pop     eax
004014A2                 xor     edi, edi
004014A4                 sub     eax, 10Dh
004014A9                 mov     ecx, 19Eh
004014AE                 push    ecx
004014AF 
004014AF loc_4014AF:                             ; CODE XREF: sub_40149C+1Bj
004014AF                 xor     edi, [eax+ecx]
004014B2                 rol     edi, cl
004014B4                 xor     edi, ebp
004014B6                 dec     ecx
004014B7                 jns     short loc_4014AF
004014B9                 pop     ecx
004014BA                 mov     [eax+ecx], edi
004014BD                 retn
004014BD sub_40149C      endp
004014BD 
004014BE ; ---------------------------------------------------------------------------
004014BE 
004014BE loc_4014BE:                             ; CODE XREF: CODE:004013BDj
004014BE                 mov     eax, [ebx+0B0h]
004014C4                 mov     ecx, [ebx+0A4h]
004014CA                 mov     [ebx+0A4h], eax
004014D0                 mov     [ebx+0B0h], ecx
004014D6 
004014D6 loc_4014D6:                             ; CODE XREF: CODE:00401403j
004014D6                                         ; CODE:00401427j ...
004014D6                 pusha
004014D7                 call    encrypt_exception_handler
004014DC                 popa
004014DD                 add     dword ptr [ebx+0B8h], 2
004014E4                 xor     eax, eax
004014E6                 retn
004014E7 
004014E7 ;  S U B R O U T I N E 
004014E7 
004014E7 
004014E7 decrypt_exception_handler proc near     ; CODE XREF: CODE:00401395p
004014E7                 xor     eax, eax
004014E9                 mov     ebp, 4278484Bh
004014EE                 mov     edi, [esp+0]
004014F1                 mov     ecx, 13Ch
004014F6 
004014F6 loc_4014F6:                             ; CODE XREF: decrypt_exception_handler+1Fj
004014F6                 xor     [edi+ecx], al
004014F9                 add     [edi+ecx], cl
004014FC                 xor     eax, ecx
004014FE                 xor     eax, ebp
00401500                 rol     eax, cl
00401502                 add     al, [edi+ecx]
00401505                 dec     ecx
00401506                 jns     short loc_4014F6
00401508                 retn
00401508 decrypt_exception_handler endp
00401508 
00401509 
00401509 ;  S U B R O U T I N E 
00401509 
00401509 
00401509 encrypt_exception_handler proc near     ; CODE XREF: CODE:004014D7p
00401509                 xor     eax, eax
0040150B                 mov     ebp, 4278484Bh
00401510                 mov     edi, [esp+0]
00401513                 sub     edi, 6
00401516                 mov     ecx, 13Ch
0040151B                 sub     edi, ecx
0040151D 
0040151D loc_40151D:                             ; CODE XREF: encrypt_exception_handler+26j
0040151D                 mov     bl, [edi+ecx]
00401520                 sub     [edi+ecx], cl
00401523                 xor     [edi+ecx], al
00401526                 xor     eax, ecx
00401528                 xor     eax, ebp
0040152A                 rol     eax, cl
0040152C                 add     al, bl
0040152E                 dec     ecx
0040152F                 jns     short loc_40151D
00401531                 retn
00401531 encrypt_exception_handler endp
00401531 
00401531 ; ---------------------------------------------------------------------------
00401532                 db    0 ;  
00401533                 db    0 ;  
00401534                 db    0 ;  
00401535                 db    0 ;  
00401536 ; ---------------------------------------------------------------------------
















mov     ecx, 499h
0040153B 
0040153B loc_40153B:                             ; CODE XREF: CODE:00401542j
0040153B                 mov     al, [esi+ecx-1]
0040153F                 imul    ecx
00401541                 dec     ecx
00401542                 jnz     short loc_40153B
00401544                 inc     ecx
00401544 ; ---------------------------------------------------------------------------
00401545                 db  8Dh ; 
00401546                 db 0C0h ; +
00401547 ; ---------------------------------------------------------------------------
00401547                 mov     edi, esi
00401549                 mov     ebx, 499h
0040154E                 dec     ecx
0040154E ; ---------------------------------------------------------------------------
0040154F                 db  8Dh ; 
00401550                 db 0C0h ; +
00401551 ; ---------------------------------------------------------------------------
00401551                 push    esi
00401552                 add     esi, ebx
00401554                 mov     ecx, 24Dh
00401559 
00401559 loc_401559:                             ; CODE XREF: CODE:00401570j
00401559                 ror     byte ptr [esi+ecx-1], cl
0040155D                 xor     [esi+ecx-1], al
00401561                 xor     eax, ebp
00401563                 imul    ecx
00401565                 xor     eax, edx
00401567                 test    cl, 0Fh
0040156A                 jnz     short loc_40156F
0040156A ; ---------------------------------------------------------------------------
0040156C                 db  8Dh ; 
0040156D                 db 0C0h ; +
0040156E ; ---------------------------------------------------------------------------
0040156E                 nop
0040156F 
0040156F loc_40156F:                             ; CODE XREF: CODE:0040156Aj
0040156F                 dec     ecx
00401570                 jnz     short loc_401559
00401572                 pop     ebp
00401573                 cmp     word ptr [esi], 0FADEh
00401578                 jz      short loc_4015C4
