Function at 0x4044d0
Capabilities:
Read .ini file

Disassembly:
sub esp, 0x20c
mov al, byte [0x40d3a0]
push ebp
push esi
mov esi, ecx
push edi
mov byte [esp + 0x10], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x11]
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [esi + 0xaac]
mov dword [esp + 0xc], esi
test eax, eax
mov edi, 1
jne 0x4045c7
mov ecx, esi
lea esi, [ecx + 0x9a0]
push esi
push 0
push str.DemoCounter
push str.Counter
call ebp
mov edx, dword [esp + 0xc]
test eax, eax
mov dword [edx + 0xaac], eax
jne 0x40454c
mov eax, edx
pop edi
pop esi
pop ebp
mov dword [eax + 0xaa4], 0
add esp, 0x20c
ret
mov ecx, dword [esp + 0xc]
push esi
lea edx, [esp + 0x14]
push 0x104
push edx
push 0
push str.DemoLoop
push str.Counter
mov dword [ecx + 0xaa8], 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
je 0x4045bb
mov esi, str.TRUE
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4045a8
test cl, cl
je 0x4045a4
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4045a8
add eax, 2
add esi, 2
test cl, cl
jne 0x404584
xor eax, eax
jmp 0x4045ad
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4045bb
mov eax, dword [esp + 0xc]
mov dword [eax + 0xaa8], edi
mov ecx, dword [esp + 0xc]
mov esi, ecx
mov dword [ecx + 0xab0], edi
mov edx, dword [esi + 0xab0]
mov eax, dword [esi + 0xaac]
cmp edx, eax
jle 0x4045eb
mov eax, dword [esi + 0xaa8]
test eax, eax
je 0x40469f
mov dword [esi + 0xab0], edi
mov cl, byte [0x40d3a0]
xor eax, eax
mov byte [esp + 0x114], cl
mov ecx, 0x40
lea edi, [esp + 0x115]
mov edx, dword [esi + 0xab0]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push edx
lea eax, [esp + 0x118]
push str.AutoDemo_d
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
add esi, 0x9a0
lea ecx, [esp + 0x114]
push esi
push 0
push str.Timer
push ecx
call ebp
mov ebp, eax
test ebp, ebp
je 0x404bf1
push esi
lea edx, [esp + 0x14]
push 0x104
push edx
push 0
lea eax, [esp + 0x124]
push str.SoundSource
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
je 0x4047d8
mov esi, 0x40d218
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4046c2
test cl, cl
je 0x40469b
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4046c2
add eax, 2
add esi, 2
test cl, cl
jne 0x40467b
xor eax, eax
jmp 0x4046c7
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov eax, dword [esi + 0x20]
push 0
push 0x1f
push 0x500
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
add esp, 0x20c
ret
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4046d5
mov eax, 2
jmp 0x4047ca
mov esi, str.Drums
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404702
test cl, cl
je 0x4046fe
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404702
add eax, 2
add esi, 2
test cl, cl
jne 0x4046de
xor eax, eax
jmp 0x404707
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404715
mov eax, 3
jmp 0x4047ca
mov esi, str.Helicopter
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404742
test cl, cl
je 0x40473e
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404742
add eax, 2
add esi, 2
test cl, cl
jne 0x40471e
xor eax, eax
jmp 0x404747
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404752
mov eax, 4
jmp 0x4047ca
mov esi, str.High_heelss
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40477f
test cl, cl
je 0x40477b
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40477f
add eax, 2
add esi, 2
test cl, cl
jne 0x40475b
xor eax, eax
jmp 0x404784
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40478f
mov eax, 5
jmp 0x4047ca
mov esi, str.C_Media
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4047bc
test cl, cl
je 0x4047b8
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4047bc
add eax, 2
add esi, 2
test cl, cl
jne 0x404798
xor eax, eax
jmp 0x4047c1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4047d8
mov eax, 6
mov ecx, dword [esp + 0xc]
push 0
push 0
push eax
call fcn.00403860
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x10]
add eax, 0x9a0
lea edx, [esp + 0x114]
push eax
push 0x104
push ecx
push 0
push str.MovingPath
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
je 0x40494c
mov esi, 0x40d1dc
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404836
test cl, cl
je 0x404832
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404836
add eax, 2
add esi, 2
test cl, cl
jne 0x404812
xor eax, eax
jmp 0x40483b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404849
mov eax, 0xb
jmp 0x40493e
mov esi, str.Horizontal
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404876
test cl, cl
je 0x404872
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404876
add eax, 2
add esi, 2
test cl, cl
jne 0x404852
xor eax, eax
jmp 0x40487b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404889
mov eax, 0xc
jmp 0x40493e
mov esi, str.Vertical
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4048b6
test cl, cl
je 0x4048b2
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4048b6
add eax, 2
add esi, 2
test cl, cl
jne 0x404892
xor eax, eax
jmp 0x4048bb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4048c6
mov eax, 0xd
jmp 0x40493e
mov esi, str.Fly_by
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4048f3
test cl, cl
je 0x4048ef
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4048f3
add eax, 2
add esi, 2
test cl, cl
jne 0x4048cf
xor eax, eax
jmp 0x4048f8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404903
mov eax, 0xe
jmp 0x40493e
mov esi, 0x40d1b4
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404930
test cl, cl
je 0x40492c
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404930
add eax, 2
add esi, 2
test cl, cl
jne 0x40490c
xor eax, eax
jmp 0x404935
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40494c
mov eax, 0xf
mov ecx, dword [esp + 0xc]
push 0
push 0
push eax
call fcn.00403860
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x10]
add eax, 0x9a0
xor edi, edi
push eax
push 0x104
push ecx
push edi
lea edx, [esp + 0x124]
push str.Environment
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
je 0x404af3
mov esi, str.Bathroom
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4049ab
test cl, cl
je 0x4049a7
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4049ab
add eax, 2
add esi, 2
test cl, cl
jne 0x404987
xor eax, eax
jmp 0x4049b0
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4049be
mov edi, 0x10
jmp 0x404af3
mov esi, str.Concerthall
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4049eb
test cl, cl
je 0x4049e7
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4049eb
add eax, 2
add esi, 2
test cl, cl
jne 0x4049c7
xor eax, eax
jmp 0x4049f0
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4049fe
mov edi, 0x11
jmp 0x404af3
mov esi, 0x40d188
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404a2b
test cl, cl
je 0x404a27
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404a2b
add eax, 2
add esi, 2
test cl, cl
jne 0x404a07
xor eax, eax
jmp 0x404a30
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404a3e
mov edi, 0x15
jmp 0x404af3
mov esi, str.Sewerpipe
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404a6b
test cl, cl
je 0x404a67
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404a6b
add eax, 2
add esi, 2
test cl, cl
jne 0x404a47
xor eax, eax
jmp 0x404a70
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404a7b
mov edi, 0x12
jmp 0x404af3
mov esi, str.Underwater
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404aa8
test cl, cl
je 0x404aa4
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404aa8
add eax, 2
add esi, 2
test cl, cl
jne 0x404a84
xor eax, eax
jmp 0x404aad
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404ab8
mov edi, 0x14
jmp 0x404af3
mov esi, 0x40d16c
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404ae5
test cl, cl
je 0x404ae1
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404ae5
add eax, 2
add esi, 2
test cl, cl
jne 0x404ac1
xor eax, eax
jmp 0x404aea
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404af3
mov edi, 0x13
mov esi, dword [esp + 0xc]
lea ecx, [esp + 0x114]
lea eax, [esi + 0x9a0]
push eax
lea eax, [esp + 0x14]
push 0x104
push eax
push 0
push str.EnableEffects
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
je 0x404b93
mov esi, str.TRUE
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404b4e
test cl, cl
je 0x404b4a
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404b4e
add eax, 2
add esi, 2
test cl, cl
jne 0x404b2a
xor eax, eax
jmp 0x404b53
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404bfb
mov esi, str.FALSE
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404b88
test cl, cl
je 0x404b84
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404b88
add eax, 2
add esi, 2
test cl, cl
jne 0x404b64
xor eax, eax
jmp 0x404b8d
sbb eax, eax
sbb eax, 0xffffffff
mov esi, dword [esp + 0xc]
test eax, eax
push 0xffffffffffffffff
mov ecx, esi
call fcn.00404390
mov eax, dword [esi + 0xab4]
test eax, eax
je 0x404bbb
push eax
mov eax, dword [esi + 0x20]
push eax
call dword [sym.imp.USER32.dll_KillTimer]
mov dword [esi + 0xab4], 0
mov eax, dword [esi + 0x1cc]
test eax, eax
jne 0x404bcc
mov ecx, esi
call fcn.004034b0
mov ecx, dword [esi + 0x20]
push 0
push ebp
push 0x222
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
mov dword [esi + 0xab4], eax
mov eax, dword [esi + 0xab0]
inc eax
mov dword [esi + 0xab0], eax
pop edi
pop esi
pop ebp
add esp, 0x20c
ret
mov esi, dword [esp + 0xc]
test edi, edi
je 0x404b9c
cmp dword [esi + 0x1d8], edi
je 0x404b9c
push edi
jmp 0x404b95