Function at 0x473600
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x4d8fe8
push eax
mov eax, 0x1290
mov dword fs:[0], esp
call fcn.004d3780
push ebx
push ebp
push esi
mov dword [esp + 0x38], ecx
push edi
xor ebp, ebp
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x46a]
mov word [esp + 0x468], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0xa82]
mov word [esp + 0xa80], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x262]
mov word [esp + 0x260], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0xc8a]
mov word [esp + 0xc88], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x672]
mov word [esp + 0x670], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x5a]
mov word [esp + 0x58], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x87a]
mov word [esp + 0x878], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0xe92]
mov word [esp + 0xe90], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x109a]
mov esi, dword [esp + 0x12b0]
mov word [esp + 0x1098], bp
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov edi, dword [esp + 0x12b4]
push esi
lea eax, [esp + 0xa84]
push 0x103
push eax
push 0x4ffec0
push str.ModuleType
push edi
call ebx
cmp word [esp + 0xa80], bp
jne 0x47374d
xor eax, eax
jmp 0x474844
push esi
lea ecx, [esp + 0x46c]
push 0x103
push ecx
push 0x4ffec0
push 0x64
call fcn.004ae820
add esp, 4
push eax
push edi
call ebx
lea edx, [esp + 0x468]
push edx
call dword [sym.imp.MSVCRT.dll_wcslen]
add esp, 4
test eax, eax
jne 0x47379e
push esi
lea eax, [esp + 0x46c]
push 0x103
push eax
push 0x4ffec0
push str.Name
push edi
call ebx
push esi
lea ecx, [esp + 0x264]
push 0x103
push ecx
push 0x4ffec0
push str.Type
push edi
call ebx
push esi
lea edx, [esp + 0x674]
push 0x103
push edx
push 0x4ffec0
push str.FileName
push edi
call ebx
push esi
lea eax, [esp + 0x87c]
push 0x103
push eax
push 0x4ffec0
push str.Icon
push edi
call ebx
push esi
lea ecx, [esp + 0xe94]
push 0x103
push ecx
push 0x4ffec0
push str.HotIcon
push edi
call ebx
push esi
lea edx, [esp + 0x109c]
push 0x103
push edx
push 0x4ffec0
push str.StartAfterPageDone
push edi
call ebx
push esi
lea eax, [esp + 0xc8c]
push 0x103
push eax
push 0x4ffec0
push str.CLSID
push edi
call ebx
push esi
push ebp
push str.ShowButtonText
push edi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
lea ecx, [esp + 0x58]
mov dword [esp + 0x4c], eax
push ecx
push esi
call fcn.004a7c70
mov edi, dword [sym.imp.MSVCRT.dll__wcsicmp]
lea edx, [esp + 0x268]
xor esi, esi
push str.M2Plugin_SideBar
push edx
mov dword [esp + 0x48], esi
mov dword [esp + 0x58], ebp
call edi
add esp, 0x10
mov ebx, 1
test eax, eax
je 0x47399d
lea eax, [esp + 0x260]
push str.SideBar
push eax
call edi
add esp, 8
test eax, eax
je 0x47399d
lea ecx, [esp + 0x260]
push str.M2Plugin_BUTTON
push ecx
call edi
add esp, 8
test eax, eax
je 0x473996
lea edx, [esp + 0x260]
push str.BUTTON
push edx
call edi
add esp, 8
test eax, eax
je 0x473996
lea eax, [esp + 0x260]
push str.TOOLBAR_BUTTON
push eax
call edi
add esp, 8
test eax, eax
je 0x473996
lea ecx, [esp + 0x260]
push str.STATUSBUTTON
push ecx
call edi
add esp, 8
test eax, eax
jne 0x473914
mov esi, 5
jmp 0x47399f
lea edx, [esp + 0x260]
push str.STATUSBAR
push edx
call edi
add esp, 8
test eax, eax
jne 0x473931
mov esi, 8
jmp 0x47399f
lea eax, [esp + 0x260]
push str.TWBHO
push eax
call edi
add esp, 8
test eax, eax
jne 0x47395c
mov ecx, dword [esp + 0x3c]
mov esi, 0x40
mov dword [esp + 0x38], esi
mov dword [ecx + 0x8bc], ebx
jmp 0x4739a3
lea edx, [esp + 0x260]
push str.TWSTATUSMSG
push edx
call edi
add esp, 8
test eax, eax
jne 0x473979
mov esi, 0x80
jmp 0x47399f
lea eax, [esp + 0x260]
push str.TWGLOBAL
push eax
call edi
add esp, 8
test eax, eax
jne 0x4739a3
mov esi, 0x100
jmp 0x47399f
mov esi, 2
jmp 0x47399f
mov esi, ebx
mov dword [esp + 0x38], esi
mov ecx, dword [esp + 0x3c]
push esi
call fcn.00475ab0
lea ecx, [esp + 0xa80]
push 0x4f32d0
push ecx
mov dword [esp + 0x4c], eax
call edi
add esp, 8
test eax, eax
jne 0x4739d1
mov dword [esp + 0x48], 2
jmp 0x473a0b
lea edx, [esp + 0xa80]
push str.SCript
push edx
call edi
add esp, 8
test eax, eax
jne 0x4739ed
mov dword [esp + 0x48], ebx
jmp 0x473a0b
lea eax, [esp + 0xa80]
push 0x4f32b8
push eax
call edi
add esp, 8
test eax, eax
jne 0x473a0b
mov dword [esp + 0x48], 3
mov ecx, dword [0x4eb4c0]
lea edx, [esp + 0x670]
test edx, edx
mov dword [esp + 0x10], ecx
je 0x473a82
lea eax, [esp + 0x670]
shr eax, 0x10
jne 0x473a44
xor eax, eax
lea ecx, [esp + 0x670]
mov ax, cx
lea ecx, [esp + 0x10]
push eax
call fcn.00407b70
jmp 0x473a82
lea edx, [esp + 0x670]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
cmp esi, ebp
je 0x473a82
push esi
lea ecx, [esp + 0x14]
call fcn.00407580
test eax, eax
je 0x473a82
mov edi, dword [esp + 0x10]
lea ecx, [esi + esi]
mov eax, ecx
lea esi, [esp + 0x670]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x3c]
mov eax, str._SYSDIR
mov dword [esp + 0x12a8], ebp
mov ebp, dword [sym.imp.MSVCRT.dll_wcsstr]
mov edx, dword [ecx + 0x8dc]
test eax, eax
mov dword [esp + 0x40], edx
je 0x473c6d
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
call esi
mov ebx, eax
test ebx, ebx
je 0x473c6d
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x473acb
mov dword [esp + 0x18], eax
jmp 0x473ad2
push eax
call esi
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x10]
xor edi, edi
mov ecx, dword [esi - 8]
lea eax, [esi + ecx*2]
cmp esi, eax
mov dword [esp + 0x1c], eax
jae 0x473c6d
push str._SYSDIR
push esi
call ebp
add esp, 8
test eax, eax
je 0x473b0c
lea esi, [eax + ebx*2]
push str._SYSDIR
push esi
inc edi
call ebp
add esp, 8
test eax, eax
jne 0x473af9
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jb 0x473aea
test edi, edi
jle 0x473c6d
lea ecx, [esp + 0x10]
call fcn.00407680
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
sub eax, ebx
imul eax, edi
mov ecx, dword [esi - 8]
mov dword [esp + 0x20], ecx
add eax, ecx
mov ecx, dword [esi - 4]
mov dword [esp + 0x28], eax
cmp ecx, eax
jl 0x473b5b
cmp dword [esi - 0xc], 1
jle 0x473bb3
mov eax, dword [esp + 0x28]
lea edx, [esi - 0xc]
push eax
lea ecx, [esp + 0x14]
mov dword [esp + 0x20], edx
call fcn.00407580
test eax, eax
je 0x473c6d
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
mov ecx, dword [eax + 4]
shl ecx, 1
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp eax, dword [0x4eb24c]
je 0x473baf
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x473baf
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.004d3765
add esp, 4
mov esi, dword [esp + 0x10]
mov edx, dword [esi - 8]
lea eax, [esi + edx*2]
cmp esi, eax
mov dword [esp + 0x1c], eax
jae 0x473c66
push str._SYSDIR
push esi
call ebp
mov edi, eax
add esp, 8
test edi, edi
je 0x473c4b
mov eax, dword [esp + 0x10]
mov ecx, edi
mov edx, dword [esp + 0x18]
sub ecx, eax
mov eax, dword [esp + 0x20]
sar ecx, 1
sub eax, ecx
lea esi, [edx + edx]
sub eax, ebx
add eax, eax
lea ecx, [esi + edi]
mov dword [esp + 0x30], eax
push eax
lea eax, [edi + ebx*2]
mov dword [esp + 0x30], ecx
push eax
push ecx
call dword [sym.imp.MSVCRT.dll_memmove]
mov ecx, esi
mov esi, dword [esp + 0x4c]
mov edx, ecx
mov eax, dword [esp + 0x3c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push str._SYSDIR
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
sub ecx, ebx
push esi
mov word [eax + esi], 0
mov eax, dword [esp + 0x34]
add eax, ecx
mov dword [esp + 0x34], eax
call ebp
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x473bd6
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jb 0x473bc5
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov dword [esi - 8], edx
mov eax, dword [esp + 0x3c]
mov edx, str._WINDIR
test edx, edx
mov ecx, dword [eax + 0x8e0]
mov dword [esp + 0x40], ecx
je 0x473e4d
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
test ebx, ebx
je 0x473e4d
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x473ca7
mov dword [esp + 0x18], eax
jmp 0x473cb2
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x10]
xor edi, edi
mov eax, dword [esi - 8]
lea eax, [esi + eax*2]
cmp esi, eax
mov dword [esp + 0x1c], eax
jae 0x473e4d
push str._WINDIR
push esi
call ebp
add esp, 8
test eax, eax
je 0x473cec
lea esi, [eax + ebx*2]
push str._WINDIR
push esi
inc edi
call ebp
add esp, 8
test eax, eax
jne 0x473cd9
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jb 0x473cca
test edi, edi
jle 0x473e4d
lea ecx, [esp + 0x10]
call fcn.00407680
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
sub eax, ebx
imul eax, edi
mov ecx, dword [esi - 8]
mov dword [esp + 0x20], ecx
add eax, ecx
mov ecx, dword [esi - 4]
mov dword [esp + 0x28], eax
cmp ecx, eax
jl 0x473d3b
cmp dword [esi - 0xc], 1
jle 0x473d93
mov eax, dword [esp + 0x28]
lea ecx, [esi - 0xc]
push eax
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x14]
call fcn.00407580
test eax, eax
je 0x473e4d
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
mov ecx, dword [eax + 4]
shl ecx, 1
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp eax, dword [0x4eb24c]
je 0x473d8f
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x473d8f
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.004d3765
add esp, 4
mov esi, dword [esp + 0x10]
mov edx, dword [esi - 8]
lea eax, [esi + edx*2]
cmp esi, eax
mov dword [esp + 0x1c], eax
jae 0x473e46
push str._WINDIR
push esi
call ebp
mov edi, eax
add esp, 8
test edi, edi
je 0x473e2b
mov eax, dword [esp + 0x10]
mov ecx, edi
mov edx, dword [esp + 0x18]
sub ecx, eax
mov eax, dword [esp + 0x20]
sar ecx, 1
sub eax, ecx
lea esi, [edx + edx]
sub eax, ebx
add eax, eax
lea ecx, [esi + edi]
mov dword [esp + 0x30], eax
push eax
lea eax, [edi + ebx*2]
mov dword [esp + 0x30], ecx
push eax
push ecx
call dword [sym.imp.MSVCRT.dll_memmove]
mov ecx, esi
mov esi, dword [esp + 0x4c]
mov edx, ecx
mov eax, dword [esp + 0x3c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push str._WINDIR
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
sub ecx, ebx
push esi
mov word [eax + esi], 0
mov eax, dword [esp + 0x34]
add eax, ecx
mov dword [esp + 0x34], eax
call ebp
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x473db6
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jb 0x473da5
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov dword [esi - 8], edx
mov eax, dword [esp + 0x44]
test eax, eax
je 0x47482b
mov esi, dword [sym.imp.MSVCRT.dll_wcslen]
lea eax, [esp + 0x878]
push eax
call esi
add esp, 4
test eax, eax
jne 0x473e85
lea ecx, [esp + 0xe90]
push ecx
call esi
add esp, 4
test eax, eax
je 0x474422
mov eax, dword [0x4eb4c0]
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], eax
lea edx, [esp + 0x878]
mov byte [esp + 0x12a8], 2
test edx, edx
jne 0x473ea9
xor eax, eax
jmp 0x473eb7
lea eax, [esp + 0x878]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea ecx, [esp + 0x878]
push ecx
push eax
lea ecx, [esp + 0x1c]
call fcn.00407780
mov edx, dword [esp + 0x3c]
mov ecx, str._SYSDIR
test ecx, ecx
mov eax, dword [edx + 0x8dc]
mov dword [esp + 0x2c], eax
je 0x47408b
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
test ebx, ebx
je 0x47408b
mov eax, dword [esp + 0x2c]
xor edi, edi
cmp eax, edi
jne 0x473f05
mov dword [esp + 0x20], edi
jmp 0x473f10
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [esp + 0x20], eax
mov esi, dword [esp + 0x14]
mov edx, dword [esi - 8]
lea eax, [esi + edx*2]
cmp esi, eax
mov dword [esp + 0x28], eax
jae 0x47408f
push str._SYSDIR
push esi
call ebp
add esp, 8
test eax, eax
je 0x473f48
lea esi, [eax + ebx*2]
push str._SYSDIR
push esi
inc edi
call ebp
add esp, 8
test eax, eax
jne 0x473f35
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x28]
cmp esi, eax
jb 0x473f26
test edi, edi
jle 0x47408b
lea ecx, [esp + 0x14]
call fcn.00407680
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
sub eax, ebx
imul eax, edi
mov ecx, dword [esi - 8]
mov dword [esp + 0x30], ecx
add eax, ecx
mov ecx, dword [esi - 4]
mov dword [esp + 0x34], eax
cmp ecx, eax
jl 0x473f93
cmp dword [esi - 0xc], 1
jle 0x473fd1
lea ecx, [esi - 0xc]
push eax
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x18]
call fcn.00407580
test eax, eax
je 0x47408b
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x14]
push eax
mov ecx, dword [eax + 4]
shl ecx, 1
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00407650
mov esi, dword [esp + 0x14]
mov eax, dword [esi - 8]
lea eax, [esi + eax*2]
cmp esi, eax
mov dword [esp + 0x28], eax
jae 0x474084
push str._SYSDIR
push esi
call ebp
mov edi, eax
add esp, 8
test edi, edi
je 0x474069
mov eax, dword [esp + 0x14]
mov ecx, edi
mov edx, dword [esp + 0x20]
sub ecx, eax
mov eax, dword [esp + 0x30]
sar ecx, 1
sub eax, ecx
lea esi, [edx + edx]
sub eax, ebx
add eax, eax
lea ecx, [esi + edi]
mov dword [esp + 0x50], eax
push eax
lea eax, [edi + ebx*2]
mov dword [esp + 0x58], ecx
push eax
push ecx
call dword [sym.imp.MSVCRT.dll_memmove]
mov ecx, esi
mov esi, dword [esp + 0x38]
mov edx, ecx
mov eax, dword [esp + 0x5c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push str._SYSDIR
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x30]
sub ecx, ebx
push esi
mov word [eax + esi], 0
mov eax, dword [esp + 0x44]
add eax, ecx
mov dword [esp + 0x44], eax
call ebp
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x473ff4
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x28]
cmp esi, eax
jb 0x473fe3
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
mov dword [esi - 8], edx
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x3c]
mov edx, str._WINDIR
test edx, edx
mov ecx, dword [eax + 0x8e0]
mov dword [esp + 0x2c], ecx
je 0x474253
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenW]
push edx
call esi
mov ebx, eax
test ebx, ebx
je 0x47424f
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x4740cb
mov dword [esp + 0x20], eax
jmp 0x4740d2
push eax
call esi
mov dword [esp + 0x20], eax
mov esi, dword [esp + 0x14]
xor edi, edi
mov eax, dword [esi - 8]
lea eax, [esi + eax*2]
cmp esi, eax
mov dword [esp + 0x30], eax
jae 0x474253
push str._WINDIR
push esi
call ebp
add esp, 8
test eax, eax
je 0x47410c
lea esi, [eax + ebx*2]
push str._WINDIR
push esi
inc edi
call ebp
add esp, 8
test eax, eax
jne 0x4740f9
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x30]
cmp esi, eax
jb 0x4740ea
test edi, edi
jle 0x47424f
lea ecx, [esp + 0x14]
call fcn.00407680
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
sub eax, ebx
imul eax, edi
mov ecx, dword [esi - 8]
mov dword [esp + 0x28], ecx
add eax, ecx
mov ecx, dword [esi - 4]
mov dword [esp + 0x54], eax
cmp ecx, eax
jl 0x474157
cmp dword [esi - 0xc], 1
jle 0x474195
lea ecx, [esi - 0xc]
push eax
mov dword [esp + 0x38], ecx
lea ecx, [esp + 0x18]
call fcn.00407580
test eax, eax
je 0x47424f
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x14]
push eax
mov ecx, dword [eax + 4]
shl ecx, 1
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00407650
mov esi, dword [esp + 0x14]
mov eax, dword [esi - 8]
lea eax, [esi + eax*2]
cmp esi, eax
mov dword [esp + 0x30], eax
jae 0x474248
push str._WINDIR
push esi
call ebp
mov edi, eax
add esp, 8
test edi, edi
je 0x47422d
mov eax, dword [esp + 0x14]
mov ecx, edi
mov edx, dword [esp + 0x20]
sub ecx, eax
mov eax, dword [esp + 0x28]
sar ecx, 1
sub eax, ecx
lea esi, [edx + edx]
sub eax, ebx
add eax, eax
lea ecx, [esi + edi]
mov dword [esp + 0x50], eax
push eax
lea eax, [edi + ebx*2]
mov dword [esp + 0x38], ecx
push eax
push ecx
call dword [sym.imp.MSVCRT.dll_memmove]
mov ecx, esi
mov esi, dword [esp + 0x38]
mov edx, ecx
mov eax, dword [esp + 0x5c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push str._WINDIR
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
sub ecx, ebx
push esi
mov word [eax + esi], 0
mov eax, dword [esp + 0x3c]
add eax, ecx
mov dword [esp + 0x3c], eax
call ebp
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x4741b8
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x30]
cmp esi, eax
jb 0x4741a7
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x54]
mov dword [esi - 8], edx
mov esi, dword [esp + 0x14]
push 0
push esi
call fcn.004a7ab0
add esp, 8
test eax, eax
jne 0x474280
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x58]
push eax
push ecx
lea edx, [esp + 0x2c]
push 0x4ec998
push edx
call fcn.00410bd0
add esp, 0x10
jmp 0x4742d2
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
je 0x4742d6
mov edx, dword [eax - 0xc]
test edx, edx
jge 0x4742a0
mov edx, dword [0x4eb24c]
add eax, 0xfffffff4
cmp eax, edx
jne 0x4742a7
mov eax, dword [ecx - 0xc]
test eax, eax
jge 0x4742b7
mov eax, dword [ecx - 8]
push ecx
push eax
lea ecx, [esp + 0x2c]
call fcn.00407780
jmp 0x4742d2
lea ecx, [esp + 0x24]
call fcn.00407610
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x24]
push ecx
mov ecx, dword [eax - 0xc]
test ecx, ecx
mov dword [esp + 0x38], esp
mov esi, esp
jl 0x4742f6
mov dword [esi], eax
mov ecx, dword [esp + 0x28]
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x474318
mov edx, dword [0x4eb4c0]
mov dword [esi], edx
mov eax, dword [esp + 0x28]
test eax, eax
mov edi, eax
je 0x47430f
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push edi
push eax
mov ecx, esi
call fcn.00407780
mov edi, dword [esp + 0x40]
mov ecx, edi
call fcn.00476040
mov esi, eax
test esi, esi
je 0x474343
push esi
mov ecx, edi
call fcn.00476300
push esi
mov edi, eax
call dword [sym.imp.USER32.dll_DestroyIcon]
mov eax, dword [esp + 0x44]
mov dword [eax + 0x38], edi
jmp 0x4743bc
lea ecx, [esp + 0xe90]
lea edx, [esp + 0x58]
push ecx
push edx
lea eax, [esp + 0x2c]
push 0x4ec998
push eax
call fcn.00410bd0
mov eax, dword [esp + 0x34]
add esp, 0xc
mov dword [esp + 0x38], esp
mov ecx, esp
mov edx, dword [eax - 0xc]
test edx, edx
jl 0x474385
mov dword [ecx], eax
mov ecx, dword [esp + 0x28]
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x474397
mov edx, dword [0x4eb4c0]
mov dword [ecx], edx
mov eax, dword [esp + 0x28]
push eax
call fcn.00410650
mov ecx, edi
call fcn.00476040
mov esi, eax
test esi, esi
je 0x4743bc
push esi
mov ecx, edi
call fcn.00476300
push esi
mov edi, eax
call dword [sym.imp.USER32.dll_DestroyIcon]
mov ecx, dword [esp + 0x44]
mov dword [ecx + 0x38], edi
mov eax, dword [esp + 0x14]
mov ecx, dword [0x4eb24c]
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x4743eb
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x4743eb
mov eax, dword [esp + 0x14]
add eax, 0xfffffff4
push eax
call fcn.004d3765
add esp, 4
mov eax, dword [esp + 0x24]
mov edx, dword [0x4eb24c]
mov byte [esp + 0x12a8], 0
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x474422
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x474422
mov edx, dword [esp + 0x24]
lea eax, [edx - 0xc]
push eax
call fcn.004d3765
add esp, 4
lea eax, [esp + 0x1098]
push 0x4ebec0
push eax
call dword [sym.imp.MSVCRT.dll_wcscmp]
mov esi, dword [esp + 0x4c]
add esp, 8
test eax, eax
jne 0x474447
mov dword [esi + 0x2c], 1
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x3c]
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], edx
mov ecx, dword [eax + 0x8c8]
test ecx, ecx
jne 0x474467
xor eax, eax
jmp 0x474472
mov eax, dword [eax + 0x8cc]
sub eax, ecx
sar eax, 2
inc eax
lea edi, [esi + 0x44]
mov dword [esi + 0x3c], eax
lea eax, [esp + 0x468]
test eax, eax
jne 0x47448c
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
jmp 0x47449c
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
lea ecx, [esp + 0x468]
push ecx
call ebx
lea edx, [esp + 0x468]
mov ecx, edi
push edx
push eax
call fcn.00407780
mov eax, dword [esi + 0x4c]
mov ecx, dword [esp + 0x10]
lea edi, [esi + 0x4c]
cmp eax, ecx
je 0x4744fe
mov edx, dword [eax - 0xc]
test edx, edx
jge 0x4744ce
mov edx, dword [0x4eb24c]
add eax, 0xfffffff4
cmp eax, edx
jne 0x4744d5
mov eax, dword [ecx - 0xc]
test eax, eax
jge 0x4744e3
mov eax, dword [ecx - 8]
push ecx
push eax
mov ecx, edi
call fcn.00407780
jmp 0x4744fe
mov ecx, edi
call fcn.00407610
mov ecx, dword [esp + 0x10]
mov dword [edi], ecx
mov edx, dword [esp + 0x10]
add edx, 0xfffffff4
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
lea eax, [esp + 0x58]
lea edi, [esi + 0x50]
test eax, eax
je 0x474510
lea ecx, [esp + 0x58]
push ecx
call ebx
lea edx, [esp + 0x58]
mov ecx, edi
push edx
push eax
call fcn.00407780
lea eax, [esp + 0xc88]
lea edi, [esi + 0x48]
test eax, eax
je 0x474535
lea ecx, [esp + 0xc88]
push ecx
call ebx
lea edx, [esp + 0xc88]
mov ecx, edi
push edx
push eax
call fcn.00407780
mov eax, dword [esp + 0x4c]
lea edx, [esp + 0x58]
mov dword [esi + 0x58], eax
mov ecx, dword [0x4eb4c0]
test edx, edx
mov dword [esp + 0x18], ecx
je 0x4745ba
lea eax, [esp + 0x58]
shr eax, 0x10
jne 0x47457c
xor eax, eax
lea ecx, [esp + 0x58]
mov ax, cx
lea ecx, [esp + 0x18]
push eax
call fcn.00407b70
jmp 0x4745ba
lea edx, [esp + 0x58]
push edx
call ebx
mov edi, eax
test edi, edi
je 0x4745ba
push edi
lea ecx, [esp + 0x1c]
call fcn.00407580
test eax, eax
je 0x4745ba
lea ecx, [edi + edi]
mov edi, dword [esp + 0x18]
mov eax, ecx
lea esi, [esp + 0x58]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x2c]
mov byte [esp + 0x12a8], 3
mov eax, dword [ecx - 8]
lea ecx, [esp + 0x18]
dec eax
push eax
push edx
call fcn.00410a30
mov edi, eax
mov eax, dword [edi]
mov ecx, dword [esp + 0x18]
cmp ecx, eax
mov byte [esp + 0x12a8], 4
je 0x474631
mov edx, dword [ecx - 0xc]
test edx, edx
jge 0x474601
mov edx, dword [0x4eb24c]
add ecx, 0xfffffff4
cmp ecx, edx
jne 0x474608
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x474618
push eax
mov eax, dword [eax - 8]
push eax
lea ecx, [esp + 0x20]
call fcn.00407780
jmp 0x474631
lea ecx, [esp + 0x18]
call fcn.00407610
mov edi, dword [edi]
mov dword [esp + 0x18], edi
add edi, 0xfffffff4
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x2c]
mov edx, dword [0x4eb24c]
mov byte [esp + 0x12a8], 3
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x474668
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x474668
mov edx, dword [esp + 0x2c]
lea eax, [edx - 0xc]
push eax
call fcn.004d3765
add esp, 4
mov eax, dword [esp + 0x18]
push 0x5c
push eax
call dword [sym.imp.MSVCRT.dll_wcsrchr]
mov edi, eax
add esp, 8
add edi, 2
jne 0x474683
xor eax, eax
jmp 0x474686
push edi
call ebx
push edi
push eax
lea ecx, [esp + 0x20]
call fcn.00407780
mov ecx, dword [esp + 0x18]
xor edi, edi
lea edx, [esp + 0x4c]
mov eax, dword [ecx - 8]
lea ecx, [esp + 0x18]
push eax
push edi
push edx
call fcn.004108b0
push eax
lea ecx, [esi + 0x14]
mov byte [esp + 0x12ac], 5
call fcn.00410560
lea ecx, [esp + 0x4c]
mov byte [esp + 0x12a8], 3
call fcn.00407750
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x1c]
push reloc.DSOUND.dll_DirectSoundCreate
push eax
push ecx
push str.PlugIn
mov dword [esp + 0x2c], edi
mov dword [esi + 0x10], 1
call fcn.004ae0e0
add esp, 0x10
test eax, eax
je 0x474700
cmp dword [esp + 0x1c], edi
jne 0x474700
mov dword [esi + 0x10], edi
cmp dword [esi + 0x10], edi
jne 0x47470c
mov dword [esi + 0x3c], 0xffffffff
mov ebx, dword [esp + 0x12b0]
mov ebp, dword [esp + 0x12b4]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push ebx
push 0
push str.NoAutoRun
push ebp
call edi
test eax, eax
mov dword [esp + 0x1c], eax
je 0x47473c
mov dword [esi + 0x40], 1
jmp 0x474743
mov dword [esi + 0x40], 0
push ebx
push 0
push str.NoIcon
push ebp
call edi
test eax, eax
mov dword [esp + 0x1c], eax
je 0x47475f
mov dword [esi + 0x20], 1
jmp 0x474766
mov dword [esi + 0x20], 0
mov edx, dword [0x4eb4c0]
mov dword [esp + 0x40], edx
lea eax, [esp + 0x10]
lea ecx, [esp + 0x58]
push eax
lea edx, [esp + 0x38]
mov bl, 6
push ecx
push edx
mov byte [esp + 0x12b4], bl
call fcn.00442b60
push eax
lea ecx, [esp + 0x44]
mov byte [esp + 0x12ac], 7
call fcn.00410560
lea ecx, [esp + 0x34]
mov byte [esp + 0x12a8], bl
call fcn.00407750
mov edi, dword [esp + 0x48]
cmp edi, 3
jne 0x4747e8
mov eax, dword [esp + 0x10]
push 0
push eax
call fcn.004a7ab0
add esp, 8
test eax, eax
jne 0x4747e8
mov ecx, dword [esp + 0x40]
push eax
push ecx
call fcn.004a7ab0
add esp, 8
test eax, eax
jne 0x4747e8
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx + 0x10]
jmp 0x474809
cmp dword [esp + 0x38], 8
jne 0x4747ff
cmp edi, 2
je 0x4747ff
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 0x10]
jmp 0x474809
mov ecx, dword [esp + 0x3c]
push esi
call fcn.00477760
lea ecx, [esp + 0x40]
mov byte [esp + 0x12a8], 3
call fcn.00407750
lea ecx, [esp + 0x18]
mov byte [esp + 0x12a8], 0
call fcn.00407750
lea ecx, [esp + 0x10]
mov dword [esp + 0x12a8], 0xffffffff
call fcn.00407750
mov eax, 1
mov ecx, dword [esp + 0x12a0]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x129c
ret 8