converta o assembly em c++

; int __usercall sub_10003460@<eax>(unsigned int@<eax>, int@<edx>, _BYTE *@<ecx>, int *)
.text:10003460 sub_10003460    proc near               ; CODE XREF: uncompress+49↑p
.text:10003460                                         ; uncompress+64↑p ...
.text:10003460
.text:10003460 var_44          = dword ptr -44h
.text:10003460 var_40          = dword ptr -40h
.text:10003460 var_38          = dword ptr -38h
.text:10003460 var_34          = dword ptr -34h
.text:10003460 var_30          = dword ptr -30h
.text:10003460 var_C           = byte ptr -0Ch
.text:10003460 var_8           = dword ptr -8
.text:10003460 arg_0           = dword ptr  8
.text:10003460
.text:10003460                 push    ebp
.text:10003461                 mov     ebp, esp
.text:10003463                 sub     esp, 48h
.text:10003466                 push    ebx
.text:10003467                 push    esi
.text:10003468                 mov     esi, eax
.text:1000346A                 push    edi
.text:1000346B                 mov     edi, ecx
.text:1000346D                 mov     ebx, edx
.text:1000346F                 test    esi, esi
.text:10003471                 jnz     short loc_1000347D
.text:10003473
.text:10003473 loc_10003473:                           ; CODE XREF: sub_10003460+25↓j
.text:10003473                 or      eax, 0FFFFFFFFh
.text:10003476                 pop     edi
.text:10003477                 pop     esi
.text:10003478                 pop     ebx
.text:10003479                 mov     esp, ebp
.text:1000347B                 pop     ebp
.text:1000347C                 retn
.text:1000347D ; ---------------------------------------------------------------------------
.text:1000347D
.text:1000347D loc_1000347D:                           ; CODE XREF: sub_10003460+11↑j
.text:1000347D                 cmp     byte ptr [edi], 0
.text:10003480                 jnz     short loc_100034AE
.text:10003482                 cmp     esi, 6
.text:10003485                 jb      short loc_10003473
.text:10003487                 lea     eax, [ebp+var_C]
.text:1000348A                 push    eax
.text:1000348B                 lea     ecx, [edi+1]
.text:1000348E                 push    ecx
.text:1000348F                 push    ebx
.text:10003490                 mov     ebx, [ebp+arg_0]
.text:10003493                 add     esi, 0FFFFFFFAh
.text:10003496                 lea     ecx, [edi+6]
.text:10003499                 lea     edx, [ebp+var_8]
.text:1000349C                 mov     [ebp+var_8], esi
.text:1000349F                 call    sub_10002720
.text:100034A4                 add     esp, 0Ch
.text:100034A7                 pop     edi
.text:100034A8                 pop     esi
.text:100034A9                 pop     ebx
.text:100034AA                 mov     esp, ebp
.text:100034AC                 pop     ebp
.text:100034AD                 retn
.text:100034AE ; ---------------------------------------------------------------------------
.text:100034AE
.text:100034AE loc_100034AE:                           ; CODE XREF: sub_10003460+20↑j
.text:100034AE                 push    38h ; '8'       ; Size
.text:100034B0                 lea     edx, [ebp+var_44]
.text:100034B3                 push    0               ; Val
.text:100034B5                 push    edx             ; void *
.text:100034B6                 call    _memset
.text:100034BB                 mov     eax, [ebp+arg_0]
.text:100034BE                 mov     eax, [eax]
.text:100034C0                 mov     ecx, eax
.text:100034C2                 or      ecx, esi
.text:100034C4                 add     esp, 0Ch
.text:100034C7                 cmp     ecx, 0FFFFFFFFh
.text:100034CA                 jbe     short loc_100034D8
.text:100034CC                 mov     eax, 0FFFFD8F0h
.text:100034D1                 pop     edi
.text:100034D2                 pop     esi
.text:100034D3                 pop     ebx
.text:100034D4                 mov     esp, ebp
.text:100034D6                 pop     ebp
.text:100034D7                 retn
.text:100034D8 ; ---------------------------------------------------------------------------
.text:100034D8
.text:100034D8 loc_100034D8:                           ; CODE XREF: sub_10003460+6A↑j
.text:100034D8                 mov     [ebp+var_40], esi
.text:100034DB                 lea     esi, [ebp+var_44]
.text:100034DE                 mov     [ebp+var_44], edi
.text:100034E1                 mov     [ebp+var_38], ebx
.text:100034E4                 mov     [ebp+var_34], eax
.text:100034E7                 call    sub_10002F90
.text:100034EC                 test    eax, eax
.text:100034EE                 jnz     short loc_10003525
.text:100034F0                 call    sub_10003020
.text:100034F5                 mov     edi, eax
.text:100034F7                 cmp     edi, 1
.text:100034FA                 jz      short loc_10003518
.text:100034FC                 call    sub_10003280
.text:10003501                 cmp     edi, 0FFFFFFFBh
.text:10003504                 jnz     short loc_1000350F
.text:10003506                 cmp     [ebp+var_40], 0
.text:1000350A                 lea     eax, [edi+2]
.text:1000350D                 jz      short loc_10003525
.text:1000350F
.text:1000350F loc_1000350F:                           ; CODE XREF: sub_10003460+A4↑j
.text:1000350F                 mov     eax, edi
.text:10003511                 pop     edi
.text:10003512                 pop     esi
.text:10003513                 pop     ebx
.text:10003514                 mov     esp, ebp
.text:10003516                 pop     ebp
.text:10003517                 retn
.text:10003518 ; ---------------------------------------------------------------------------
.text:10003518
.text:10003518 loc_10003518:                           ; CODE XREF: sub_10003460+9A↑j
.text:10003518                 mov     edx, [ebp+var_30]
.text:1000351B                 mov     eax, [ebp+arg_0]
.text:1000351E                 mov     [eax], edx
.text:10003520                 call    sub_10003280
.text:10003525
.text:10003525 loc_10003525:                           ; CODE XREF: sub_10003460+8E↑j
.text:10003525                                         ; sub_10003460+AD↑j
.text:10003525                 pop     edi
.text:10003526                 pop     esi
.text:10003527                 pop     ebx
.text:10003528                 mov     esp, ebp
.text:1000352A                 pop     ebp
.text:1000352B                 retn
.text:1000352B sub_10003460    endp
.text:1000352B