Function at 0x401770
Capabilities:
Copy file
Create directory
Create process on windows
Create shortcut via ishelllink
Delete file
Delete registry value
Enumerate files on windows
Get file attributes
Get file version info
Move file
Query environment variable
Query or enumerate registry key
Query or enumerate registry value
Read .ini file
Read file on windows
Set current directory
Set file attributes
Set registry value
Write and execute a file
Write file on windows

Disassembly:
sub esp, 0x19c
push ebx
push ebp
mov ebp, dword [0x425bc4]
push esi
push edi
mov esi, eax
mov ecx, 7
lea edi, [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x24]
mov dword [0x40d0e0], edx
mov edx, dword [esp + 0x20]
mov edi, eax
mov ebx, ecx
shl edi, 0xa
shl ebx, 0xa
add edx, 0xfffffffe
add edi, section..ndata
add ebx, section..ndata
cmp edx, 0x41
mov dword [esp + 0x10], 0
ja case.0x4017cd.65
jmp dword [edx*4 + 0x403344]
xor ecx, ecx
call fcn.00406620
mov eax, 0x7fffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
add dword [0x42538c], 1
test ebp, ebp
je 0x4017fe
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
mov eax, 0x7fffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
call fcn.004014f0
sub eax, 1
push 0
push eax
call fcn.00401510
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
xor ecx, ecx
call fcn.00406620
jmp case.0x4017cd.65
xor ecx, ecx
call fcn.004015d0
cmp eax, 1
jg 0x401846
mov eax, 1
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp case.0x4017cd.65
push ebp
call dword [sym.imp.USER32.dll_SetForegroundWindow]
jmp case.0x4017cd.65
cmp dword [esp + 0x2c], 0
jne 0x40188d
mov ecx, dword [eax*4 + 0x425c80]
mov dword [eax*4 + 0x425c40], ecx
mov ecx, 1
call fcn.004015d0
mov edx, dword [esp + 0x24]
mov dword [edx*4 + 0x425c80], eax
jmp case.0x4017cd.65
mov ecx, dword [eax*4 + 0x425c40]
mov dword [eax*4 + 0x425c80], ecx
jmp case.0x4017cd.65
mov edx, dword [esp + 0x2c]
mov ecx, dword [edx*4 + 0x425c80]
xor eax, eax
test ecx, ecx
sete al
and ecx, dword [esp + 0x30]
mov dword [edx*4 + 0x425c80], ecx
mov eax, dword [esp + eax*4 + 0x24]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
mov ecx, dword [ecx*4 + 0x425c80]
push ecx
push 0x4095f8
push edi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp case.0x4017cd.65
mov edx, dword [0x425398]
test edx, edx
mov esi, dword [sym.imp.USER32.dll_ShowWindow]
je 0x401900
push ecx
push edx
call esi
mov eax, dword [esp + 0x24]
mov ecx, dword [0x425384]
test ecx, ecx
je case.0x4017cd.65
push eax
push ecx
call esi
jmp case.0x4017cd.65
push eax
push 0x40b8e0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
mov edx, dword [esp + 0x28]
push edx
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
test eax, eax
jne case.0x4017cd.65
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
push eax
push 0x40b8e0
call fcn.00407620
mov edi, eax
push edi
call fcn.004078e0
call fcn.00406ff0
mov esi, eax
test esi, esi
je 0x4019af
mov ebp, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
nop
mov bl, 0x5c
mov eax, esi
call fcn.00406f80
mov esi, eax
mov bl, byte [esi]
push 0
push edi
mov byte [esi], 0
call ebp
test eax, eax
jne 0x4019a6
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4019a1
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test al, 0x10
jne 0x4019a6
add dword [esp + 0x10], 1
mov byte [esi], bl
add esi, 1
test bl, bl
jne 0x401970
cmp dword [esp + 0x28], 0
mov ecx, 0x40b8e0
je 0x4019e2
mov eax, 0xffffffe6
call fcn.00406620
push 0x400
push edi
push 0x42b800
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
push edi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
jmp case.0x4017cd.65
mov eax, 0xfffffff5
call fcn.00406620
jmp case.0x4017cd.65
push eax
push 0x40b4e0
call fcn.00407620
call fcn.004079d0
test eax, eax
je 0x401f40
mov eax, dword [esp + 0x28]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
push eax
push 0x40c0e0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 4]
push ecx
push 0x40bce0
call fcn.00407620
mov edi, eax
push edi
call fcn.004078e0
mov edx, dword [0x40d0e0]
mov eax, dword [edx + 0xc]
push eax
push 0x40b8e0
call fcn.00407620
push edi
push esi
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
je 0x401a7a
mov ecx, 0x40b8e0
mov eax, 0xffffffe3
call fcn.00406620
jmp case.0x4017cd.65
cmp dword [esp + 0x2c], 0
je 0x40193e
mov eax, esi
call fcn.004079d0
test eax, eax
je 0x40193e
push esi
mov eax, edi
call fcn.004072c0
mov ecx, 0x40b8e0
mov eax, 0xffffffe4
call fcn.00406620
jmp case.0x4017cd.65
push eax
push 0x40b4e0
call fcn.00407620
lea ecx, [esp + 0x14]
push ecx
push ebx
mov esi, eax
push 0x400
push esi
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
test eax, eax
je 0x401b01
mov eax, dword [esp + 0x14]
cmp eax, esi
jbe 0x401b0c
cmp byte [eax], 0
je 0x401b0c
mov eax, esi
call fcn.004079d0
test eax, eax
je 0x401b01
mov edx, dword [esp + 0x14]
push 0x400
add eax, 0x2c
push eax
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x401b0c
mov byte [ebx], 0
mov dword [esp + 0x10], 1
cmp dword [esp + 0x2c], 0
jne case.0x4017cd.65
push 0x400
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
jmp case.0x4017cd.65
push ecx
push 0x40b4e0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
lea eax, [esp + 0x3c]
push eax
push edi
push 0x400
push 0
push esi
push 0
call dword [sym.imp.KERNEL32.dll_SearchPathA]
test eax, eax
jne case.0x4017cd.65
mov dword [esp + 0x10], 1
mov byte [edi], 0
jmp case.0x4017cd.65
push ecx
push 0x40b8e0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
push esi
push edi
call fcn.00407250
test eax, eax
jne case.0x4017cd.65
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
push ecx
push 0x40c0e0
call fcn.00407620
mov ebx, dword [esp + 0x24]
mov ebp, eax
mov ecx, ebp
and ebx, 7
call fcn.00406fd0
test eax, eax
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpynA]
push 0x400
je 0x401bcd
push ebp
push 0x40b4e0
call edi
jmp 0x401be8
push 0x42b800
push 0x40b4e0
call edi
mov esi, eax
call fcn.00406f50
push ebp
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x40b4e0
call fcn.004078e0
cmp ebx, 3
jl 0x401c2a
mov eax, 0x40b4e0
call fcn.004079d0
xor ecx, ecx
test eax, eax
je 0x401c18
lea ecx, [esp + 0x30]
push ecx
add eax, 0x14
push eax
call dword [sym.imp.KERNEL32.dll_CompareFileTime]
mov ecx, eax
add ebx, 0xfffffffd
or ebx, 0x80000000
and ebx, ecx
neg ebx
sbb ebx, ebx
add ebx, 1
test ebx, ebx
jne 0x401c38
mov esi, 0x40b4e0
call fcn.00407200
xor edx, edx
cmp ebx, 1
setne dl
mov esi, 0x40b4e0
add edx, 1
push edx
push 0x40000000
call fcn.00407220
mov esi, eax
cmp esi, 0xffffffff
jne 0x401d16
test ebx, ebx
jne 0x401ce0
push 0x400
push section..ndata
push 0x40bce0
call edi
push 0x400
push 0x40b4e0
push section..ndata
call edi
mov eax, dword [esp + 0x38]
push eax
push 0x40b8e0
call fcn.00407620
push 0x400
push 0x40bce0
push section..ndata
call edi
mov eax, dword [esp + 0x24]
sar eax, 3
push 0x40b8e0
call fcn.00406c50
sub eax, 4
je 0x401bf2
sub eax, 1
je 0x401d02
mov ecx, 0x40b4e0
lea eax, [ebx - 6]
call fcn.00406620
mov eax, 0x7fffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
mov ecx, ebp
mov eax, 0xffffffe2
call fcn.00406620
cmp ebx, 2
jne case.0x4017cd.65
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
add dword [0x425c88], 1
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
mov ecx, ebp
mov eax, 0xffffffea
call fcn.00406620
mov ecx, dword [esp + 0x2c]
push 0
push 0
push esi
mov ebx, 1
add dword [0x425cb4], ebx
push ecx
call fcn.004038f0
sub dword [0x425cb4], ebx
mov edi, eax
or eax, 0xffffffff
cmp dword [esp + 0x30], eax
jne 0x401d53
cmp dword [esp + 0x34], eax
je 0x401d64
lea edx, [esp + 0x30]
push edx
push 0
mov eax, edx
push eax
push esi
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test edi, edi
jge case.0x4017cd.65
cmp edi, 0xfffffffe
jne 0x401d92
push 0xffffffffffffffe9
push 0x40b4e0
call fcn.00407620
push ebp
push 0x40b4e0
call dword [sym.imp.KERNEL32.dll_lstrcatA]
jmp 0x401d9e
push 0xffffffffffffffee
push 0x40b4e0
call fcn.00407620
push 0x40b4e0
mov eax, 0x200010
call fcn.00406c50
mov eax, 0x7fffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
push eax
push 0x40b4e0
call fcn.00407620
mov ecx, dword [esp + 0x28]
push ecx
push eax
call fcn.00406cc0
jmp case.0x4017cd.65
push ecx
push 0x40c0e0
call fcn.00407620
push eax
mov eax, dword [esp + 0x28]
call fcn.00406c50
test eax, eax
je 0x40193e
cmp eax, dword [esp + 0x2c]
jne 0x401e0a
mov eax, dword [esp + 0x30]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
cmp eax, dword [esp + 0x34]
jne case.0x4017cd.65
mov eax, dword [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
push eax
push 0x40b8e0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
mov edx, dword [esp + 0x28]
push edx
push esi
call fcn.00406cc0
jmp case.0x4017cd.65
push ecx
push 0x40b4e0
call fcn.00407620
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push 0x4095f8
push edi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp case.0x4017cd.65
mov ecx, 2
call fcn.004015d0
mov ecx, 3
mov ebx, eax
call fcn.004015d0
mov esi, eax
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 4]
push ecx
push 0x40b4e0
call fcn.00407620
cmp dword [esp + 0x2c], 0
mov ebp, eax
mov byte [edi], 0
je 0x401eac
test ebx, ebx
je case.0x4017cd.65
push ebp
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test esi, esi
jge 0x401ebf
add esi, eax
js case.0x4017cd.65
cmp esi, eax
jle 0x401ec5
mov esi, eax
push 0x400
add ebp, esi
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
test ebx, ebx
je case.0x4017cd.65
jge 0x401ef3
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add ebx, eax
jns 0x401ef3
xor ebx, ebx
mov byte [ebx + edi], bl
jmp case.0x4017cd.65
cmp ebx, 0x400
jge case.0x4017cd.65
mov byte [ebx + edi], 0
jmp case.0x4017cd.65
push eax
push 0x40bce0
call fcn.00407620
mov edx, dword [0x40d0e0]
mov esi, eax
mov eax, dword [edx + 4]
push eax
push 0x40c0e0
call fcn.00407620
cmp dword [esp + 0x34], 0
push eax
push esi
jne 0x401f4f
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x401dfb
mov eax, dword [esp + 0x2c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
jne 0x401dfb
mov eax, dword [esp + 0x2c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
push ecx
push 0x40b4e0
call fcn.00407620
push 0x400
mov esi, eax
push edi
push esi
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsA]
test eax, eax
je 0x401f9d
cmp dword [esp + 0x2c], 0
je 0x401fa8
push edi
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
jne 0x401fa8
mov dword [esp + 0x10], 1
mov byte [edi], 0
mov byte [edi + 0x3ff], 0
jmp case.0x4017cd.65
xor ecx, ecx
call fcn.004015d0
mov ecx, 1
mov esi, eax
call fcn.004015d0
cmp dword [esp + 0x38], 0
jne 0x401feb
cmp esi, eax
jl 0x401dfb
jle 0x401f40
mov eax, dword [esp + 0x34]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
cmp esi, eax
jb 0x401dfb
jbe 0x401f40
mov eax, dword [esp + 0x34]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
mov ebx, 1
mov ecx, ebx
call fcn.004015d0
lea ecx, [ebx + 1]
mov esi, eax
call fcn.004015d0
mov ecx, eax
mov eax, dword [esp + 0x30]
cmp eax, 0xc
ja case.default.0x402029
jmp dword [eax*4 + 0x40344c]
add esi, ecx
jmp case.default.0x402029
sub esi, ecx
jmp case.default.0x402029
imul ecx, esi
mov esi, ecx
jmp case.default.0x402029
test ecx, ecx
je 0x40204c
mov eax, esi
cdq
idiv ecx
mov esi, eax
jmp case.default.0x402029
xor esi, esi
mov dword [esp + 0x10], ebx
jmp case.default.0x402029
or esi, ecx
jmp case.default.0x402029
and esi, ecx
jmp case.default.0x402029
xor esi, ecx
jmp case.default.0x402029
xor ecx, ecx
test esi, esi
sete cl
mov esi, ecx
jmp case.default.0x402029
test esi, esi
jne 0x402073
test ecx, ecx
je 0x40207f
mov esi, ebx
jmp case.default.0x402029
test esi, esi
je 0x40207f
test ecx, ecx
jne 0x402073
xor esi, esi
jmp case.default.0x402029
test ecx, ecx
je 0x40204c
mov eax, esi
cdq
idiv ecx
mov esi, edx
jmp case.default.0x402029
shl esi, cl
jmp case.default.0x402029
sar esi, cl
push esi
push 0x4095f8
push edi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp case.0x4017cd.65
push ecx
push 0x40b4e0
call fcn.00407620
mov ecx, 2
mov esi, eax
call fcn.004015d0
push eax
push esi
push edi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp case.0x4017cd.65
mov eax, dword [esp + 0x2c]
test eax, eax
mov esi, dword [0x40b4a0]
je 0x402158
sub eax, 1
test esi, esi
je 0x4020f2
test eax, eax
mov esi, dword [esi]
jne 0x4020e1
test esi, esi
jne 0x402116
push 0xffffffffffffffe8
push 0
call fcn.00407620
push eax
mov eax, 0x200010
call fcn.00406c50
mov eax, 0x7fffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpynA]
push 0x400
add esi, 4
push esi
push 0x40b4e0
call edi
mov edx, dword [0x40b4a0]
push 0x400
add edx, 4
push edx
push esi
call edi
mov eax, dword [0x40b4a0]
push 0x400
push 0x40b4e0
add eax, 4
push eax
call edi
jmp case.0x4017cd.65
test ecx, ecx
je 0x402188
test esi, esi
je 0x40193e
push 0x400
lea ecx, [esi + 4]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
mov edx, dword [esi]
push esi
mov dword [0x40b4a0], edx
call dword [sym.imp.KERNEL32.dll_GlobalFree]
jmp case.0x4017cd.65
push 0x404
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov esi, eax
mov eax, dword [esp + 0x24]
push eax
lea ecx, [esi + 4]
push ecx
call fcn.00407620
mov edx, dword [0x40b4a0]
mov dword [esi], edx
mov dword [0x40b4a0], esi
jmp case.0x4017cd.65
mov ecx, 3
call fcn.004015d0
mov ecx, 4
mov esi, eax
call fcn.004015d0
test byte [esp + 0x38], 1
mov ebx, eax
je 0x4021ec
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 0xc]
push ecx
push 0x40c0e0
call fcn.00407620
mov esi, eax
test byte [esp + 0x38], 2
je 0x402209
mov edx, dword [0x40d0e0]
mov eax, dword [edx + 0x10]
push eax
push 0x40c4e0
call fcn.00407620
mov ebx, eax
cmp dword [esp + 0x20], 0x21
jne 0x40225a
mov ecx, 1
call fcn.004015d0
mov ecx, 2
mov ebp, eax
call fcn.004015d0
mov ecx, dword [esp + 0x38]
sar ecx, 2
je 0x40224e
lea edx, [esp + 0x14]
push edx
push ecx
push 0
push ebx
push esi
push eax
push ebp
call dword [sym.imp.USER32.dll_SendMessageTimeoutA]
neg eax
sbb eax, eax
add eax, 1
mov dword [esp + 0x10], eax
jmp 0x4022a2
push ebx
push esi
push eax
push ebp
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x40229e
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 4]
push ecx
push 0x40b4e0
call fcn.00407620
mov edx, dword [0x40d0e0]
mov ebp, eax
mov eax, dword [edx + 8]
push eax
push 0x40b8e0
call fcn.00407620
mov cl, byte [eax]
mov dl, byte [ebp]
neg cl
sbb ecx, ecx
and ecx, eax
neg dl
push ecx
sbb edx, edx
and edx, ebp
push edx
push ebx
push esi
call dword [sym.imp.USER32.dll_FindWindowExA]
mov dword [esp + 0x14], eax
cmp dword [esp + 0x24], 0
jl case.0x4017cd.65
mov eax, dword [esp + 0x14]
jmp 0x401e58
xor ecx, ecx
call fcn.004015d0
push eax
call dword [sym.imp.USER32.dll_IsWindow]
jmp 0x401a01
mov ecx, 2
call fcn.004015d0
push eax
mov ecx, 1
call fcn.004015d0
push eax
call dword [sym.imp.USER32.dll_GetDlgItem]
jmp 0x401e58
mov edx, dword [0x425c08]
lea eax, [edx + ecx]
push eax
push 0xffffffffffffffeb
xor ecx, ecx
call fcn.004015d0
push eax
call dword [sym.imp.USER32.dll_SetWindowLongA]
jmp case.0x4017cd.65
push ecx
push ebp
call dword [sym.imp.USER32.dll_GetDlgItem]
mov esi, eax
lea eax, [esp + 0x48]
push eax
push esi
call dword [sym.imp.USER32.dll_GetClientRect]
mov ecx, dword [0x40d0e0]
mov edx, dword [ecx]
push edx
push 0x40b4e0
call fcn.00407620
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x54]
imul edx, ecx
push 0x10
push edx
mov edx, dword [esp + 0x58]
imul edx, ecx
push edx
push 0
push eax
push 0
call dword [sym.imp.USER32.dll_LoadImageA]
push eax
push 0
push 0x172
push esi
call dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
je case.0x4017cd.65
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
jmp case.0x4017cd.65
push 0x48
push 0x5a
push ebp
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push eax
mov ecx, 2
call fcn.004015d0
push eax
call dword [sym.imp.KERNEL32.dll_MulDiv]
neg eax
mov ecx, 3
mov dword [0x40b4a4], eax
call fcn.004015d0
mov dword [0x40b4b4], eax
mov al, byte [esp + 0x34]
mov cl, al
mov dl, al
and al, 4
mov byte [0x40b4ba], al
mov eax, dword [esp + 0x28]
push eax
and cl, 1
and dl, 2
push 0x40b4c0
mov byte [0x40b4b8], cl
mov byte [0x40b4b9], dl
mov byte [0x40b4bb], 1
call fcn.00407620
push 0x40b4a4
call dword [sym.imp.GDI32.dll_CreateFontIndirectA]
jmp 0x401e58
xor ecx, ecx
call fcn.004015d0
mov ecx, 1
mov esi, eax
call fcn.004015d0
cmp dword [esp + 0x30], 0
push eax
push esi
jne 0x40241e
call dword [sym.imp.USER32.dll_ShowWindow]
jmp case.0x4017cd.65
call dword [sym.imp.USER32.dll_EnableWindow]
jmp case.0x4017cd.65
push eax
push 0x40b4e0
call fcn.00407620
mov ecx, dword [0x40d0e0]
mov edx, dword [ecx + 4]
push edx
push 0x40c0e0
mov esi, eax
call fcn.00407620
mov ebx, eax
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 8]
push ecx
push 0x40bce0
call fcn.00407620
mov edx, dword [0x40d0e0]
mov edi, eax
mov eax, dword [edx + 0x14]
push eax
push 0x40b8e0
call fcn.00407620
mov ecx, 0x40b8e0
mov eax, 0xffffffec
call fcn.00406620
mov dl, byte [edi]
mov al, byte [esi]
mov ecx, dword [esp + 0x30]
neg dl
push ecx
push 0x42b800
sbb edx, edx
and edx, edi
neg al
push edx
push ebx
sbb eax, eax
and eax, esi
push eax
push ebp
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
cmp eax, 0x21
jge case.0x4017cd.65
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
push eax
push 0x40b4e0
call fcn.00407620
mov esi, eax
mov ecx, esi
mov eax, 0xffffffeb
call fcn.00406620
mov ecx, esi
call fcn.00406c00
mov edi, eax
test edi, edi
je 0x40193e
cmp dword [esp + 0x2c], 0
je 0x402559
mov ebp, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0x64
push edi
call ebp
cmp eax, 0x102
jne 0x402517
mov esi, 0xf
call fcn.00407a00
push 0x64
push edi
call ebp
cmp eax, 0x102
je 0x402501
lea ecx, [esp + 0x14]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
cmp dword [esp + 0x28], 0
jl 0x40254a
mov edx, dword [esp + 0x14]
push edx
push 0x4095f8
push ebx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp case.0x4017cd.65
cmp dword [esp + 0x14], 0
je 0x402559
mov dword [esp + 0x10], 1
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp case.0x4017cd.65
mov eax, dword [esp + 0x2c]
push eax
push 0x40b4e0
call fcn.00407620
call fcn.004079d0
mov esi, eax
test esi, esi
je 0x4025a8
mov ecx, dword [esi + 0x14]
push ecx
push 0x4095f8
push ebx
mov ebx, dword [sym.imp.USER32.dll_wsprintfA]
call ebx
mov edx, dword [esi + 0x18]
add esp, 0xc
push edx
push 0x4095f8
push edi
call ebx
add esp, 0xc
jmp case.0x4017cd.65
mov byte [edi], 0
mov byte [ebx], 0
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
mov eax, dword [esp + 0x2c]
push eax
push 0x40b8e0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
lea ecx, [esp + 0x3c]
push ecx
push esi
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov ebp, eax
test ebp, ebp
mov byte [edi], 0
mov byte [ebx], 0
mov dword [esp + 0x10], 1
je case.0x4017cd.65
push ebp
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
test eax, eax
mov dword [esp + 0x18], eax
je case.0x4017cd.65
push eax
push ebp
push 0
push esi
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
je 0x402669
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x18]
push eax
push 0x4092dc
push ecx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x402669
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
push eax
push 0x4095f8
push edi
call esi
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0xc]
add esp, 0xc
push edx
push 0x4095f8
push ebx
call esi
add esp, 0xc
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
jmp case.0x4017cd.65
cmp dword [0x425cb8], 0
mov dword [esp + 0x10], 1
jl 0x40276b
push eax
push 0x40b8e0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
mov ecx, dword [0x40d0e0]
mov edx, dword [ecx + 4]
push edx
push 0x40b4e0
call fcn.00407620
cmp dword [esp + 0x34], 0
mov ebx, eax
je 0x4026cb
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov edi, eax
test edi, edi
jne 0x4026e0
push 8
push 0
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov edi, eax
test edi, edi
je 0x402757
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
test esi, esi
je 0x402734
mov eax, dword [esp + 0x2c]
test eax, eax
mov dword [esp + 0x10], 0
je 0x402718
mov ecx, 0x40b8e0
call fcn.00406620
call esi
test eax, eax
je 0x402740
mov dword [esp + 0x10], 1
jmp 0x402740
push 0x40b08c
push 0x40b4a0
push section..ndata
push 0x400
push ebp
call esi
add esp, 0x14
jmp 0x402740
mov ecx, ebx
mov eax, 0xfffffff7
call fcn.00406620
cmp dword [esp + 0x30], 0
jne case.0x4017cd.65
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp case.0x4017cd.65
mov ecx, 0x40b8e0
mov eax, 0xfffffff6
call fcn.00406620
jmp case.0x4017cd.65
mov ecx, 0x40b8e0
mov eax, 0xffffffe7
call fcn.00406620
jmp case.0x4017cd.65
push eax
push 0x40b8e0
call fcn.00407620
mov ebp, eax
push ebp
call fcn.004078e0
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 4]
push ecx
push 0x40bce0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
mov edx, dword [0x40d0e0]
mov eax, dword [edx + 8]
push eax
push 0x40b4e0
call fcn.00407620
mov ecx, dword [0x40d0e0]
mov edx, dword [ecx + 0xc]
push edx
push 0x40c0e0
mov dword [esp + 0x4c], eax
call fcn.00407620
mov ebx, eax
push ebx
call fcn.004078e0
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 0x14]
push ecx
push 0x40c4e0
call fcn.00407620
mov ecx, esi
mov dword [esp + 0x3c], eax
call fcn.00406fd0
test eax, eax
jne 0x402817
mov edx, dword [0x40d0e0]
mov eax, dword [edx + 4]
push eax
push 0x40bce0
call fcn.00407620
lea ecx, [esp + 0x14]
push ecx
push 0x4092ac
push 1
push 0
push 0x4092bc
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jl 0x40293c
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
mov edx, dword [edx]
lea ecx, [esp + 0x18]
push ecx
push 0x4092cc
push eax
call edx
mov edi, eax
test edi, edi
jl 0x40292c
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x50]
push esi
push eax
call edx
mov edi, eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x24]
push 0x42b800
push eax
call edx
mov ecx, dword [esp + 0x34]
mov eax, ecx
sar eax, 8
and eax, 0xff
je 0x402898
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x3c]
push ecx
call eax
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
sar ecx, 0x10
push ecx
push eax
mov eax, dword [edx + 0x34]
call eax
cmp byte [ebx], 0
je 0x4028c5
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
and edx, 0xff
push edx
push ebx
push eax
mov eax, dword [ecx + 0x44]
call eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x44]
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x2c]
call eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x3c]
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x1c]
call eax
test edi, edi
jl 0x402920
push 0x400
push 0x40c8e0
push 0xffffffffffffffff
push ebp
push 0
push 0
mov edi, 0x80004005
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
je 0x402920
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x18]
push 1
push 0x40c8e0
push eax
call edx
mov edi, eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
test edi, edi
jge 0x402958
mov ecx, 0x40b8e0
mov eax, 0xfffffff0
mov dword [esp + 0x10], 1
call fcn.00406620
jmp case.0x4017cd.65
mov ecx, 0x40b8e0
mov eax, 0xfffffff4
call fcn.00406620
jmp case.0x4017cd.65
push eax
push 0x40b4e0
call fcn.00407620
mov esi, eax
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 4]
push ecx
push 0x40b8e0
call fcn.00407620
mov edx, dword [0x40d0e0]
mov edi, eax
mov eax, dword [edx + 0xc]
push eax
push 0x40bce0
call fcn.00407620
mov ebx, eax
mov eax, esi
call fcn.004079d0
test eax, eax
je 0x402a03
mov dword [esp + 0x48], ebp
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenA]
push esi
mov dword [esp + 0x50], 2
call ebp
push edi
mov byte [eax + esi + 1], 0
call ebp
mov byte [eax + edi + 1], 0
mov cx, word [esp + 0x2c]
mov word [esp + 0x58], cx
mov ecx, ebx
xor eax, eax
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], edi
mov dword [esp + 0x62], ebx
call fcn.00406620
lea edx, [esp + 0x48]
push edx
call dword [sym.imp.SHELL32.dll_SHFileOperationA]
test eax, eax
je case.0x4017cd.65
xor ecx, ecx
lea eax, [ecx - 7]
call fcn.00406620
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
cmp eax, 0xbadf00d
jne 0x4020f2
add dword [0x425c94], 1
jmp case.0x4017cd.65
xor edi, edi
xor ebp, ebp
xor ebx, ebx
test eax, eax
je 0x402a4c
push eax
push 0x40b4e0
call fcn.00407620
mov ecx, dword [esp + 0x28]
mov edi, eax
test ecx, ecx
je 0x402a65
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 4]
push ecx
push 0x40b8e0
call fcn.00407620
mov ebp, eax
cmp dword [esp + 0x34], ebx
je 0x402a81
mov edx, dword [0x40d0e0]
mov eax, dword [edx + 8]
push eax
push 0x40bce0
call fcn.00407620
mov ebx, eax
mov ecx, dword [0x40d0e0]
mov edx, dword [ecx + 0xc]
push edx
push 0x40c0e0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
push esi
push ebx
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
test eax, eax
jne case.0x4017cd.65
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
push ecx
push 0x40b4e0
mov dword [esp + 0x20], 0x7e4e21
call fcn.00407620
mov ebx, eax
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 8]
push ecx
push 0x40b8e0
call fcn.00407620
mov edx, dword [0x40d0e0]
mov ebp, eax
mov eax, dword [edx + 0xc]
push eax
push 0x40bce0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
push esi
push 0x3ff
push edi
lea ecx, [esp + 0x24]
push ecx
push ebp
push ebx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov edx, dword [edi]
cmp edx, dword [esp + 0x18]
jmp 0x401b54
cmp dword [esp + 0x34], 0
jne 0x402b5b
push 2
call fcn.00401710
mov esi, eax
test esi, esi
je 0x402b97
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 0xc]
push ecx
push 0x40c0e0
call fcn.00407620
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
push esi
mov edi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x402b8f
mov edx, dword [esp + 0x2c]
push edx
push 0x40bce0
call fcn.00407620
mov ecx, dword [esp + 0x28]
test ecx, ecx
jne 0x402b7e
mov ecx, dword [0x425c84]
add ecx, 0x80000001
mov edx, dword [esp + 0x34]
and edx, 2
push edx
push eax
push ecx
call fcn.004015f0
mov edi, eax
test edi, edi
je case.0x4017cd.65
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
test eax, eax
je 0x402bac
mov edi, eax
jmp 0x402bb8
mov edi, dword [0x425c84]
add edi, 0x80000001
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
push eax
push 0x40b4e0
call fcn.00407620
mov ecx, dword [0x40d0e0]
mov edx, dword [ecx + 4]
push edx
push 0x40b8e0
mov ebp, eax
call fcn.00407620
mov edx, dword [0x425cb0]
push 0
lea ecx, [esp + 0x1c]
push ecx
push 0
or edx, 2
push edx
push 0
push 0
push 0
push eax
push edi
mov dword [esp + 0x34], 1
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne case.0x4017cd.65
cmp esi, 1
jne 0x402c3d
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 0xc]
push ecx
push 0x40bce0
call fcn.00407620
push 0x40bce0
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, esi
jmp 0x402c6e
cmp esi, 4
jne 0x402c53
lea ecx, [esi - 1]
call fcn.004015d0
mov dword [0x40bce0], eax
mov eax, esi
jmp 0x402c6e
cmp esi, 3
jne 0x402c6e
mov edx, dword [esp + 0x30]
push 0xc00
push 0x40bce0
push 0
push edx
call fcn.004038f0
push eax
mov eax, dword [esp + 0x1c]
push 0x40bce0
push ebx
push 0
push ebp
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
jne 0x402c8b
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp case.0x4017cd.65
push 0x20019
call fcn.00401710
mov edx, dword [0x40d0e0]
mov esi, eax
mov eax, dword [edx + 0xc]
push eax
push 0x40c0e0
call fcn.00407620
test esi, esi
mov byte [edi], 0
je 0x40193e
lea ecx, [esp + 0x18]
push ecx
push edi
lea edx, [esp + 0x44]
push edx
push 0
push eax
push esi
mov dword [esp + 0x30], 0x3ff
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x402d41
mov eax, dword [esp + 0x3c]
cmp eax, 4
je 0x402d16
cmp eax, 1
je 0x402cfa
cmp eax, 2
jne 0x402d41
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x18]
push esi
mov dword [esp + 0x14], edx
mov byte [eax + edi], 0
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp case.0x4017cd.65
mov ecx, dword [edi]
xor eax, eax
cmp dword [esp + 0x34], eax
push ecx
sete al
push 0x4095f8
push edi
mov dword [esp + 0x1c], eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp case.0x4017cd.65
push esi
mov byte [edi], 0
mov dword [esp + 0x14], 1
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp case.0x4017cd.65
push 0x20019
call fcn.00401710
mov ecx, 3
mov esi, eax
call fcn.004015d0
test esi, esi
mov byte [edi], 0
je 0x40193e
cmp dword [esp + 0x34], 0
mov dword [esp + 0x3c], 0x3ff
je 0x402da9
push 0x3ff
push edi
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
push esi
mov byte [edi + 0x3ff], 0
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp case.0x4017cd.65
push 0
push 0
push 0
push 0
lea ecx, [esp + 0x4c]
push ecx
push edi
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegEnumValueA]
test eax, eax
jne 0x40193e
push esi
mov byte [edi + 0x3ff], al
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp case.0x4017cd.65
cmp byte [edi], 0
je case.0x4017cd.65
mov eax, edi
call fcn.00407580
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp case.0x4017cd.65
mov edx, dword [esp + 0x30]
push edx
push 0x40b8e0
call fcn.00407620
mov esi, eax
push esi
call fcn.004078e0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
push eax
push ecx
call fcn.00407220
cmp eax, 0xffffffff
jne 0x401e58
mov byte [edi], 0
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
cmp dword [esp + 0x2c], 0
je 0x402e51
mov ecx, 1
call fcn.004015d0
mov byte [0x40b8e0], al
mov eax, 1
jmp 0x402e63
push ecx
push 0x40b8e0
call fcn.00407620
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp byte [edi], 0
je 0x40193e
push 0
lea edx, [esp + 0x40]
push edx
push eax
push 0x40b8e0
mov eax, edi
call fcn.00407580
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne case.0x4017cd.65
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
xor esi, esi
lea ecx, [esi + 2]
call fcn.004015d0
mov ebp, eax
cmp ebp, 1
jl case.0x4017cd.65
cmp ebp, 0x3ff
jle 0x402ebe
mov ebp, 0x3ff
cmp byte [edi], 0
je 0x402f79
mov eax, edi
mov byte [esp + 0x43], 0
call fcn.00407580
test ebp, ebp
mov edi, eax
jle 0x402f79
push 0
lea eax, [esp + 0x40]
push eax
push 1
lea ecx, [esp + 0x2b]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x402f79
cmp dword [esp + 0x3c], 1
jne 0x402f79
cmp dword [esp + 0x30], 0
jne 0x402f32
mov cl, byte [esp + 0x43]
cmp cl, 0xd
je 0x402f54
cmp cl, 0xa
je 0x402f54
mov al, byte [esp + 0x1f]
mov byte [esi + ebx], al
add esi, 1
test al, al
mov byte [esp + 0x43], al
je 0x402f79
cmp esi, ebp
jl 0x402edd
jmp 0x402f79
movzx edx, byte [esp + 0x1f]
push edx
push 0x4095f8
push ebx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret
mov al, byte [esp + 0x1f]
cmp cl, al
je 0x402f6c
cmp al, 0xd
je 0x402f64
cmp al, 0xa
jne 0x402f6c
mov byte [esi + ebx], al
add esi, 1
jmp 0x402f79
push 1
push 0
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
test esi, esi
mov byte [esi + ebx], 0
jne case.0x4017cd.65
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
cmp byte [edi], 0
je case.0x4017cd.65
mov eax, dword [esp + 0x30]
push eax
push 0
mov ecx, 2
call fcn.004015d0
push eax
mov eax, edi
call fcn.00407580
push eax
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp dword [esp + 0x28], 0
jl case.0x4017cd.65
push eax
push 0x4095f8
push ebx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp case.0x4017cd.65
cmp byte [edi], 0
je case.0x4017cd.65
mov eax, edi
call fcn.00407580
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
jmp case.0x4017cd.65
cmp byte [ebx], 0
je 0x401b5a
lea ecx, [esp + 0x68]
push ecx
mov eax, ebx
call fcn.00407580
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x401b5a
jmp 0x403060
mov eax, dword [esp + 0x2c]
push eax
push 0x40b4e0
call fcn.00407620
lea ecx, [esp + 0x68]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
jne 0x403050
mov byte [ebx], 0
mov byte [edi], 0
mov dword [esp + 0x10], 1
jmp case.0x4017cd.65
push eax
push 0x4095f8
push ebx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push 0x400
lea edx, [esp + 0x98]
push edx
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp case.0x4017cd.65
push eax
push 0x40b8e0
mov dword [esp + 0x20], 0xfffffd66
call fcn.00407620
mov edi, eax
push edi
mov dword [esp + 0x18], edi
call fcn.004078e0
mov ecx, edi
call fcn.00406fd0
test eax, eax
jne 0x4030bc
mov eax, dword [0x40d0e0]
mov ecx, dword [eax + 0xc]
push ecx
push 0x40b8e0
call fcn.00407620
push eax
call fcn.004078e0
mov esi, edi
call fcn.00407200
push 2
push 0x40000000
call fcn.00407220
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x44], ebp
je 0x4031ab
mov esi, dword [0x425c30]
push esi
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov ebx, eax
test ebx, ebx
je 0x4031a4
mov edx, dword [0x40b088]
push 0
push 0
push 0
push edx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov ecx, dword [0x40b088]
push 0
lea eax, [esp + 0x40]
push eax
push esi
push ebx
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov edx, dword [esp + 0x2c]
push edx
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov edi, eax
test edi, edi
mov dword [esp + 0x3c], edi
je 0x403179
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
push eax
push edi
push 0
push ecx
call fcn.004038f0
cmp byte [edi], 0
je 0x40316a
mov edi, edi
mov ebp, dword [edi]
mov eax, dword [edi + 4]
add edi, 8
add eax, ebx
mov ecx, ebp
mov edx, edi
call fcn.004071d0
add edi, ebp
cmp byte [edi], 0
jne 0x403150
mov edx, dword [esp + 0x3c]
push edx
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov ebp, dword [esp + 0x44]
push 0
lea eax, [esp + 0x1c]
push eax
push esi
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_WriteFile]
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalFree]
push 0
push 0
push ebp
push 0xffffffffffffffff
call fcn.004038f0
mov edi, dword [esp + 0x14]
mov dword [esp + 0x18], eax
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x18], 0
mov esi, 0xfffffff3
jge 0x4031cb
push edi
mov esi, 0xffffffef
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov dword [esp + 0x10], 1
mov ecx, 0x40b8e0
mov eax, esi
call fcn.00406620
jmp case.0x4017cd.65
xor ecx, ecx
call fcn.004015d0
mov edi, eax
cmp edi, dword [0x425bec]
jae 0x40193e
mov eax, dword [esp + 0x2c]
mov esi, edi
imul esi, esi, 0x418
add esi, dword [0x425be8]
test eax, eax
jl 0x403236
mov ecx, dword [esi + eax*4]
jne 0x403221
push 0x400
add esi, 0x18
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp case.0x4017cd.65
push ecx
push 0x4095f8
push ebx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp case.0x4017cd.65
or ecx, 0xffffffff
sub ecx, eax
mov dword [esp + 0x2c], ecx
je 0x403251
mov ecx, 1
call fcn.004015d0
mov dword [esp + 0x28], eax
jmp 0x403266
mov edx, dword [esp + 0x34]
push edx
lea eax, [esi + 0x18]
push eax
call fcn.00407620
or dword [esi + 8], 0x100
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov dword [esi + ecx*4], edx
cmp dword [esp + 0x30], 0
je case.0x4017cd.65
mov ecx, edi
call fcn.004011c0
jmp case.0x4017cd.65
xor ecx, ecx
call fcn.004015d0
cmp eax, 0x20
jae 0x40193e
cmp dword [esp + 0x30], 0
je 0x4032d4
cmp dword [esp + 0x2c], 0
je 0x4032bb
mov ecx, eax
call fcn.004012f0
push 0
push 0
call fcn.00401230
jmp case.0x4017cd.65
push 0
call fcn.00401340
push eax
push 0x4095f8
push ebx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp case.0x4017cd.65
cmp dword [esp + 0x2c], 0
je 0x4032ee
mov ecx, dword [esp + 0x28]
mov edx, dword [0x425bcc]
mov dword [edx + eax*4 + 0x94], ecx
jmp case.0x4017cd.65
mov ecx, dword [0x425bcc]
mov edx, dword [ecx + eax*4 + 0x94]
push edx
push ebx
call fcn.00407620
jmp case.0x4017cd.65
mov ecx, dword [0x424b38]
push 0
and ecx, eax
push ecx
push 0xb
push ebp
call dword [sym.imp.USER32.dll_SendMessageA]
cmp dword [esp + 0x24], 0
je case.0x4017cd.65
push 0
push 0
push ebp
call dword [sym.imp.USER32.dll_InvalidateRect]
mov edx, dword [esp + 0x10]
add dword [0x425c88], edx
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x19c
ret