Function at 0x492ee0
Capabilities:
Copy file
Get common file path
Get file version info

Disassembly:
sub esp, 0x344
mov eax, dword [0x52e144]
xor eax, esp
mov dword [esp + 0x340], eax
push 0x103
lea eax, [esp + 0x39]
push 0
push eax
mov byte [esp + 0x40], 0
call fcn.004b6dc0
push 0x103
lea ecx, [esp + 0x149]
push 0
push ecx
mov byte [esp + 0x150], 0
call fcn.004b6dc0
push 0x103
lea edx, [esp + 0x259]
push 0
push edx
mov byte [esp + 0x260], 0
call fcn.004b6dc0
add esp, 0x24
lea eax, [esp + 0x34]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
xor eax, eax
jmp 0x492f60
mov cl, byte [esp + eax + 0x34]
mov byte [esp + eax + 0x23c], cl
inc eax
test cl, cl
jne 0x492f60
xor eax, eax
mov cl, byte [esp + eax + 0x34]
mov byte [esp + eax + 0x138], cl
inc eax
test cl, cl
jne 0x492f72
lea ecx, [esp + 0x138]
push 0x5c
push ecx
call fcn.004b9510
add esp, 8
test eax, eax
je 0x49332e
push 0x510524
mov byte [eax], 0
call fcn.00404690
add esp, 4
mov ecx, eax
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x492fb0
push esi
push edi
lea edi, [esp + 0x140]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x492fc5
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x510524
rep movsb byte es:[edi], byte [esi]
call fcn.00404690
add esp, 4
mov ecx, eax
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x492ff0
lea edi, [esp + 0x3c]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x493000
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea edx, [esp + 0x3c]
and ecx, 3
push 0
push edx
rep movsb byte es:[edi], byte [esi]
call fcn.004ba516
add esp, 8
cmp eax, 0xffffffff
je 0x49332c
push ebx
push ebp
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x14c]
push ecx
mov dword [esp + 0x18], 0
xor esi, esi
xor edi, edi
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov ebp, eax
test ebp, ebp
je 0x4930c4
push ebp
call fcn.004b97b1
mov edx, dword [esp + 0x14]
add esp, 4
mov ebx, eax
push ebx
push ebp
push edx
lea eax, [esp + 0x154]
push eax
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
je 0x4930bb
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x20]
push edx
push 0x50e37c
push ebx
mov dword [esp + 0x30], edi
call sub.VERSION.dll_VerQueryValueA
mov eax, dword [esp + 0x1c]
cmp dword [eax], 0xfeef04bd
jne 0x4930bb
movzx edi, word [eax + 0xa]
movzx ecx, word [eax + 8]
imul edi, edi, 0x64
movzx edx, word [eax + 0xe]
movzx eax, word [eax + 0xc]
add edi, ecx
imul edi, edi, 0x64
add edi, edx
imul edi, edi, 0x64
add edi, eax
push ebx
call fcn.004b97a6
add esp, 4
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x48]
push edx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov ebx, eax
test ebx, ebx
je 0x49314e
push ebx
call fcn.004b97b1
add esp, 4
mov ebp, eax
mov eax, dword [esp + 0x10]
push ebp
push ebx
push eax
lea ecx, [esp + 0x50]
push ecx
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
je 0x493141
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x18]
push eax
push 0x50e37c
push ebp
mov dword [esp + 0x28], 0
call sub.VERSION.dll_VerQueryValueA
mov eax, dword [esp + 0x14]
cmp dword [eax], 0xfeef04bd
jne 0x493141
movzx esi, word [eax + 0xa]
movzx ecx, word [eax + 8]
imul esi, esi, 0x64
movzx edx, word [eax + 0xe]
movzx eax, word [eax + 0xc]
add esi, ecx
imul esi, esi, 0x64
add esi, edx
imul esi, esi, 0x64
add esi, eax
push ebp
call fcn.004b97a6
add esp, 4
cmp edi, esi
jb 0x49315b
cmp byte [0x53788e], 0
je 0x49332a
test esi, esi
je 0x49330d
test edi, edi
je 0x49330d
cmp byte [0x53788e], 0
push esi
push edi
je 0x49317d
push 0x51fe68
jmp 0x493182
push 0x51fe18
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
lea edi, [esp + 0x25c]
add esp, 0x10
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4931a0
mov cx, word [0x50e37c]
mov eax, 0x53972c
mov word [edi], cx
mov ecx, eax
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4931c0
lea edi, [esp + 0x24c]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4931d3
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x51fe08
rep movsb byte es:[edi], byte [esi]
call fcn.00404690
add esp, 4
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4931f8
lea edi, [esp + 0x24c]
sub eax, ecx
mov esi, ecx
dec edi
jmp 0x493210
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x493210
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 0
lea edx, [esp + 0x14c]
and ecx, 3
push edx
lea eax, [esp + 0x4c]
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileA]
push eax
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x493253
push 0x51fde8
call fcn.00404690
jmp 0x493263
call edi
push eax
push 0x51fdc0
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
xor eax, eax
add esp, 0xc
push 0x53972c
push 0x51fdb0
mov byte [esp + 0x2c], 0
mov dword [esp + 0x2d], eax
mov dword [esp + 0x31], eax
mov dword [esp + 0x35], eax
mov dword [esp + 0x39], eax
mov dword [esp + 0x3d], eax
mov dword [esp + 0x41], eax
mov dword [esp + 0x45], eax
mov word [esp + 0x49], ax
mov byte [esp + 0x4b], al
call fcn.00404690
add esp, 4
push eax
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push 0
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x254]
push eax
call esi
test eax, eax
je 0x4932ed
push 0x51fd94
call fcn.00404690
push eax
push 0x527e20
call fcn.00401350
add esp, 0xc
jmp 0x49332a
call edi
push eax
push 0x51fd78
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
add esp, 0xc
jmp 0x49332a
push edi
push esi
push 0x51fd30
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
add esp, 0x10
pop ebp
pop ebx
pop edi
pop esi
mov ecx, dword [esp + 0x340]
xor ecx, esp
call fcn.004b6da3
add esp, 0x344
ret