Function at 0x4083c0
Capabilities:
Accept command line arguments
Log keystrokes
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xaac
mov eax, dword [0x4abf20]
push ebx
mov dword [esp + 0xaac], eax
mov al, byte [0x4ac26c]
push esi
xor ebx, ebx
cmp al, bl
push edi
mov esi, ecx
jne 0x40852c
mov eax, dword [ebp + 8]
push eax
call fcn.00407320
cmp eax, ebx
jl 0x408c19
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 4]
mov ecx, esi
call fcn.00401d10
mov ecx, esi
call fcn.00408280
lea eax, [esp + 0x2c]
push eax
push str.UIErrorMode
mov dword [esp + 0x34], ebx
call fcn.00436960
add esp, 8
test eax, eax
je 0x408437
mov ecx, dword [esp + 0x2c]
push ecx
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
call fcn.00430b20
call fcn.00426f00
mov edi, dword [sym.imp.KERNEL32.dll_GetCommandLineW]
call edi
push eax
lea ecx, [esp + 0x3c]
call fcn.0042e630
mov ecx, esi
call fcn.00402a40
test eax, eax
je 0x4084c1
call edi
mov esi, eax
cmp word [esi], bx
je 0x40849e
push esi
mov dword [esp + 0x20], ebx
call dword [sym.imp.MSVCR71.dll_wcslen]
mov ecx, dword [str.Class_of_CyberLink_Universal_Player]
add esp, 4
lea edx, [eax + eax + 2]
lea eax, [esp + 0x1c]
push eax
push ebx
push 0x4a
push ebx
push ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], esi
call dword [0x4ac0d0]
push eax
call dword [0x4ac12c]
lea ecx, [esp + 0x38]
call fcn.0042c340
mov eax, 0x80004005
mov ecx, dword [esp + 0xab4]
call fcn.00484547
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp dword [esp + 0x48], ebx
jne 0x408523
mov ecx, esi
call fcn.00401de0
call fcn.00435610
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
call fcn.0042c460
mov edi, eax
cmp edi, ebx
jl 0x40873a
mov ecx, esi
call fcn.00402010
test eax, eax
jne 0x408523
mov ecx, esi
call fcn.00402900
test eax, eax
jne 0x408523
mov ecx, esi
call fcn.00406c50
test eax, eax
jne 0x408546
mov ecx, dword [0x4ac170]
cmp ecx, ebx
je 0x408523
mov esi, ecx
call fcn.00480390
push esi
call sub.MSVCR71.dll_void___cdecl_operator_delete_void__
add esp, 4
lea ecx, [esp + 0x38]
call fcn.0042c340
mov eax, 0x80004005
mov ecx, dword [esp + 0xab4]
call fcn.00484547
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push ebx
lea edx, [esp + 0x14]
push edx
push str.HasCDKEY
mov dword [esp + 0x1c], ebx
call fcn.00436920
add esp, 0xc
test eax, eax
je 0x408571
cmp dword [esp + 0x10], 1
jne 0x408571
push ebx
call fcn.0041f940
add esp, 4
cmp dword [esp + 0x38], ebx
je 0x408580
mov dword [ebp + 8], 6
jmp 0x40858f
call fcn.0042acc0
cmp eax, 3
jne 0x40858f
call fcn.00482440
push ebx
lea eax, [esp + 0x1c]
push eax
push str.UIStartupFullScreen
mov dword [esp + 0x24], ebx
call fcn.00436920
add esp, 0xc
test eax, eax
je 0x4085b7
cmp dword [esp + 0x18], ebx
je 0x4085b7
mov dword [ebp + 8], 3
cmp dword [esp + 0x3c], ebx
je 0x4085c4
mov dword [ebp + 8], 3
push 0xe8
mov edi, 0x80004005
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], ebx
call fcn.00484484
add esp, 4
cmp eax, ebx
je 0x4085fc
mov ecx, eax
call fcn.004701d0
jmp 0x4085fe
xor eax, eax
cmp eax, ebx
mov dword [esi + 0x60], eax
je 0x40873a
push ebx
push ecx
mov eax, esp
mov dword [esp + 0x1c], esp
push ebx
push SysReAllocStringLen
push str.CommandWindow
push ecx
mov dword [eax], ebx
mov eax, esp
lea ecx, [esp + 0x90]
mov dword [esp + 0x2c], esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x60]
push ebx
call fcn.00408060
cmp eax, ebx
je 0x40873a
mov ecx, dword [esi + 0x60]
push 0x416780
push 1
call fcn.004710a0
mov ecx, dword [esi + 0x60]
push 0x409690
push 2
call fcn.004710a0
mov ecx, dword [esi + 0x60]
push 0x416780
push 3
call fcn.004710a0
mov ecx, dword [esi + 0x60]
push 0x416780
push 5
call fcn.004710a0
mov ecx, dword [esi + 0x60]
push 0x416780
push 6
call fcn.004710a0
mov ecx, dword [esi + 0x60]
push 0x416780
push 7
call fcn.004710a0
mov edx, dword [esi + 0x60]
mov eax, dword [edx + 4]
push eax
call fcn.004327e0
push ebx
lea ecx, [esp + 0x14]
push ecx
push str.UISkinRandom
mov dword [esp + 0x1c], ebx
call fcn.00436820
mov eax, dword [esp + 0x1c]
add esp, 0x10
cmp eax, ebx
je 0x4086cc
mov ecx, dword [esi + 0x60]
call fcn.00472f90
mov eax, dword [ebp + 8]
cmp eax, 3
mov ecx, dword [esi + 0x60]
jne 0x40872e
push 1
call fcn.00473350
mov edi, eax
cmp edi, ebx
jl 0x40873a
mov eax, dword [esi + 0x60]
lea edx, [esp + 0x58]
mov dword [esp + 0x1c], edx
push ebx
lea edx, [esp + 0x20]
push edx
add eax, 0x24
push 0x22
mov word [esp + 0x64], 3
mov dword [esp + 0x6c], 0xffff
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], 1
mov dword [esp + 0x34], ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x48]
mov edi, eax
lea eax, [esp + 0x58]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
jmp 0x408736
push eax
call fcn.00473350
mov edi, eax
cmp edi, ebx
jge 0x40875a
lea ecx, [esp + 0x38]
call fcn.0042c340
mov eax, edi
mov ecx, dword [esp + 0xab4]
call fcn.00484547
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, esi
call fcn.00404140
call fcn.00426c50
lea ecx, [esp + 0x10]
push ecx
push str.HasCDKEY
mov dword [esp + 0x18], ebx
call fcn.00436960
add esp, 8
test eax, eax
mov eax, dword [esp + 0x10]
je 0x408788
cmp eax, ebx
jne 0x4087f5
push eax
push str.HasCDKEY
call fcn.004369a0
add esp, 8
test eax, eax
je 0x4087f5
call fcn.0042acc0
mov edi, eax
mov eax, dword [esi + 0x60]
mov edx, dword [eax + 0x50]
lea ecx, [esp + 0xc]
add eax, 0x50
push ecx
push eax
call dword [edx + 0x14]
mov eax, edi
sub eax, ebx
je 0x4087be
sub eax, 2
jne 0x4087f5
mov edx, dword [esp + 0xc]
push ebx
push 0x68
push edx
call fcn.004240f0
add esp, 0xc
push 0x7d
call dword [sym.imp.KERNEL32.dll_Sleep]
push ebx
lea eax, [esp + 0x14]
push eax
push str.HasCDKEY
call fcn.00436920
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp eax, ebx
je 0x408523
push ebx
push str.UI_EQUALIZER
call fcn.004369a0
push 0xfa32
push str.UI_PITCH
call fcn.004369a0
add esp, 0x10
call fcn.00432e50
test eax, eax
setne cl
movzx edx, cl
mov dword [esi + 0x44], edx
call fcn.00401000
cmp dword [esi + 0x44], ebx
movzx eax, al
mov dword [esi + 0x48], eax
je 0x408849
cmp eax, ebx
je 0x408849
call fcn.00401030
push ebx
push ebx
push ebx
push 0x1025
call dword [0x4ac140]
push ebx
lea eax, [esp + 0x1c]
push eax
push str.UIAlwaysOnTop
call fcn.00436820
mov eax, dword [esp + 0x24]
add esp, 0xc
cmp eax, ebx
je 0x4088da
mov eax, dword [esi + 0x60]
lea edx, [esp + 0x58]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x10]
add eax, 0x24
push 0x4e85
mov dword [esp + 0x14], ebx
mov word [esp + 0x60], 3
mov dword [esp + 0x68], 0xb
mov word [esp + 0x70], 0x13
mov dword [esp + 0x78], ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], 2
mov dword [esp + 0x30], ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0xc]
push 3
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push eax
call dword [sym.imp.USER32.dll_SetWindowPos]
push 0x403700
push 2
push 0x10
lea ecx, [esp + 0x64]
push ecx
call fcn.00484614
mov word [esp + 0x8a8], bx
xor eax, eax
mov ecx, 0x81
lea edi, [esp + 0x8aa]
rep stosd dword es:[edi], eax
push 0x104
lea edx, [esp + 0x8ac]
push edx
push 0x490674
stosw word es:[edi], ax
call fcn.00436b60
add esp, 0xc
test eax, eax
je 0x40891a
push ebx
mov ecx, esi
call fcn.004021b0
lea ecx, [esp + 0x38]
call fcn.0042f9e0
cmp dword [esp + 0x38], ebx
je 0x40894a
push ebx
lea eax, [esp + 0x10]
push eax
push str.PlayAtOnce
mov dword [esp + 0x18], ebx
call fcn.00436920
add esp, 0xc
test eax, eax
je 0x408974
mov eax, dword [esp + 0xc]
jmp 0x408969
cmp eax, ebx
je 0x408965
mov ecx, dword [esi + 0x60]
call fcn.0046ec70
cmp eax, ebx
je 0x408974
mov ecx, dword [eax]
push ebx
push 0xf
push eax
call dword [ecx + 0x28]
jmp 0x408974
mov eax, dword [esp + 0x44]
cmp eax, ebx
je 0x408974
mov ecx, esi
call fcn.00402890
call fcn.0042ad20
push ebx
lea edx, [esp + 0x38]
push edx
push str.UI_SetFocus
mov dword [esp + 0x40], ebx
call fcn.00436920
add esp, 0xc
test eax, eax
je 0x408a08
cmp dword [esp + 0x34], ebx
je 0x408a08
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov edi, eax
mov eax, dword [esi + 0x60]
mov ecx, dword [eax + 0x50]
lea edx, [esp + 0xc]
add eax, 0x50
push edx
push eax
mov dword [esp + 0x1c], edi
call dword [ecx + 0x14]
xor ecx, ecx
test eax, eax
mov eax, dword [esp + 0xc]
setge cl
xor edx, edx
cmp edi, eax
setne dl
test edx, ecx
je 0x408a08
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edi, eax
mov eax, dword [esp + 0x14]
push ebx
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push 1
push eax
push edi
mov dword [esp + 0x20], eax
call dword [sym.imp.USER32.dll_AttachThreadInput]
mov ecx, dword [esp + 0xc]
push ecx
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov edx, dword [esp + 0x14]
push ebx
push edx
push edi
call dword [sym.imp.USER32.dll_AttachThreadInput]
mov ecx, esi
call fcn.00402230
mov dword [esi + 0x50], eax
xor eax, eax
mov word [esp + 0x290], bx
mov ecx, 0x81
lea edi, [esp + 0x292]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
mov word [esp + 0x88], bx
mov ecx, 0x81
lea edi, [esp + 0x8a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [esp + 0x88]
push eax
lea ecx, [esp + 0x294]
push ecx
mov ecx, esi
call fcn.004053e0
lea edx, [esp + 0x88]
push edx
lea eax, [esp + 0x294]
push eax
mov ecx, esi
call fcn.00402310
push 1
lea ecx, [esp + 0x34]
push ecx
push str.UI_Intel965Init
mov dword [esp + 0x3c], 1
call fcn.00436820
mov eax, dword [esp + 0x3c]
add esp, 0xc
cmp eax, ebx
je 0x408bfb
xor eax, eax
mov word [esp + 0x498], bx
mov ecx, 0x81
lea edi, [esp + 0x49a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
mov word [esp + 0x6a0], bx
mov ecx, 0x81
lea edi, [esp + 0x6a2]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov edi, dword [sym.imp.MSVCR71.dll_wcscpy]
lea edx, [esp + 0x290]
push edx
lea eax, [esp + 0x49c]
push eax
call edi
lea ecx, [esp + 0x90]
push ecx
lea edx, [esp + 0x6ac]
push edx
call edi
mov edi, dword [sym.imp.MSVCR71.dll_wcsstr]
lea eax, [esp + 0x4a8]
push str.INTEL
push eax
call edi
add esp, 0x18
test eax, eax
je 0x408bfb
lea ecx, [esp + 0x6a0]
push str.G965
push ecx
call edi
add esp, 8
test eax, eax
je 0x408bfb
push ebx
push str.UI_Intel965Init
call fcn.004368f0
push 0x100010
push str.UI_VMRForceMixing
call fcn.004368f0
push 5
push str.UIUseVMR
call fcn.004368f0
push 2
push str.UIEnableVMode
call fcn.004368f0
push 1
push str.UIUseHVA
call fcn.004368f0
push 1
push str.UIClrCtrl_CurSel
call fcn.004368f0
push ebx
push str.iHWMC
call fcn.004368f0
mov eax, dword [0x4ac1b0]
mov edx, dword [eax + 0x1c]
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x4c], edx
mov edx, dword [ecx]
mov dword [eax + 0x18], edx
mov ecx, dword [0x4ac1b0]
add esp, 0x38
call fcn.00405db0
mov edi, eax
cmp edi, ebx
je 0x408bda
mov eax, dword [edi]
push edi
call dword [eax + 0x28]
cmp eax, 1
jne 0x408bc9
mov ecx, dword [edi]
push ebx
push 0x4ecb
push ebx
push edi
call dword [ecx + 0x44]
mov ecx, dword [0x4ac1b0]
call fcn.00405db0
mov edi, eax
cmp edi, ebx
jne 0x408bb1
mov ecx, dword [esp + 0x14]
cmp ecx, ebx
mov eax, dword [0x4ac1b0]
je 0x408bf2
mov edx, dword [eax + 0x10]
mov dword [eax + 0x1c], ecx
mov dword [eax + 0x18], edx
jmp 0x408bfb
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x1c], ebx
mov dword [eax + 0x18], ecx
mov esi, dword [esi + 0x60]
cmp esi, ebx
je 0x408c0e
mov edx, dword [esi + 4]
push edx
call fcn.00431a40
add esp, 4
lea ecx, [esp + 0x38]
call fcn.0042c340
xor eax, eax
mov ecx, dword [esp + 0xab4]
call fcn.00484547
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4