Function at 0x4164f0
Capabilities:
Copy file
Create process on windows
Delete file

Disassembly:
sub esp, 0xc80
push ebx
push ebp
mov ebp, dword [esp + 0xc8c]
push esi
cmp ebp, 6
push edi
mov ebx, ecx
je 0x416954
jle 0x4169ea
cmp ebp, 9
jg 0x4169ea
lea esi, [ebx + 8]
xor eax, eax
mov ecx, esi
mov dword [esi + 0x2690], eax
mov dword [esi + 0x268c], eax
call fcn.004a3b20
mov ecx, esi
call fcn.004a3dc0
mov ax, word [0x500df0]
mov ecx, 0x81
mov word [esp + 0x678], ax
xor eax, eax
lea edi, [esp + 0x67a]
lea esi, [ebx + 0x6288c]
rep stosd dword es:[edi], eax
push str.Update.ini
push esi
push 0x4ee3cc
lea ecx, [esp + 0x684]
push 0x103
push ecx
stosw word es:[edi], ax
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x14
cmp ebp, 7
jne 0x416682
mov dx, word [0x500df0]
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x26a]
mov word [esp + 0x268], dx
push 0x5c
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edi, [ebx + 0x5ced0]
push edi
call dword [sym.imp.MSVCRT.dll_wcsrchr]
add esp, 8
test eax, eax
je 0x416682
sub eax, edi
sar eax, 1
inc eax
push eax
lea eax, [esp + 0x26c]
push edi
push eax
call dword [sym.imp.MSVCRT.dll_wcsncpy]
lea ecx, [esp + 0x274]
push ecx
push edi
call fcn.0049de50
add esp, 0x14
test eax, eax
je 0x416682
lea edx, [esp + 0x678]
push 0
push edx
mov ebp, 2
call fcn.004a8e00
add esp, 8
test eax, eax
je 0x416613
mov ebp, 1
lea eax, [esp + 0x678]
push ebp
lea ecx, [esp + 0x14]
push eax
push ecx
mov dword [esp + 0x1c], 0
call fcn.004ada90
mov edx, dword [esp + 0x1c]
add esp, 0xc
test edx, edx
je 0x41667b
mov eax, dword [ebx + 4]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*8]
lea ecx, [eax + ecx*2]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2]
mov ecx, dword [ebx + 0x62a98]
lea eax, [ecx + eax*8]
lea ecx, [eax + 0x820]
add eax, 0x618
push ecx
push eax
push 0x4ee3bc
push edx
call fcn.004ae220
lea edx, [esp + 0x20]
push 1
push edx
call fcn.004adc90
add esp, 0x18
push edi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov edi, dword [esp + 0xc98]
mov ecx, ebx
push edi
call fcn.00416280
test eax, eax
jne 0x4169ea
mov dword [esp + 0x1c], eax
mov eax, dword [0x73eec4]
mov ebp, str.open
mov dword [esp + 0x14], 0x4ee3a0
test eax, eax
mov dword [esp + 0x10], ebp
je 0x4166bf
mov dword [esp + 0x10], str.runas
test edi, edi
je 0x4166d9
push edi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x4166d9
push 0
push edi
call dword [sym.imp.USER32.dll_EndDialog]
jmp 0x4166ed
mov dword [esp + 0x14], 0x4ee380
mov dword [esp + 0x10], ebp
mov dword [esp + 0x1c], 1
lea eax, [esp + 0x678]
push 0
push eax
call fcn.004a8e00
add esp, 8
test eax, eax
je 0x416928
mov dx, word [0x500df0]
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x62]
mov word [esp + 0x60], dx
mov word [esp + 0x880], dx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x882]
mov word [esp + 0x470], dx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov edx, dword [0x73ff2c]
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x472]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x880]
push 0x104
push ecx
push edx
stosw word es:[edi], ax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0x60]
push 0x104
lea ecx, [esp + 0x884]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetShortPathNameW]
mov ebp, dword [sym.imp.MSVCRT.dll__snwprintf]
push 0x4ee314
push esi
push 0x4ee3cc
lea edx, [esp + 0x47c]
push 0x103
push edx
call ebp
mov ax, word [0x500df0]
mov edx, dword [esp + 0x28]
mov word [esp + 0xa9c], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0xa9e]
rep stosd dword es:[edi], eax
add esp, 0x14
lea ecx, [esp + 0x60]
stosw word es:[edi], ax
push ecx
push edx
push 0x4ee374
lea eax, [esp + 0xa94]
push 0x103
push eax
call ebp
lea ecx, [esp + 0x484]
push 0
push ecx
call fcn.004a8e00
add esp, 0x1c
test eax, eax
jne 0x416824
lea edx, [esp + 0x470]
push edx
call fcn.004a9280
add esp, 4
lea eax, [esp + 0x470]
lea ecx, [esp + 0x60]
push 1
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov dx, word [0x500df0]
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x26a]
mov word [esp + 0x268], dx
push 3
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [esp + 0x64]
push 0x4ee118
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
add esp, 4
lea ecx, [esp + eax*2 + 0x62]
push ecx
call dword [sym.imp.MSVCRT.dll_wcsncpy]
add esp, 0xc
lea edx, [esp + 0x268]
push str.TheWorld.ini
push esi
push 0x4ee3cc
push 0x103
push edx
call ebp
lea eax, [esp + 0x74]
push 0
push eax
call fcn.004a8e00
add esp, 0x1c
test eax, eax
je 0x4168ba
lea ecx, [esp + 0x268]
push ecx
call fcn.004a9280
add esp, 4
lea edx, [esp + 0x268]
lea eax, [esp + 0x60]
push 1
push edx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov ecx, 0xf
xor eax, eax
lea edi, [esp + 0x24]
lea edx, [esp + 0x470]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], ecx
lea ecx, [esp + 0x24]
lea eax, [esp + 0xa88]
push ecx
mov dword [esp + 0x28], 0x3c
mov dword [esp + 0x2c], 0x40
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x44], 5
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x416928
mov edx, dword [esp + 0x5c]
push 0xffffffffffffffff
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [esp + 0x5c]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4169ea
mov ecx, dword [ebx + 0x62aa8]
push 0
push 0
push 0x12
push ecx
call dword [sym.imp.USER32.dll_PostThreadMessageW]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc80
ret 8
mov edi, dword [esp + 0xc98]
test edi, edi
je 0x4169ea
push edi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x4169ea
mov ecx, dword [ebx + 0x5cec0]
mov edx, dword [ebx + 0x5cec4]
mov esi, dword [ebx + 0x5cec8]
mov ebx, dword [ebx + 0x5cecc]
xor eax, eax
cmp ecx, 0xffffffff
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], ebx
jne 0x4169a1
cmp edx, ecx
je 0x4169cf
test ecx, ecx
jne 0x4169a9
test edx, edx
je 0x4169cf
cmp esi, 0xffffffff
jne 0x4169b2
cmp ebx, esi
je 0x4169cf
test esi, esi
jne 0x4169ba
test ebx, ebx
je 0x4169cf
fild qword [esp + 0x1c]
fild qword [esp + 0x14]
fdivp st(1)
fmul qword [0x4ddcb8]
call sub.MSVCRT.dll__ftol
push 0
push eax
push 0x402
push 0x3f0
push edi
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc80
ret 8