converta por completo o código assembly para c++

BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
.text:10002820 _DllMain@12     proc near               ; CODE XREF: ___DllMainCRTStartup+67↓p
.text:10002820                                         ; ___DllMainCRTStartup+7B↓p
.text:10002820
.text:10002820 Drive           = byte ptr -654h
.text:10002820 var_650         = dword ptr -650h
.text:10002820 var_64C         = dword ptr -64Ch
.text:10002820 var_648         = dword ptr -648h
.text:10002820 var_644         = dword ptr -644h
.text:10002820 Block           = dword ptr -640h
.text:10002820 Dir             = byte ptr -63Ch
.text:10002820 Filename        = byte ptr -53Ch
.text:10002820 FileName        = byte ptr -438h
.text:10002820 var_334         = byte ptr -334h
.text:10002820 Src             = byte ptr -330h
.text:10002820 Destination     = byte ptr -22Ch
.text:10002820 var_12C         = byte ptr -12Ch
.text:10002820 Source          = byte ptr -28h
.text:10002820 var_14          = dword ptr -14h
.text:10002820 var_10          = dword ptr -10h
.text:10002820 var_C           = dword ptr -0Ch
.text:10002820 var_8           = word ptr -8
.text:10002820 var_4           = dword ptr -4
.text:10002820 hinstDLL        = dword ptr  8
.text:10002820 fdwReason       = dword ptr  0Ch
.text:10002820 lpvReserved     = dword ptr  10h
.text:10002820
.text:10002820                 push    ebp
.text:10002821                 mov     ebp, esp
.text:10002823                 sub     esp, 654h
.text:10002829                 mov     eax, ___security_cookie
.text:1000282E                 xor     eax, ebp
.text:10002830                 mov     [ebp+var_4], eax
.text:10002833                 mov     eax, [ebp+fdwReason]
.text:10002836                 push    ebx
.text:10002837                 xor     ebx, ebx
.text:10002839                 sub     eax, ebx
.text:1000283B                 push    edi
.text:1000283C                 mov     edi, [ebp+hinstDLL]
.text:1000283F                 jz      loc_10002BA3
.text:10002845                 sub     eax, 2
.text:10002848                 jz      loc_10002BA3
.text:1000284E                 dec     eax
.text:1000284F                 jz      loc_10002BA3
.text:10002855                 push    esi
.text:10002856                 mov     esi, ds:GetModuleFileNameA
.text:1000285C                 push    104h            ; nSize
.text:10002861                 lea     eax, [ebp+Filename]
.text:10002867                 push    eax             ; lpFilename
.text:10002868                 push    ebx             ; hModule
.text:10002869                 call    esi ; GetModuleFileNameA
.text:1000286B                 push    14h             ; ExtCount
.text:1000286D                 lea     ecx, [ebp+Source]
.text:10002870                 push    ecx             ; Ext
.text:10002871                 push    100h            ; FilenameCount
.text:10002876                 lea     edx, [ebp+Destination]
.text:1000287C                 push    edx             ; Filename
.text:1000287D                 push    100h            ; DirCount
.text:10002882                 lea     eax, [ebp+Dir]
.text:10002888                 push    eax             ; Dir
.text:10002889                 push    3               ; DriveCount
.text:1000288B                 lea     ecx, [ebp+Drive]
.text:10002891                 push    ecx             ; Drive
.text:10002892                 lea     edx, [ebp+Filename]
.text:10002898                 push    edx             ; FullPath
.text:10002899                 call    __splitpath_s
.text:1000289E                 lea     eax, [ebp+Source]
.text:100028A1                 push    eax             ; Source
.text:100028A2                 lea     ecx, [ebp+Destination]
.text:100028A8                 push    100h            ; SizeInBytes
.text:100028AD                 push    ecx             ; Destination
.text:100028AE                 call    _strcat_s
.text:100028B3                 push    104h            ; Size
.text:100028B8                 call    _malloc
.text:100028BD                 add     esp, 34h
.text:100028C0                 push    104h            ; nSize
.text:100028C5                 lea     edx, [ebp+FileName]
.text:100028CB                 push    edx             ; lpFilename
.text:100028CC                 push    edi             ; hModule
.text:100028CD                 mov     dword_100198F0, eax
.text:100028D2                 call    esi ; GetModuleFileNameA
.text:100028D4                 lea     eax, [ebp+FileName]
.text:100028DA                 push    offset Mode     ; "rb"
.text:100028DF                 push    eax             ; FileName
.text:100028E0                 call    _fopen
.text:100028E5                 push    2               ; Origin
.text:100028E7                 mov     esi, eax
.text:100028E9                 push    ebx             ; Offset
.text:100028EA                 push    esi             ; Stream
.text:100028EB                 call    _fseek
.text:100028F0                 push    esi             ; Stream
.text:100028F1                 call    _ftell
.text:100028F6                 push    esi             ; Stream
.text:100028F7                 mov     edi, eax
.text:100028F9                 call    _rewind
.text:100028FE                 push    edi             ; Size
.text:100028FF                 call    _malloc
.text:10002904                 push    esi             ; Stream
.text:10002905                 push    1               ; ElementCount
.text:10002907                 push    edi             ; ElementSize
.text:10002908                 push    eax             ; Buffer
.text:10002909                 mov     [ebp+Block], eax
.text:1000290F                 call    _fread
.text:10002914                 or      edx, 0FFFFFFFFh
.text:10002917                 add     esp, 30h
.text:1000291A                 xor     ecx, ecx
.text:1000291C                 xor     eax, eax
.text:1000291E                 mov     [ebp+var_14], 55004Eh
.text:10002925                 mov     [ebp+var_10], 42004Dh
.text:1000292C                 mov     [ebp+var_C], 520045h
.text:10002933                 mov     [ebp+var_8], bx
.text:10002937                 mov     [ebp+var_644], edx
.text:1000293D                 cmp     edi, ebx
.text:1000293F                 jle     short loc_10002970
.text:10002941
.text:10002941 loc_10002941:                           ; CODE XREF: DllMain(x,x,x)+141↓j
.text:10002941                 cmp     ecx, 0Ah
.text:10002944                 jg      short loc_1000296B
.text:10002946                 mov     edx, [ebp+Block]
.text:1000294C                 movzx   edx, byte ptr [eax+edx]
.text:10002950                 movsx   esi, byte ptr [ebp+ecx+var_14]
.text:10002955                 cmp     edx, esi
.text:10002957                 jnz     short loc_1000295C
.text:10002959                 inc     ecx
.text:1000295A                 jmp     short loc_1000295E
.text:1000295C ; ---------------------------------------------------------------------------
.text:1000295C
.text:1000295C loc_1000295C:                           ; CODE XREF: DllMain(x,x,x)+137↑j
.text:1000295C                 xor     ecx, ecx
.text:1000295E
.text:1000295E loc_1000295E:                           ; CODE XREF: DllMain(x,x,x)+13A↑j
.text:1000295E                 inc     eax
.text:1000295F                 cmp     eax, edi
.text:10002961                 jl      short loc_10002941
.text:10002963                 mov     edx, [ebp+var_644]
.text:10002969                 jmp     short loc_10002970
.text:1000296B ; ---------------------------------------------------------------------------
.text:1000296B
.text:1000296B loc_1000296B:                           ; CODE XREF: DllMain(x,x,x)+124↑j
.text:1000296B                 sub     eax, ecx
.text:1000296D                 lea     edx, [eax+0Eh]
.text:10002970
.text:10002970 loc_10002970:                           ; CODE XREF: DllMain(x,x,x)+11F↑j
.text:10002970                                         ; DllMain(x,x,x)+149↑j
.text:10002970                 mov     eax, [ebp+Block]
.text:10002976                 lea     esi, [edx+eax]
.text:10002979                 mov     edx, dword_100198F0
.text:1000297F                 mov     ecx, 42h ; 'B'
.text:10002984                 lea     edi, [ebp+var_334]
.text:1000298A                 mov     [ebp+var_644], esi
.text:10002990                 rep movsd
.text:10002992                 push    104h            ; Size
.text:10002997                 lea     ecx, [ebp+Src]
.text:1000299D                 push    ecx             ; Src
.text:1000299E                 push    edx             ; void *
.text:1000299F                 call    _memcpy
.text:100029A4                 mov     esi, [ebp+var_644]
.text:100029AA                 add     esi, 108h
.text:100029B0                 mov     ecx, 41h ; 'A'
.text:100029B5                 lea     edi, [ebp+var_12C]
.text:100029BB                 add     esp, 0Ch
.text:100029BE                 rep movsd
.text:100029C0                 xor     eax, eax
.text:100029C2                 jmp     short loc_100029D0
.text:100029C2 ; ---------------------------------------------------------------------------
.text:100029C4                 db 8Dh, 0A4h, 24h, 4 dup(0)
.text:100029CB ; ---------------------------------------------------------------------------
.text:100029CB                 jmp     short loc_100029D0
.text:100029CB ; ---------------------------------------------------------------------------
.text:100029CD                 align 10h
.text:100029D0
.text:100029D0 loc_100029D0:                           ; CODE XREF: DllMain(x,x,x)+1A2↑j
.text:100029D0                                         ; DllMain(x,x,x)+1AB↑j ...
.text:100029D0                 mov     cl, [ebp+eax+var_12C]
.text:100029D7                 not     cl
.text:100029D9                 mov     [ebp+eax+var_12C], cl
.text:100029E0                 inc     eax
.text:100029E1                 cmp     eax, 104h
.text:100029E6                 jl      short loc_100029D0
.text:100029E8                 mov     edx, [ebp+Block]
.text:100029EE                 push    edx             ; Block
.text:100029EF                 call    _free
.text:100029F4                 lea     eax, [ebp+var_12C]
.text:100029FA                 push    offset Mode     ; "rb"
.text:100029FF                 push    eax             ; FileName
.text:10002A00                 call    _fopen
.text:10002A05                 add     esp, 0Ch
.text:10002A08                 cmp     eax, ebx
.text:10002A0A                 jnz     short loc_10002A25
.text:10002A0C                 push    ebx             ; uType
.text:10002A0D                 push    offset Caption  ; "GRF Encryption - File not found"
.text:10002A12                 push    offset Text     ; "Couldn't locate the client executable."...
.text:10002A17                 push    ebx             ; hWnd
.text:10002A18                 call    ds:MessageBoxA
.text:10002A1E                 push    1               ; Code
.text:10002A20                 call    _exit
.text:10002A25 ; ---------------------------------------------------------------------------
.text:10002A25
.text:10002A25 loc_10002A25:                           ; CODE XREF: DllMain(x,x,x)+1EA↑j
.text:10002A25                 push    eax             ; Stream
.text:10002A26                 call    _fclose
.text:10002A2B                 mov     edi, dword_100198F0
.text:10002A31                 movzx   eax, byte ptr [edi+3]
.text:10002A35                 movzx   ecx, byte ptr [edi+2]
.text:10002A39                 movzx   edx, byte ptr [edi+1]
.text:10002A3D                 shl     eax, 8
.text:10002A40                 add     eax, ecx
.text:10002A42                 movzx   ecx, byte ptr [edi]
.text:10002A45                 shl     eax, 8
.text:10002A48                 add     eax, edx
.text:10002A4A                 shl     eax, 8
.text:10002A4D                 add     esp, 4
.text:10002A50                 add     eax, ecx
.text:10002A52                 xor     esi, esi
.text:10002A54
.text:10002A54 loc_10002A54:                           ; CODE XREF: DllMain(x,x,x)+25A↓j
.text:10002A54                 mov     edx, eax
.text:10002A56                 and     edx, 800000FFh
.text:10002A5C                 jns     short loc_10002A66
.text:10002A5E                 dec     edx
.text:10002A5F                 or      edx, 0FFFFFF00h
.text:10002A65                 inc     edx
.text:10002A66
.text:10002A66 loc_10002A66:                           ; CODE XREF: DllMain(x,x,x)+23C↑j
.text:10002A66                 xor     dl, [edi+esi+4]
.text:10002A6A                 imul    eax, 2Fh ; '/'
.text:10002A6D                 mov     byte_100198F8[esi], dl
.text:10002A73                 inc     esi
.text:10002A74                 cmp     esi, 100h
.text:10002A7A                 jl      short loc_10002A54
.text:10002A7C                 inc     dword_1001814C
.text:10002A82                 xor     eax, eax
.text:10002A84                 xor     esi, esi
.text:10002A86                 xor     edx, edx
.text:10002A88                 mov     byte_100198F4, 1
.text:10002A8F                 mov     [ebp+var_644], ebx
.text:10002A95                 mov     [ebp+var_648], ebx
.text:10002A9B                 xor     ecx, ecx
.text:10002A9D                 mov     [ebp+var_650], ebx
.text:10002AA3                 mov     [ebp+Block], ebx
.text:10002AA9                 mov     [ebp+var_64C], ebx
.text:10002AAF                 nop
.text:10002AB0
.text:10002AB0 loc_10002AB0:                           ; CODE XREF: DllMain(x,x,x)+2DE↓j
.text:10002AB0                 movzx   edi, byte_100198F8[eax]
.text:10002AB7                 add     [ebp+var_648], edi
.text:10002ABD                 movzx   edi, byte_100198F9[eax]
.text:10002AC4                 add     [ebp+var_64C], edi
.text:10002ACA                 movzx   edi, byte_100198FA[eax]
.text:10002AD1                 add     [ebp+Block], edi
.text:10002AD7                 movzx   edi, byte_100198FB[eax]
.text:10002ADE                 add     [ebp+var_644], eax
.text:10002AE4                 add     [ebp+var_650], edi
.text:10002AEA                 lea     ecx, [ecx+eax+1]
.text:10002AEE                 lea     edx, [edx+eax+2]
.text:10002AF2                 lea     esi, [esi+eax+3]
.text:10002AF6                 add     eax, 4
.text:10002AF9                 cmp     eax, 100h
.text:10002AFE                 jl      short loc_10002AB0
.text:10002B00                 mov     edi, [ebp+var_650]
.text:10002B06                 add     edi, [ebp+Block]
.text:10002B0C                 mov     eax, [ebp+var_648]
.text:10002B12                 add     edi, [ebp+var_64C]
.text:10002B18                 add     esi, edx
.text:10002B1A                 add     esi, ecx
.text:10002B1C                 mov     ecx, [ebp+var_644]
.text:10002B22                 add     ecx, esi
.text:10002B24                 add     eax, edi
.text:10002B26                 pop     esi
.text:10002B27                 cmp     ecx, eax
.text:10002B29                 jz      short loc_10002B43
.text:10002B2B                 push    100h            ; Size
.text:10002B30                 push    0               ; Val
.text:10002B32                 push    offset byte_100198F8 ; void *
.text:10002B37                 call    _memset
.text:10002B3C                 add     esp, 0Ch
.text:10002B3F                 xor     al, al
.text:10002B41                 jmp     short loc_10002B45
.text:10002B43 ; ---------------------------------------------------------------------------
.text:10002B43
.text:10002B43 loc_10002B43:                           ; CODE XREF: DllMain(x,x,x)+309↑j
.text:10002B43                 mov     al, 1
.text:10002B45
.text:10002B45 loc_10002B45:                           ; CODE XREF: DllMain(x,x,x)+321↑j
.text:10002B45                 movzx   ecx, al
.text:10002B48                 mov     dword_100199F8, ecx
.text:10002B4E                 lea     ecx, [ebp+var_12C]
.text:10002B54                 lea     eax, [ebp+Destination]
.text:10002B5A                 lea     ebx, [ebx+0]
.text:10002B60
.text:10002B60 loc_10002B60:                           ; CODE XREF: DllMain(x,x,x)+35A↓j
.text:10002B60                 mov     dl, [eax]
.text:10002B62                 cmp     dl, [ecx]
.text:10002B64                 jnz     short loc_10002B80
.text:10002B66                 test    dl, dl
.text:10002B68                 jz      short loc_10002B7C
.text:10002B6A                 mov     dl, [eax+1]
.text:10002B6D                 cmp     dl, [ecx+1]
.text:10002B70                 jnz     short loc_10002B80
.text:10002B72                 add     eax, 2
.text:10002B75                 add     ecx, 2
.text:10002B78                 test    dl, dl
.text:10002B7A                 jnz     short loc_10002B60
.text:10002B7C
.text:10002B7C loc_10002B7C:                           ; CODE XREF: DllMain(x,x,x)+348↑j
.text:10002B7C                 xor     eax, eax
.text:10002B7E                 jmp     short loc_10002B85
.text:10002B80 ; ---------------------------------------------------------------------------
.text:10002B80
.text:10002B80 loc_10002B80:                           ; CODE XREF: DllMain(x,x,x)+344↑j
.text:10002B80                                         ; DllMain(x,x,x)+350↑j
.text:10002B80                 sbb     eax, eax
.text:10002B82                 sbb     eax, 0FFFFFFFFh
.text:10002B85
.text:10002B85 loc_10002B85:                           ; CODE XREF: DllMain(x,x,x)+35E↑j
.text:10002B85                 test    eax, eax
.text:10002B87                 jz      short loc_10002BA3
.text:10002B89                 push    0               ; uType
.text:10002B8B                 push    offset Caption  ; "GRF Encryption - File not found"
.text:10002B90                 push    offset aTheClientExecu ; "The client executable is invalid. Encry"...
.text:10002B95                 push    0               ; hWnd
.text:10002B97                 call    ds:MessageBoxA
.text:10002B9D                 mov     dword_100199F8, ebx
.text:10002BA3
.text:10002BA3 loc_10002BA3:                           ; CODE XREF: DllMain(x,x,x)+1F↑j
.text:10002BA3                                         ; DllMain(x,x,x)+28↑j ...
.text:10002BA3                 mov     ecx, [ebp+var_4]
.text:10002BA6                 pop     edi
.text:10002BA7                 xor     ecx, ebp        ; StackCookie
.text:10002BA9                 mov     eax, 1
.text:10002BAE                 pop     ebx
.text:10002BAF                 call    @__security_check_cookie@4 ; __security_check_cookie(x)
.text:10002BB4                 mov     esp, ebp
.text:10002BB6                 pop     ebp
.text:10002BB7                 retn    0Ch
.text:10002BB7 _DllMain@12     endp
.text:10002BB7