Function at 0x402300
Capabilities:
Create process on windows
Get common file path
Set registry value

Disassembly:
sub esp, 0x4b4
mov eax, dword [0x408104]
xor eax, esp
mov dword [esp + 0x4b0], eax
mov eax, dword [esp + 0x4bc]
mov ecx, dword [str.HELPFILE]
mov edx, dword [0x40686c]
mov dword [esp], eax
mov al, byte [0x406870]
push ebx
mov byte [esp + 0xac], al
mov ax, word [0x406864]
push ebp
mov ebp, dword [esp + 0x4c0]
mov word [esp + 0x11c], ax
xor eax, eax
push esi
mov dword [esp + 0xac], ecx
mov ecx, dword [str.embedding]
mov dword [esp + 0xb0], edx
mov edx, dword [0x406860]
push edi
mov dword [esp + 0x126], eax
mov dword [esp + 0x12a], eax
mov dword [esp + 0x12e], eax
mov dword [esp + 0x132], eax
mov dword [esp + 0x136], eax
mov dword [esp + 0x13a], eax
mov dword [esp + 0x13e], eax
mov word [esp + 0x142], ax
mov eax, dword [0x406854]
mov dword [esp + 0x11c], ecx
mov ecx, dword [str.ScreenCamMovie]
mov dword [esp + 0x120], edx
mov edx, dword [0x406850]
xor ebx, ebx
push 0x2d
mov dword [esp + 0x1dc], eax
mov dword [esp + 0x1d4], ecx
mov cx, word [0x406858]
mov dword [esp + 0x1d8], edx
mov dl, byte [0x40685a]
lea eax, [esp + 0x1e3]
push ebx
push eax
mov dword [esp + 0x48], ebx
mov dword [esp + 0xc5], ebx
mov word [esp + 0x1e8], cx
mov byte [esp + 0x1ea], dl
call sub.MSVCR80.dll_memset
mov esi, dword [sym.imp.MSVCR80.dll_malloc]
push 0x3d
call esi
mov edi, dword [sym.imp.USER32.dll_MessageBoxA]
add esp, 0x10
cmp eax, ebx
mov dword [esp + 0x54], eax
jne 0x402441
mov ecx, dword [0x40848c]
push 0x10
push str.Program_error
push str.Insuffizient_memory__
push ecx
call edi
push 0x3d
call esi
add esp, 4
cmp eax, ebx
mov dword [esp + 0x4c], eax
jne 0x402465
mov edx, dword [0x40848c]
push 0x10
push str.Program_error
push str.Insuffizient_memory__
push edx
call edi
push 0xc8
call esi
add esp, 4
cmp eax, ebx
mov dword [esp + 0x2c], eax
jne 0x40248b
mov eax, dword [0x40848c]
push 0x10
push str.Program_error
push str.Insuffizient_memory__
push eax
call edi
push 0xc8
call esi
add esp, 4
cmp eax, ebx
mov dword [esp + 0x48], eax
jne 0x4024b2
mov ecx, dword [0x40848c]
push 0x10
push str.Program_error
push str.Insuffizient_memory__
push ecx
call edi
push 0xc8
call esi
add esp, 4
cmp eax, ebx
mov dword [esp + 0x24], eax
jne 0x4024d9
mov edx, dword [0x40848c]
push 0x10
push str.Program_error
push str.Insuffizient_memory__
push edx
call edi
push 0xc8
call esi
add esp, 4
cmp eax, ebx
mov dword [esp + 0x20], eax
jne 0x4024ff
mov eax, dword [0x40848c]
push 0x10
push str.Program_error
push str.Insuffizient_memory__
push eax
call edi
push 0xc8
call esi
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [esp + 0x58], ebx
jne 0x402528
mov ecx, dword [0x40848c]
push 0x10
push str.Program_error
push str.Insuffizient_memory__
push ecx
call edi
push 0x96
call esi
add esp, 4
test eax, eax
mov dword [esp + 0x28], eax
jne 0x40254f
mov edx, dword [0x40848c]
push 0x10
push str.Program_error
push str.Insuffizient_memory__
push edx
call edi
push 0x96
call esi
push 0x1e
mov dword [esp + 0x24], eax
call esi
push 0xc8
mov dword [esp + 0x4c], eax
call esi
push 0xc8
mov dword [0x408488], eax
call esi
push 0xc8
mov dword [esp + 0x28], eax
call esi
push 0xc8
mov dword [esp + 0x5c], eax
call esi
mov dword [esp + 0x68], eax
mov eax, dword [sym.imp.MSVCR80.dll___argc]
add esp, 0x18
cmp dword [eax], 8
jge 0x402624
mov ebp, dword [esp + 0x10]
push 0x10
push str.Program_error
push str.Too_few_arguments__
push ebp
call edi
mov ecx, dword [esp + 0x2c]
mov esi, dword [sym.imp.MSVCR80.dll_free]
push ecx
call esi
mov edx, dword [esp + 0x4c]
push edx
call esi
mov eax, dword [esp + 0x28]
push eax
call esi
mov ecx, dword [esp + 0x30]
push ecx
call esi
push ebx
call esi
mov edx, dword [esp + 0x3c]
push edx
call esi
mov eax, dword [esp + 0x34]
push eax
call esi
mov ecx, dword [0x408488]
push ecx
call esi
mov edx, dword [esp + 0x34]
push edx
call esi
mov eax, dword [esp + 0x70]
push eax
call esi
mov ecx, dword [esp + 0x68]
push ecx
call esi
mov edx, dword [esp + 0x70]
push edx
call esi
mov eax, dword [esp + 0x80]
push eax
call esi
add esp, 0x34
push ebp
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x404cde
push 0x3c
lea ecx, [esp + 0xd0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
je 0x4026b4
lea edi, [esp + 0xcc]
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x402646
mov dx, word [0x4062f8]
mov eax, str.sapdoccd.log
mov word [edi], dx
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x402661
lea edi, [esp + 0xcc]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x402678
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor eax, eax
jmp 0x4026a0
mov cl, byte [esp + eax + 0xcc]
mov byte [eax + str.sapdoccd.log], cl
add eax, 1
test cl, cl
jne 0x4026a0
push 0x406834
push str.sapdoccd.log
call dword [sym.imp.MSVCR80.dll_fopen]
mov ecx, dword [0x408488]
mov dword [0x408490], eax
mov eax, dword [str._cmdline_]
mov dword [ecx], eax
mov edx, dword [0x40682c]
mov eax, dword [0x408488]
mov dword [eax + 4], edx
mov ecx, dword [0x406830]
mov edx, dword [0x408488]
mov eax, ebp
mov dword [edx + 8], ecx
add esp, 8
mov ecx, eax
lea ebx, [ebx]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x402700
mov edi, dword [0x408488]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x402716
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [0x408488]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x402736
mov cx, word [0x406824]
mov word [eax], cx
mov dl, byte [0x406826]
mov byte [eax + 2], dl
mov ebp, dword [0x408490]
test ebp, ebp
je 0x402773
mov eax, dword [0x408488]
push ebp
push eax
call dword [sym.imp.MSVCR80.dll_fputs]
mov ebp, dword [0x408490]
add esp, 8
mov ecx, dword [sym.imp.MSVCR80.dll___argc]
cmp dword [ecx], 1
jle 0x40279e
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov eax, dword [eax + 4]
lea edx, [esp + 0x18]
sub edx, eax
nop
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x402790
jmp 0x4027b7
test ebp, ebp
je 0x4027b7
push ebp
push str.argument_1_missing___n
call dword [sym.imp.MSVCR80.dll_fputs]
mov ebp, dword [0x408490]
add esp, 8
mov ecx, dword [sym.imp.MSVCR80.dll___argc]
cmp dword [ecx], 2
jle 0x4027e1
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov ecx, dword [eax + 8]
lea edx, [esp + 0x38]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x4027d1
jmp 0x4027fa
test ebp, ebp
je 0x4027fa
push ebp
push str.argument_2_missing___n
call dword [sym.imp.MSVCR80.dll_fputs]
mov ebp, dword [0x408490]
add esp, 8
mov ecx, dword [sym.imp.MSVCR80.dll___argc]
cmp dword [ecx], 3
jle 0x40282e
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov eax, dword [eax + 0xc]
lea edx, [esp + 0x144]
sub edx, eax
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x402820
jmp 0x402847
test ebp, ebp
je 0x402847
push ebp
push str.argument_3_missing___n
call dword [sym.imp.MSVCR80.dll_fputs]
mov ebp, dword [0x408490]
add esp, 8
mov ecx, dword [sym.imp.MSVCR80.dll___argc]
cmp dword [ecx], 4
jle 0x4028d9
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov ecx, dword [eax + 0x10]
lea edx, [esp + 0x20c]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x402868
mov edi, str.START_MM_FROM_LOCAL
lea esi, [esp + 0x20c]
mov ecx, 0x14
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
mov eax, 1
jne 0x402896
mov dword [esp + 0x3c], eax
mov edi, str.START_MM_FROM_LOCAL_SEP_SUB
lea esi, [esp + 0x20c]
mov ecx, 0x1c
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4028b6
mov dword [0x408128], eax
mov dword [esp + 0x3c], eax
mov edi, str.SEP_SUB
lea esi, [esp + 0x20c]
mov ecx, 8
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x4028f2
mov dword [0x408128], 1
jmp 0x4028f2
test ebp, ebp
je 0x4028f2
push ebp
push str.argument_4_missing___n
call dword [sym.imp.MSVCR80.dll_fputs]
mov ebp, dword [0x408490]
add esp, 8
mov ecx, dword [sym.imp.MSVCR80.dll___argc]
cmp dword [ecx], 5
jle 0x402959
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov esi, dword [esp + 0x54]
mov ecx, dword [eax + 0x14]
mov edx, esi
mov edi, edi
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x402910
lea ecx, [esp + 0x30]
push ecx
push str.SapHelpGui
push 0x80000000
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x40296c
mov edx, dword [esp + 0x30]
push 0xa
push esi
push 1
push str.GuiPath
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueA]
mov eax, dword [esp + 0x30]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x40296c
test ebp, ebp
je 0x402972
push ebp
push str.argument_5_missing___n
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov ebp, dword [0x408490]
mov ecx, dword [sym.imp.MSVCR80.dll___argc]
cmp dword [ecx], 6
jle 0x40299f
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov eax, dword [eax + 0x18]
lea edx, [esp + 0x2fc]
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402991
jmp 0x4029b8
test ebp, ebp
je 0x4029b8
push ebp
push str.argument_6_missing___n
call dword [sym.imp.MSVCR80.dll_fputs]
mov ebp, dword [0x408490]
add esp, 8
mov ecx, dword [sym.imp.MSVCR80.dll___argc]
cmp dword [ecx], 7
jle 0x4029e5
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov ecx, dword [eax + 0x1c]
lea edx, [esp + 0x24c]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x4029d5
jmp 0x4029fe
test ebp, ebp
je 0x4029fe
push ebp
push str.argument_7_missing___n
call dword [sym.imp.MSVCR80.dll_fputs]
mov ebp, dword [0x408490]
add esp, 8
mov ecx, dword [sym.imp.MSVCR80.dll___argc]
cmp dword [ecx], 8
jle 0x402a30
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov ecx, dword [eax + 0x20]
mov edx, 0x408098
lea esp, [esp]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x402a20
jmp 0x402a43
test ebp, ebp
je 0x402a43
push ebp
push str.argument_8__release__missing___n
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
xor eax, eax
jmp 0x402a50
mov cl, byte [eax + 0x4061d8]
mov byte [esp + eax + 0xb0], cl
add eax, 1
test cl, cl
jne 0x402a50
mov ecx, dword [sym.imp.MSVCR80.dll___argv]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
push 0xd
push eax
lea ecx, [esp + 0xa8]
push ecx
call dword [sym.imp.MSVCR80.dll_strncpy]
lea eax, [esp + 0xac]
add esp, 0xc
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402a90
sub eax, edx
cmp eax, 5
jb 0x402b10
lea eax, [esp + 0xa0]
xor edx, edx
lea esi, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402ab0
sub eax, esi
je 0x402aef
lea ecx, [ecx]
mov al, byte [esp + edx + 0xa1]
mov byte [esp + edx + 0xa0], al
lea eax, [esp + 0xa0]
add edx, 1
lea esi, [eax + 1]
jmp 0x402ae0
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402ae0
sub eax, esi
cmp edx, eax
jb 0x402ac0
lea eax, [esp + 0xa0]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402b00
sub eax, edx
cmp eax, 5
jae 0x402aa0
lea ecx, [esp + 0xa0]
push ecx
call dword [sym.imp.MSVCR80.dll__strupr]
mov ebp, dword [sym.imp.MSVCR80.dll_strtok]
add esp, 4
mov edi, str..SCM
lea esi, [esp + 0xa0]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x402f8f
xor eax, eax
jmp 0x402b50
mov cl, byte [eax + 0x4061c0]
mov byte [esp + eax + 0xb0], cl
add eax, 1
test cl, cl
jne 0x402b50
cmp dword [0x408128], 1
jne 0x402bbc
mov edi, str.docucd
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x402b75
mov esi, dword [0x406704]
mov eax, str.SAPR3
mov dword [edi], esi
lea edx, [eax + 1]
nop
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402b90
sub eax, edx
mov edi, str.SAPR3
mov byte [eax + 0x40804a], cl
add edi, 0xffffffff
lea esp, [esp]
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x402bb0
mov dword [edi], esi
mov esi, dword [esp + 0x1c]
push esi
push 0x406701
mov eax, str..scm
mov byte [esi], 0
call fcn.004011b0
add esp, 8
test eax, eax
jne 0x402cc9
mov edi, dword [esp + 0x40]
mov edx, edi
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402be8
push esi
push str.shellopencommand
mov eax, edi
mov byte [esi], cl
call fcn.004011b0
add esp, 8
test eax, eax
jne 0x402cc6
push 0x4066e4
push esi
call ebp
mov ebx, eax
add esp, 8
mov dword [esp + 0x58], ebx
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402c22
mov edi, dword [esp + 0x24]
sub eax, edx
cmp eax, 0xb
jbe 0x402c60
mov edx, edi
mov eax, ebx
sub edx, ebx
lea esp, [esp]
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402c40
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402c51
sub eax, edx
mov byte [eax + edi - 0xb], cl
mov eax, edi
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x402c65
mov ecx, dword [str.SCPLAYER.EXE]
mov dword [eax], ecx
mov edx, dword [0x4066d8]
mov dword [eax + 4], edx
mov ecx, dword [0x4066dc]
mov dword [eax + 8], ecx
mov dl, byte [0x4066e0]
mov byte [eax + 0xc], dl
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x402c95
mov ax, word [0x4066e4]
mov word [edi], ax
xor eax, eax
lea ebx, [ebx]
mov cl, byte [eax + 0x4061c0]
mov byte [esp + eax + 0xb0], cl
add eax, 1
test cl, cl
jne 0x402cb0
jmp 0x402cc9
mov byte [esi], 0
mov eax, esi
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402cd0
sub eax, edx
jne 0x403004
mov edx, dword [esp + 0x44]
push 0x96
lea ecx, [esp + 0x268]
push ecx
push edx
lea eax, [esp + 0x1dc]
push eax
lea ecx, [esp + 0x12c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProfileStringA]
test eax, eax
jne 0x402db1
mov eax, dword [0x408490]
test eax, eax
je 0x402d29
push eax
push str.MsgBx_ScreenCam_not_available___n
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov edi, dword [esp + 0x10]
push 0x10
push 0x40634c
push str.Screencam_not_available__
push edi
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edx, dword [esp + 0x2c]
mov esi, dword [sym.imp.MSVCR80.dll_free]
push edx
call esi
mov eax, dword [esp + 0x4c]
push eax
call esi
mov ecx, dword [esp + 0x28]
push ecx
call esi
mov edx, dword [esp + 0x30]
push edx
call esi
push ebx
call esi
mov eax, dword [esp + 0x3c]
push eax
call esi
mov ecx, dword [esp + 0x34]
push ecx
call esi
mov edx, dword [0x408488]
push edx
call esi
mov eax, dword [esp + 0x34]
push eax
call esi
mov ecx, dword [esp + 0x70]
push ecx
call esi
mov edx, dword [esp + 0x68]
push edx
call esi
mov eax, dword [esp + 0x70]
push eax
call esi
mov ecx, dword [esp + 0x80]
push ecx
call esi
add esp, 0x34
push edi
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x404cde
mov edx, dword [str.screencam_]
mov eax, dword [0x408488]
mov dword [eax], edx
mov edx, dword [0x408488]
mov ecx, dword [0x406688]
mov dword [edx + 4], ecx
mov eax, dword [0x40668c]
mov ecx, dword [0x408488]
mov dword [ecx + 8], eax
mov dl, byte [0x406690]
mov eax, dword [0x408488]
mov byte [eax + 0xc], dl
lea eax, [esp + 0x264]
mov edx, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402df2
mov edi, dword [0x408488]
sub eax, edx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x402e06
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [0x408490]
test eax, eax
je 0x402e3a
mov ecx, dword [0x408488]
push eax
push ecx
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov esi, dword [esp + 0x28]
lea eax, [esp + 0x264]
mov edx, esi
mov ecx, eax
sub edx, ecx
jmp 0x402e50
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402e50
push esi
call dword [sym.imp.MSVCR80.dll__strupr]
push str.SCRNCAM.EXE
push esi
call dword [sym.imp.MSVCR80.dll_strstr]
mov edx, 1
sub edx, esi
add eax, edx
add esp, 0xc
test eax, eax
mov dword [esp + 0x30], eax
jle 0x403004
mov edi, dword [esp + 0x28]
push 0x406674
push edi
mov byte [eax + edi + 0xa], 0
call dword [sym.imp.MSVCR80.dll_strstr]
mov ecx, edi
add esp, 8
mov esi, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
add ecx, 1
test al, al
jne 0x402ea6
sub ecx, edx
mov edx, ecx
mov ecx, esi
lea edi, [ecx + 1]
mov al, byte [ecx]
add ecx, 1
test al, al
jne 0x402eb8
sub ecx, edi
sub edx, ecx
mov ecx, dword [esp + 0x28]
mov dl, byte [edx + ecx - 1]
mov byte [ebx + 1], al
mov eax, esi
mov byte [ebx], dl
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x402ed6
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x402ee8
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebx
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x402f05
mov ax, word [0x4066e4]
mov word [edi], ax
mov edi, dword [esp + 0x24]
mov edx, edi
mov eax, ebx
sub edx, ebx
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402f22
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402f33
sub eax, edx
mov byte [eax + edi - 0xc], cl
mov eax, edi
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x402f47
mov ecx, dword [str.SCPLAYER.EXE]
mov dword [eax], ecx
mov edx, dword [0x4066d8]
mov dword [eax + 4], edx
mov ecx, dword [0x4066dc]
mov dword [eax + 8], ecx
mov dl, byte [0x4066e0]
mov byte [eax + 0xc], dl
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x402f77
mov ax, word [0x4066e4]
mov word [edi], ax
jmp 0x403004
mov edi, str..HLP
lea esi, [esp + 0xa0]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x402fe6
cmp dword [0x408128], 1
jne 0x402fc8
mov edi, str.docucd
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x402fb7
mov eax, dword [0x406668]
mov dword [edi], eax
xor eax, eax
lea ebx, [ebx]
mov cl, byte [eax + 0x4061d8]
mov byte [esp + eax + 0xb0], cl
add eax, 1
test cl, cl
jne 0x402fd0
jmp 0x403004
xor eax, eax
jmp 0x402ff0
mov cl, byte [eax + 0x4061d8]
mov byte [esp + eax + 0xb0], cl
add eax, 1
test cl, cl
jne 0x402ff0
mov ecx, dword [sym.imp.MSVCR80.dll___argv]
mov edx, dword [ecx]
mov ecx, dword [edx + 0xc]
lea edx, [esp + 0xa0]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x403016
lea eax, [esp + 0xa0]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403030
sub eax, edx
cmp eax, 5
jb 0x4030b0
lea eax, [esp + 0xa0]
xor edx, edx
lea esi, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403050
sub eax, esi
je 0x40308f
lea ecx, [ecx]
mov al, byte [esp + edx + 0xa1]
mov byte [esp + edx + 0xa0], al
lea eax, [esp + 0xa0]
add edx, 1
lea esi, [eax + 1]
jmp 0x403080
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403080
sub eax, esi
cmp edx, eax
jb 0x403060
lea eax, [esp + 0xa0]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4030a0
sub eax, edx
cmp eax, 5
jae 0x403044
lea ecx, [esp + 0xa0]
push ecx
call dword [sym.imp.MSVCR80.dll__strupr]
add esp, 4
mov edi, str..VSD
lea esi, [esp + 0xa0]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x403274
mov eax, dword [esp + 0x20]
mov byte [eax], dl
xor eax, eax
jmp 0x4030f0
mov cl, byte [eax + 0x4061b8]
mov byte [esp + eax + 0xb0], cl
add eax, 1
test cl, cl
jne 0x4030f0
cmp dword [0x408128], 1
jne 0x40315c
mov edi, str.docucd
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403115
mov esi, dword [0x40665c]
mov eax, str.SAPR3
mov dword [edi], esi
lea edx, [eax + 1]
nop
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403130
sub eax, edx
mov edi, str.SAPR3
mov byte [eax + 0x40804a], cl
add edi, 0xffffffff
lea esp, [esp]
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403150
mov dword [edi], esi
mov esi, dword [esp + 0x1c]
push esi
push 0x406701
mov eax, str..vsd
mov byte [esi], 0
call fcn.004011b0
add esp, 8
test eax, eax
jne 0x4031b5
mov edi, dword [esp + 0x40]
mov edx, edi
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x403184
push esi
push str.shellopencommand
mov eax, edi
mov byte [esi], cl
call fcn.004011b0
add esp, 8
test eax, eax
jne 0x4031b5
push 0x4066e4
push esi
call ebp
add esp, 8
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4031c0
sub eax, edx
cmp eax, 0xb
jae 0x403274
mov eax, dword [0x408490]
test eax, eax
je 0x4031ec
push eax
push str.MsgBx_Visio_not_available___n
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov edi, dword [esp + 0x10]
push 0x10
push 0x40634c
push str.Visio_is_not_available__
push edi
call dword [sym.imp.USER32.dll_MessageBoxA]
mov ecx, dword [esp + 0x2c]
mov esi, dword [sym.imp.MSVCR80.dll_free]
push ecx
call esi
mov edx, dword [esp + 0x4c]
push edx
call esi
mov eax, dword [esp + 0x28]
push eax
call esi
mov ecx, dword [esp + 0x30]
push ecx
call esi
push ebx
call esi
mov edx, dword [esp + 0x3c]
push edx
call esi
mov eax, dword [esp + 0x34]
push eax
call esi
mov ecx, dword [0x408488]
push ecx
call esi
mov edx, dword [esp + 0x34]
push edx
call esi
mov eax, dword [esp + 0x70]
push eax
call esi
mov ecx, dword [esp + 0x68]
push ecx
call esi
mov edx, dword [esp + 0x70]
push edx
call esi
mov eax, dword [esp + 0x80]
push eax
call esi
add esp, 0x34
push edi
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x404cde
mov ecx, dword [sym.imp.MSVCR80.dll___argv]
mov edx, dword [ecx]
mov ecx, dword [edx + 0xc]
lea edx, [esp + 0xa0]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x403286
lea eax, [esp + 0xa0]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4032a0
sub eax, edx
cmp eax, 5
jb 0x403320
lea eax, [esp + 0xa0]
xor edx, edx
lea esi, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4032c0
sub eax, esi
je 0x4032ff
lea ecx, [ecx]
mov al, byte [esp + edx + 0xa1]
mov byte [esp + edx + 0xa0], al
lea eax, [esp + 0xa0]
add edx, 1
lea esi, [eax + 1]
jmp 0x4032f0
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4032f0
sub eax, esi
cmp edx, eax
jb 0x4032d0
lea eax, [esp + 0xa0]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403310
sub eax, edx
cmp eax, 5
jae 0x4032b4
mov ebx, dword [sym.imp.MSVCR80.dll__strupr]
lea ecx, [esp + 0xa0]
push ecx
call ebx
mov ebp, dword [sym.imp.WINMM.dll_mciSendStringA]
add esp, 4
mov edi, str..AVI
lea esi, [esp + 0xa0]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40349f
cmp dword [0x408128], 1
jne 0x4033ac
mov edi, str.docucd
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403365
mov esi, dword [0x40660c]
mov eax, str.SAPR3
mov dword [edi], esi
lea edx, [eax + 1]
nop
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403380
sub eax, edx
mov edi, str.SAPR3
mov byte [eax + 0x40804a], cl
add edi, 0xffffffff
lea esp, [esp]
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x4033a0
mov dword [edi], esi
push 0
push 0
push 0
push str.open_AVIVideo
call ebp
test eax, eax
jbe 0x40345d
mov eax, dword [str.MMPLAYER_open_error]
mov ecx, dword [0x408488]
mov dword [ecx], eax
mov edx, dword [0x4065e8]
mov eax, dword [0x408488]
mov dword [eax + 4], edx
mov ecx, dword [0x4065ec]
mov edx, dword [0x408488]
mov dword [edx + 8], ecx
mov eax, dword [0x4065f0]
mov ecx, dword [0x408488]
mov dword [ecx + 0xc], eax
mov edx, dword [0x4065f4]
mov eax, dword [0x408488]
mov dword [eax + 0x10], edx
mov cl, byte [0x4065f8]
mov edx, dword [0x408488]
mov byte [edx + 0x14], cl
mov eax, dword [0x408490]
test eax, eax
je 0x40342f
push eax
mov eax, dword [0x408488]
push eax
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov edi, dword [0x408488]
mov edx, dword [esp + 0x10]
mov ecx, 7
mov esi, str.Mutimedia_Player_not_found__
rep movsd dword es:[edi], dword [esi]
push 0x10
movsb byte es:[edi], byte [esi]
mov ecx, dword [0x408488]
push 0x40634c
push ecx
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x40349f
push 0
push 0
push 0
push str.close_AVIVideo
call ebp
xor eax, eax
lea esp, [esp]
mov cl, byte [eax + 0x4061e4]
mov byte [esp + eax + 0xb0], cl
add eax, 1
test cl, cl
jne 0x403470
mov edx, dword [esp + 0x48]
lea eax, [esp + 0xcc]
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x403493
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov ecx, dword [eax + 0xc]
lea edx, [esp + 0xa0]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x4034b1
lea eax, [esp + 0xa0]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4034d0
sub eax, edx
cmp eax, 5
jb 0x403550
lea eax, [esp + 0xa0]
xor edx, edx
lea esi, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4034f0
sub eax, esi
je 0x40352f
lea ecx, [ecx]
mov cl, byte [esp + edx + 0xa1]
lea eax, [esp + 0xa0]
mov byte [esp + edx + 0xa0], cl
add edx, 1
lea esi, [eax + 1]
jmp 0x403520
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403520
sub eax, esi
cmp edx, eax
jb 0x403500
lea eax, [esp + 0xa0]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403540
sub eax, edx
cmp eax, 5
jae 0x4034e4
lea edx, [esp + 0xa0]
push edx
call ebx
add esp, 4
mov edi, str..WAV
lea esi, [esp + 0xa0]
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x4036cf
cmp dword [0x408128], 1
jne 0x4035dc
mov edi, str.docucd
add edi, 0xffffffff
lea esp, [esp]
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403590
mov esi, dword [0x4065a8]
mov eax, str.SAPR3
mov dword [edi], esi
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4035b0
sub eax, edx
mov edi, str.SAPR3
mov byte [eax + 0x40804a], cl
add edi, 0xffffffff
lea esp, [esp]
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x4035d0
mov dword [edi], esi
push 0
push 0
push 0
push str.open_WaveAudio
call ebp
test eax, eax
jbe 0x40368e
mov ecx, dword [str.MMPLAYER_open_error]
mov edx, dword [0x408488]
mov dword [edx], ecx
mov eax, dword [0x4065e8]
mov ecx, dword [0x408488]
mov dword [ecx + 4], eax
mov edx, dword [0x4065ec]
mov eax, dword [0x408488]
mov dword [eax + 8], edx
mov ecx, dword [0x4065f0]
mov edx, dword [0x408488]
mov dword [edx + 0xc], ecx
mov eax, dword [0x4065f4]
mov ecx, dword [0x408488]
mov dword [ecx + 0x10], eax
mov eax, dword [0x408488]
mov dl, byte [0x4065f8]
mov byte [eax + 0x14], dl
mov eax, dword [0x408490]
test eax, eax
je 0x403660
mov ecx, dword [0x408488]
push eax
push ecx
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov edi, dword [0x408488]
mov eax, dword [esp + 0x10]
mov ecx, 7
mov esi, str.Mutimedia_Player_not_found__
rep movsd dword es:[edi], dword [esi]
push 0x10
movsb byte es:[edi], byte [esi]
mov edx, dword [0x408488]
push 0x40634c
push edx
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x4036cf
push 0
push 0
push 0
push str.close_all
call ebp
xor eax, eax
lea ecx, [ecx]
mov cl, byte [eax + 0x4061cc]
mov byte [esp + eax + 0xb0], cl
add eax, 1
test cl, cl
jne 0x4036a0
mov edx, dword [esp + 0x48]
lea eax, [esp + 0xcc]
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x4036c3
mov edx, dword [sym.imp.MSVCR80.dll___argv]
mov eax, dword [edx]
mov ecx, dword [eax + 0xc]
lea edx, [esp + 0xa0]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x4036e1
lea eax, [esp + 0xa0]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403700
sub eax, edx
cmp eax, 5
jb 0x403780
lea eax, [esp + 0xa0]
xor edx, edx
lea esi, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403720
sub eax, esi
je 0x40375f
lea ecx, [ecx]
mov cl, byte [esp + edx + 0xa1]
lea eax, [esp + 0xa0]
mov byte [esp + edx + 0xa0], cl
add edx, 1
lea esi, [eax + 1]
jmp 0x403750
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403750
sub eax, esi
cmp edx, eax
jb 0x403730
lea eax, [esp + 0xa0]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403770
sub eax, edx
cmp eax, 5
jae 0x403714
lea edx, [esp + 0xa0]
push edx
call ebx
add esp, 4
mov edi, str..PPT
lea esi, [esp + 0xa0]
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x403878
jmp 0x4037b0
mov cl, byte [eax + 0x4061f0]
mov byte [esp + eax + 0xb0], cl
add eax, 1
test cl, cl
jne 0x4037b0
cmp dword [0x408128], 1
jne 0x40381c
mov edi, str.docucd
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x4037d5
mov esi, dword [0x40658c]
mov eax, str.SAPR3
mov dword [edi], esi
lea edx, [eax + 1]
nop
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4037f0
sub eax, edx
mov edi, str.SAPR3
mov byte [eax + 0x40804a], cl
add edi, 0xffffffff
lea esp, [esp]
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403810
mov dword [edi], esi
mov edx, dword [esp + 0x44]
push 0x96
lea ecx, [esp + 0x268]
push ecx
push edx
push str.MSPowerpoint
lea eax, [esp + 0x12c]
push eax
call dword [sym.imp.KERNEL32.dll_GetProfileStringA]
test eax, eax
jne 0x403939
mov eax, dword [0x408490]
test eax, eax
je 0x403861
push eax
push str.MsgBx_PowerPoint_not_in_win.ini___n
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov ecx, dword [esp + 0x10]
push 0x10
push 0x40634c
push str.PowerPoint_not_in_win.ini__
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x54]
push 0x78
lea ecx, [esp + 0x3f8]
push esi
push ecx
call dword [sym.imp.MSVCR80.dll_strncpy]
add esp, 0xc
push 0x3c
lea edx, [esp + 0xd0]
push edx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
je 0x403ac9
mov edi, dword [esp + 0x4c]
mov eax, 3
sub eax, 1
mov byte [eax + edi + 1], 0
jns 0x4038b5
lea eax, [esp + 0xcc]
mov edx, edi
mov ecx, eax
sub edx, ecx
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x4038d0
add edi, 0xffffffff
nop
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x4038e0
mov dx, word [0x4062f8]
lea eax, [esp + 0x2fc]
push eax
mov word [edi], dx
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x20]
push edx
lea edx, [esp + 0x384]
lea ecx, [esp + 0x58]
call fcn.004017f0
mov ebx, eax
lea eax, [esp + 0x400]
mov edx, esi
mov ecx, eax
add esp, 0xc
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x403928
jmp 0x403ae1
mov edx, dword [str.powerpoint_]
mov eax, dword [0x408488]
mov dword [eax], edx
mov edx, dword [0x408488]
mov ecx, dword [0x406530]
mov dword [edx + 4], ecx
mov eax, dword [0x406534]
mov ecx, dword [0x408488]
mov dword [ecx + 8], eax
mov dx, word [0x406538]
mov eax, dword [0x408488]
mov word [eax + 0xc], dx
lea eax, [esp + 0x264]
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403980
mov edi, dword [0x408488]
sub eax, edx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x403994
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [0x408490]
test eax, eax
je 0x4039c8
mov ecx, dword [0x408488]
push eax
push ecx
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov ebp, dword [esp + 0x28]
lea eax, [esp + 0x264]
mov edx, ebp
mov ecx, eax
sub edx, ecx
lea esp, [esp]
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x4039e0
push ebp
call ebx
mov esi, dword [sym.imp.MSVCR80.dll_strstr]
push str.POWERPNT.EXE
push ebp
call esi
mov edx, 1
sub edx, ebp
mov ebx, eax
add ebx, edx
add esp, 0xc
test ebx, ebx
jle 0x40387c
mov eax, ebp
mov byte [ebx + ebp - 1], 0
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403a20
sub eax, edx
mov ecx, 3
sub ecx, eax
push ecx
push str.PPTVIEW.EXE
push ebp
call dword [sym.imp.MSVCR80.dll_strncat]
push 0x406674
push ebp
call esi
mov ecx, ebp
mov esi, eax
add esp, 0x14
lea eax, [ecx + 1]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x403a51
sub ecx, eax
mov edx, ecx
mov ecx, esi
lea edi, [ecx + 1]
mov al, byte [ecx]
add ecx, 1
test al, al
jne 0x403a63
sub ecx, edi
sub edx, ecx
mov dl, byte [edx + ebp - 1]
mov ebp, dword [esp + 0x2c]
mov byte [ebp + 1], al
mov eax, esi
mov byte [ebp], dl
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403a82
mov edi, ebp
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x403a94
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebp
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403ab1
mov ax, word [0x4066e4]
mov word [edi], ax
jmp 0x40387c
mov eax, dword [0x408490]
test eax, eax
je 0x403ae1
push eax
push str.windows_directory_not_found____n
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
test ebx, ebx
je 0x403bd7
lea edx, [esp + 0x2fc]
push edx
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x384]
lea ecx, [esp + 0x60]
call fcn.004017f0
add esp, 0xc
test eax, eax
je 0x403bd7
mov ecx, dword [esp + 0x54]
mov eax, ecx
lea esi, [eax + 1]
nop
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403b20
sub eax, esi
mov bl, 0x5c
cmp byte [eax + ecx - 1], bl
jne 0x403b47
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403b38
sub eax, esi
mov byte [eax + ecx - 1], dl
mov eax, ecx
lea esi, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403b50
sub eax, esi
mov edi, eax
js 0x403baa
nop
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403b65
sub eax, esi
cmp byte [ecx + eax - 1], bl
je 0x403b8f
mov eax, ecx
lea esi, [eax + 1]
jmp 0x403b80
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403b80
sub eax, esi
mov byte [ecx + eax - 1], dl
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403b94
sub eax, esi
cmp byte [ecx + eax - 1], bl
je 0x403baa
sub edi, 1
jns 0x403b60
lea edx, [esp + 0x2fc]
push edx
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x384]
lea ecx, [esp + 0x60]
call fcn.004017f0
add esp, 0xc
test eax, eax
jne 0x404c50
lea eax, [esp + 0x378]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403be1
sub eax, edx
je 0x403c1f
lea ecx, [esp + 0x144]
push ecx
lea edx, [esp + 0x3c]
push edx
lea ecx, [esp + 0x15c]
lea eax, [esp + 0x380]
call fcn.004013d0
add esp, 8
lea eax, [esp + 0x154]
call fcn.004014f0
jmp 0x403c64
lea eax, [esp + 0x2fc]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403c30
sub eax, edx
je 0x404c50
lea eax, [esp + 0x144]
push eax
push 0x406380
lea ecx, [esp + 0x15c]
lea eax, [esp + 0x304]
call fcn.004013d0
add esp, 8
lea eax, [esp + 0x154]
call fcn.004014f0
lea ecx, [esp + 0x20c]
push ecx
mov ebp, eax
call fcn.00404e60
lea edx, [esp + 0x250]
push edx
call fcn.00404ea0
add esp, 8
mov dword [esp + 0x30], eax
mov edi, str.WINVIDEO
lea esi, [esp + 0xb0]
mov ecx, 9
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x404044
push 0x3c
lea ecx, [esp + 0x474]
push ecx
mov ebp, 0x64
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
mov ebx, dword [esp + 0x14]
je 0x404037
lea eax, [esp + 0x470]
mov edx, ebx
mov ecx, eax
sub edx, ecx
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x403ce0
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403cf1
sub eax, edx
cmp byte [eax + ebx - 1], 0x32
je 0x403d3d
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x403d08
sub eax, edx
cmp byte [eax + ebx - 2], 0x33
je 0x403d3d
mov eax, ebx
add eax, 0xffffffff
nop
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x403d20
mov dx, word [0x4064e0]
mov word [eax], dx
mov cl, byte [0x4064e2]
mov byte [eax + 2], cl
cmp dword [esp + 0x3c], 1
jne 0x403f39
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0xcc]
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x403d57
lea eax, [esp + 0xcc]
add eax, 0xffffffff
lea ecx, [ecx]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x403d70
mov edx, dword [str.SAPR3.AVI]
mov ecx, dword [0x4064d8]
mov esi, dword [esp + 0x1c]
mov dword [eax], edx
mov dx, word [0x4064dc]
mov dword [eax + 4], ecx
mov cl, byte [0x4064de]
mov word [eax + 8], dx
lea edx, [esp + 0xb0]
mov byte [eax + 0xa], cl
push esi
push edx
mov eax, str.SapHelp
call fcn.004011b0
add esp, 8
lea ecx, [esp + 0x154]
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403de2
test dl, dl
je 0x403dde
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403de2
add eax, 2
add ecx, 2
test dl, dl
jne 0x403dc2
xor eax, eax
jmp 0x403de7
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x403e0a
lea eax, [esp + 0xcc]
push eax
lea ecx, [esp + 0x158]
call fcn.004012e0
add esp, 4
test eax, eax
jne 0x403f31
lea ecx, [esp + 0x18]
push ecx
push str.SapHelp
push 0x80000000
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x403e4d
mov ecx, dword [esp + 0x18]
push 0xa
lea edx, [esp + 0x158]
push edx
push 1
lea eax, [esp + 0xbc]
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueA]
mov edx, dword [esp + 0x18]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, ebx
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403e52
mov ecx, 6
mov esi, str.mplay32.exe__play__close
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
lea eax, [esp + 0xcc]
movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403e74
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x403e86
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
mov ebp, eax
cmp ebp, 0x20
jge 0x404037
mov eax, dword [esp + 0x2c]
mov edx, ebx
sub edx, eax
lea ebx, [ebx]
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x403ec0
mov edi, ebx
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403ed1
mov ecx, 6
mov esi, str.mplayer.exe__play__close
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
lea eax, [esp + 0xcc]
movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403ef3
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x403f05
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
mov ebp, eax
cmp ebp, 0x20
jge 0x404037
mov dword [esp + 0x3c], 0
mov edi, ebx
add edi, 0xffffffff
mov edi, edi
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403f40
mov ecx, 6
mov esi, str.mplay32.exe__play__close
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
lea eax, [esp + 0x154]
movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x403f62
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x403f74
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
mov ebp, eax
cmp ebp, 0x20
jge 0x404037
cmp dword [esp + 0x3c], 1
je 0x404037
push 0x3c
lea eax, [esp + 0xd0]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea eax, [esp + 0xcc]
mov edx, ebx
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x403fc8
mov edi, ebx
add edi, 0xffffffff
lea esp, [esp]
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x403fe0
mov ecx, 6
mov esi, str.mplayer.exe__play__close
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
lea eax, [esp + 0x154]
movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404002
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404014
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
mov ebp, eax
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x404048
mov ebx, dword [esp + 0x14]
mov edi, str.WAVEFILE
lea esi, [esp + 0xb0]
mov ecx, 9
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x4042de
mov ecx, dword [str.open_WaveAudio_]
mov dword [ebx], ecx
mov edx, dword [0x40647c]
mov dword [ebx + 4], edx
mov eax, dword [0x406480]
mov dword [ebx + 8], eax
mov ecx, dword [0x406484]
lea eax, [esp + 0x154]
mov dword [ebx + 0xc], ecx
mov ecx, eax
mov edi, edi
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404090
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4040a2
mov edx, dword [esp + 0x14]
mov ebx, dword [sym.imp.WINMM.dll_mciSendStringA]
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
push 0
push 0
mov ecx, eax
push 0
and ecx, 3
push edx
rep movsb byte es:[edi], byte [esi]
call ebx
test eax, eax
jbe 0x40419e
mov ecx, dword [0x408488]
mov eax, dword [str.mci_error]
mov dword [ecx], eax
mov eax, dword [0x408488]
mov edx, dword [0x406470]
mov dword [eax + 4], edx
mov cx, word [0x406474]
mov edx, dword [0x408488]
mov word [edx + 8], cx
mov al, byte [0x406476]
mov ecx, dword [0x408488]
mov byte [ecx + 0xa], al
mov eax, dword [esp + 0x14]
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404115
mov edi, dword [0x408488]
sub eax, esi
add edi, 0xffffffff
lea esp, [esp]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404130
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x10]
push 0x10
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [0x408488]
push 0x40634c
push edx
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edi, dword [0x408488]
add edi, 0xffffffff
lea ebx, [ebx]
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x404170
mov cx, word [0x40630c]
mov word [edi], cx
mov eax, dword [0x408490]
test eax, eax
je 0x4042de
mov edx, dword [0x408488]
push eax
push edx
jmp 0x4042d5
mov ecx, dword [str.play]
mov eax, dword [esp + 0x14]
mov dword [eax], ecx
mov dx, word [0x406468]
mov word [eax + 4], dx
lea eax, [esp + 0x154]
mov ecx, eax
mov edi, edi
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4041c0
mov edx, dword [esp + 0x14]
mov edi, edx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4041d6
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
mov eax, edx
rep movsb byte es:[edi], byte [esi]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x4041f3
mov ecx, dword [str._notify]
mov dword [eax], ecx
mov edx, dword [0x406460]
push 0
push 0
mov dword [eax + 4], edx
mov eax, dword [esp + 0x1c]
push 0
push eax
call ebx
test eax, eax
jbe 0x4042de
mov edx, dword [0x408488]
mov ecx, dword [str.mci_error]
mov dword [edx], ecx
mov eax, dword [0x406470]
mov ecx, dword [0x408488]
mov dword [ecx + 4], eax
mov dx, word [0x406474]
mov eax, dword [0x408488]
mov word [eax + 8], dx
mov cl, byte [0x406476]
mov edx, dword [0x408488]
mov eax, dword [esp + 0x14]
mov byte [edx + 0xa], cl
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404264
mov edi, dword [0x408488]
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404278
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x10
rep movsb byte es:[edi], byte [esi]
mov eax, dword [0x408488]
mov ecx, dword [esp + 0x14]
push 0x40634c
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edi, dword [0x408488]
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x4042b1
mov dx, word [0x40630c]
mov word [edi], dx
mov eax, dword [0x408490]
test eax, eax
je 0x4042de
push eax
mov eax, dword [0x408488]
push eax
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov edi, str.POWERPOINT
lea esi, [esp + 0xb0]
mov ecx, 0xb
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x404589
mov ebx, dword [esp + 0x2c]
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404302
sub eax, edx
je 0x40457e
cmp dword [esp + 0x3c], 1
jne 0x40444b
lea eax, [esp + 0xcc]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x404328
mov ecx, dword [str.SAPR3.PPT]
mov edx, dword [0x406448]
mov esi, dword [esp + 0x1c]
mov dword [eax], ecx
mov cx, word [0x40644c]
mov dword [eax + 4], edx
mov dl, byte [0x40644e]
mov word [eax + 8], cx
mov byte [eax + 0xa], dl
lea eax, [esp + 0xb0]
push esi
push eax
mov eax, str.SapHelp
call fcn.004011b0
add esp, 8
lea ecx, [esp + 0x154]
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4043a0
test dl, dl
je 0x40439c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4043a0
add eax, 2
add ecx, 2
test dl, dl
jne 0x404380
xor eax, eax
jmp 0x4043a5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4043ca
lea ecx, [esp + 0xcc]
push ecx
lea ecx, [esp + 0x158]
call fcn.004012e0
mov ebp, eax
add esp, 4
test ebp, ebp
jne 0x40444d
lea edx, [esp + 0x18]
push edx
push str.SapHelp
push 0x80000000
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x40440d
mov edx, dword [esp + 0x18]
push 0xa
lea eax, [esp + 0x158]
push eax
push 1
lea ecx, [esp + 0xbc]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueA]
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0xcc]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404416
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404428
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
mov ebp, eax
test ebp, ebp
jg 0x404493
lea eax, [esp + 0x154]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404458
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
lea ebx, [ebx]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404470
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
mov ebp, eax
cmp ebp, 0x20
jge 0x40457e
cmp ebp, 0x10
je 0x40453a
mov ecx, dword [str.WinExec_error]
mov edx, dword [0x408488]
mov dword [edx], ecx
mov ecx, dword [0x408488]
mov eax, dword [0x406438]
mov dword [ecx + 4], eax
mov edx, dword [0x40643c]
mov eax, dword [0x408488]
mov dword [eax + 8], edx
mov cx, word [0x406440]
mov edx, dword [0x408488]
mov word [edx + 0xc], cx
mov al, byte [0x406442]
mov ecx, dword [0x408488]
push 0xa
lea edx, [esp + 0xc4]
push edx
push ebp
mov byte [ecx + 0xe], al
call dword [sym.imp.MSVCR80.dll__itoa]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404504
mov edi, dword [0x408488]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
lea ebx, [ebx]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404520
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x40454c
mov edi, dword [0x408488]
mov ecx, 0xa
mov esi, str.PowerPoint_viewer_is_already_running__
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x408490]
test eax, eax
je 0x404565
push eax
mov eax, dword [0x408488]
push eax
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov ecx, dword [0x408488]
mov edx, dword [esp + 0x10]
push 0x10
push 0x40634c
push ecx
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov edi, str.VISIO
lea esi, [esp + 0xb0]
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4046f9
mov ebx, dword [esp + 0x20]
mov eax, ebx
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4045b0
sub eax, edx
je 0x4046ee
lea eax, [esp + 0x154]
mov esi, eax
lea ebx, [ebx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4045d0
mov edi, ebx
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4045e0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
mov ebp, eax
cmp ebp, 0x20
jge 0x4046ee
cmp ebp, 0x10
je 0x4046aa
mov eax, dword [str.WinExec_error]
mov ecx, dword [0x408488]
mov dword [ecx], eax
mov eax, dword [0x408488]
mov edx, dword [0x406438]
mov dword [eax + 4], edx
mov ecx, dword [0x40643c]
mov edx, dword [0x408488]
mov dword [edx + 8], ecx
mov ax, word [0x406440]
mov ecx, dword [0x408488]
mov word [ecx + 0xc], ax
mov dl, byte [0x406442]
mov eax, dword [0x408488]
push 0xa
lea ecx, [esp + 0xc4]
push ecx
push ebp
mov byte [eax + 0xe], dl
call dword [sym.imp.MSVCR80.dll__itoa]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404673
mov edi, dword [0x408488]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
lea esp, [esp]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404690
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x4046bc
mov edi, dword [0x408488]
mov ecx, 7
mov esi, str.Visio_is_already_running__
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x408490]
test eax, eax
je 0x4046d6
mov edx, dword [0x408488]
push eax
push edx
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov eax, dword [0x408488]
mov ecx, dword [esp + 0x10]
push 0x10
push 0x40634c
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.USER32.dll_DestroyWindow]
mov edi, str.SCREENCAM
lea esi, [esp + 0xb0]
mov ecx, 0xa
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x404af1
mov ebx, dword [esp + 0x24]
mov eax, ebx
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404720
sub eax, edx
je 0x40499c
cmp dword [esp + 0x3c], 1
jne 0x40488d
lea eax, [esp + 0xcc]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x404746
mov ecx, dword [str.SAPR3.SCM]
mov edx, dword [0x4063d4]
mov esi, dword [esp + 0x1c]
mov dword [eax], ecx
mov cx, word [0x4063d8]
mov dword [eax + 4], edx
mov dl, byte [0x4063da]
mov word [eax + 8], cx
mov byte [eax + 0xa], dl
lea eax, [esp + 0xb0]
push esi
push eax
mov eax, str.SapHelp
call fcn.004011b0
add esp, 8
lea ecx, [esp + 0x154]
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4047b8
test dl, dl
je 0x4047b4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4047b8
add eax, 2
add ecx, 2
test dl, dl
jne 0x404798
xor eax, eax
jmp 0x4047bd
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4047e2
lea ecx, [esp + 0xcc]
push ecx
lea ecx, [esp + 0x158]
call fcn.004012e0
mov ebp, eax
add esp, 4
test ebp, ebp
jne 0x40488b
lea edx, [esp + 0x18]
push edx
push str.SapHelp
push 0x80000000
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x404825
mov edx, dword [esp + 0x18]
push 0xa
lea eax, [esp + 0x158]
push eax
push 1
lea ecx, [esp + 0xbc]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueA]
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
add eax, 0xffffffff
lea ebx, [ebx]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x404830
mov ecx, dword [str._SC]
mov dword [eax], ecx
mov dl, byte [0x4063cc]
mov byte [eax + 4], dl
lea eax, [esp + 0xcc]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404854
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404866
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
mov ebp, eax
test ebp, ebp
jg 0x4048cb
lea eax, [esp + 0x154]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404896
mov edi, ebx
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4048a8
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
mov ebp, eax
cmp ebp, 0x20
jge 0x40499c
cmp ebp, 0x10
je 0x404970
mov eax, dword [str.WinExec_error]
mov ecx, dword [0x408488]
mov dword [ecx], eax
mov eax, dword [0x408488]
mov edx, dword [0x406438]
mov dword [eax + 4], edx
mov ecx, dword [0x40643c]
mov edx, dword [0x408488]
mov dword [edx + 8], ecx
mov ax, word [0x406440]
mov ecx, dword [0x408488]
mov word [ecx + 0xc], ax
mov dl, byte [0x406442]
mov eax, dword [0x408488]
push 0xa
lea ecx, [esp + 0xc4]
push ecx
push ebp
mov byte [eax + 0xe], dl
call dword [sym.imp.MSVCR80.dll__itoa]
add esp, 0xc
mov ecx, eax
jmp 0x404940
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404940
mov edi, dword [0x408488]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404956
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x404982
mov edi, dword [0x408488]
mov ecx, 8
mov esi, str.ScreenCam_is_already_running__
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x408490]
test eax, eax
je 0x40499c
mov edx, dword [0x408488]
push eax
push edx
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov ebx, dword [esp + 0x58]
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4049a5
sub eax, edx
je 0x404ae4
cmp ebp, 0x20
jge 0x404ae4
lea eax, [esp + 0x154]
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4049c8
mov edi, ebx
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4049d8
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 5
and ecx, 3
push ebx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_WinExec]
cmp eax, 0x20
jge 0x404ae4
cmp eax, 0x10
je 0x404aa0
mov ecx, dword [str.WinExec_error]
mov edx, dword [0x408488]
mov dword [edx], ecx
mov ecx, dword [0x406438]
mov edx, dword [0x408488]
mov dword [edx + 4], ecx
mov ecx, dword [0x40643c]
mov edx, dword [0x408488]
mov dword [edx + 8], ecx
mov cx, word [0x406440]
mov edx, dword [0x408488]
mov word [edx + 0xc], cx
mov cl, byte [0x406442]
mov edx, dword [0x408488]
mov byte [edx + 0xe], cl
push 0xa
lea ecx, [esp + 0xc4]
push ecx
push eax
call dword [sym.imp.MSVCR80.dll__itoa]
add esp, 0xc
mov ecx, eax
lea ecx, [ecx]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404a70
mov edi, dword [0x408488]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404a86
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x404ab2
mov edi, dword [0x408488]
mov ecx, 8
mov esi, str.ScreenCam_is_already_running__
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x408490]
test eax, eax
je 0x404acc
mov edx, dword [0x408488]
push eax
push edx
call dword [sym.imp.MSVCR80.dll_fputs]
add esp, 8
mov eax, dword [0x408488]
mov ecx, dword [esp + 0x10]
push 0x10
push 0x40634c
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x404af5
mov ebx, dword [esp + 0x58]
mov edi, str.HELPFILE
lea esi, [esp + 0xb0]
mov ecx, 9
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x404bdb
mov eax, dword [esp + 0x30]
cmp eax, 0x201
jne 0x404bc2
push 0x4063a4
push 0x408098
mov dword [esp + 0x64], 0x3e
call dword [sym.imp.MSVCR80.dll_strstr]
add esp, 8
neg eax
sbb al, al
and al, 0xf4
add al, 0x4d
mov byte [esp + 0x60], al
xor eax, eax
jmp 0x404b50
mov cl, byte [esp + eax + 0x20c]
mov byte [esp + eax + 0x61], cl
add eax, 1
test cl, cl
jne 0x404b50
lea ecx, [esp + 0x5c]
push ecx
push 0x201
lea edx, [esp + 0x15c]
push edx
push 0
call dword [sym.imp.USER32.dll_WinHelpA]
push 0xa
lea ecx, [esp + 0xc4]
push ecx
push eax
call dword [sym.imp.MSVCR80.dll__itoa]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404b92
mov edi, dword [0x408488]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404ba8
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x404bdb
lea edx, [esp + 0x20c]
push edx
push eax
lea eax, [esp + 0x15c]
push eax
push 0
call dword [sym.imp.USER32.dll_WinHelpA]
mov ecx, dword [esp + 0x2c]
mov esi, dword [sym.imp.MSVCR80.dll_free]
push ecx
call esi
mov edx, dword [esp + 0x4c]
push edx
call esi
mov eax, dword [esp + 0x28]
push eax
call esi
mov ecx, dword [esp + 0x30]
push ecx
call esi
push ebx
call esi
mov edx, dword [esp + 0x3c]
push edx
call esi
mov eax, dword [esp + 0x34]
push eax
call esi
mov ecx, dword [0x408488]
push ecx
call esi
mov edx, dword [esp + 0x34]
push edx
call esi
mov eax, dword [esp + 0x70]
push eax
call esi
mov ecx, dword [esp + 0x68]
push ecx
call esi
mov edx, dword [esp + 0x70]
push edx
call esi
mov eax, dword [esp + 0x80]
push eax
call esi
mov ecx, dword [esp + 0x44]
add esp, 0x34
push ecx
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x404cde
mov esi, dword [esp + 0x10]
lea edx, [esp + 0x3f4]
push esi
push edx
call fcn.00401680
add esp, 8
push 0
push 0
push 0x402
push esi
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [esp + 0x2c]
mov esi, dword [sym.imp.MSVCR80.dll_free]
push eax
call esi
mov ecx, dword [esp + 0x4c]
push ecx
call esi
mov edx, dword [esp + 0x28]
push edx
call esi
mov eax, dword [esp + 0x30]
push eax
call esi
mov ecx, dword [esp + 0x68]
push ecx
call esi
mov edx, dword [esp + 0x3c]
push edx
call esi
mov eax, dword [esp + 0x34]
push eax
call esi
mov ecx, dword [0x408488]
push ecx
call esi
mov edx, dword [esp + 0x34]
push edx
call esi
mov eax, dword [esp + 0x70]
push eax
call esi
mov ecx, dword [esp + 0x68]
push ecx
call esi
mov edx, dword [esp + 0x70]
push edx
call esi
mov eax, dword [esp + 0x80]
push eax
call esi
add esp, 0x34
mov ecx, dword [esp + 0x4c0]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004054aa
add esp, 0x4b4
ret