Function at 0x45d850
Capabilities:
Check for time delay via queryperformancecounter
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x22c
mov eax, dword [0x4a907c]
mov edx, dword [0x52b40c]
mov ecx, dword [0x52b848]
mov dword [esp + 0x60], eax
push ebx
mov ebx, dword [esp + 0x234]
push ebp
xor ebp, ebp
mov eax, ebx
neg eax
sbb eax, eax
and eax, 0xfffffe80
add eax, 0x200
mov dword [esp + 0x44], eax
mov eax, dword [edx + 0x80b0]
mov dword [esp + 0x60], eax
push esi
mov esi, dword [eax + 0x1c]
add esi, dword [eax + 0x10]
mov dword [esp + 0x70], ecx
mov ecx, dword [eax + 0x18]
add ecx, dword [eax + 0xc]
mov eax, 0x2aaaaaab
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x4c], eax
add eax, esi
mov dword [esp + 0xdc], eax
shl eax, 4
add eax, esi
mov dword [esp + 0xd8], eax
lea eax, [ecx*8]
sub eax, ecx
add eax, eax
mov dword [esp + 0xe8], eax
mov eax, dword [0x52b3ac]
push edi
mov edi, ecx
mov ecx, dword [eax]
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
shl edi, 5
add eax, dword [ecx + 0x18]
mov dword [esp + 0x38], ebp
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0xd8], edi
je 0x45d920
cmp dword [eax + 0x1c], 1
jne 0x45d920
mov eax, dword [eax + 0x24]
jmp 0x45d922
xor eax, eax
mov ecx, dword [eax + 4]
push 0x40
push 0x60
push 0x80
push ecx
call sub.SDL.dll_SDL_MapRGB
mov edx, dword [0x52b3ac]
mov ecx, dword [edx]
mov dword [esp + 0x104], eax
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
add esp, 0x10
add eax, dword [ecx + 0x18]
je 0x45d960
cmp dword [eax + 0x1c], 1
jne 0x45d960
mov eax, dword [eax + 0x24]
jmp 0x45d962
xor eax, eax
mov eax, dword [eax + 4]
push 0x20
push 0x30
push 0x40
push eax
call sub.SDL.dll_SDL_MapRGB
mov dword [esp + 0x108], eax
mov eax, dword [0x52be10]
sub eax, edi
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0xe0], eax
mov eax, edi
cdq
sub eax, edx
mov edx, dword [0x52b40c]
sar eax, 1
add esp, 0x10
mov dword [esp + 0x3c], eax
cmp ebx, ebp
jne 0x45d9b1
lea eax, [edx + 0x10f50]
lea ecx, [edx + 0x10f84]
jmp 0x45d9bd
lea eax, [edx + 0x11088]
lea ecx, [edx + 0x110bc]
mov esi, dword [eax + 4]
mov dword [esp + 0x78], esi
mov esi, dword [eax + 0xc]
mov dword [esp + 0x7c], esi
mov esi, dword [eax + 0x10]
mov dword [esp + 0x80], esi
mov esi, dword [eax + 8]
mov dword [esp + 0x84], esi
mov esi, dword [eax + 0x14]
mov dword [esp + 0x88], esi
mov esi, dword [eax + 0x18]
mov dword [esp + 0x8c], esi
mov esi, dword [eax + 0x1c]
mov dword [esp + 0x60], eax
mov dword [esp + 0x90], esi
mov esi, dword [eax + 0x20]
mov dword [esp + 0x94], esi
mov esi, dword [eax + 0x24]
mov dword [esp + 0x98], esi
mov esi, dword [eax + 0x28]
mov eax, dword [eax + 0x2c]
mov dword [esp + 0xa0], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0xa4], eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0xa8], eax
mov eax, dword [ecx + 0x10]
mov edx, dword [edx + 0x80a0]
mov dword [esp + 0xac], eax
mov eax, dword [ecx + 8]
mov dword [esp + 0xb0], eax
mov eax, dword [ecx + 0x14]
mov dword [esp + 0xb4], eax
mov eax, dword [ecx + 0x18]
mov dword [esp + 0xb8], eax
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0xbc], eax
mov eax, dword [ecx + 0x20]
mov dword [esp + 0xc0], eax
mov eax, dword [ecx + 0x24]
mov dword [esp + 0xc4], eax
mov eax, dword [ecx + 0x28]
mov dword [esp + 0x64], ecx
mov ecx, dword [ecx + 0x2c]
mov dword [esp + 0x128], str.Config_all
mov dword [esp + 0x12c], 0x49de20
mov dword [esp + 0x130], str.Down
mov dword [esp + 0x134], str.Left
mov dword [esp + 0x138], str.Right
mov dword [esp + 0x13c], 0x49df98
mov dword [esp + 0x140], 0x49df48
mov dword [esp + 0x144], 0x49df50
mov dword [esp + 0x148], 0x49df54
mov dword [esp + 0x14c], 0x49dfc8
mov dword [esp + 0x150], 0x49df58
mov dword [esp + 0x154], str.Start
mov dword [esp + 0x158], str.Default
mov dword [esp + 0x15c], str.Exit
mov dword [esp + 0x9c], esi
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], ecx
call fcn.00434ee0
mov edx, dword [0x52b844]
mov eax, dword [0x52b840]
push ebp
push 2
push edx
mov esi, 0x3c
push eax
mov dword [0x52aec0], esi
mov dword [0x52b848], esi
call fcn.0049a610
push ebp
mov edi, 1
add eax, edi
push esi
adc edx, ebp
push edx
push eax
call fcn.0049a560
push ebp
push 2
push edx
push eax
call fcn.0049a560
mov esi, dword [sym.imp.WINMM.dll_timeGetTime]
mov ebx, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov dword [0x52aea8], eax
mov dword [0x52aeac], edx
cmp dword [0x52b3cc], ebp
je 0x45dbb2
lea ecx, [esp + 0x18]
push ecx
call ebx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
jmp 0x45dbb6
call esi
xor ecx, ecx
sub eax, dword [0x52aeb0]
mov dword [0x52b3c0], ebp
sbb ecx, dword [0x52aeb4]
add dword [0x52b3d0], edi
mov dword [0x52b3b8], eax
mov dword [0x52b3bc], ecx
mov dword [0x52b3c4], ebp
call fcn.0040f180
mov dword [0x52a9ec], ebp
mov dword [0x52a9e8], ebp
mov dword [0x52adf4], ebp
mov dword [0x52adf0], ebp
call fcn.00411cf0
mov edx, dword [0x52b40c]
mov dword [0x52b33c], ebp
mov dword [0x52b338], ebp
mov dword [0x4a907c], edi
mov edi, dword [edx + 0xfcb4]
call fcn.00445540
mov eax, dword [0x52b40c]
mov dword [eax + 0x10eb0], ebp
mov dword [eax + 0x10eb4], ebp
cmp dword [0x52b3cc], ebp
je 0x45dc4e
lea eax, [esp + 0x18]
push eax
call ebx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
jmp 0x45dc52
call esi
xor ecx, ecx
sub eax, dword [0x52aeb0]
mov dword [0x52b3c0], ebp
sbb ecx, dword [0x52aeb4]
inc dword [0x52b3d0]
mov dword [0x52b3b8], eax
mov dword [0x52b3bc], ecx
mov dword [0x52b3c4], ebp
jmp 0x45dc80
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x40], edi
mov dword [esp + 0x34], ebx
call fcn.0040f180
mov eax, dword [0x52a9e8]
cmp eax, dword [0x52a9ec]
je 0x45dcd8
cmp dword [0x52b358], edi
jne 0x45dcba
xor ecx, ecx
jmp 0x45dcd4
mov ecx, dword [eax*4 + 0x52a5e8]
inc eax
cmp eax, 0x100
mov dword [0x52a9e8], eax
jl 0x45dcd4
mov dword [0x52a9e8], edi
mov dword [esp + 0x10], ecx
call fcn.00415050
test eax, eax
je 0x45dd1e
cmp dword [0x52b360], edi
jne 0x45dced
xor eax, eax
jmp 0x45dd1a
mov eax, dword [0x52adf0]
cmp eax, dword [0x52adf4]
je 0x45ed03
mov ecx, dword [eax*4 + 0x52a9f0]
inc eax
cmp eax, 0x100
mov dword [0x52adf0], eax
jl 0x45dd18
mov dword [0x52adf0], edi
mov eax, ecx
mov dword [esp + 0x14], eax
lea esi, [esp + 0x10]
call fcn.00443c30
call fcn.00411ec0
xor esi, esi
test eax, eax
je 0x45dd67
cmp dword [0x52b360], esi
jne 0x45dd42
cmp dword [0x52b358], esi
je 0x45dd67
mov eax, dword [0x52b338]
cmp eax, dword [0x52b33c]
je 0x45ed01
inc eax
cmp eax, dword [0x52b340]
mov dword [0x52b338], eax
jl 0x45dd67
mov dword [0x52b338], esi
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
and eax, 0xffffff9f
cmp edx, 0xd
je 0x45dd7f
lea ecx, [eax - 5]
cmp ecx, 0x1a
ja 0x45dd8c
mov ecx, 1
mov ebx, ecx
mov dword [esp + 0x34], ebx
jmp 0x45dd91
mov ecx, 1
cmp edx, 0x111
je 0x45dd9d
cmp eax, ecx
jne 0x45dd9f
mov edi, ecx
cmp edx, 0x112
je 0x45ddac
cmp eax, 2
jne 0x45ddb0
mov dword [esp + 0x44], ecx
cmp edx, 0x114
je 0x45ddbd
cmp eax, 3
jne 0x45ddc1
mov dword [esp + 0x48], ecx
cmp edx, 0x113
je 0x45ddce
cmp eax, 4
jne 0x45ddd2
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x38]
cmp eax, esi
je 0x45ddee
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x34], ebx
cmp edx, 0x11a
je 0x45ddfe
cmp edx, 0x11b
jne 0x45de1d
xor ebx, ebx
cmp edx, 0x11a
setne bl
xor esi, esi
mov dword [esp + 0x30], esi
mov ebp, ebx
mov ebx, ecx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x34], ebx
jmp 0x45de21
mov esi, dword [esp + 0x30]
cmp edx, 0x11c
je 0x45de31
cmp edx, 0x11d
jne 0x45de51
xor ebx, ebx
cmp edx, 0x11c
setne bl
mov esi, 0xc
mov dword [esp + 0x30], esi
mov ebp, ebx
mov ebx, ecx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x34], ebx
cmp edx, 0x1b
jne 0x45de5a
test eax, eax
je 0x45de63
cmp dword [0x52b0e4], 0
je 0x45de72
mov esi, 0xd
mov ebx, ecx
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], ebx
cmp edx, 0x1b
jne 0x45dee6
test eax, eax
je 0x45dee6
xor esi, esi
mov ecx, ebp
imul ecx, ecx, 0x2c
mov ebx, dword [esp + ecx + 0x1e0]
mov dword [esp + ecx + 0x78], ebx
mov ebx, dword [esp + ecx + 0x1e4]
lea eax, [esp + ecx + 0x78]
lea ecx, [esp + ecx + 0x1e0]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
mov ebx, dword [ecx + 0x10]
mov dword [eax + 0x10], ebx
mov ebx, dword [ecx + 0x14]
mov dword [eax + 0x14], ebx
mov ebx, dword [ecx + 0x18]
mov dword [eax + 0x18], ebx
mov ebx, dword [ecx + 0x1c]
mov dword [eax + 0x1c], ebx
mov ebx, dword [ecx + 0x20]
mov dword [eax + 0x20], ebx
mov ebx, dword [ecx + 0x24]
mov ecx, dword [ecx + 0x28]
mov dword [eax + 0x24], ebx
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], esi
mov dword [eax + 0x28], ecx
mov ebx, esi
test edi, edi
je 0x45df07
test esi, esi
jle 0x45dfcd
dec esi
cmp esi, 1
mov dword [esp + 0x30], esi
jl 0x45df07
cmp esi, 0xc
jge 0x45df07
xor esi, esi
mov dword [esp + 0x30], esi
cmp dword [esp + 0x44], 0
je 0x45df2d
cmp esi, 0xd
jge 0x45dfd7
inc esi
lea eax, [esi - 1]
mov dword [esp + 0x30], esi
cmp eax, 0xa
ja 0x45df2d
mov esi, 0xc
mov dword [esp + 0x30], esi
cmp dword [esp + 0x48], 0
je 0x45df3a
xor ebp, ebp
mov dword [esp + 0x2c], ebp
cmp dword [esp + 0x40], 0
je 0x45df4a
mov ebp, 1
mov dword [esp + 0x2c], ebp
test ebx, ebx
je 0x45dfde
test esi, esi
jne 0x45dfde
mov ecx, ebp
imul ecx, ecx, 0x2c
mov edx, dword [esp + ecx + 0x78]
mov dword [esp + ecx + 0x1e0], edx
mov edx, dword [esp + ecx + 0x7c]
lea eax, [esp + ecx + 0x1e0]
lea ecx, [esp + ecx + 0x78]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [ecx + 0x10]
mov dword [eax + 0x10], edx
mov edx, dword [ecx + 0x14]
mov dword [eax + 0x14], edx
mov edx, dword [ecx + 0x18]
mov dword [eax + 0x18], edx
mov edx, dword [ecx + 0x1c]
mov dword [eax + 0x1c], edx
mov edx, dword [ecx + 0x20]
mov dword [eax + 0x20], edx
mov edx, dword [ecx + 0x24]
mov ecx, dword [ecx + 0x28]
mov dword [eax + 0x24], edx
lea edx, [ebp + 1]
mov dword [eax + 0x28], ecx
xor ecx, ecx
mov dword [esp + 0x38], edx
mov dword [esp + 0x58], ecx
mov dword [0x4a907c], ecx
xor edx, edx
mov dword [esp + 0x14], ecx
jmp 0x45e01e
mov esi, 0xd
jmp 0x45df03
xor esi, esi
jmp 0x45df29
cmp esi, 0xc
jne 0x45e01a
test ebx, ebx
je 0x45e01a
mov eax, ebp
lea ecx, [esi - 1]
imul eax, eax, 0x2c
mov esi, dword [esp + 0x240]
test esi, esi
jne 0x45e002
mov edi, dword [eax + 0x49d6d8]
jmp 0x45e008
mov edi, dword [eax + 0x49d730]
mov dword [esp + eax + 0x78], edi
add eax, 4
sub ecx, 1
jne 0x45dff6
mov ecx, dword [esp + 0x58]
jmp 0x45e025
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x240]
mov edi, dword [esp + 0x38]
test edi, edi
je 0x45e095
cmp edx, 0x1b
je 0x45e095
test esi, esi
jne 0x45e053
test edx, edx
je 0x45e067
test edx, 0x200
jne 0x45e067
mov eax, dword [esp + 0x14]
cmp edx, 0x20
je 0x45e06c
test esi, esi
jne 0x45e070
mov eax, edx
jmp 0x45e070
cmp esi, 1
jne 0x45e067
mov eax, dword [esp + 0x14]
test eax, eax
je 0x45e067
test eax, 0x100
je 0x45e046
cmp edx, 0x20
jne 0x45e095
mov eax, dword [esp + 0x4c]
imul edi, edi, 0xb
add edi, ecx
inc ecx
cmp ecx, 0xb
mov dword [esp + edi*4 + 0x4c], eax
mov dword [esp + 0x58], ecx
jl 0x45e095
mov dword [esp + 0x38], 0
mov dword [0x4a907c], 1
fldz
mov esi, dword [0x52b40c]
mov ebx, dword [esi + 0x10588]
sub esp, 0x10
fst dword [esp + 0xc]
fst dword [esp + 8]
fst dword [esp + 4]
fstp dword [esp]
call fcn.00405a50
mov ebx, dword [esi + 0x10588]
add esp, 0x10
call fcn.00405d80
cmp dword [esi + 0x10eb4], 0
jne 0x45ec5a
mov edi, dword [0x52b34c]
cmp dword [edi + 0x48], 0
je 0x45e149
mov eax, 0x24
lea ecx, [edi + 0x24]
mov edx, edi
jmp 0x45e0f0
mov ebx, dword [edx]
cmp ebx, dword [ecx]
jne 0x45e10d
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x45e0f0
mov dword [edi + 0x48], 0
jmp 0x45e149
movzx eax, bl
movzx ebx, byte [ecx]
sub eax, ebx
jne 0x45e139
movzx eax, byte [edx + 1]
movzx ebx, byte [ecx + 1]
sub eax, ebx
jne 0x45e139
movzx eax, byte [edx + 2]
movzx ebx, byte [ecx + 2]
sub eax, ebx
jne 0x45e139
movzx eax, byte [edx + 3]
movzx ecx, byte [ecx + 3]
sub eax, ecx
sar eax, 0x1f
or eax, 1
jne 0x45e146
mov dword [edi + 0x48], eax
jmp 0x45e149
inc dword [edi + 0x4c]
fld dword [esi + 0x1012c]
mov eax, dword [esi + 0x10588]
sub esp, 8
fstp dword [esp + 4]
fld dword [esi + 0x1012c]
fstp dword [esp]
call fcn.004059f0
mov edx, dword [esi + 0x10588]
push 0
push edx
call fcn.00405cc0
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0xec]
mov edx, dword [esp + 0xe8]
mov ebx, dword [esp + 0xe0]
add ecx, 0x28
lea esi, [eax + ecx]
lea edi, [edx + ebx + 0xf]
lea eax, [esi - 1]
push eax
add ecx, 0xfffffff2
add ebx, 0xfffffff1
push ecx
mov ecx, dword [esp + 0x10c]
lea eax, [edi - 1]
mov edx, ebx
call fcn.00436ca0
mov ecx, dword [esp + 0x40]
add ecx, 0x1b
lea ebp, [esi - 2]
lea eax, [ebx - 1]
push ebp
mov dword [esp + 0x34], ecx
push ecx
mov ecx, dword [esp + 0x118]
mov edx, eax
call fcn.00436ca0
mov ecx, dword [esp + 0x38]
push ebp
mov ebp, dword [esp + 0x11c]
push ecx
mov ecx, ebp
mov eax, edi
mov edx, edi
call fcn.00436ca0
mov eax, dword [esp + 0x50]
add eax, 0x19
push eax
add edi, 0xfffffffe
inc ebx
push eax
mov ecx, ebp
mov eax, edi
mov edx, ebx
call fcn.00436ca0
push esi
push esi
mov ecx, ebp
mov eax, edi
mov edx, ebx
call fcn.00436ca0
add esp, 0x38
cmp dword [esp + 0x240], 0
mov ecx, str.JOYSTICK_CONFIG
jne 0x45e22c
mov ecx, str.KEY_CONFIG
mov edi, dword [esp + 0x28]
fld1
mov eax, dword [0x52be10]
mov ebx, dword [esp + 0x68]
push 0x100
push 0x100
push 0x100
push 0
lea esi, [edi + 0x28]
lea edx, [esi - 0x1e]
mov dword [esp + 0x28], edx
push 0
sub esp, 0x10
fst dword [esp + 0xc]
cdq
fstp dword [esp + 8]
sub eax, edx
fild dword [esp + 0x3c]
sar eax, 1
mov dword [esp + 0x3c], eax
mov eax, ecx
fstp dword [esp + 4]
fild dword [esp + 0x3c]
fstp dword [esp]
call fcn.0040f830
sub esi, dword [esp + 0x74]
mov ebp, dword [esp + 0xf4]
add esp, 0x24
push 0x100
add esi, edi
mov dword [esp + 0x1c], esi
fild dword [esp + 0x1c]
mov esi, dword [esp + 0xdc]
push 0x100
push 0x80
fstp dword [esp + 0x24]
fld1
mov eax, esi
cdq
push 0
and edx, 3
add eax, edx
push 0
sub esp, 0x10
sar eax, 2
fst dword [esp + 0xc]
add eax, ebp
fstp dword [esp + 8]
mov dword [esp + 0x34], eax
fld dword [esp + 0x3c]
mov eax, str.PLAYER_1
fstp dword [esp + 4]
fild dword [esp + 0x34]
fstp dword [esp]
call fcn.0040f830
fld1
add esp, 0x24
push 0x80
push 0x80
push 0x100
lea eax, [esi + esi*2]
cdq
push 0
and edx, 3
add eax, edx
push 0
sub esp, 0x10
sar eax, 2
fst dword [esp + 0xc]
add eax, ebp
fstp dword [esp + 8]
fld dword [esp + 0x3c]
mov dword [esp + 0x3c], eax
fstp dword [esp + 4]
mov eax, str.PLAYER_2
fild dword [esp + 0x3c]
fstp dword [esp]
call fcn.0040f830
mov ecx, dword [esp + 0x268]
add esp, 0x24
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0x1c2
mov eax, ecx
sub eax, edx
cmp eax, 0x96
jge 0x45e383
mov ecx, 7
mov esi, str.Press_a_key_to_assign_to_entry
lea edi, [esp + 0x160]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
jmp 0x45e3de
cmp eax, 0x12c
jge 0x45e39f
mov ecx, 8
mov esi, str.Press_spacebar_to_disable_entry
lea edi, [esp + 0x160]
rep movsd dword es:[edi], dword [esi]
jmp 0x45e3de
mov eax, dword [str.Press_esc_to_cancel]
mov ecx, dword [0x4a1848]
mov edx, dword [0x4a184c]
mov dword [esp + 0x160], eax
mov eax, dword [0x4a1850]
mov dword [esp + 0x164], ecx
mov ecx, dword [0x4a1854]
mov dword [esp + 0x168], edx
mov dword [esp + 0x16c], eax
mov dword [esp + 0x170], ecx
mov eax, dword [esp + 0x38]
cmp eax, 1
jne 0x45e434
mov ecx, dword [esp + 0x28]
fld1
push 0xc0
push 0xc0
push 0xc0
push 0
push eax
mov eax, dword [esp + 0xf4]
mov edx, eax
shl edx, 4
sub edx, eax
sub esp, 0x10
lea eax, [ecx + 0x28]
fst dword [esp + 0xc]
add edx, eax
fstp dword [esp + 8]
add edx, ecx
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
fstp dword [esp + 4]
fild dword [esp + 0xf4]
jmp 0x45e48f
cmp eax, 2
jne 0x45e4a1
mov eax, dword [esp + 0xe0]
fld1
mov ecx, dword [esp + 0x28]
push 0xc0
push 0xc0
mov edx, eax
shl edx, 4
push 0xc0
sub edx, eax
push 0
lea eax, [ecx + 0x28]
add edx, eax
mov eax, dword [esp + 0xe8]
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
add edx, ecx
fstp dword [esp + 8]
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
add eax, ebp
mov dword [esp + 0x3c], eax
fstp dword [esp + 4]
fild dword [esp + 0x3c]
lea eax, [esp + 0x184]
fstp dword [esp]
call fcn.0040f830
add esp, 0x24
xor edi, edi
mov dword [esp + 0x18], edi
jmp 0x45e4b0
mov eax, 0xc0
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x40], eax
cmp edi, 0xe
je 0x45e4db
cmp edi, 0xc
je 0x45e4db
test edi, edi
jne 0x45e4df
inc dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
lea esi, [edi + ecx]
imul esi, dword [esp + 0xe0]
mov ecx, dword [esp + 0x28]
lea eax, [ecx + 0x28]
add esi, eax
add esi, ecx
mov dword [esp + 0x24], esi
cmp edi, dword [esp + 0x30]
jne 0x45e64d
mov eax, dword [esp + 0x244]
add eax, eax
add eax, eax
mov edx, eax
and edx, 0x8000007f
jns 0x45e521
dec edx
or edx, 0xffffff80
inc edx
cmp edx, 0x40
jge 0x45e537
and eax, 0x8000003f
jns 0x45e532
dec eax
or eax, 0xffffffc0
inc eax
add eax, 0x20
jmp 0x45e54d
mov ecx, eax
and ecx, 0x8000003f
jns 0x45e546
dec ecx
or ecx, 0xffffffc0
inc ecx
mov eax, 0x5f
sub eax, ecx
cmp dword [esp + 0x38], 0
jne 0x45e58c
mov edx, dword [0x52b3ac]
mov edx, dword [edx]
mov ecx, dword [edx + 4]
imul ecx, dword [0x52b3b0]
add ecx, dword [edx + 0x18]
je 0x45e576
cmp dword [ecx + 0x1c], 1
jne 0x45e576
mov ecx, dword [ecx + 0x24]
jmp 0x45e578
xor ecx, ecx
push eax
push eax
push eax
mov eax, dword [ecx + 4]
push eax
call sub.SDL.dll_SDL_MapRGB
mov ecx, eax
mov dword [esp + 0x24], ecx
jmp 0x45e5c5
mov ecx, dword [0x52b3ac]
mov ecx, dword [ecx]
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
add eax, dword [ecx + 0x18]
je 0x45e5ae
cmp dword [eax + 0x1c], 1
jne 0x45e5ae
mov eax, dword [eax + 0x24]
jmp 0x45e5b0
xor eax, eax
mov edx, dword [eax + 4]
push 0x60
push 0x60
push 0x60
push edx
call sub.SDL.dll_SDL_MapRGB
mov ecx, eax
mov dword [esp + 0x24], eax
add esp, 0x10
cmp edi, 0xd
jge 0x45e5f3
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x2c]
lea eax, [ecx + 0xf]
imul edx, eax
mov eax, dword [esp + 0x50]
add eax, esi
push eax
lea eax, [edx + ebp]
lea eax, [eax + ecx - 0xf]
mov ecx, dword [esp + 0x18]
lea edx, [edx + ebp - 5]
jmp 0x45e606
mov edx, dword [esp + 0x50]
lea eax, [esi + edx]
mov edx, dword [esp + 0x3c]
push eax
lea eax, [edx + ebp - 0xf]
lea edx, [ebp - 5]
sub esi, dword [esp + 0x2c]
push esi
call fcn.00436980
add esp, 8
cmp dword [esp + 0x2c], 0
je 0x45e638
cmp dword [esp + 0x30], 0xd
je 0x45e638
mov eax, 0x100
mov dword [esp + 0x10], 0xf8
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
jmp 0x45e64d
mov eax, 0x100
mov dword [esp + 0x40], 0xf8
mov dword [esp + 0x5c], eax
mov dword [esp + 0x54], eax
cmp edi, 0xb
jle 0x45e65d
cmp dword [esp + 0x38], 0
jne 0x45eb2d
mov eax, dword [esp + 0x54]
fild dword [esp + 0x24]
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + edi*4 + 0x128]
fstp dword [esp + 0x24]
fld1
push eax
push ecx
push edx
push 0
push 1
sub esp, 0x10
fst dword [esp + 0xc]
mov eax, esi
fstp dword [esp + 8]
fld dword [esp + 0x48]
fstp dword [esp + 4]
fild dword [esp + 0xf4]
fstp dword [esp]
call fcn.0040f830
add esp, 0x24
cmp edi, 0xc
jg 0x45e6f3
mov eax, dword [esp + 0x48]
fld1
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x40]
push ecx
push edx
push 0
push 1
sub esp, 0x10
fst dword [esp + 0xc]
add eax, 0xf
fstp dword [esp + 8]
add eax, ebp
fld dword [esp + 0x48]
mov dword [esp + 0x38], eax
fstp dword [esp + 4]
mov eax, esi
fild dword [esp + 0x38]
fstp dword [esp]
call fcn.0040f830
add esp, 0x24
test edi, edi
jne 0x45e786
fld1
mov ecx, dword [esp + 0xec]
push 0x80
push 0x100
push 0x100
push edi
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
lea esi, [ecx + ebp]
fstp dword [esp + 8]
mov dword [esp + 0x38], esi
fld dword [esp + 0x48]
mov eax, str._F1_
fstp dword [esp + 4]
fild dword [esp + 0x38]
fstp dword [esp]
call fcn.0040f830
fld1
mov eax, dword [esp + 0x60]
add esp, 0x24
push 0x80
push 0x100
push 0x100
push edi
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
add eax, 0xf
fstp dword [esp + 8]
add esi, eax
fld dword [esp + 0x48]
mov dword [esp + 0x34], esi
fstp dword [esp + 4]
mov eax, str._F2_
fild dword [esp + 0x34]
jmp 0x45eb0d
cmp edi, 0xc
jne 0x45e81c
fld1
mov edx, dword [esp + 0xec]
push 0x80
push 0x100
push 0x100
push 0
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
lea esi, [edx + ebp]
fstp dword [esp + 8]
mov dword [esp + 0x38], esi
fld dword [esp + 0x48]
mov eax, str._F3_
fstp dword [esp + 4]
fild dword [esp + 0x38]
fstp dword [esp]
call fcn.0040f830
fld1
mov eax, dword [esp + 0x60]
add esp, 0x24
push 0x80
push 0x100
push 0x100
push 0
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
add eax, 0xf
fstp dword [esp + 8]
add esi, eax
fld dword [esp + 0x48]
mov dword [esp + 0x34], esi
fstp dword [esp + 4]
mov eax, str._F4_
fild dword [esp + 0x34]
jmp 0x45eb0d
cmp edi, 0xd
jne 0x45e865
fld1
mov eax, dword [esp + 0xec]
push 0x80
push 0x100
push 0x100
push 0
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
lea ecx, [eax + ebp]
fstp dword [esp + 8]
mov dword [esp + 0x34], ecx
fld dword [esp + 0x48]
mov eax, str._Esc_
fstp dword [esp + 4]
fild dword [esp + 0x34]
jmp 0x45eb0d
cmp edi, 1
jl 0x45eb18
cmp edi, 0xb
jg 0x45eb18
cmp dword [esp + 0x240], 0
mov eax, dword [esp + edi*4 + 0x74]
jne 0x45e9d2
cmp eax, dword [esp + 0x4c]
jne 0x45e8b7
mov edx, dword [str.Not_used]
mov eax, dword [0x4a186c]
mov cl, byte [0x4a1870]
mov dword [esp + 0x160], edx
mov dword [esp + 0x164], eax
mov byte [esp + 0x168], cl
jmp 0x45e8e5
cmp eax, 0x143
jge 0x45e8c9
push eax
call sub.SDL.dll_SDL_GetKeyName
add esp, 4
jmp 0x45e8ce
mov eax, 0x49da0a
push eax
lea edx, [esp + 0x164]
push 0x49f7cc
push edx
call dword [sym.imp.MSVCR90.dll_sprintf]
add esp, 0xc
mov ecx, dword [esp + 0x54]
fld1
mov eax, dword [esp + 0xec]
mov edx, dword [esp + 0x5c]
push ecx
lea esi, [eax + ebp]
mov eax, dword [esp + 0x44]
push edx
push eax
push 0
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
mov dword [esp + 0x38], esi
fstp dword [esp + 8]
lea eax, [esp + 0x184]
fld dword [esp + 0x48]
fstp dword [esp + 4]
fild dword [esp + 0x38]
fstp dword [esp]
call fcn.0040f830
mov eax, dword [esp + edi*4 + 0xc4]
add esp, 0x24
cmp eax, dword [esp + 0x4c]
jne 0x45e966
mov ecx, dword [str.Not_used]
mov edx, dword [0x4a186c]
mov al, byte [0x4a1870]
mov dword [esp + 0x160], ecx
mov dword [esp + 0x164], edx
mov byte [esp + 0x168], al
jmp 0x45e994
cmp eax, 0x143
jge 0x45e978
push eax
call sub.SDL.dll_SDL_GetKeyName
add esp, 4
jmp 0x45e97d
mov eax, 0x49da0a
push eax
lea ecx, [esp + 0x164]
push 0x49f7cc
push ecx
call dword [sym.imp.MSVCR90.dll_sprintf]
add esp, 0xc
mov edx, dword [esp + 0x48]
fld1
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x10]
push edx
push eax
mov eax, dword [esp + 0x44]
push ecx
push 0
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
add eax, 0xf
fstp dword [esp + 8]
add esi, eax
fld dword [esp + 0x48]
mov dword [esp + 0x34], esi
fstp dword [esp + 4]
fild dword [esp + 0x34]
jmp 0x45eb06
cmp eax, dword [esp + 0x4c]
jne 0x45ea00
mov edx, dword [str.Not_used]
mov eax, dword [0x4a186c]
mov cl, byte [0x4a1870]
mov dword [esp + 0x160], edx
mov dword [esp + 0x164], eax
mov byte [esp + 0x168], cl
jmp 0x45ea26
mov edx, eax
sar eax, 5
and eax, 3
and edx, 0xffffff9f
push edx
add eax, 0x41
push eax
lea eax, [esp + 0x168]
push str._c__02i
push eax
call dword [sym.imp.MSVCR90.dll_sprintf]
add esp, 0x10
mov edx, dword [esp + 0x54]
fld1
mov ecx, dword [esp + 0xec]
mov eax, dword [esp + 0x5c]
push edx
push eax
lea esi, [ecx + ebp]
mov ecx, dword [esp + 0x48]
push ecx
push 0
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
mov dword [esp + 0x38], esi
fstp dword [esp + 8]
lea eax, [esp + 0x184]
fld dword [esp + 0x48]
fstp dword [esp + 4]
fild dword [esp + 0x38]
fstp dword [esp]
call fcn.0040f830
mov eax, dword [esp + edi*4 + 0xc4]
add esp, 0x24
cmp eax, dword [esp + 0x4c]
jne 0x45eaa7
mov edx, dword [str.Not_used]
mov eax, dword [0x4a186c]
mov cl, byte [0x4a1870]
mov dword [esp + 0x160], edx
mov dword [esp + 0x164], eax
mov byte [esp + 0x168], cl
jmp 0x45eacd
mov edx, eax
sar eax, 5
and eax, 3
and edx, 0xffffff9f
push edx
add eax, 0x41
push eax
lea eax, [esp + 0x168]
push str._c__02i
push eax
call dword [sym.imp.MSVCR90.dll_sprintf]
add esp, 0x10
mov ecx, dword [esp + 0x48]
fld1
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x10]
push ecx
push edx
push eax
mov eax, dword [esp + 0x48]
push 0
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
add eax, 0xf
fstp dword [esp + 8]
add esi, eax
fld dword [esp + 0x48]
mov dword [esp + 0x34], esi
fstp dword [esp + 4]
fild dword [esp + 0x34]
lea eax, [esp + 0x184]
fstp dword [esp]
call fcn.0040f830
add esp, 0x24
inc edi
cmp edi, 0xe
jl 0x45e4b0
cmp dword [esp + 0x38], 0
je 0x45ec18
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x244]
add esi, 2
imul esi, dword [esp + 0xe0]
add ecx, ecx
lea eax, [edi + 0x28]
add ecx, ecx
add esi, eax
mov edx, ecx
add esi, edi
and edx, 0x8000007f
jns 0x45eb61
dec edx
or edx, 0xffffff80
inc edx
cmp edx, 0x40
jge 0x45eb78
and ecx, 0x8000003f
jns 0x45eb73
dec ecx
or ecx, 0xffffffc0
inc ecx
add ecx, 0x20
jmp 0x45eb8d
mov eax, ecx
and eax, 0x8000003f
jns 0x45eb86
dec eax
or eax, 0xffffffc0
inc eax
mov ecx, 0x5f
sub ecx, eax
mov edx, dword [0x52b3ac]
mov edx, dword [edx]
mov eax, dword [edx + 4]
imul eax, dword [0x52b3b0]
add eax, dword [edx + 0x18]
je 0x45ebaf
cmp dword [eax + 0x1c], 1
jne 0x45ebaf
mov ebx, dword [eax + 0x24]
jmp 0x45ebb1
xor ebx, ebx
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dl, 0x60
sub dl, al
movzx eax, dl
push eax
mov dl, 0x60
sub dl, cl
movzx eax, dl
push eax
push ecx
mov ecx, dword [ebx + 4]
push ecx
call sub.SDL.dll_SDL_MapRGB
add esp, 0x10
cmp dword [esp + 0x38], 1
mov ecx, eax
jne 0x45ebf3
mov edx, dword [esp + 0x50]
lea eax, [esi + edx]
mov edx, dword [esp + 0x3c]
push eax
lea eax, [edx + ebp - 0xf]
lea edx, [ebp - 5]
jmp 0x45ec0d
mov eax, dword [esp + 0x50]
lea edx, [esi + eax]
mov eax, dword [esp + 0x3c]
push edx
lea edx, [eax + 0xf]
lea ebx, [eax + ebp]
lea eax, [ebx + edx - 0xf]
lea edx, [edx + ebp - 5]
sub esi, edi
push esi
call fcn.00436980
add esp, 8
mov esi, dword [0x52b40c]
fld dword [esi + 0x1012c]
mov eax, dword [esi + 0x10588]
sub esp, 8
fstp dword [esp + 4]
fld dword [esi + 0x1012c]
fstp dword [esp]
call fcn.004059f0
mov eax, dword [esi + 0x10588]
push 1
push eax
call fcn.00405cc0
mov esi, dword [0x52b40c]
mov ebp, dword [esp + 0x3c]
add esp, 0x10
cmp dword [esi + 0x1245c], 0
jne 0x45ec6e
call fcn.00437730
mov esi, dword [0x52b40c]
cmp dword [esi + 0x10eb4], 0
jne 0x45ecaf
mov ebx, dword [esi + 0x80a4]
call fcn.004351b0
mov esi, dword [0x52b40c]
cmp dword [esi + 0x10eb4], 0
jne 0x45ecaf
mov eax, dword [0x52b34c]
cmp dword [eax + 0x48], 0
je 0x45ecaf
lea edi, [eax + 0x24]
mov ecx, 9
mov esi, eax
rep movsd dword es:[edi], dword [esi]
mov dword [eax + 0x48], 0
call fcn.004447c0
inc dword [esp + 0x244]
cmp dword [esp + 0x34], 0
je 0x45dc80
cmp dword [esp + 0x30], 0xd
jne 0x45dc80
mov eax, dword [0x52b40c]
xor edi, edi
mov dword [eax + 0x10eb0], edi
mov dword [eax + 0x10eb4], edi
cmp dword [0x52b3cc], edi
je 0x45ed05
lea ecx, [esp + 0x68]
push ecx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
jmp 0x45ed0d
jmp 0x45ed01
jmp 0x45ed03
call dword [sym.imp.WINMM.dll_timeGetTime]
xor ecx, ecx
sub eax, dword [0x52aeb0]
mov dword [0x52b3c0], edi
sbb ecx, dword [0x52aeb4]
inc dword [0x52b3d0]
mov dword [0x52b3bc], ecx
mov dword [0x52b3b8], eax
mov dword [0x52b3c4], edi
xor esi, esi
lea ecx, [esp + 0x78]
lea esp, [esp]
mov edx, dword [esp + esi*4 + 0x60]
mov eax, 0x49d6ac
lea esp, [esp]
mov ebx, dword [eax]
mov ebp, dword [ecx]
add eax, 4
add ecx, 4
cmp eax, 0x49d6d8
mov dword [edx + ebx*4], ebp
jl 0x45ed50
inc esi
cmp esi, 2
jl 0x45ed40
cmp dword [esp + 0x240], 1
jne 0x45edb3
mov eax, dword [0x52b40c]
cmp dword [eax + 0x110f8], edi
je 0x45ed96
lea esi, [eax + 0x11088]
lea edi, [eax + 0x11020]
mov ecx, 0xd
rep movsd dword es:[edi], dword [esi]
xor edi, edi
cmp dword [eax + 0x110fc], edi
je 0x45edb3
lea esi, [eax + 0x110bc]
lea edi, [eax + 0x11054]
mov ecx, 0xd
rep movsd dword es:[edi], dword [esi]
xor edi, edi
push str.Setting_up_input_n
call fcn.00444320
add esp, 4
call fcn.004519e0
mov eax, dword [0x52b844]
mov ecx, dword [0x52b840]
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0x74]
push edi
push 2
push eax
push ecx
mov dword [0x4a907c], edx
mov dword [0x52aec0], esi
mov dword [0x52b848], esi
call fcn.0049a610
push edi
add eax, 1
push esi
adc edx, edi
push edx
push eax
call fcn.0049a560
push edi
push 2
push edx
push eax
call fcn.0049a560
mov dword [0x52aea8], eax
mov dword [0x52aeac], edx
cmp dword [0x52b3cc], edi
je 0x45ee34
lea edx, [esp + 0x60]
push edx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
jmp 0x45ee3c
call dword [sym.imp.WINMM.dll_timeGetTime]
xor ecx, ecx
sub eax, dword [0x52aeb0]
mov dword [0x52b3c0], edi
sbb ecx, dword [0x52aeb4]
inc dword [0x52b3d0]
mov dword [0x52b3c4], edi
pop edi
pop esi
pop ebp
mov dword [0x52b3b8], eax
mov eax, dword [esp + 0x238]
mov dword [0x52b3bc], ecx
pop ebx
add esp, 0x22c
ret