Function at 0x4376c0
Capabilities:
Check if file exists
Copy file
Link many functions at runtime
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x414
mov eax, dword [0x45b010]
xor eax, ebp
mov dword [ebp - 4], eax
push edi
mov edi, ecx
test edi, edi
jne 0x4376eb
xor al, al
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00431fdc
mov esp, ebp
pop ebp
ret
cmp byte [edi], 0
jne 0x4376f4
xor eax, eax
jmp 0x4376fe
push edi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strlen]
add esp, 4
push esi
push eax
mov esi, 0x45ecc0
push edi
mov ecx, esi
call fcn.00401869
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x43788d
push 0x104
push eax
lea eax, [ebp - 0x20c]
push eax
call sub.VCRUNTIME140.dll_memset
push edi
lea eax, [ebp - 0x20c]
push 0x104
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcpy_s]
add esp, 0x18
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
push str.dr_backup.dll
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp byte [ebp - 0x20c], 0
mov dword [0x45ebb8], eax
jne 0x437782
xor edi, edi
jmp 0x437795
lea eax, [ebp - 0x20c]
push eax
mov eax, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strlen]
call eax
add esp, 4
mov edi, eax
cmp dword [0x45ecd4], 0x10
lea eax, [ebp - 0x20c]
mov edx, dword [0x45ecc0]
mov ecx, esi
cmovae ecx, edx
cmp eax, ecx
jb 0x4377fa
cmp dword [0x45ecd4], 0x10
lea ecx, [ebp - 0x20c]
mov eax, esi
cmovae eax, edx
add eax, dword [0x45ecd0]
cmp eax, ecx
mov ecx, dword [0x45ecd4]
jbe 0x437800
cmp ecx, 0x10
lea eax, [ebp - 0x20c]
mov edx, esi
mov ecx, esi
cmovae edx, dword [0x45ecc0]
push edi
sub eax, edx
push eax
push 0x45ecc0
call fcn.004018d8
jmp 0x437baf
mov ecx, dword [0x45ecd4]
cmp edi, 0xfffffffe
jbe 0x437810
push str.string_too_long
call dword [sym.imp.MSVCP140.dll_void___cdecl_std::_Xlength_error_char_const__]
cmp ecx, edi
jae 0x437875
push dword [0x45ecd0]
mov ecx, esi
push edi
call fcn.00401b95
mov ecx, dword [0x45ecd4]
mov edx, dword [0x45ecc0]
test edi, edi
je 0x437baf
cmp ecx, 0x10
mov eax, esi
cmovae eax, edx
test edi, edi
je 0x437860
push edi
lea ecx, [ebp - 0x20c]
push ecx
push eax
call dword [sym.imp.VCRUNTIME140.dll_memcpy]
mov ecx, dword [0x45ecd4]
add esp, 0xc
mov edx, dword [0x45ecc0]
cmp ecx, 0x10
mov dword [0x45ecd0], edi
cmovae esi, edx
mov byte [esi + edi], 0
jmp 0x437baf
test edi, edi
jne 0x437836
cmp ecx, 0x10
mov dword [0x45ecd0], edi
cmovae esi, edx
mov byte [esi], 0
jmp 0x437baf
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp byte [edi], 0
mov dword [0x45ebb8], eax
jne 0x4378a2
xor eax, eax
jmp 0x4378ad
mov eax, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strlen]
push edi
call eax
add esp, 4
push eax
push edi
mov ecx, esi
call fcn.00401869
cmp dword [0x45ebb8], 0
jne 0x437bbc
push 0x104
lea eax, [ebp - 0x108]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push edi
lea eax, [ebp - 0x108]
push 0x104
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcpy_s]
add esp, 0x18
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
push str.newDr.dll
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x43792b
push eax
lea eax, [ebp - 0x108]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp byte [ebp - 0x108], 0
mov dword [0x45ebb8], eax
jne 0x437950
xor edx, edx
mov dword [ebp - 0x414], edx
jmp 0x437968
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strlen]
add esp, 4
mov dword [ebp - 0x414], eax
mov edx, eax
cmp dword [0x45ecd4], 0x10
lea eax, [ebp - 0x108]
mov ecx, esi
cmovae ecx, dword [0x45ecc0]
cmp eax, ecx
mov ecx, dword [0x45ecd4]
jb 0x4379d2
cmp ecx, 0x10
lea edx, [ebp - 0x108]
mov eax, esi
cmovae eax, dword [0x45ecc0]
add eax, dword [0x45ecd0]
cmp eax, edx
mov edx, dword [ebp - 0x414]
jbe 0x4379d2
cmp dword [0x45ecd4], 0x10
lea eax, [ebp - 0x108]
mov ecx, esi
cmovae ecx, dword [0x45ecc0]
push edx
sub eax, ecx
mov ecx, esi
push eax
push 0x45ecc0
call fcn.004018d8
jmp 0x437a4c
cmp edx, 0xfffffffe
jbe 0x4379e2
push str.string_too_long
call dword [sym.imp.MSVCP140.dll_void___cdecl_std::_Xlength_error_char_const__]
cmp ecx, edx
jae 0x437af2
push dword [0x45ecd0]
mov ecx, esi
push edx
call fcn.00401b95
mov edx, dword [ebp - 0x414]
mov ecx, dword [0x45ecd4]
test edx, edx
je 0x437a4c
cmp ecx, 0x10
mov eax, esi
cmovae eax, dword [0x45ecc0]
test edx, edx
je 0x437a36
push edx
lea ecx, [ebp - 0x108]
push ecx
push eax
call dword [sym.imp.VCRUNTIME140.dll_memcpy]
mov edx, dword [ebp - 0x414]
add esp, 0xc
mov ecx, dword [0x45ecd4]
cmp ecx, 0x10
mov dword [0x45ecd0], edx
mov eax, esi
cmovae eax, dword [0x45ecc0]
mov byte [edx + eax], 0
cmp dword [0x45ebb8], 0
jne 0x437bbc
push 0x104
lea eax, [ebp - 0x310]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push edi
lea eax, [ebp - 0x310]
push 0x104
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcpy_s]
add esp, 0x18
lea eax, [ebp - 0x310]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
push str.newDr_append.dll
lea eax, [ebp - 0x310]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea eax, [ebp - 0x310]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x437ac1
push eax
lea eax, [ebp - 0x310]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileA]
push 0
push 0x80
push 3
push 0
push 0
push 0xc0000000
lea eax, [ebp - 0x310]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x437b13
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x437baf
test edx, edx
jne 0x437a08
cmp ecx, 0x10
mov dword [0x45ecd0], edx
mov eax, esi
cmovae eax, dword [0x45ecc0]
mov byte [eax], dl
jmp 0x437a4c
push 2
push 0
push 0
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov eax, dword [str.hello]
mov dword [ebp - 0x410], eax
mov ax, word [0x442a20]
push 0xfa
mov word [ebp - 0x40c], ax
lea eax, [ebp - 0x40a]
push 0
push eax
mov dword [ebp - 0x414], 0
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [ebp - 0x414]
push 0
push eax
lea eax, [ebp - 0x410]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
lea eax, [ebp - 0x410]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x437ba8
push edi
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
lea eax, [ebp - 0x310]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x45ebb8], eax
mov ecx, esi
lea eax, [ebp - 0x310]
push eax
call fcn.004016d8
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [0x45ebb8], 0
je 0x437c5b
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.Init
push dword [0x45ebb8]
call esi
push str.CreateIReportClient
push dword [0x45ebb8]
mov dword [0x45ebc0], eax
call esi
push str.ReleaseIReportClient
push dword [0x45ebb8]
mov dword [0x45ebac], eax
call esi
push str.GetGuid
push dword [0x45ebb8]
mov dword [0x45ebb0], eax
call esi
push str.UnInit
push dword [0x45ebb8]
mov dword [0x45ebb4], eax
call esi
cmp dword [0x45ebc0], 0
mov dword [0x45ebbc], eax
je 0x437c56
cmp dword [0x45ebac], 0
je 0x437c56
cmp dword [0x45ebb0], 0
je 0x437c56
cmp dword [0x45ebb4], 0
je 0x437c56
test eax, eax
je 0x437c56
pop esi
mov al, 1
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00431fdc
mov esp, ebp
pop ebp
ret
call fcn.00437c70
mov ecx, dword [ebp - 4]
xor al, al
pop esi
xor ecx, ebp
pop edi
call fcn.00431fdc
mov esp, ebp
pop ebp
ret