Function at 0x406090
Capabilities:
Read .ini file

Disassembly:
sub esp, 0x210
mov eax, dword [0x52b8b8]
nop
nop
nop
nop
push ebx
push esi
push edi
push ebp
push eax
mov edi, dword [sym.imp.USER32.dll_wsprintfA]
push 0x455d9c
push 0x455630
call edi
add esp, 0xc
mov ecx, dword [0x52b8a0]
push str.vcop2.ini
push ecx
call fcn.00405fc0
add esp, 8
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [0x786a28], eax
nop
push eax
push 1
push str.FrameSkip
push str.System
call ebx
mov ecx, dword [0x786a28]
mov dword [0x4595fc], eax
push ecx
push 0
push 0x455d74
push str.System
call ebx
lea ecx, [esp + 0x120]
mov dword [0x4595f8], eax
mov eax, dword [0x786a28]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push eax
push 0x100
push ecx
push 0x455d70
push str.DebugString
push str.Secret
call esi
lea ecx, [esp + 0x120]
push 0x455d58
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
mov ecx, dword [0x786a28]
cmp eax, 1
sbb eax, eax
push ecx
neg eax
push 0x40
mov dword [0x4595f4], eax
push 0x786a30
push str.Direct_Draw
push str.Dllname
push str.GraphicDevice
call esi
mov ecx, dword [0x786a28]
push ecx
push 0x40
push 0x7869e0
push str.default
push str.Devicename
push str.GraphicDevice
call esi
mov ecx, dword [0x786a28]
push ecx
push 0
push str.Width
push str.GraphicDevice
call ebx
mov ecx, dword [0x786a28]
mov dword [0x786a24], eax
push ecx
push 0
push str.Height
push str.GraphicDevice
call ebx
mov dword [0x786a20], eax
cmp eax, 0xf0
jl 0x4061e3
cmp eax, 0x1e0
jg 0x4061e3
mov eax, dword [0x786a24]
cmp eax, 0x140
jl 0x4061e3
cmp eax, 0x280
jle 0x4061f7
mov dword [0x786a24], 0x280
mov dword [0x786a20], 0x1e0
mov eax, dword [0x786a28]
push eax
push 0x10
push str.Color
push str.GraphicDevice
call ebx
mov dword [0x786a7c], eax
cmp eax, 8
je 0x40622e
cmp eax, 0x10
je 0x40622e
cmp eax, 0x18
je 0x40622e
cmp eax, 0x20
je 0x40622e
mov dword [0x786a7c], 0x10
mov eax, dword [0x786a28]
push eax
push 1
push str.Mode
push str.GraphicDevice
call ebx
mov dword [0x786a90], eax
test eax, eax
jne 0x406269
mov dword [0x786a24], 0x280
mov dword [0x786a20], 0x1e0
mov dword [0x786a7c], 0x10
mov eax, dword [0x786a28]
push eax
push 0
push 0x455cfc
push str.DeviceSelect
call ebx
mov dword [0x48f8a0], eax
mov eax, dword [0x786a28]
push eax
push 2
push 0x455ce8
push str.DeviceSelect
call ebx
mov dword [0x48f8a4], eax
mov eax, dword [0x786a28]
push eax
push 0x11
push str.1PUP
push str.KeyConfig
call ebx
mov byte [0x4d4270], al
mov eax, dword [0x786a28]
push eax
push 0x1f
push str.1PDOWN
push str.KeyConfig
call ebx
mov byte [0x4d4271], al
mov eax, dword [0x786a28]
push eax
push 0x1e
push str.1PLEFT
push str.KeyConfig
call ebx
mov byte [0x4d4272], al
mov eax, dword [0x786a28]
push eax
push 0x20
push str.1PRIGHT
push str.KeyConfig
call ebx
mov byte [0x4d4273], al
mov eax, dword [0x786a28]
push eax
push 0x2f
push str.1PFIRE
push str.KeyConfig
call ebx
mov byte [0x4d4274], al
mov eax, dword [0x786a28]
push eax
push 0x22
push str.1PSPEEDUP
push str.KeyConfig
call ebx
mov byte [0x4d4275], al
mov eax, dword [0x786a28]
push eax
push 0x23
push str.1PRELOAD
push str.KeyConfig
call ebx
mov byte [0x4d4276], al
mov eax, dword [0x786a28]
push eax
push 0x39
push str.1PSTART
push str.KeyConfig
call ebx
mov byte [0x4d4277], al
mov eax, dword [0x786a28]
push eax
push 0xc8
push str.2PUP
push str.KeyConfig
call ebx
mov byte [0x4d4278], al
mov eax, dword [0x786a28]
push eax
push 0xd0
push str.2PDOWN
push str.KeyConfig
call ebx
mov byte [0x4d4279], al
mov eax, dword [0x786a28]
push eax
push 0xcb
push str.2PLEFT
push str.KeyConfig
call ebx
mov byte [0x4d427a], al
mov eax, dword [0x786a28]
push eax
push 0xcd
push str.2PRIGHT
push str.KeyConfig
call ebx
mov byte [0x4d427b], al
mov eax, dword [0x786a28]
push eax
push 0x52
push str.2PFIRE
push str.KeyConfig
call ebx
mov byte [0x4d427c], al
mov eax, dword [0x786a28]
push eax
push 0x50
push str.2PSPEEDUP
push str.KeyConfig
call ebx
mov byte [0x4d427d], al
mov eax, dword [0x786a28]
push eax
push 0x51
push str.2PRELOAD
push str.KeyConfig
call ebx
mov byte [0x4d427e], al
mov eax, dword [0x786a28]
push eax
push 0x1c
push str.2PSTART
push str.KeyConfig
call ebx
mov byte [0x4d427f], al
mov eax, dword [0x786a28]
push eax
push 0
push str.SHOT
push str.MouseConfig
call ebx
mov byte [0x4d4248], al
mov eax, dword [0x786a28]
push eax
push 1
push str.RELOAD
push str.MouseConfig
call ebx
mov byte [0x4d4249], al
mov eax, dword [0x786a28]
push eax
push 2
push str.SPEED
push str.MouseConfig
call ebx
mov byte [0x4d424a], al
mov eax, dword [0x786a28]
push eax
push 0
push str.1PSHOT
push str.PadConfig
call ebx
mov byte [0x4d4258], al
mov eax, dword [0x786a28]
push eax
push 2
push str.1PRELOAD
push str.PadConfig
call ebx
mov byte [0x4d4259], al
mov eax, dword [0x786a28]
push eax
push 1
push str.1PSPEEDUP
push str.PadConfig
call ebx
mov byte [0x4d425a], al
mov eax, dword [0x786a28]
push eax
push 8
push str.1PSTART
push str.PadConfig
call ebx
mov byte [0x4d425b], al
mov eax, dword [0x786a28]
push eax
push 0
push str.2PSHOT
push str.PadConfig
call ebx
mov byte [0x4d425c], al
mov eax, dword [0x786a28]
push eax
push 2
push str.2PRELOAD
push str.PadConfig
call ebx
mov byte [0x4d425d], al
mov eax, dword [0x786a28]
push eax
push 1
push str.2PSPEEDUP
push str.PadConfig
call ebx
mov byte [0x4d425e], al
mov eax, dword [0x786a28]
push eax
push 8
push str.2PSTART
push str.PadConfig
call ebx
mov byte [0x4d425f], al
mov eax, dword [0x786a28]
push eax
push 0
push str.1PSHOT
push str.StickConfig
call ebx
mov byte [0x4d4260], al
mov eax, dword [0x786a28]
push eax
push 1
push str.1PRELOAD
push str.StickConfig
call ebx
mov byte [0x4d4261], al
mov eax, dword [0x786a28]
push eax
push 2
push str.1PSPEED
push str.StickConfig
call ebx
mov byte [0x4d4262], al
mov eax, dword [0x786a28]
push eax
push 8
push str.1PSTART
push str.StickConfig
call ebx
mov byte [0x4d4263], al
mov eax, dword [0x786a28]
push eax
push 0
push str.2PSHOT
push str.StickConfig
call ebx
mov byte [0x4d4264], al
mov eax, dword [0x786a28]
push eax
push 1
push str.2PRELOAD
push str.StickConfig
call ebx
mov byte [0x4d4265], al
mov eax, dword [0x786a28]
push eax
push 2
push str.2PSPEED
push str.StickConfig
call ebx
mov byte [0x4d4266], al
mov eax, dword [0x786a28]
push eax
push 8
push str.2PSTART
push str.StickConfig
call ebx
mov byte [0x4d4267], al
mov eax, dword [0x786a28]
push eax
push 0
push str.1PSHOT
push str.SSMouseConfig
call ebx
mov byte [0x4d4250], al
mov eax, dword [0x786a28]
push eax
push 1
push str.1PRELOAD
push str.SSMouseConfig
call ebx
mov byte [0x4d4251], al
mov eax, dword [0x786a28]
push eax
push 2
push str.1PSPEED
push str.SSMouseConfig
call ebx
mov byte [0x4d4252], al
mov eax, dword [0x786a28]
push eax
push 0
push str.2PSHOT
push str.SSMouseConfig
call ebx
mov byte [0x4d4253], al
mov eax, dword [0x786a28]
push eax
push 1
push str.2PRELOAD
push str.SSMouseConfig
call ebx
mov byte [0x4d4254], al
mov eax, dword [0x786a28]
push eax
push 2
push str.2PSPEED
push str.SSMouseConfig
call ebx
mov byte [0x4d4255], al
mov eax, dword [0x786a28]
push eax
push 0
push str.1PSHOT
push str.SSDeviceConfig
call ebx
mov byte [0x4d4240], al
mov eax, dword [0x786a28]
push eax
push 2
push str.1PRELOAD
push str.SSDeviceConfig
call ebx
mov byte [0x4d4241], al
mov eax, dword [0x786a28]
push eax
push 1
push str.1PSPEEDUP
push str.SSDeviceConfig
call ebx
mov byte [0x4d4242], al
mov eax, dword [0x786a28]
push eax
push 2
push str.1PSPEED
push str.SSDeviceConfig
call ebx
mov byte [0x4d4243], al
mov eax, dword [0x786a28]
push eax
push 0
push str.2PSHOT
push str.SSDeviceConfig
call ebx
mov byte [0x4d4244], al
mov eax, dword [0x786a28]
push eax
push 2
push str.2PRELOAD
push str.SSDeviceConfig
call ebx
mov byte [0x4d4245], al
mov eax, dword [0x786a28]
push eax
push 1
push str.2PSPEEDUP
push str.SSDeviceConfig
call ebx
mov byte [0x4d4246], al
mov eax, dword [0x786a28]
push eax
push 2
push str.2PSPEED
push str.SSDeviceConfig
call ebx
mov byte [0x4d4247], al
mov eax, dword [0x786a28]
push eax
push 9
push str.1PGunExt
push str.GameSetting
call ebx
mov ecx, dword [0x786a88]
mov byte [ecx + 2], al
mov ecx, dword [0x786a88]
lea eax, [ecx + 2]
mov cl, byte [ecx + 2]
cmp cl, 0x1e
jbe 0x4067a1
mov byte [eax], 9
mov eax, dword [0x786a28]
push eax
push 9
push str.2PGunExt
push str.GameSetting
call ebx
mov ecx, dword [0x786a8c]
mov byte [ecx + 2], al
mov ecx, dword [0x786a8c]
lea eax, [ecx + 2]
mov cl, byte [ecx + 2]
cmp cl, 0x1e
jbe 0x4067d2
mov byte [eax], 9
mov eax, dword [0x786a28]
push eax
push 1
push 0x455ba0
push str.GameSetting
call ebx
mov ecx, dword [0x7869d0]
mov byte [ecx], al
mov ecx, dword [0x7869d0]
mov al, byte [ecx]
cmp al, 2
jg 0x4067fe
cmp al, 1
jge 0x406806
mov eax, dword [0x7869d0]
mov byte [eax], 1
mov eax, dword [0x786a28]
push eax
push 5
push 0x455b94
push str.GameSetting
call ebx
mov ecx, dword [0x7869d0]
mov byte [ecx + 1], al
mov ecx, dword [0x7869d0]
lea eax, [ecx + 1]
mov cl, byte [ecx + 1]
cmp cl, 0xa
jg 0x406838
test cl, cl
jge 0x40683b
mov byte [eax], 5
mov eax, dword [0x7869d0]
mov cl, byte [eax + 1]
inc eax
cmp cl, 0xa
jne 0x40684c
mov byte [eax], 0xff
mov eax, dword [0x786a28]
push eax
push 0
push str.SightOff
push str.GameSetting
call ebx
mov ecx, dword [0x7869d0]
mov byte [ecx + 2], al
mov eax, dword [0x7869d0]
mov dl, byte [eax + 2]
add eax, 2
cmp dl, 1
jle 0x40687c
mov byte [eax], 0
mov eax, dword [0x7869d0]
mov ecx, 1
mov byte [eax + 3], 0
mov edx, dword [0x786a80]
mov byte [edx + 1], cl
mov edx, dword [0x786a80]
mov byte [edx + 2], cl
mov eax, dword [0x786a28]
push eax
push 0
push str.Extra
push str.GameSetting
call ebx
mov ecx, dword [0x786a80]
mov byte [ecx], al
mov ecx, dword [0x786a80]
mov al, byte [ecx]
test al, al
jl 0x4068c8
cmp al, 2
jle 0x4068d0
mov eax, dword [0x786a80]
mov byte [eax], 0
mov eax, dword [0x786a80]
mov byte [eax + 4], 0
mov ecx, dword [0x786a28]
push ecx
push 0
push str.VC1Mode
push str.GameSetting
call ebx
mov ecx, dword [0x786a80]
mov byte [ecx + 7], al
mov ecx, dword [0x786a80]
lea eax, [ecx + 7]
mov cl, byte [ecx + 7]
test cl, cl
jl 0x40690c
cmp cl, 1
jle 0x40690f
mov byte [eax], 0
mov eax, dword [0x786a28]
push eax
push 0
push str.ClearCnt
push str.GameSetting
call ebx
mov ecx, dword [0x786a80]
mov byte [ecx + 9], al
mov ecx, dword [0x786a80]
cmp byte [ecx], 0
je 0x4069f7
mov eax, dword [0x786a28]
push eax
push 0
push str.Mirror
push str.Special
call ebx
mov ecx, dword [0x786a80]
mov byte [ecx + 3], al
mov ecx, dword [0x786a80]
lea eax, [ecx + 3]
mov cl, byte [ecx + 3]
test cl, cl
jl 0x40696d
cmp cl, 1
jle 0x406970
mov byte [eax], 0
mov eax, dword [0x786a28]
push eax
push 0
push str.BigHead
push str.Special
call ebx
mov ecx, dword [0x786a80]
mov byte [ecx + 8], al
mov ecx, dword [0x786a80]
lea eax, [ecx + 8]
mov cl, byte [ecx + 8]
test cl, cl
jl 0x4069a2
cmp cl, 1
jle 0x4069a5
mov byte [eax], 0
mov eax, dword [0x786a28]
push eax
push 0
push str.Random
push str.Special
call ebx
mov byte [0x52b463], al
cmp al, 1
jbe 0x4069c9
mov byte [0x52b463], 0
mov eax, dword [0x786a28]
push eax
push 0
push str.Single
push str.Special
call ebx
mov dword [0x455740], eax
test eax, eax
jl 0x4069eb
cmp eax, 1
jle 0x406a15
mov dword [0x455740], 0
jmp 0x406a15
mov eax, dword [0x786a80]
xor ecx, ecx
mov byte [eax + 3], cl
mov eax, dword [0x786a80]
mov byte [eax + 8], cl
mov byte [0x52b463], cl
mov dword [0x455740], ecx
mov eax, dword [0x786a80]
cmp byte [eax], 2
jne 0x406ad5
mov eax, dword [0x786a28]
push eax
push 1
push 0x455b48
push str.Cheat
call ebx
mov dword [0x455748], eax
test eax, eax
jl 0x406a45
cmp eax, 1
jle 0x406a4f
mov dword [0x455748], 1
mov eax, dword [0x786a28]
push eax
push 0
push str.GunSelect
push str.Cheat
call ebx
mov dword [0x455738], eax
test eax, eax
jl 0x406a71
cmp eax, 1
jle 0x406a7b
mov dword [0x455738], 0
mov eax, dword [0x786a28]
push eax
push 0
push str.ReloadType
push str.Cheat
call ebx
mov dword [0x455734], eax
test eax, eax
jl 0x406a9d
cmp eax, 1
jle 0x406aa7
mov dword [0x455734], 0
mov eax, dword [0x786a28]
push eax
push 1
push str.GunSpecial
push str.Cheat
call ebx
mov dword [0x45573c], eax
test eax, eax
jl 0x406ac9
cmp eax, 1
jle 0x406af2
mov dword [0x45573c], 1
jmp 0x406af2
mov ecx, 1
xor eax, eax
mov dword [0x455748], ecx
mov dword [0x455738], eax
mov dword [0x455734], eax
mov dword [0x45573c], ecx
mov eax, dword [0x455748]
test eax, eax
jne 0x406b2b
mov ecx, dword [0x455734]
mov eax, dword [0x786a80]
xor cl, 1
mov byte [eax + 6], cl
mov ecx, dword [0x455738]
xor cl, 1
mov eax, dword [0x786a80]
mov byte [eax + 5], cl
mov edx, dword [0x45573c]
mov dword [0x455744], edx
jmp 0x406b47
mov eax, dword [0x786a80]
xor ecx, ecx
mov byte [eax + 6], cl
mov eax, dword [0x786a80]
mov byte [eax + 5], cl
mov dword [0x455744], 1
mov eax, dword [0x786a28]
push eax
push 4
push str.1PLife
push str.GameSetting
call ebx
mov ecx, dword [0x786a88]
mov byte [ecx + 1], al
mov eax, dword [0x786a88]
mov dl, byte [eax + 1]
inc eax
cmp dl, 9
jbe 0x406b75
mov byte [eax], 4
mov eax, dword [0x786a28]
push eax
push 4
push str.2PLife
push str.GameSetting
call ebx
mov ecx, dword [0x786a8c]
mov byte [ecx + 1], al
mov eax, dword [0x786a8c]
mov dl, byte [eax + 1]
inc eax
cmp dl, 9
jbe 0x406ba3
mov byte [eax], 4
mov eax, dword [0x786a8c]
mov byte [eax + 3], 3
mov eax, dword [0x786a8c]
mov edx, dword [0x786a88]
mov cl, byte [eax + 3]
mov byte [edx + 3], cl
mov eax, dword [0x786a8c]
mov word [eax + 4], 0x400
mov eax, dword [0x786a8c]
mov edx, dword [0x786a88]
mov ax, word [eax + 4]
mov word [edx + 4], ax
mov ecx, dword [0x786a8c]
mov word [ecx + 8], 0x100
mov ecx, dword [0x786a8c]
mov edx, dword [0x786a88]
mov ax, word [ecx + 8]
mov word [edx + 8], ax
mov ecx, dword [0x786a8c]
mov word [ecx + 6], 0x200
mov ecx, dword [0x786a8c]
mov edx, dword [0x786a88]
mov ax, word [ecx + 6]
mov word [edx + 6], ax
mov ecx, dword [0x786a8c]
mov word [ecx + 0xa], 0x2d
mov ecx, dword [0x786a8c]
mov edx, dword [0x786a88]
mov ax, word [ecx + 0xa]
mov word [edx + 0xa], ax
push 4
mov ecx, dword [0x786a8c]
push str.NumberOfGame
mov word [ecx + 0xc], 7
mov ecx, dword [0x786a8c]
mov edx, dword [0x786a88]
mov ax, word [ecx + 0xc]
push str.BookKeep
mov word [edx + 0xc], ax
mov eax, dword [0x786a78]
mov ecx, dword [0x786a28]
push ecx
push eax
call fcn.00406e40
add esp, 0x14
mov ecx, dword [0x786a28]
mov eax, dword [0x786a78]
add eax, 4
push 4
push str.TotalGameTime
push str.BookKeep
push ecx
push eax
call fcn.00406e40
add esp, 0x14
mov ecx, dword [0x786a28]
push 4
push str.LongestGameTime
push str.BookKeep
push ecx
mov eax, dword [0x786a78]
add eax, 0xc
push eax
call fcn.00406e40
add esp, 0x14
mov ecx, dword [0x786a28]
mov eax, dword [0x786a78]
add eax, 0x10
push 4
push str.ShortestGameTime
push str.BookKeep
push ecx
push eax
call fcn.00406e40
add esp, 0x14
mov ecx, dword [0x786a28]
mov eax, dword [0x786a78]
add eax, 0x14
push 4
push str.Games
push str.BookKeep
push ecx
xor esi, esi
push eax
call fcn.00406e40
add esp, 0x14
mov ecx, dword [0x786a78]
mov word [ecx + 0x18], si
mov ecx, dword [0x786a78]
mov word [ecx + 0x1a], si
mov ecx, dword [0x786a78]
mov dword [ecx + 8], esi
mov eax, dword [0x786a28]
push eax
push esi
push str.VC10_4
push str.RANK
call ebx
xor ecx, ecx
mov cl, al
test ecx, ecx
jne 0x406d8a
mov edx, dword [esi + 0x455878]
mov ebx, dword [esi + 0x45587c]
lea eax, [esi + 0x455878]
mov ecx, dword [0x786a70]
add ecx, esi
lea eax, [esi + 0x455828]
mov dword [ecx], edx
mov dword [ecx + 4], ebx
mov ebx, dword [eax + 4]
mov edx, dword [eax]
mov ecx, dword [0x786a74]
add ecx, esi
add esi, 8
cmp esi, 0x50
mov dword [ecx], edx
mov dword [ecx + 4], ebx
jl 0x406d46
jmp 0x406e28
xor esi, esi
xor ebp, ebp
lea eax, [esp + 0x20]
push ebp
push esi
push str.VC1_d__d
push eax
call edi
lea ecx, [esp + 0x30]
add esp, 0x10
mov eax, dword [0x786a28]
push eax
push 0
push ecx
push str.RANK
call ebx
lea ecx, [esp + 0x20]
push ebp
mov byte [esp + ebp + 0x14], al
push esi
push str.VC2_d__d
inc ebp
push ecx
call edi
lea edx, [esp + 0x30]
add esp, 0x10
mov ecx, dword [0x786a28]
push ecx
push 0
push edx
push str.RANK
call ebx
mov byte [esp + ebp + 0x17], al
cmp ebp, 8
jb 0x406d8e
mov ebp, dword [esp + 0x10]
lea ecx, [esi*8]
mov edx, dword [0x786a74]
lea eax, [esp + 0x10]
add edx, ecx
nop
mov eax, dword [eax + 4]
mov dword [edx], ebp
mov dword [edx + 4], eax
mov eax, dword [0x786a70]
add ecx, eax
inc esi
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x18]
mov dword [ecx], edx
cmp esi, 0xa
mov eax, dword [eax + 4]
mov dword [ecx + 4], eax
jl 0x406d8c
mov eax, 1
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x210
ret