Function at 0x4750d0
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x4da588
push eax
mov eax, 0x1290
mov dword fs:[0], esp
call fcn.004d4ce0
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 0x500df0
push str.ModuleType
push edi
call ebx
cmp word [esp + 0xa80], bp
jne 0x47521d
xor eax, eax
jmp 0x476314
push esi
lea ecx, [esp + 0x46c]
push 0x103
push ecx
push 0x500df0
push 0x64
call fcn.004afb70
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 0x47526e
push esi
lea eax, [esp + 0x46c]
push 0x103
push eax
push 0x500df0
push str.Name
push edi
call ebx
push esi
lea ecx, [esp + 0x264]
push 0x103
push ecx
push 0x500df0
push str.Type
push edi
call ebx
push esi
lea edx, [esp + 0x674]
push 0x103
push edx
push 0x500df0
push str.FileName
push edi
call ebx
push esi
lea eax, [esp + 0x87c]
push 0x103
push eax
push 0x500df0
push str.Icon
push edi
call ebx
push esi
lea ecx, [esp + 0xe94]
push 0x103
push ecx
push 0x500df0
push str.HotIcon
push edi
call ebx
push esi
lea edx, [esp + 0x109c]
push 0x103
push edx
push 0x500df0
push str.StartAfterPageDone
push edi
call ebx
push esi
lea eax, [esp + 0xc8c]
push 0x103
push eax
push 0x500df0
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.004a8fc0
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 0x47546d
lea eax, [esp + 0x260]
push str.SideBar
push eax
call edi
add esp, 8
test eax, eax
je 0x47546d
lea ecx, [esp + 0x260]
push str.M2Plugin_BUTTON
push ecx
call edi
add esp, 8
test eax, eax
je 0x475466
lea edx, [esp + 0x260]
push str.BUTTON
push edx
call edi
add esp, 8
test eax, eax
je 0x475466
lea eax, [esp + 0x260]
push str.TOOLBAR_BUTTON
push eax
call edi
add esp, 8
test eax, eax
je 0x475466
lea ecx, [esp + 0x260]
push str.STATUSBUTTON
push ecx
call edi
add esp, 8
test eax, eax
jne 0x4753e4
mov esi, 5
jmp 0x47546f
lea edx, [esp + 0x260]
push str.STATUSBAR
push edx
call edi
add esp, 8
test eax, eax
jne 0x475401
mov esi, 8
jmp 0x47546f
lea eax, [esp + 0x260]
push str.TWBHO
push eax
call edi
add esp, 8
test eax, eax
jne 0x47542c
mov ecx, dword [esp + 0x3c]
mov esi, 0x40
mov dword [esp + 0x38], esi
mov dword [ecx + 0x8bc], ebx
jmp 0x475473
lea edx, [esp + 0x260]
push str.TWSTATUSMSG
push edx
call edi
add esp, 8
test eax, eax
jne 0x475449
mov esi, 0x80
jmp 0x47546f
lea eax, [esp + 0x260]
push str.TWGLOBAL
push eax
call edi
add esp, 8
test eax, eax
jne 0x475473
mov esi, 0x100
jmp 0x47546f
mov esi, 2
jmp 0x47546f
mov esi, ebx
mov dword [esp + 0x38], esi
mov ecx, dword [esp + 0x3c]
push esi
call fcn.00477580
lea ecx, [esp + 0xa80]
push 0x4f4050
push ecx
mov dword [esp + 0x4c], eax
call edi
add esp, 8
test eax, eax
jne 0x4754a1
mov dword [esp + 0x48], 2
jmp 0x4754db
lea edx, [esp + 0xa80]
push str.SCript
push edx
call edi
add esp, 8
test eax, eax
jne 0x4754bd
mov dword [esp + 0x48], ebx
jmp 0x4754db
lea eax, [esp + 0xa80]
push 0x4f4038
push eax
call edi
add esp, 8
test eax, eax
jne 0x4754db
mov dword [esp + 0x48], 3
mov ecx, dword [0x4ed0fc]
lea edx, [esp + 0x670]
test edx, edx
mov dword [esp + 0x10], ecx
je 0x475552
lea eax, [esp + 0x670]
shr eax, 0x10
jne 0x475514
xor eax, eax
lea ecx, [esp + 0x670]
mov ax, cx
lea ecx, [esp + 0x10]
push eax
call fcn.00406b70
jmp 0x475552
lea edx, [esp + 0x670]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
cmp esi, ebp
je 0x475552
push esi
lea ecx, [esp + 0x14]
call fcn.00406580
test eax, eax
je 0x475552
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 0x47573d
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
call esi
mov ebx, eax
test ebx, ebx
je 0x47573d
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x47559b
mov dword [esp + 0x18], eax
jmp 0x4755a2
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 0x47573d
push str._SYSDIR
push esi
call ebp
add esp, 8
test eax, eax
je 0x4755dc
lea esi, [eax + ebx*2]
push str._SYSDIR
push esi
inc edi
call ebp
add esp, 8
test eax, eax
jne 0x4755c9
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jb 0x4755ba
test edi, edi
jle 0x47573d
lea ecx, [esp + 0x10]
call fcn.00406680
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 0x47562b
cmp dword [esi - 0xc], 1
jle 0x475683
mov eax, dword [esp + 0x28]
lea edx, [esi - 0xc]
push eax
lea ecx, [esp + 0x14]
mov dword [esp + 0x20], edx
call fcn.00406580
test eax, eax
je 0x47573d
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 [0x4ed100]
je 0x47567f
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x47567f
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.004d4cc1
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 0x475736
push str._SYSDIR
push esi
call ebp
mov edi, eax
add esp, 8
test edi, edi
je 0x47571b
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 0x4756a6
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jb 0x475695
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 0x47591d
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
test ebx, ebx
je 0x47591d
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x475777
mov dword [esp + 0x18], eax
jmp 0x475782
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 0x47591d
push str._WINDIR
push esi
call ebp
add esp, 8
test eax, eax
je 0x4757bc
lea esi, [eax + ebx*2]
push str._WINDIR
push esi
inc edi
call ebp
add esp, 8
test eax, eax
jne 0x4757a9
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jb 0x47579a
test edi, edi
jle 0x47591d
lea ecx, [esp + 0x10]
call fcn.00406680
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 0x47580b
cmp dword [esi - 0xc], 1
jle 0x475863
mov eax, dword [esp + 0x28]
lea ecx, [esi - 0xc]
push eax
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x14]
call fcn.00406580
test eax, eax
je 0x47591d
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 [0x4ed100]
je 0x47585f
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x47585f
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.004d4cc1
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 0x475916
push str._WINDIR
push esi
call ebp
mov edi, eax
add esp, 8
test edi, edi
je 0x4758fb
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 0x475886
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jb 0x475875
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov dword [esi - 8], edx
mov eax, dword [esp + 0x44]
test eax, eax
je 0x4762fb
mov esi, dword [sym.imp.MSVCRT.dll_wcslen]
lea eax, [esp + 0x878]
push eax
call esi
add esp, 4
test eax, eax
jne 0x475955
lea ecx, [esp + 0xe90]
push ecx
call esi
add esp, 4
test eax, eax
je 0x475ef2
mov eax, dword [0x4ed0fc]
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], eax
lea edx, [esp + 0x878]
mov byte [esp + 0x12a8], 2
test edx, edx
jne 0x475979
xor eax, eax
jmp 0x475987
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.00406780
mov edx, dword [esp + 0x3c]
mov ecx, str._SYSDIR
test ecx, ecx
mov eax, dword [edx + 0x8dc]
mov dword [esp + 0x2c], eax
je 0x475b5b
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
test ebx, ebx
je 0x475b5b
mov eax, dword [esp + 0x2c]
xor edi, edi
cmp eax, edi
jne 0x4759d5
mov dword [esp + 0x20], edi
jmp 0x4759e0
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 0x475b5f
push str._SYSDIR
push esi
call ebp
add esp, 8
test eax, eax
je 0x475a18
lea esi, [eax + ebx*2]
push str._SYSDIR
push esi
inc edi
call ebp
add esp, 8
test eax, eax
jne 0x475a05
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x28]
cmp esi, eax
jb 0x4759f6
test edi, edi
jle 0x475b5b
lea ecx, [esp + 0x14]
call fcn.00406680
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 0x475a63
cmp dword [esi - 0xc], 1
jle 0x475aa1
lea ecx, [esi - 0xc]
push eax
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x18]
call fcn.00406580
test eax, eax
je 0x475b5b
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.00406650
mov esi, dword [esp + 0x14]
mov eax, dword [esi - 8]
lea eax, [esi + eax*2]
cmp esi, eax
mov dword [esp + 0x28], eax
jae 0x475b54
push str._SYSDIR
push esi
call ebp
mov edi, eax
add esp, 8
test edi, edi
je 0x475b39
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 0x475ac4
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x28]
cmp esi, eax
jb 0x475ab3
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 0x475d23
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenW]
push edx
call esi
mov ebx, eax
test ebx, ebx
je 0x475d1f
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x475b9b
mov dword [esp + 0x20], eax
jmp 0x475ba2
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 0x475d23
push str._WINDIR
push esi
call ebp
add esp, 8
test eax, eax
je 0x475bdc
lea esi, [eax + ebx*2]
push str._WINDIR
push esi
inc edi
call ebp
add esp, 8
test eax, eax
jne 0x475bc9
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x30]
cmp esi, eax
jb 0x475bba
test edi, edi
jle 0x475d1f
lea ecx, [esp + 0x14]
call fcn.00406680
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 0x475c27
cmp dword [esi - 0xc], 1
jle 0x475c65
lea ecx, [esi - 0xc]
push eax
mov dword [esp + 0x38], ecx
lea ecx, [esp + 0x18]
call fcn.00406580
test eax, eax
je 0x475d1f
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.00406650
mov esi, dword [esp + 0x14]
mov eax, dword [esi - 8]
lea eax, [esi + eax*2]
cmp esi, eax
mov dword [esp + 0x30], eax
jae 0x475d18
push str._WINDIR
push esi
call ebp
mov edi, eax
add esp, 8
test edi, edi
je 0x475cfd
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 0x475c88
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2 + 2]
mov eax, dword [esp + 0x30]
cmp esi, eax
jb 0x475c77
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.004a8e00
add esp, 8
test eax, eax
jne 0x475d50
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x58]
push eax
push ecx
lea edx, [esp + 0x2c]
push 0x4ee3cc
push edx
call fcn.0040fdb0
add esp, 0x10
jmp 0x475da2
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
je 0x475da6
mov edx, dword [eax - 0xc]
test edx, edx
jge 0x475d70
mov edx, dword [0x4ed100]
add eax, 0xfffffff4
cmp eax, edx
jne 0x475d77
mov eax, dword [ecx - 0xc]
test eax, eax
jge 0x475d87
mov eax, dword [ecx - 8]
push ecx
push eax
lea ecx, [esp + 0x2c]
call fcn.00406780
jmp 0x475da2
lea ecx, [esp + 0x24]
call fcn.00406610
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 0x475dc6
mov dword [esi], eax
mov ecx, dword [esp + 0x28]
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x475de8
mov edx, dword [0x4ed0fc]
mov dword [esi], edx
mov eax, dword [esp + 0x28]
test eax, eax
mov edi, eax
je 0x475ddf
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push edi
push eax
mov ecx, esi
call fcn.00406780
mov edi, dword [esp + 0x40]
mov ecx, edi
call fcn.00477b10
mov esi, eax
test esi, esi
je 0x475e13
push esi
mov ecx, edi
call fcn.00477dd0
push esi
mov edi, eax
call dword [sym.imp.USER32.dll_DestroyIcon]
mov eax, dword [esp + 0x44]
mov dword [eax + 0x38], edi
jmp 0x475e8c
lea ecx, [esp + 0xe90]
lea edx, [esp + 0x58]
push ecx
push edx
lea eax, [esp + 0x2c]
push 0x4ee3cc
push eax
call fcn.0040fdb0
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 0x475e55
mov dword [ecx], eax
mov ecx, dword [esp + 0x28]
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x475e67
mov edx, dword [0x4ed0fc]
mov dword [ecx], edx
mov eax, dword [esp + 0x28]
push eax
call fcn.0040f830
mov ecx, edi
call fcn.00477b10
mov esi, eax
test esi, esi
je 0x475e8c
push esi
mov ecx, edi
call fcn.00477dd0
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 [0x4ed100]
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x475ebb
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x475ebb
mov eax, dword [esp + 0x14]
add eax, 0xfffffff4
push eax
call fcn.004d4cc1
add esp, 4
mov eax, dword [esp + 0x24]
mov edx, dword [0x4ed100]
mov byte [esp + 0x12a8], 0
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x475ef2
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x475ef2
mov edx, dword [esp + 0x24]
lea eax, [edx - 0xc]
push eax
call fcn.004d4cc1
add esp, 4
lea eax, [esp + 0x1098]
push 0x4edb54
push eax
call dword [sym.imp.MSVCRT.dll_wcscmp]
mov esi, dword [esp + 0x4c]
add esp, 8
test eax, eax
jne 0x475f17
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 0x475f37
xor eax, eax
jmp 0x475f42
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 0x475f5c
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
jmp 0x475f6c
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.00406780
mov eax, dword [esi + 0x4c]
mov ecx, dword [esp + 0x10]
lea edi, [esi + 0x4c]
cmp eax, ecx
je 0x475fce
mov edx, dword [eax - 0xc]
test edx, edx
jge 0x475f9e
mov edx, dword [0x4ed100]
add eax, 0xfffffff4
cmp eax, edx
jne 0x475fa5
mov eax, dword [ecx - 0xc]
test eax, eax
jge 0x475fb3
mov eax, dword [ecx - 8]
push ecx
push eax
mov ecx, edi
call fcn.00406780
jmp 0x475fce
mov ecx, edi
call fcn.00406610
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 0x475fe0
lea ecx, [esp + 0x58]
push ecx
call ebx
lea edx, [esp + 0x58]
mov ecx, edi
push edx
push eax
call fcn.00406780
lea eax, [esp + 0xc88]
lea edi, [esi + 0x48]
test eax, eax
je 0x476005
lea ecx, [esp + 0xc88]
push ecx
call ebx
lea edx, [esp + 0xc88]
mov ecx, edi
push edx
push eax
call fcn.00406780
mov eax, dword [esp + 0x4c]
lea edx, [esp + 0x58]
mov dword [esi + 0x58], eax
mov ecx, dword [0x4ed0fc]
test edx, edx
mov dword [esp + 0x18], ecx
je 0x47608a
lea eax, [esp + 0x58]
shr eax, 0x10
jne 0x47604c
xor eax, eax
lea ecx, [esp + 0x58]
mov ax, cx
lea ecx, [esp + 0x18]
push eax
call fcn.00406b70
jmp 0x47608a
lea edx, [esp + 0x58]
push edx
call ebx
mov edi, eax
test edi, edi
je 0x47608a
push edi
lea ecx, [esp + 0x1c]
call fcn.00406580
test eax, eax
je 0x47608a
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.0040fc10
mov edi, eax
mov eax, dword [edi]
mov ecx, dword [esp + 0x18]
cmp ecx, eax
mov byte [esp + 0x12a8], 4
je 0x476101
mov edx, dword [ecx - 0xc]
test edx, edx
jge 0x4760d1
mov edx, dword [0x4ed100]
add ecx, 0xfffffff4
cmp ecx, edx
jne 0x4760d8
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x4760e8
push eax
mov eax, dword [eax - 8]
push eax
lea ecx, [esp + 0x20]
call fcn.00406780
jmp 0x476101
lea ecx, [esp + 0x18]
call fcn.00406610
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 [0x4ed100]
mov byte [esp + 0x12a8], 3
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x476138
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x476138
mov edx, dword [esp + 0x2c]
lea eax, [edx - 0xc]
push eax
call fcn.004d4cc1
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 0x476153
xor eax, eax
jmp 0x476156
push edi
call ebx
push edi
push eax
lea ecx, [esp + 0x20]
call fcn.00406780
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.0040fa90
push eax
lea ecx, [esi + 0x14]
mov byte [esp + 0x12ac], 5
call fcn.0040f740
lea ecx, [esp + 0x4c]
mov byte [esp + 0x12a8], 3
call fcn.00406750
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.004af430
add esp, 0x10
test eax, eax
je 0x4761d0
cmp dword [esp + 0x1c], edi
jne 0x4761d0
mov dword [esi + 0x10], edi
cmp dword [esi + 0x10], edi
jne 0x4761dc
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 0x47620c
mov dword [esi + 0x40], 1
jmp 0x476213
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 0x47622f
mov dword [esi + 0x20], 1
jmp 0x476236
mov dword [esi + 0x20], 0
mov edx, dword [0x4ed0fc]
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.00443ef0
push eax
lea ecx, [esp + 0x44]
mov byte [esp + 0x12ac], 7
call fcn.0040f740
lea ecx, [esp + 0x34]
mov byte [esp + 0x12a8], bl
call fcn.00406750
mov edi, dword [esp + 0x48]
cmp edi, 3
jne 0x4762b8
mov eax, dword [esp + 0x10]
push 0
push eax
call fcn.004a8e00
add esp, 8
test eax, eax
jne 0x4762b8
mov ecx, dword [esp + 0x40]
push eax
push ecx
call fcn.004a8e00
add esp, 8
test eax, eax
jne 0x4762b8
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx + 0x10]
jmp 0x4762d9
cmp dword [esp + 0x38], 8
jne 0x4762cf
cmp edi, 2
je 0x4762cf
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 0x10]
jmp 0x4762d9
mov ecx, dword [esp + 0x3c]
push esi
call fcn.00479230
lea ecx, [esp + 0x40]
mov byte [esp + 0x12a8], 3
call fcn.00406750
lea ecx, [esp + 0x18]
mov byte [esp + 0x12a8], 0
call fcn.00406750
lea ecx, [esp + 0x10]
mov dword [esp + 0x12a8], 0xffffffff
call fcn.00406750
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