%macro cast__uchar__char  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        movsx   eax, al                                 
        leave                                           
%endmacro

%macro cast__uchar__ushort  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__uchar__short  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__uchar__uint  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__uchar__int  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__uchar__ulong  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        mov     edx, 0                                  
        leave                                           
%endmacro

%macro cast__uchar__long  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        mov     edx, 0                                  
        leave                                           
%endmacro

%macro cast__uchar__float  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        push    eax                                     
        fild    word [esp]                              
        lea     esp, [esp+4H]                           
        leave                                           
%endmacro

%macro cast__uchar__double  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        push    eax                                     
        fild    word [esp]                              
        lea     esp, [esp+4H]                           
        leave                                           
%endmacro

%macro cast__char__uchar  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        movzx   eax, al                                 
        leave                                           
%endmacro

%macro cast__char__ushort  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movsx   ax, byte [ebp-4H]                       
        movzx   eax, ax                                 
        leave                                           
%endmacro

%macro cast__char__short  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__char__uint  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__char__int  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__char__ulong  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        mov     edx, eax                                
        sar     edx, 31                                 
        leave                                           
%endmacro

%macro cast__char__long  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        mov     edx, eax                                
        sar     edx, 31                                 
        leave                                           
%endmacro

%macro cast__char__float  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movsx   ax, byte [ebp-4H]                       
        push    eax                                     
        fild    word [esp]                              
        lea     esp, [esp+4H]                           
        leave                                           
%endmacro

%macro cast__char__double  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movsx   ax, byte [ebp-4H]                       
        push    eax                                     
        fild    word [esp]                              
        lea     esp, [esp+4H]                           
        leave                                           
%endmacro

%macro cast__ushort__uchar  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        movzx   eax, al                                 
        leave                                           
%endmacro

%macro cast__ushort__char  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        movsx   eax, al                                 
        leave                                           
%endmacro

%macro cast__ushort__short  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        cwde                                            
        leave                                           
%endmacro

%macro cast__ushort__uint  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__ushort__int  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__ushort__ulong  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        mov     edx, 0                                  
        leave                                           
%endmacro

%macro cast__ushort__long  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        mov     edx, 0                                  
        leave                                           
%endmacro

%macro cast__ushort__float  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        push    eax                                     
        fild    dword [esp]                             
        lea     esp, [esp+4H]                           
        leave                                           
%endmacro

%macro cast__ushort__double  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        push    eax                                     
        fild    dword [esp]                             
        lea     esp, [esp+4H]                           
        leave                                           
%endmacro

%macro cast__short__uchar  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        movzx   eax, al                                 
        leave                                           
%endmacro

%macro cast__short__char  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        movsx   eax, al                                 
        leave                                           
%endmacro

%macro cast__short__ushort  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        movzx   eax, ax                                 
        leave                                           
%endmacro

%macro cast__short__uint  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__short__int  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro cast__short__ulong  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        mov     edx, eax                                
        sar     edx, 31                                 
        leave                                           
%endmacro

%macro cast__short__long  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        mov     edx, eax                                
        sar     edx, 31                                 
        leave                                           
%endmacro

%macro cast__short__float  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        fild    word [ebp-4H]                           
        leave                                           
%endmacro

%macro cast__short__double  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        fild    word [ebp-4H]                           
        leave                                           
%endmacro

%macro cast__uint__uchar  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        movzx   eax, al                                 
        pop     ebp                                     
%endmacro

%macro cast__uint__char  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        movsx   eax, al                                 
        pop     ebp                                     
%endmacro

%macro cast__uint__ushort  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        movzx   eax, ax                                 
        pop     ebp                                     
%endmacro

%macro cast__uint__short  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cwde                                            
        pop     ebp                                     
%endmacro

%macro cast__uint__int  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro cast__uint__ulong  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        mov     edx, 0                                  
        pop     ebp                                     
%endmacro

%macro cast__uint__long  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        mov     edx, 0                                  
        pop     ebp                                     
%endmacro

%macro cast__uint__float  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        mov     edx, 0                                  
        push    edx                                     
        push    eax                                     
        fild    qword [esp]                             
        lea     esp, [esp+8H]                           
        pop     ebp                                     
%endmacro

%macro cast__uint__double  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        mov     edx, 0                                  
        push    edx                                     
        push    eax                                     
        fild    qword [esp]                             
        lea     esp, [esp+8H]                           
        pop     ebp                                     
%endmacro

%macro cast__int__uchar  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        movzx   eax, al                                 
        pop     ebp                                     
%endmacro

%macro cast__int__char  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        movsx   eax, al                                 
        pop     ebp                                     
%endmacro

%macro cast__int__ushort  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        movzx   eax, ax                                 
        pop     ebp                                     
%endmacro

%macro cast__int__short  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cwde                                            
        pop     ebp                                     
%endmacro

%macro cast__int__uint  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro cast__int__ulong  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        mov     edx, eax                                
        sar     edx, 31                                 
        pop     ebp                                     
%endmacro

%macro cast__int__long  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        mov     edx, eax                                
        sar     edx, 31                                 
        pop     ebp                                     
%endmacro

%macro cast__int__float  0
        push    ebp                                     
        mov     ebp, esp                                
        fild    dword [ebp+8H]                          
        pop     ebp                                     
%endmacro

%macro cast__int__double  0
        push    ebp                                     
        mov     ebp, esp                                
        fild    dword [ebp+8H]                          
        pop     ebp                                     
%endmacro

%macro cast__ulong__uchar  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        movzx   eax, al                                 
        leave                                           
%endmacro

%macro cast__ulong__char  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        movsx   eax, al                                 
        leave                                           
%endmacro

%macro cast__ulong__ushort  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        movzx   eax, ax                                 
        leave                                           
%endmacro

%macro cast__ulong__short  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        cwde                                            
        leave                                           
%endmacro

%macro cast__ulong__uint  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        leave                                           
%endmacro

%macro cast__ulong__int  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        leave                                           
%endmacro

%macro cast__ulong__long  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro cast__long__uchar  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        movzx   eax, al                                 
        leave                                           
%endmacro

%macro cast__long__char  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        movsx   eax, al                                 
        leave                                           
%endmacro

%macro cast__long__ushort  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        movzx   eax, ax                                 
        leave                                           
%endmacro

%macro cast__long__short  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        cwde                                            
        leave                                           
%endmacro

%macro cast__long__uint  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        leave                                           
%endmacro

%macro cast__long__int  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        leave                                           
%endmacro

%macro cast__long__ulong  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro cast__long__float  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fild    qword [ebp-8H]                          
        leave                                           
%endmacro

%macro cast__long__double  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fild    qword [ebp-8H]                          
        leave                                           
%endmacro

%macro cast__float__uchar  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fnstcw  word [ebp-2H]                           
        movzx   eax, word [ebp-2H]                      
        mov     ah, 12                                  
        mov     word [ebp-4H], ax                       
        fldcw   word [ebp-4H]                           
        fistp   word [ebp-6H]                           
        fldcw   word [ebp-2H]                           
        movzx   eax, word [ebp-6H]                      
        movzx   eax, al                                 
        leave                                           
%endmacro

%macro cast__float__char  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fnstcw  word [ebp-2H]                           
        movzx   eax, word [ebp-2H]                      
        mov     ah, 12                                  
        mov     word [ebp-4H], ax                       
        fldcw   word [ebp-4H]                           
        fistp   word [ebp-6H]                           
        fldcw   word [ebp-2H]                           
        movzx   eax, word [ebp-6H]                      
        movsx   eax, al                                 
        leave                                           
%endmacro

%macro cast__float__ushort  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fnstcw  word [ebp-2H]                           
        movzx   eax, word [ebp-2H]                      
        mov     ah, 12                                  
        mov     word [ebp-4H], ax                       
        fldcw   word [ebp-4H]                           
        fistp   dword [ebp-8H]                          
        fldcw   word [ebp-2H]                           
        mov     eax, dword [ebp-8H]                     
        movzx   eax, ax                                 
        leave                                           
%endmacro

%macro cast__float__short  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fnstcw  word [ebp-2H]                           
        movzx   eax, word [ebp-2H]                      
        mov     ah, 12                                  
        mov     word [ebp-4H], ax                       
        fldcw   word [ebp-4H]                           
        fistp   word [ebp-6H]                           
        fldcw   word [ebp-2H]                           
        movzx   eax, word [ebp-6H]                      
        cwde                                            
        leave                                           
%endmacro

%macro cast__float__uint  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        fld     dword [ebp+8H]                          
        fnstcw  word [ebp-2H]                           
        movzx   eax, word [ebp-2H]                      
        mov     ah, 12                                  
        mov     word [ebp-4H], ax                       
        fldcw   word [ebp-4H]                           
        fistp   qword [ebp-10H]                         
        fldcw   word [ebp-2H]                           
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        leave                                           
%endmacro

%macro cast__float__int  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fnstcw  word [ebp-2H]                           
        movzx   eax, word [ebp-2H]                      
        mov     ah, 12                                  
        mov     word [ebp-4H], ax                       
        fldcw   word [ebp-4H]                           
        fistp   dword [ebp-8H]                          
        fldcw   word [ebp-2H]                           
        mov     eax, dword [ebp-8H]                     
        leave                                           
%endmacro

%macro cast__float__long  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        fld     dword [ebp+8H]                          
        fnstcw  word [ebp-2H]                           
        movzx   eax, word [ebp-2H]                      
        mov     ah, 12                                  
        mov     word [ebp-4H], ax                       
        fldcw   word [ebp-4H]                           
        fistp   qword [ebp-10H]                         
        fldcw   word [ebp-2H]                           
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        leave                                           
%endmacro

%macro cast__float__double  0
        push    ebp                                     
        mov     ebp, esp                                
        fld     dword [ebp+8H]                          
        pop     ebp                                     
%endmacro

%macro cast__double__uchar  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fnstcw  word [ebp-0AH]                          
        movzx   eax, word [ebp-0AH]                     
        mov     ah, 12                                  
        mov     word [ebp-0CH], ax                      
        fldcw   word [ebp-0CH]                          
        fistp   word [ebp-0EH]                          
        fldcw   word [ebp-0AH]                          
        movzx   eax, word [ebp-0EH]                     
        movzx   eax, al                                 
        leave                                           
%endmacro

%macro cast__double__char  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fnstcw  word [ebp-0AH]                          
        movzx   eax, word [ebp-0AH]                     
        mov     ah, 12                                  
        mov     word [ebp-0CH], ax                      
        fldcw   word [ebp-0CH]                          
        fistp   word [ebp-0EH]                          
        fldcw   word [ebp-0AH]                          
        movzx   eax, word [ebp-0EH]                     
        movsx   eax, al                                 
        leave                                           
%endmacro

%macro cast__double__ushort  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fnstcw  word [ebp-0AH]                          
        movzx   eax, word [ebp-0AH]                     
        mov     ah, 12                                  
        mov     word [ebp-0CH], ax                      
        fldcw   word [ebp-0CH]                          
        fistp   dword [ebp-10H]                         
        fldcw   word [ebp-0AH]                          
        mov     eax, dword [ebp-10H]                    
        movzx   eax, ax                                 
        leave                                           
%endmacro

%macro cast__double__short  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fnstcw  word [ebp-0AH]                          
        movzx   eax, word [ebp-0AH]                     
        mov     ah, 12                                  
        mov     word [ebp-0CH], ax                      
        fldcw   word [ebp-0CH]                          
        fistp   word [ebp-0EH]                          
        fldcw   word [ebp-0AH]                          
        movzx   eax, word [ebp-0EH]                     
        cwde                                            
        leave                                           
%endmacro

%macro cast__double__uint  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fnstcw  word [ebp-0AH]                          
        movzx   eax, word [ebp-0AH]                     
        mov     ah, 12                                  
        mov     word [ebp-0CH], ax                      
        fldcw   word [ebp-0CH]                          
        fistp   qword [ebp-18H]                         
        fldcw   word [ebp-0AH]                          
        mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        leave                                           
%endmacro

%macro cast__double__int  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fnstcw  word [ebp-0AH]                          
        movzx   eax, word [ebp-0AH]                     
        mov     ah, 12                                  
        mov     word [ebp-0CH], ax                      
        fldcw   word [ebp-0CH]                          
        fistp   dword [ebp-10H]                         
        fldcw   word [ebp-0AH]                          
        mov     eax, dword [ebp-10H]                    
        leave                                           
%endmacro

%macro cast__double__long  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fnstcw  word [ebp-0AH]                          
        movzx   eax, word [ebp-0AH]                     
        mov     ah, 12                                  
        mov     word [ebp-0CH], ax                      
        fldcw   word [ebp-0CH]                          
        fistp   qword [ebp-18H]                         
        fldcw   word [ebp-0AH]                          
        mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        leave                                           
%endmacro

%macro cast__double__float  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fstp    dword [ebp-0CH]                         
        fld     dword [ebp-0CH]                         
        leave                                           
%endmacro

%macro uchar__uchar__add  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        add     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        sub     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        mul     byte [ebp-4H]                           
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__div  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        div     byte [ebp-8H]                           
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__mod  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        movzx   ecx, al                                 
        movzx   eax, byte [ebp-8H]                      
        mov     word [ebp-0AH], ax                      
        mov     edx, 0                                  
        mov     eax, ecx                                
        div     word [ebp-0AH]                          
        mov     eax, edx                                
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__lsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        movzx   ecx, byte [ebp-8H]                      
        shl     eax, cl                                 
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__rsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        movzx   ecx, byte [ebp-8H]                      
        sar     eax, cl                                 
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        setb    al                                      
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        seta    al                                      
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        sete    al                                      
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        setbe   al                                      
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        setae   al                                      
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        setne   al                                      
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        neg     eax                                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        cmp     byte [ebp-4H], 0                        
        jz      ?_001                                   
        cmp     byte [ebp-8H], 0                        
        jz      ?_001                                   
        mov     dword [ebp-0CH], 1                      
        jmp     ?_002                                   

?_001:  mov     dword [ebp-0CH], 0                      
?_002:  movzx   eax, byte [ebp-0CH]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        cmp     byte [ebp-4H], 0                        
        jnz     ?_003                                   
        cmp     byte [ebp-8H], 0                        
        jz      ?_004                                   
?_003:  mov     dword [ebp-0CH], 1                      
        jmp     ?_005                                   

?_004:  mov     dword [ebp-0CH], 0                      
?_005:  movzx   eax, byte [ebp-0CH]                     
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__not  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        cmp     byte [ebp-4H], 0                        
        sete    al                                      
        mov     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__band  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        and     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__bor  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        or      byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__xor  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        xor     byte [ebp-4H], al                       
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro uchar__uchar__bnot  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        not     byte [ebp-4H]                           
        movzx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__add  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   edx, byte [ebp-4H]                      
        movzx   eax, byte [ebp-8H]                      
        lea     eax, [edx+eax]                          
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   edx, byte [ebp-4H]                      
        movzx   eax, byte [ebp-8H]                      
        mov     ecx, edx                                
        sub     cl, al                                  
        mov     eax, ecx                                
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        mul     byte [ebp-4H]                           
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__div  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movsx   edx, byte [ebp-4H]                      
        movsx   eax, byte [ebp-8H]                      
        mov     ecx, eax                                
        mov     eax, edx                                
        sar     edx, 31                                 
        idiv    ecx                                     
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__mod  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movsx   edx, byte [ebp-4H]                      
        movsx   eax, byte [ebp-8H]                      
        mov     ecx, eax                                
        mov     eax, edx                                
        sar     edx, 31                                 
        idiv    ecx                                     
        mov     eax, edx                                
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__lsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movsx   eax, byte [ebp-4H]                      
        movsx   ecx, byte [ebp-8H]                      
        shl     eax, cl                                 
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__rsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movsx   eax, byte [ebp-4H]                      
        movsx   ecx, byte [ebp-8H]                      
        sar     eax, cl                                 
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        setl    al                                      
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        setg    al                                      
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        sete    al                                      
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        setle   al                                      
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        setge   al                                      
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-4H]                      
        cmp     al, byte [ebp-8H]                       
        setne   al                                      
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        neg     byte [ebp-4H]                           
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        cmp     byte [ebp-4H], 0                        
        jz      ?_006                                   
        cmp     byte [ebp-8H], 0                        
        jz      ?_006                                   
        mov     dword [ebp-0CH], 1                      
        jmp     ?_007                                   

?_006:  mov     dword [ebp-0CH], 0                      
?_007:  movzx   eax, byte [ebp-0CH]                     
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        cmp     byte [ebp-4H], 0                        
        jnz     ?_008                                   
        cmp     byte [ebp-8H], 0                        
        jz      ?_009                                   
?_008:  mov     dword [ebp-0CH], 1                      
        jmp     ?_010                                   

?_009:  mov     dword [ebp-0CH], 0                      
?_010:  movzx   eax, byte [ebp-0CH]                     
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__not  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        cmp     byte [ebp-4H], 0                        
        sete    al                                      
        mov     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__band  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        and     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__bor  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        or      byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__xor  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     byte [ebp-4H], al                       
        mov     byte [ebp-8H], dl                       
        movzx   eax, byte [ebp-8H]                      
        xor     byte [ebp-4H], al                       
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro char__char__bnot  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     byte [ebp-4H], al                       
        not     byte [ebp-4H]                           
        movsx   eax, byte [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__add  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-8H]                      
        add     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-8H]                      
        sub     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        imul    ax, word [ebp-8H]                       
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__div  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        mov     edx, 0                                  
        div     word [ebp-8H]                           
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__mod  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        mov     edx, 0                                  
        div     word [ebp-8H]                           
        mov     word [ebp-4H], dx                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__lsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        movzx   ecx, word [ebp-8H]                      
        shl     eax, cl                                 
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__rsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        movzx   ecx, word [ebp-8H]                      
        sar     eax, cl                                 
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        setb    al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        seta    al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        sete    al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        setbe   al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        setae   al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        setne   al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        neg     eax                                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        cmp     word [ebp-4H], 0                        
        jz      ?_011                                   
        cmp     word [ebp-8H], 0                        
        jz      ?_011                                   
        mov     dword [ebp-0CH], 1                      
        jmp     ?_012                                   

?_011:  mov     dword [ebp-0CH], 0                      
?_012:  movzx   eax, word [ebp-0CH]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        cmp     word [ebp-4H], 0                        
        jnz     ?_013                                   
        cmp     word [ebp-8H], 0                        
        jz      ?_014                                   
?_013:  mov     dword [ebp-0CH], 1                      
        jmp     ?_015                                   

?_014:  mov     dword [ebp-0CH], 0                      
?_015:  movzx   eax, word [ebp-0CH]                     
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__not  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        cmp     word [ebp-4H], 0                        
        sete    al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__band  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-8H]                      
        and     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__bor  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-8H]                      
        or      word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__xor  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-8H]                      
        xor     word [ebp-4H], ax                       
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro ushort__ushort__bnot  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        not     word [ebp-4H]                           
        movzx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__add  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   edx, word [ebp-4H]                      
        movzx   eax, word [ebp-8H]                      
        lea     eax, [edx+eax]                          
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   edx, word [ebp-4H]                      
        movzx   eax, word [ebp-8H]                      
        mov     ecx, edx                                
        sub     cx, ax                                  
        mov     eax, ecx                                
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        imul    ax, word [ebp-8H]                       
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__div  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movsx   edx, word [ebp-4H]                      
        movsx   eax, word [ebp-8H]                      
        mov     ecx, eax                                
        mov     eax, edx                                
        sar     edx, 31                                 
        idiv    ecx                                     
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__mod  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movsx   edx, word [ebp-4H]                      
        movsx   eax, word [ebp-8H]                      
        mov     ecx, eax                                
        mov     eax, edx                                
        sar     edx, 31                                 
        idiv    ecx                                     
        mov     eax, edx                                
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__lsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movsx   eax, word [ebp-4H]                      
        movsx   ecx, word [ebp-8H]                      
        shl     eax, cl                                 
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__rsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movsx   eax, word [ebp-4H]                      
        movsx   ecx, word [ebp-8H]                      
        sar     eax, cl                                 
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        setl    al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        setg    al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        sete    al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        setle   al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        setge   al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-4H]                      
        cmp     ax, word [ebp-8H]                       
        setne   al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        neg     word [ebp-4H]                           
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        cmp     word [ebp-4H], 0                        
        jz      ?_016                                   
        cmp     word [ebp-8H], 0                        
        jz      ?_016                                   
        mov     dword [ebp-0CH], 1                      
        jmp     ?_017                                   

?_016:  mov     dword [ebp-0CH], 0                      
?_017:  movzx   eax, word [ebp-0CH]                     
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        cmp     word [ebp-4H], 0                        
        jnz     ?_018                                   
        cmp     word [ebp-8H], 0                        
        jz      ?_019                                   
?_018:  mov     dword [ebp-0CH], 1                      
        jmp     ?_020                                   

?_019:  mov     dword [ebp-0CH], 0                      
?_020:  movzx   eax, word [ebp-0CH]                     
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__not  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        cmp     word [ebp-4H], 0                        
        sete    al                                      
        movzx   eax, al                                 
        mov     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__band  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-8H]                      
        and     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__bor  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-8H]                      
        or      word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__xor  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     edx, dword [ebp+0CH]                    
        mov     word [ebp-4H], ax                       
        mov     word [ebp-8H], dx                       
        movzx   eax, word [ebp-8H]                      
        xor     word [ebp-4H], ax                       
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro short__short__bnot  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        mov     eax, dword [ebp+8H]                     
        mov     word [ebp-4H], ax                       
        not     word [ebp-4H]                           
        movsx   eax, word [ebp-4H]                      
        leave                                           
%endmacro

%macro uint__uint__add  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        add     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        sub     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        imul    eax, dword [ebp+0CH]                    
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__div  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        mov     edx, 0                                  
        div     dword [ebp+0CH]                         
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__mod  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        mov     edx, 0                                  
        div     dword [ebp+0CH]                         
        mov     dword [ebp+8H], edx                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__lsh  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     ecx, dword [ebp+0CH]                    
        shl     dword [ebp+8H], cl                      
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__rsh  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     ecx, dword [ebp+0CH]                    
        shr     dword [ebp+8H], cl                      
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        setb    al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        seta    al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        sete    al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        setbe   al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        setae   al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        setne   al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        neg     dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        cmp     dword [ebp+8H], 0                       
        jz      ?_021                                   
        cmp     dword [ebp+0CH], 0                      
        jz      ?_021                                   
        mov     dword [ebp-4H], 1                       
        jmp     ?_022                                   

?_021:  mov     dword [ebp-4H], 0                       
?_022:  mov     eax, dword [ebp-4H]                     
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        leave                                           
%endmacro

%macro uint__uint__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        cmp     dword [ebp+8H], 0                       
        jnz     ?_023                                   
        cmp     dword [ebp+0CH], 0                      
        jz      ?_024                                   
?_023:  mov     dword [ebp-4H], 1                       
        jmp     ?_025                                   

?_024:  mov     dword [ebp-4H], 0                       
?_025:  mov     eax, dword [ebp-4H]                     
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        leave                                           
%endmacro

%macro uint__uint__not  0
        push    ebp                                     
        mov     ebp, esp                                
        cmp     dword [ebp+8H], 0                       
        sete    al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__band  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        and     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__bor  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        or      dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__xor  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        xor     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro uint__uint__bnot  0
        push    ebp                                     
        mov     ebp, esp                                
        not     dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__add  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        add     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        sub     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        imul    eax, dword [ebp+0CH]                    
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__div  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     edx, dword [ebp+8H]                     
        mov     eax, edx                                
        sar     edx, 31                                 
        idiv    dword [ebp+0CH]                         
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__mod  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     edx, dword [ebp+8H]                     
        mov     eax, edx                                
        sar     edx, 31                                 
        idiv    dword [ebp+0CH]                         
        mov     dword [ebp+8H], edx                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__lsh  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     ecx, dword [ebp+0CH]                    
        shl     dword [ebp+8H], cl                      
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__rsh  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     ecx, dword [ebp+0CH]                    
        sar     dword [ebp+8H], cl                      
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        setl    al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        setg    al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        sete    al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        setle   al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        setge   al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+8H]                     
        cmp     eax, dword [ebp+0CH]                    
        setne   al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        neg     dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        cmp     dword [ebp+8H], 0                       
        jz      ?_026                                   
        cmp     dword [ebp+0CH], 0                      
        jz      ?_026                                   
        mov     dword [ebp-4H], 1                       
        jmp     ?_027                                   

?_026:  mov     dword [ebp-4H], 0                       
?_027:  mov     eax, dword [ebp-4H]                     
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        leave                                           
%endmacro

%macro int__int__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        cmp     dword [ebp+8H], 0                       
        jnz     ?_028                                   
        cmp     dword [ebp+0CH], 0                      
        jz      ?_029                                   
?_028:  mov     dword [ebp-4H], 1                       
        jmp     ?_030                                   

?_029:  mov     dword [ebp-4H], 0                       
?_030:  mov     eax, dword [ebp-4H]                     
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        leave                                           
%endmacro

%macro int__int__not  0
        push    ebp                                     
        mov     ebp, esp                                
        cmp     dword [ebp+8H], 0                       
        sete    al                                      
        movzx   eax, al                                 
        mov     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__band  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        and     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__bor  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        or      dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__xor  0
        push    ebp                                     
        mov     ebp, esp                                
        mov     eax, dword [ebp+0CH]                    
        xor     dword [ebp+8H], eax                     
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro int__int__bnot  0
        push    ebp                                     
        mov     ebp, esp                                
        not     dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        pop     ebp                                     
%endmacro

%macro ulong__ulong__add  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     dword [ebp-8H], eax                     
        adc     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        sub     dword [ebp-8H], eax                     
        sbb     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-4H]                     
        mov     ecx, eax                                
        imul    ecx, dword [ebp-10H]                    
        mov     eax, dword [ebp-0CH]                    
        imul    eax, dword [ebp-8H]                     
        add     ecx, eax                                
        mov     eax, dword [ebp-10H]                    
        mul     dword [ebp-8H]                          
        add     ecx, edx                                
        mov     edx, ecx                                
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__div  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 40                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        mov     dword [esp+8H], eax                     
        mov     dword [esp+0CH], edx                    
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [esp], eax                        
        mov     dword [esp+4H], edx                     
        call    __udivdi3                               
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__mod  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 36                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-10H]                    
        mov     ebx, dword [ebp-0CH]                    
        mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [esp+8H], eax                     
        mov     dword [esp+0CH], edx                    
        mov     dword [esp], ecx                        
        mov     dword [esp+4H], ebx                     
        call    __umoddi3                               
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 36                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro ulong__ulong__lsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     ecx, dword [ebp-10H]                    
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        shld    edx, eax, cl                            
        shl     eax, cl                                 
        test    cl, 20H                                 
        jz      ?_031                                   
        mov     edx, eax                                
        xor     eax, eax                                
?_031:  mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__rsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     ecx, dword [ebp-10H]                    
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        shrd    eax, edx, cl                            
        shr     edx, cl                                 
        test    cl, 20H                                 
        jz      ?_032                                   
        mov     eax, edx                                
        xor     edx, edx                                
?_032:  mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     dword [ebp-18H], 1                      
        mov     dword [ebp-14H], 0                      
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     edx, dword [ebp-1CH]                    
        cmp     edx, dword [ebp-0CH]                    
        jc      ?_034                                   
        mov     eax, dword [ebp-1CH]                    
        cmp     eax, dword [ebp-0CH]                    
        ja      ?_033                                   
        mov     edx, dword [ebp-20H]                    
        cmp     edx, dword [ebp-10H]                    
        jc      ?_034                                   
?_033:  mov     dword [ebp-18H], 0                      
        mov     dword [ebp-14H], 0                      
?_034:  mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     dword [ebp-18H], 1                      
        mov     dword [ebp-14H], 0                      
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     edx, dword [ebp-1CH]                    
        cmp     edx, dword [ebp-0CH]                    
        ja      ?_036                                   
        mov     eax, dword [ebp-1CH]                    
        cmp     eax, dword [ebp-0CH]                    
        jc      ?_035                                   
        mov     edx, dword [ebp-20H]                    
        cmp     edx, dword [ebp-10H]                    
        ja      ?_036                                   
?_035:  mov     dword [ebp-18H], 0                      
        mov     dword [ebp-14H], 0                      
?_036:  mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        xor     eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        xor     edx, ebx                                
        or      eax, edx                                
        test    eax, eax                                
        sete    al                                      
        movzx   eax, al                                 
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, 0                                  
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro ulong__ulong__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     dword [ebp-18H], 1                      
        mov     dword [ebp-14H], 0                      
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     edx, dword [ebp-1CH]                    
        cmp     edx, dword [ebp-0CH]                    
        jc      ?_038                                   
        mov     eax, dword [ebp-1CH]                    
        cmp     eax, dword [ebp-0CH]                    
        ja      ?_037                                   
        mov     edx, dword [ebp-20H]                    
        cmp     edx, dword [ebp-10H]                    
        jbe     ?_038                                   
?_037:  mov     dword [ebp-18H], 0                      
        mov     dword [ebp-14H], 0                      
?_038:  mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     dword [ebp-18H], 1                      
        mov     dword [ebp-14H], 0                      
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     edx, dword [ebp-1CH]                    
        cmp     edx, dword [ebp-0CH]                    
        ja      ?_040                                   
        mov     eax, dword [ebp-1CH]                    
        cmp     eax, dword [ebp-0CH]                    
        jc      ?_039                                   
        mov     edx, dword [ebp-20H]                    
        cmp     edx, dword [ebp-10H]                    
        jnc     ?_040                                   
?_039:  mov     dword [ebp-18H], 0                      
        mov     dword [ebp-14H], 0                      
?_040:  mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        xor     eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        xor     edx, ebx                                
        or      eax, edx                                
        test    eax, eax                                
        setne   al                                      
        movzx   eax, al                                 
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, 0                                  
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro ulong__ulong__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        neg     dword [ebp-8H]                          
        adc     dword [ebp-4H], 0                       
        neg     dword [ebp-4H]                          
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-8H]                     
        or      eax, dword [ebp-4H]                     
        test    eax, eax                                
        jz      ?_041                                   
        mov     eax, dword [ebp-10H]                    
        or      eax, dword [ebp-0CH]                    
        test    eax, eax                                
        jz      ?_041                                   
        mov     dword [ebp-14H], 1                      
        jmp     ?_042                                   

?_041:  mov     dword [ebp-14H], 0                      
?_042:  mov     eax, dword [ebp-14H]                    
        mov     edx, eax                                
        sar     edx, 31                                 
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     eax, dword [ebp-20H]                    
        mov     edx, dword [ebp-1CH]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-8H]                     
        or      eax, dword [ebp-4H]                     
        test    eax, eax                                
        jnz     ?_043                                   
        mov     eax, dword [ebp-10H]                    
        or      eax, dword [ebp-0CH]                    
        test    eax, eax                                
        jz      ?_044                                   
?_043:  mov     dword [ebp-14H], 1                      
        jmp     ?_045                                   

?_044:  mov     dword [ebp-14H], 0                      
?_045:  mov     eax, dword [ebp-14H]                    
        mov     edx, eax                                
        sar     edx, 31                                 
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     eax, dword [ebp-20H]                    
        mov     edx, dword [ebp-1CH]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__not  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-4H]                     
        or      eax, dword [ebp-8H]                     
        test    eax, eax                                
        sete    al                                      
        movzx   eax, al                                 
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, 0                                  
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro ulong__ulong__band  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        and     eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        and     edx, ebx                                
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro ulong__ulong__bor  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        or      eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        or      edx, ebx                                
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro ulong__ulong__xor  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        xor     eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        xor     edx, ebx                                
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro ulong__ulong__bnot  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     ecx, dword [ebp-10H]                    
        mov     ebx, dword [ebp-0CH]                    
        mov     eax, ecx                                
        not     eax                                     
        mov     edx, ebx                                
        not     edx                                     
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 12                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro long__long__add  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     dword [ebp-8H], eax                     
        adc     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        sub     dword [ebp-8H], eax                     
        sbb     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-4H]                     
        mov     ecx, eax                                
        imul    ecx, dword [ebp-10H]                    
        mov     eax, dword [ebp-0CH]                    
        imul    eax, dword [ebp-8H]                     
        add     ecx, eax                                
        mov     eax, dword [ebp-10H]                    
        mul     dword [ebp-8H]                          
        add     ecx, edx                                
        mov     edx, ecx                                
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__div  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 40                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        mov     dword [esp+8H], eax                     
        mov     dword [esp+0CH], edx                    
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [esp], eax                        
        mov     dword [esp+4H], edx                     
        call    __divdi3                                
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__mod  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 36                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-10H]                    
        mov     ebx, dword [ebp-0CH]                    
        mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [esp+8H], eax                     
        mov     dword [esp+0CH], edx                    
        mov     dword [esp], ecx                        
        mov     dword [esp+4H], ebx                     
        call    __moddi3                                
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 36                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro long__long__lsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     ecx, dword [ebp-10H]                    
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        shld    edx, eax, cl                            
        shl     eax, cl                                 
        test    cl, 20H                                 
        jz      ?_046                                   
        mov     edx, eax                                
        xor     eax, eax                                
?_046:  mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__rsh  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     ecx, dword [ebp-10H]                    
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        shrd    eax, edx, cl                            
        sar     edx, cl                                 
        test    cl, 20H                                 
        jz      ?_047                                   
        mov     eax, edx                                
        sar     edx, 31                                 
?_047:  mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     dword [ebp-18H], 1                      
        mov     dword [ebp-14H], 0                      
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     edx, dword [ebp-1CH]                    
        cmp     edx, dword [ebp-0CH]                    
        jl      ?_049                                   
        mov     eax, dword [ebp-1CH]                    
        cmp     eax, dword [ebp-0CH]                    
        jg      ?_048                                   
        mov     edx, dword [ebp-20H]                    
        cmp     edx, dword [ebp-10H]                    
        jc      ?_049                                   
?_048:  mov     dword [ebp-18H], 0                      
        mov     dword [ebp-14H], 0                      
?_049:  mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     dword [ebp-18H], 1                      
        mov     dword [ebp-14H], 0                      
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     edx, dword [ebp-1CH]                    
        cmp     edx, dword [ebp-0CH]                    
        jg      ?_051                                   
        mov     eax, dword [ebp-1CH]                    
        cmp     eax, dword [ebp-0CH]                    
        jl      ?_050                                   
        mov     edx, dword [ebp-20H]                    
        cmp     edx, dword [ebp-10H]                    
        ja      ?_051                                   
?_050:  mov     dword [ebp-18H], 0                      
        mov     dword [ebp-14H], 0                      
?_051:  mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        xor     eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        xor     edx, ebx                                
        or      eax, edx                                
        test    eax, eax                                
        sete    al                                      
        movzx   eax, al                                 
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, 0                                  
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro long__long__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     dword [ebp-18H], 1                      
        mov     dword [ebp-14H], 0                      
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     edx, dword [ebp-1CH]                    
        cmp     edx, dword [ebp-0CH]                    
        jl      ?_053                                   
        mov     eax, dword [ebp-1CH]                    
        cmp     eax, dword [ebp-0CH]                    
        jg      ?_052                                   
        mov     edx, dword [ebp-20H]                    
        cmp     edx, dword [ebp-10H]                    
        jbe     ?_053                                   
?_052:  mov     dword [ebp-18H], 0                      
        mov     dword [ebp-14H], 0                      
?_053:  mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     dword [ebp-18H], 1                      
        mov     dword [ebp-14H], 0                      
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     edx, dword [ebp-1CH]                    
        cmp     edx, dword [ebp-0CH]                    
        jg      ?_055                                   
        mov     eax, dword [ebp-1CH]                    
        cmp     eax, dword [ebp-0CH]                    
        jl      ?_054                                   
        mov     edx, dword [ebp-20H]                    
        cmp     edx, dword [ebp-10H]                    
        jnc     ?_055                                   
?_054:  mov     dword [ebp-18H], 0                      
        mov     dword [ebp-14H], 0                      
?_055:  mov     eax, dword [ebp-18H]                    
        mov     edx, dword [ebp-14H]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        xor     eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        xor     edx, ebx                                
        or      eax, edx                                
        test    eax, eax                                
        setne   al                                      
        movzx   eax, al                                 
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, 0                                  
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro long__long__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        neg     dword [ebp-8H]                          
        adc     dword [ebp-4H], 0                       
        neg     dword [ebp-4H]                          
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-8H]                     
        or      eax, dword [ebp-4H]                     
        test    eax, eax                                
        jz      ?_056                                   
        mov     eax, dword [ebp-10H]                    
        or      eax, dword [ebp-0CH]                    
        test    eax, eax                                
        jz      ?_056                                   
        mov     dword [ebp-14H], 1                      
        jmp     ?_057                                   

?_056:  mov     dword [ebp-14H], 0                      
?_057:  mov     eax, dword [ebp-14H]                    
        mov     edx, eax                                
        sar     edx, 31                                 
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     eax, dword [ebp-20H]                    
        mov     edx, dword [ebp-1CH]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 32                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp-8H]                     
        or      eax, dword [ebp-4H]                     
        test    eax, eax                                
        jnz     ?_058                                   
        mov     eax, dword [ebp-10H]                    
        or      eax, dword [ebp-0CH]                    
        test    eax, eax                                
        jz      ?_059                                   
?_058:  mov     dword [ebp-14H], 1                      
        jmp     ?_060                                   

?_059:  mov     dword [ebp-14H], 0                      
?_060:  mov     eax, dword [ebp-14H]                    
        mov     edx, eax                                
        sar     edx, 31                                 
        mov     dword [ebp-20H], eax                    
        mov     dword [ebp-1CH], edx                    
        mov     eax, dword [ebp-20H]                    
        mov     edx, dword [ebp-1CH]                    
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__not  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp-4H]                     
        or      eax, dword [ebp-8H]                     
        test    eax, eax                                
        sete    al                                      
        movzx   eax, al                                 
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, 0                                  
        mov     dword [ebp-8H], eax                     
        mov     dword [ebp-4H], edx                     
        mov     eax, dword [ebp-8H]                     
        mov     edx, dword [ebp-4H]                     
        leave                                           
%endmacro

%macro long__long__band  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        and     eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        and     edx, ebx                                
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro long__long__bor  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        or      eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        or      edx, ebx                                
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro long__long__xor  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 20                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-18H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-14H], eax                    
        mov     ecx, dword [ebp-18H]                    
        mov     ebx, dword [ebp-14H]                    
        mov     eax, dword [ebp-10H]                    
        xor     eax, ecx                                
        mov     edx, dword [ebp-0CH]                    
        xor     edx, ebx                                
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 20                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro long__long__bnot  0
        push    ebp                                     
        mov     ebp, esp                                
        push    ebx                                     
        sub     esp, 12                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-0CH], eax                    
        mov     ecx, dword [ebp-10H]                    
        mov     ebx, dword [ebp-0CH]                    
        mov     eax, ecx                                
        not     eax                                     
        mov     edx, ebx                                
        not     edx                                     
        mov     dword [ebp-10H], eax                    
        mov     dword [ebp-0CH], edx                    
        mov     eax, dword [ebp-10H]                    
        mov     edx, dword [ebp-0CH]                    
        add     esp, 12                                 
        pop     ebx                                     
        pop     ebp                                     
%endmacro

%macro float__float__add  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        fld     dword [ebp+8H]                          
        fadd    dword [ebp+0CH]                         
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-4H], eax                     
        fld     dword [ebp-4H]                          
        leave                                           
%endmacro

%macro float__float__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        fld     dword [ebp+8H]                          
        fsub    dword [ebp+0CH]                         
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-4H], eax                     
        fld     dword [ebp-4H]                          
        leave                                           
%endmacro

%macro float__float__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        fld     dword [ebp+8H]                          
        fmul    dword [ebp+0CH]                         
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-4H], eax                     
        fld     dword [ebp-4H]                          
        leave                                           
%endmacro

%macro float__float__div  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        fld     dword [ebp+8H]                          
        fdiv    dword [ebp+0CH]                         
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-4H], eax                     
        fld     dword [ebp-4H]                          
        leave                                           
%endmacro

%macro float__float__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fld     dword [ebp+0CH]                         
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        ja      ?_061                                   
        jmp     ?_062                                   

?_061:  fld1                                            
        fstp    dword [ebp-4H]                          
        jmp     ?_063                                   

?_062:  fldz                                            
        fstp    dword [ebp-4H]                          
?_063:  fld     dword [ebp-4H]                          
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        fld     dword [ebp-8H]                          
        leave                                           
%endmacro

%macro float__float__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fld     dword [ebp+0CH]                         
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        ja      ?_064                                   
        jmp     ?_065                                   

?_064:  fld1                                            
        fstp    dword [ebp-4H]                          
        jmp     ?_066                                   

?_065:  fldz                                            
        fstp    dword [ebp-4H]                          
?_066:  fld     dword [ebp-4H]                          
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        fld     dword [ebp-8H]                          
        leave                                           
%endmacro

%macro float__float__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fld     dword [ebp+0CH]                         
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jpe     ?_067                                   
        jz      ?_068                                   
?_067:  jmp     ?_069                                   

?_068:  fld1                                            
        fstp    dword [ebp-4H]                          
        jmp     ?_070                                   

?_069:  fldz                                            
        fstp    dword [ebp-4H]                          
?_070:  fld     dword [ebp-4H]                          
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        fld     dword [ebp-8H]                          
        leave                                           
%endmacro

%macro float__float__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fld     dword [ebp+0CH]                         
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnc     ?_071                                   
        jmp     ?_072                                   

?_071:  fld1                                            
        fstp    dword [ebp-4H]                          
        jmp     ?_073                                   

?_072:  fldz                                            
        fstp    dword [ebp-4H]                          
?_073:  fld     dword [ebp-4H]                          
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        fld     dword [ebp-8H]                          
        leave                                           
%endmacro

%macro float__float__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fld     dword [ebp+0CH]                         
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnc     ?_074                                   
        jmp     ?_075                                   

?_074:  fld1                                            
        fstp    dword [ebp-4H]                          
        jmp     ?_076                                   

?_075:  fldz                                            
        fstp    dword [ebp-4H]                          
?_076:  fld     dword [ebp-4H]                          
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        fld     dword [ebp-8H]                          
        leave                                           
%endmacro

%macro float__float__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fld     dword [ebp+0CH]                         
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnz     ?_077                                   
        jpe     ?_077                                   
        jmp     ?_078                                   

?_077:  fld1                                            
        fstp    dword [ebp-4H]                          
        jmp     ?_079                                   

?_078:  fldz                                            
        fstp    dword [ebp-4H]                          
?_079:  fld     dword [ebp-4H]                          
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        fld     dword [ebp-8H]                          
        leave                                           
%endmacro

%macro float__float__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        fld     dword [ebp+8H]                          
        fchs                                            
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-4H], eax                     
        fld     dword [ebp-4H]                          
        leave                                           
%endmacro

%macro float__float__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fldz                                            
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        setne   al                                      
        setpe   dl                                      
        or      eax, edx                                
        xor     eax, 01H                                
        test    al, al                                  
        jnz     ?_080                                   
        fld     dword [ebp+0CH]                         
        fldz                                            
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        setne   al                                      
        setpe   dl                                      
        or      eax, edx                                
        xor     eax, 01H                                
        test    al, al                                  
        jnz     ?_080                                   
        mov     dword [ebp-4H], 1                       
        jmp     ?_081                                   

?_080:  mov     dword [ebp-4H], 0                       
?_081:  fild    dword [ebp-4H]                          
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        fld     dword [ebp-8H]                          
        leave                                           
%endmacro

%macro float__float__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        fld     dword [ebp+8H]                          
        fldz                                            
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnz     ?_082                                   
        jpe     ?_082                                   
        fld     dword [ebp+0CH]                         
        fldz                                            
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnz     ?_082                                   
        jpe     ?_082                                   
        jmp     ?_083                                   

?_082:  mov     dword [ebp-4H], 1                       
        jmp     ?_084                                   

?_083:  mov     dword [ebp-4H], 0                       
?_084:  fild    dword [ebp-4H]                          
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        fld     dword [ebp-8H]                          
        leave                                           
%endmacro

%macro float__float__not  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 4                                  
        fld     dword [ebp+8H]                          
        fldz                                            
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        setne   al                                      
        setpe   dl                                      
        or      eax, edx                                
        movzx   eax, al                                 
        xor     eax, 01H                                
        push    eax                                     
        fild    dword [esp]                             
        lea     esp, [esp+4H]                           
        fstp    dword [ebp+8H]                          
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-4H], eax                     
        fld     dword [ebp-4H]                          
        leave                                           
%endmacro

%macro double__double__add  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fadd    qword [ebp-10H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__sub  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fsub    qword [ebp-10H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__mul  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fmul    qword [ebp-10H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__div  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 16                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fdiv    qword [ebp-10H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__lt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fld     qword [ebp-10H]                         
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        ja      ?_085                                   
        jmp     ?_086                                   

?_085:  fld1                                            
        fstp    qword [ebp-18H]                         
        jmp     ?_087                                   

?_086:  fldz                                            
        fstp    qword [ebp-18H]                         
?_087:  fld     qword [ebp-18H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__gt  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fld     qword [ebp-10H]                         
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        ja      ?_088                                   
        jmp     ?_089                                   

?_088:  fld1                                            
        fstp    qword [ebp-18H]                         
        jmp     ?_090                                   

?_089:  fldz                                            
        fstp    qword [ebp-18H]                         
?_090:  fld     qword [ebp-18H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__eq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fld     qword [ebp-10H]                         
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jpe     ?_091                                   
        jz      ?_092                                   
?_091:  jmp     ?_093                                   

?_092:  fld1                                            
        fstp    qword [ebp-18H]                         
        jmp     ?_094                                   

?_093:  fldz                                            
        fstp    qword [ebp-18H]                         
?_094:  fld     qword [ebp-18H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__lteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fld     qword [ebp-10H]                         
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnc     ?_095                                   
        jmp     ?_096                                   

?_095:  fld1                                            
        fstp    qword [ebp-18H]                         
        jmp     ?_097                                   

?_096:  fldz                                            
        fstp    qword [ebp-18H]                         
?_097:  fld     qword [ebp-18H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__gteq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fld     qword [ebp-10H]                         
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnc     ?_098                                   
        jmp     ?_099                                   

?_098:  fld1                                            
        fstp    qword [ebp-18H]                         
        jmp     ?_100                                   

?_099:  fldz                                            
        fstp    qword [ebp-18H]                         
?_100:  fld     qword [ebp-18H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__neq  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fld     qword [ebp-10H]                         
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnz     ?_101                                   
        jpe     ?_101                                   
        jmp     ?_102                                   

?_101:  fld1                                            
        fstp    qword [ebp-18H]                         
        jmp     ?_103                                   

?_102:  fldz                                            
        fstp    qword [ebp-18H]                         
?_103:  fld     qword [ebp-18H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__neg  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fchs                                            
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__and  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fldz                                            
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        setne   al                                      
        setpe   dl                                      
        or      eax, edx                                
        xor     eax, 01H                                
        test    al, al                                  
        jnz     ?_104                                   
        fld     qword [ebp-10H]                         
        fldz                                            
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        setne   al                                      
        setpe   dl                                      
        or      eax, edx                                
        xor     eax, 01H                                
        test    al, al                                  
        jnz     ?_104                                   
        mov     dword [ebp-14H], 1                      
        jmp     ?_105                                   

?_104:  mov     dword [ebp-14H], 0                      
?_105:  fild    dword [ebp-14H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__or  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 24                                 
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        mov     eax, dword [ebp+10H]                    
        mov     dword [ebp-10H], eax                    
        mov     eax, dword [ebp+14H]                    
        mov     dword [ebp-0CH], eax                    
        fld     qword [ebp-8H]                          
        fldz                                            
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnz     ?_106                                   
        jpe     ?_106                                   
        fld     qword [ebp-10H]                         
        fldz                                            
        fxch    st1                                     
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        jnz     ?_106                                   
        jpe     ?_106                                   
        jmp     ?_107                                   

?_106:  mov     dword [ebp-14H], 1                      
        jmp     ?_108                                   

?_107:  mov     dword [ebp-14H], 0                      
?_108:  fild    dword [ebp-14H]                         
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

%macro double__double__not  0
        push    ebp                                     
        mov     ebp, esp                                
        sub     esp, 8                                  
        mov     eax, dword [ebp+8H]                     
        mov     dword [ebp-8H], eax                     
        mov     eax, dword [ebp+0CH]                    
        mov     dword [ebp-4H], eax                     
        fld     qword [ebp-8H]                          
        fldz                                            
        fucompp                                         
        fnstsw  ax                                      
        sahf                                            
        setne   al                                      
        setpe   dl                                      
        or      eax, edx                                
        movzx   eax, al                                 
        xor     eax, 01H                                
        push    eax                                     
        fild    dword [esp]                             
        lea     esp, [esp+4H]                           
        fstp    qword [ebp-8H]                          
        fld     qword [ebp-8H]                          
        leave                                           
%endmacro

