Function at 0x45b680
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x1ac
mov eax, dword [0x52b3ac]
mov ecx, dword [eax]
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
push ebx
push ebp
xor ebp, ebp
add eax, dword [ecx + 0x18]
push esi
push edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
lea edi, [ebp + 1]
je 0x45b6b7
cmp dword [eax + 0x1c], edi
jne 0x45b6b7
mov eax, dword [eax + 0x24]
jmp 0x45b6b9
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 + 0xc8], eax
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
add esp, 0x10
add eax, dword [ecx + 0x18]
je 0x45b6f6
cmp dword [eax + 0x1c], edi
jne 0x45b6f6
mov eax, dword [eax + 0x24]
jmp 0x45b6f8
xor eax, eax
mov eax, dword [eax + 4]
push 0x20
push 0x30
push 0x40
push eax
call sub.SDL.dll_SDL_MapRGB
mov ecx, dword [0x52b40c]
mov dword [esp + 0xcc], eax
mov eax, dword [ecx + 0x80b0]
mov esi, dword [eax + 0x18]
add esi, dword [eax + 0xc]
lea edx, [ecx + 0x1a10]
mov dword [esp + 0x58], edx
mov edx, dword [eax + 0x1c]
add edx, dword [eax + 0x10]
mov dword [esp + 0x88], eax
mov dword [esp + 0x74], edx
mov eax, 0x2aaaaaab
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [ecx + 0x10fec]
mov dword [esp + 0x8c], eax
lea eax, [ecx + 0x10fb8]
mov dword [esp + 0xbc], edx
mov edx, dword [ecx + 0x80a0]
add esp, 0x10
mov dword [esp + 0x74], ebp
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x88], ebp
mov dword [esp + 0x68], ebp
mov dword [esp + 0x44], ebp
mov dword [esp + 0x6c], edi
mov dword [esp + 0x94], ebp
mov dword [esp + 0x84], esi
mov dword [esp + 0xa8], eax
call fcn.00434ee0
mov eax, dword [0x52b844]
mov ecx, dword [0x52b840]
push ebp
push 2
push eax
mov esi, 0x3c
push ecx
mov dword [0x52aec0], esi
mov dword [0x52b848], esi
call fcn.0049a610
push ebp
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 dword [0x52aea8], eax
mov dword [0x52aeac], edx
call fcn.004375f0
mov dword [0x52a9ec], ebp
mov dword [0x52a9e8], ebp
mov dword [0x4a907c], edi
call fcn.0040f180
mov dword [0x52a9ec], ebp
mov dword [0x52a9e8], ebp
mov dword [0x52adf4], ebp
mov dword [0x52adf0], ebp
call fcn.00411cf0
mov esi, dword [0x52b40c]
mov dword [0x52b33c], ebp
mov dword [0x52b338], ebp
mov edx, dword [esi + 0x10588]
push edx
call fcn.00406150
mov edi, dword [esi + 0xfcb4]
add esp, 4
call fcn.00445540
mov eax, dword [0x52b40c]
mov ecx, str.Default_Values
mov dword [esp + 0x1b0], ecx
mov dword [esp + 0x188], str.Difficulty
mov dword [esp + 0x18c], str.Life
mov dword [esp + 0x190], str.Time_Limit
mov dword [esp + 0x194], str.Game_Speed
mov dword [esp + 0x198], str.Master_Volume
mov dword [esp + 0x19c], str.Wave_SFX_Volume
mov dword [esp + 0x1a0], str.BGM_Volume
mov dword [esp + 0x1a4], str.Input_Config
mov dword [esp + 0x1a8], str.Team_Mode_Config
mov dword [esp + 0x1ac], str.Load_Save
mov dword [esp + 0x1b4], str.Return_to_Main_Menu
mov dword [eax + 0x11ba0], ebp
mov dword [esp + 0x180], ecx
mov dword [esp + 0x16c], ecx
mov edx, str.Return_to_Options
mov dword [esp + 0x184], edx
mov dword [esp + 0x170], edx
lea ecx, [esp + 0x188]
mov dword [esp + 0x140], ecx
mov dword [esp + 0x174], str.Key_Config
mov dword [esp + 0x178], str.Joystick
mov dword [esp + 0x17c], str.Joystick_Config
mov dword [esp + 0x164], str.Single_VS_Simul_Advantage
mov dword [esp + 0x168], str.If_player_KOed
lea edx, [esp + 0x174]
lea ecx, [esp + 0x164]
mov dword [esp + 0x148], edx
mov dword [esp + 0x144], ecx
mov dword [eax + 0x10eb0], ebp
mov dword [eax + 0x10eb4], ebp
call fcn.004375f0
jmp 0x45b982
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea ecx, [ecx]
xor ebp, ebp
xor ebx, ebx
mov dword [esp + 0x50], ebp
xor edi, edi
mov dword [esp + 0x20], ebp
mov dword [esp + 0x14], ebp
call fcn.0040f180
mov eax, dword [0x52a9e8]
cmp eax, dword [0x52a9ec]
je 0x45b9ce
cmp dword [0x52b358], ebp
jne 0x45b9b0
xor ecx, ecx
jmp 0x45b9ca
mov ecx, dword [eax*4 + 0x52a5e8]
inc eax
cmp eax, 0x100
mov dword [0x52a9e8], eax
jl 0x45b9ca
mov dword [0x52a9e8], ebp
mov dword [esp + 0x50], ecx
call fcn.00415050
test eax, eax
je 0x45ba12
cmp dword [0x52b360], ebp
jne 0x45b9e3
xor eax, eax
jmp 0x45ba10
mov eax, dword [0x52adf0]
cmp eax, dword [0x52adf4]
je 0x45d6b8
mov ecx, dword [eax*4 + 0x52a9f0]
inc eax
cmp eax, 0x100
mov dword [0x52adf0], eax
jl 0x45ba0e
mov dword [0x52adf0], ebp
mov eax, ecx
mov edi, eax
lea esi, [esp + 0x50]
call fcn.00443c30
call fcn.00411ec0
test eax, eax
je 0x45ba66
cmp dword [0x52b360], ebp
jne 0x45ba38
cmp dword [0x52b358], ebp
jne 0x45ba38
xor ebx, ebx
jmp 0x45ba66
mov eax, dword [0x52b338]
cmp eax, dword [0x52b33c]
je 0x45d6b6
mov edx, dword [0x52b334]
mov ebx, dword [edx + eax*4]
inc eax
cmp eax, dword [0x52b340]
mov dword [0x52b338], eax
jl 0x45ba66
mov dword [0x52b338], ebp
cmp dword [esp + 0x94], ebp
je 0x45ba7e
xor ebx, ebx
mov dword [esp + 0x50], ebp
xor edi, edi
mov dword [esp + 0x94], ebp
lea eax, [esp + 0xa8]
call fcn.00411970
mov ebp, dword [0x52b40c]
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x80bc]
mov esi, dword [eax]
mov ecx, dword [esi + 0xc]
shl ecx, 4
push ecx
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x1c]
xor ebx, ebx
push ebx
push edx
call sub.MSVCR90.dll_memset
add esp, 0xc
mov dword [esi + 8], ebx
mov dword [esi + 0x28], ebx
mov dword [esi + 0x24], ebx
mov dword [esi + 0x20], ebx
cmp dword [ebp + 0x11100], 0x16
je 0x45bad4
cmp dword [ebp + 0x11104], 0x16
jne 0x45bae1
cmp edi, 0xb
jne 0x45bae1
mov dword [esp + 0x50], 0x1b
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x64]
mov eax, ebx
sub eax, 0
je 0x45bb97
sub eax, 1
je 0x45bb53
sub eax, 1
jne 0x45bbe1
mov esi, dword [esp + 0x84]
mov eax, dword [esp + 0x7c]
lea esi, [esi + esi*4]
add esi, esi
add eax, edi
add esi, esi
lea ecx, [edi + eax*8]
add esi, esi
mov dword [esp + 0xa4], eax
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x80], 5
mov dword [esp + 0x70], esi
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
mov dword [esp + 0x6c], 2
jmp 0x45bbe5
mov edx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
lea eax, [edx + edi]
shl esi, 5
lea ecx, [edi + eax*4]
add ecx, eax
mov dword [esp + 0x80], 4
mov dword [esp + 0x70], esi
mov dword [esp + 0xa4], eax
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], esi
mov dword [esp + 0x6c], 1
jmp 0x45bbe5
mov esi, dword [esp + 0x84]
mov eax, dword [esp + 0x7c]
imul esi, esi, 0x1a
add eax, edi
lea ecx, [eax*8]
sub ecx, eax
lea edx, [edi + ecx*2]
mov dword [esp + 0x80], 0xc
mov dword [esp + 0x70], esi
mov dword [esp + 0xa4], eax
mov dword [esp + 0x8c], edx
mov dword [esp + 0x90], esi
mov dword [esp + 0x6c], 1
jmp 0x45bbe5
mov esi, dword [esp + 0x70]
mov eax, dword [0x52be10]
sub eax, esi
cdq
sub eax, edx
sar eax, 1
add edi, 0x28
cmp dword [esp + 0x4c], 0
mov dword [esp + 0x54], eax
mov dword [esp + 0x40], edi
je 0x45bc1a
mov eax, dword [esp + 0x5c]
cmp dword [esp + eax*4 + 0x28], 9
jne 0x45bdee
test ebx, ebx
jne 0x45bdee
test byte [esp + 0x58], 1
je 0x45bd02
mov eax, dword [esp + 0x5c]
add dword [esp + eax*4 + 0x28], 0xffffffff
lea eax, [esp + eax*4 + 0x28]
jns 0x45bc3e
mov ecx, dword [esp + 0x80]
dec ecx
mov dword [eax], ecx
fld qword [ebp + 0x10e90]
mov eax, dword [esp + 0x48]
fld qword [0x4a6bc8]
mov edx, dword [eax + 0xc]
fdiv st(1), st(0)
mov ebx, dword [eax + 8]
mov edi, dword [ebp + 0x10348]
xor ecx, ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], edx
fxch st(1)
fmul qword [ebp + 0x10e98]
fdiv st(1)
fmul st(1)
fst qword [esp + 0x38]
fldz
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x45bc8d
fstp st(1)
fstp qword [esp + 0x38]
jmp 0x45bc9c
fstp st(0)
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x45bc9c
fst qword [esp + 0x38]
cmp dword [ebp + 0x10e8c], ecx
je 0x45bd08
cmp edi, ecx
je 0x45bd08
cmp dword [ebp + 0x10eb8], ecx
jne 0x45bd08
cmp ebx, 0xffffffff
je 0x45bd08
cmp dword [0x52b370], 1
jne 0x45bd08
fstp st(0)
call fcn.00415520
mov esi, eax
cmp esi, 0xffffffff
je 0x45bcfc
fld qword [esp + 0x38]
mov eax, dword [esp + 0x1c]
sub esp, 8
fstp qword [esp]
push esi
mov ecx, ebx
mov edx, edi
call fcn.00415590
add esp, 0xc
cmp eax, 0xffffffff
je 0x45bcfc
mov ecx, dword [0x52b388]
lea eax, [esi + esi*4]
mov dword [ecx + eax*8], 0xffffffff
mov ebp, dword [0x52b40c]
fld qword [0x4a6bc8]
test byte [esp + 0x58], 4
je 0x45bdf4
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x80]
inc dword [esp + eax*4 + 0x28]
cmp dword [esp + eax*4 + 0x28], edx
lea eax, [esp + eax*4 + 0x28]
jl 0x45bd32
mov dword [eax], 0
fld qword [ebp + 0x10e90]
mov eax, dword [esp + 0x48]
fdiv st(1)
mov edx, dword [eax + 0xc]
mov ebx, dword [eax + 8]
mov edi, dword [ebp + 0x10348]
xor ecx, ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], edx
fmul qword [ebp + 0x10e98]
fdiv st(1)
fmul st(1)
fst qword [esp + 0x38]
fldz
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x45bd79
fstp st(1)
fstp qword [esp + 0x38]
jmp 0x45bd88
fstp st(0)
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x45bd88
fst qword [esp + 0x38]
cmp dword [ebp + 0x10e8c], ecx
je 0x45bdf4
cmp edi, ecx
je 0x45bdf4
cmp dword [ebp + 0x10eb8], ecx
jne 0x45bdf4
cmp ebx, 0xffffffff
je 0x45bdf4
cmp dword [0x52b370], 1
jne 0x45bdf4
fstp st(0)
call fcn.00415520
mov esi, eax
cmp esi, 0xffffffff
je 0x45bde8
fld qword [esp + 0x38]
mov eax, dword [esp + 0x1c]
sub esp, 8
fstp qword [esp]
push esi
mov ecx, ebx
mov edx, edi
call fcn.00415590
add esp, 0xc
cmp eax, 0xffffffff
je 0x45bde8
mov ecx, dword [0x52b388]
lea eax, [esi + esi*4]
mov dword [ecx + eax*8], 0xffffffff
mov ebp, dword [0x52b40c]
fld qword [0x4a6bc8]
cmp dword [esp + 0x6c], 1
mov edx, dword [esp + 0x5c]
jne 0x45be12
lea eax, [edx*4]
lea ecx, [esp + 0x2c]
sub ecx, eax
mov eax, dword [esp + eax + 0x28]
mov dword [ecx], eax
mov ecx, dword [esp + 0x58]
mov eax, ecx
and eax, 0xff0
neg eax
sbb eax, eax
neg eax
mov dword [esp + 0x24], eax
mov ebx, 1
test cl, 8
jne 0x45be35
mov ebx, dword [esp + 0x20]
test cl, 2
je 0x45be42
mov dword [esp + 0x14], 1
cmp dword [esp + 0x4c], 0
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
je 0x45bea8
test ebx, ebx
jne 0x45be62
cmp ecx, 0x1b
je 0x45be62
cmp dword [0x52b0e4], ebx
je 0x45be6b
xor ebx, ebx
mov dword [esp + 0x88], ebx
cmp edi, ebx
je 0x45be7a
mov dword [esp + 0x88], 1
cmp eax, ebx
jne 0x45be8b
cmp ecx, 0x1b
je 0x45be8b
cmp dword [0x52b0e4], ebx
je 0x45be93
mov dword [esp + 0x68], 1
xor edi, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x24], ebx
cmp ecx, 0x1b
jne 0x45bea8
xor ecx, ecx
mov dword [esp + 0x50], ecx
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x45c235
mov eax, dword [esp + edx*4 + 0x28]
mov esi, dword [ebp + eax*4 + 0x11b7c]
cmp eax, 0xa
ja case.0x45bec8.7
jmp dword [eax*4 + 0x45d7d0]
test ebx, ebx
je 0x45bed9
cmp esi, 1
jle 0x45bed9
dec esi
test edi, edi
je case.0x45bec8.7
cmp esi, 8
jge case.0x45bec8.7
inc esi
jmp case.0x45bec8.7
test ebx, ebx
je 0x45befc
cmp esi, 0x1e
jle 0x45befc
sub esi, 0xa
test edi, edi
je case.0x45bec8.7
cmp esi, 0x12c
jge case.0x45bec8.7
add esi, 0xa
jmp case.0x45bec8.7
test ebx, ebx
je 0x45bf3f
cmp esi, 0x14
jle 0x45bf2b
cmp esi, 0x63
je 0x45bf30
sub esi, 0x14
jmp 0x45bf3f
cmp esi, 0x63
jne 0x45bf35
sub esi, 0x13
jmp 0x45bf3f
cmp esi, 0xffffffff
jne 0x45bf3f
mov esi, 0x63
test edi, edi
je case.0x45bec8.7
cmp esi, 0x50
jge 0x45bf5c
cmp esi, 0xffffffff
je 0x45bf59
add esi, 0x14
jmp case.0x45bec8.7
cmp esi, 0x50
jne 0x45bf68
mov esi, 0x63
jmp case.0x45bec8.7
cmp esi, 0x63
jne case.0x45bec8.7
or esi, 0xffffffff
jmp case.0x45bec8.7
test ebx, ebx
je 0x45bf83
cmp esi, 0xfffffff7
jle 0x45bf83
dec esi
test edi, edi
je case.0x45bec8.7
cmp esi, 9
jge case.0x45bec8.7
inc esi
jmp case.0x45bec8.7
test ebx, ebx
je 0x45bf99
cmp esi, 0xffffffff
jle 0x45bf99
dec esi
test edi, edi
je case.0x45bec8.7
cmp esi, 0x65
jge case.0x45bec8.7
inc esi
jmp case.0x45bec8.7
test ebx, ebx
je 0x45bfab
xor esi, esi
test edi, edi
je 0x45bfb4
mov esi, 1
cmp dword [esp + 0x4c], 1
jne case.0x45bec8.7
cmp dword [esp + 0x68], 0
je case.0x45bec8.7
jmp 0x45bff4
mov eax, 1
cmp dword [esp + 0x4c], eax
jne case.0x45bec8.7
cmp dword [esp + 0x68], 0
je case.0x45bec8.7
cmp dword [esp + 0x88], eax
jne 0x45bff4
fstp st(0)
call fcn.0048e890
fld qword [0x4a6bc8]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x5c]
xor eax, eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x68], eax
cmp dword [esp + 0x4c], 0
mov eax, dword [esp + edx*4 + 0x28]
mov dword [ebp + eax*4 + 0x11b7c], esi
jne 0x45c062
cmp ecx, 0x1b
je 0x45c01e
cmp dword [0x52b0e4], 0
je 0x45c031
mov eax, 1
mov dword [esp + edx*4 + 0x28], 0xb
mov dword [esp + 0x24], eax
jmp 0x45c036
mov eax, 1
cmp ecx, 0x11a
jne 0x45c04c
mov dword [esp + edx*4 + 0x28], 7
mov dword [esp + 0x24], eax
jmp 0x45c071
cmp ecx, 0x11b
jne 0x45c062
mov dword [esp + edx*4 + 0x28], 8
mov dword [esp + 0x24], eax
jmp 0x45c071
cmp dword [esp + 0x24], 0
je case.0x45c425.1
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + edx*4 + 0x28]
add eax, 0xfffffff9
cmp eax, 4
ja case.default.0x45c081
jmp dword [eax*4 + 0x45d7fc]
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x14]
mov esi, dword [eax + 0x10]
mov edx, dword [ebp + 0x10348]
sub esp, 8
fstp qword [esp]
push ecx
push 0xffffffffffffffff
call fcn.00473bc0
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
add esp, 0x10
mov dword [esp + 0x14c], edx
mov dword [esp + 0x158], eax
mov dword [esp + 0x44], 2
jmp 0x45b973
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x14]
mov esi, dword [eax + 0x10]
mov edx, dword [ebp + 0x10348]
sub esp, 8
fstp qword [esp]
push ecx
push 0xffffffffffffffff
call fcn.00473bc0
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
add esp, 0x10
mov dword [esp + 0x14c], edx
mov dword [esp + 0x158], eax
mov dword [esp + 0x44], 1
jmp 0x45b973
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x14]
mov esi, dword [eax + 0x10]
mov edx, dword [ebp + 0x10348]
sub esp, 8
fstp qword [esp]
push ecx
push 0xffffffffffffffff
call fcn.00473bc0
mov ebp, dword [0x52b40c]
add esp, 0x10
xor eax, eax
mov dword [esp + 0x4c], 1
mov dword [esp + 0x88], eax
mov dword [esp + 0x24], eax
jmp 0x45c1bd
mov eax, dword [esp + 0x48]
mov edx, dword [eax + 0x14]
mov esi, dword [eax + 0x10]
sub esp, 8
fstp qword [esp]
push edx
mov edx, dword [ebp + 0x10348]
push 0xffffffffffffffff
call fcn.00473bc0
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + eax*4 + 0x38]
mov edx, dword [0x52b40c]
add esp, 0x10
cmp dword [edx + ecx*4 + 0x11b7c], 0
jne 0x45c18e
call fcn.0048e900
jmp 0x45c193
call fcn.0048ee30
mov ebp, dword [0x52b40c]
mov eax, 1
mov dword [esp + 0x4c], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x24], 0
jmp 0x45c1bd
mov dword [esp + 0x24], 0
fstp st(0)
fldz
mov ebx, dword [ebp + 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 [ebp + 0x10588]
add esp, 0x10
call fcn.00405d80
cmp dword [ebp + 0x10eb4], 0
jne 0x45d5e0
mov esi, dword [0x52b34c]
cmp dword [esi + 0x48], 0
je 0x45c725
mov eax, 0x24
lea ecx, [esi + 0x24]
mov edx, esi
mov edi, dword [edx]
cmp edi, dword [ecx]
jne 0x45c6e9
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x45c211
mov dword [esi + 0x48], 0
jmp 0x45c725
cmp eax, 2
jne 0x45c5ce
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + ecx*4 + 0x28]
lea edx, [eax + ecx*4]
add edx, ecx
sub eax, 1
lea edx, [edx*4 + 0x11bb0]
mov edi, dword [edx + ebp]
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], edi
mov ecx, edi
jne 0x45c3a4
test ebx, ebx
je 0x45c276
test edi, edi
je 0x45c276
xor edi, edi
mov dword [esp + 0x1c], edi
cmp dword [esp + 0x14], 0
je 0x45c28a
test edi, edi
jne 0x45c28a
mov edi, 1
mov dword [esp + 0x1c], edi
cmp edi, ecx
je 0x45c3a4
lea esi, [ebp + 0x11100]
lea eax, [ebp + 0x11bb4]
mov dword [edx + ebp], edi
lea ebx, [ebp + 0x11020]
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], 2
mov ecx, dword [esp + 0x20]
xor eax, eax
cmp dword [ecx], eax
setne al
mov dword [esi - 8], eax
test eax, eax
je 0x45c2e5
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
lea esi, [ebx + 0x68]
mov ecx, 0xd
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov dword [eax], edx
mov esi, eax
mov edi, edx
jmp 0x45c319
push 0x34
fstp st(0)
push 0
push ebx
call sub.MSVCR90.dll_memset
add esp, 0xc
mov dword [esi], 0
mov eax, 1
nop
cmp dword [ebx + eax*4], 0
jne 0x45c30d
mov dword [ebx + eax*4], 0x80
inc eax
cmp eax, 0xd
jl 0x45c300
fld qword [0x4a6bc8]
add dword [esp + 0x20], 0x14
add esi, 4
add ebx, 0x34
sub dword [esp + 0x18], 1
mov dword [esp + 0x14], esi
jne 0x45c2b7
cmp dword [ebp + 0x110f8], 0
jne 0x45c353
cmp dword [ebp + 0x110fc], 0
jne 0x45c353
cmp dword [0x52b360], 0
je 0x45c353
fstp st(0)
call fcn.00414c10
jmp 0x45c398
cmp dword [ebp + 0x11b70], 0
jne 0x45c3a4
cmp dword [0x52b360], 0
jne 0x45c3a4
fstp st(0)
call fcn.00414b30
xor ecx, ecx
cmp eax, ecx
jne 0x45c386
mov ebp, dword [0x52b40c]
mov dword [ebp + 0x110fc], ecx
mov dword [ebp + 0x110f8], ecx
jmp 0x45c39e
push str.Setting_up_input_n
call fcn.00444320
add esp, 4
call fcn.004519e0
mov ebp, dword [0x52b40c]
fld qword [0x4a6bc8]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x50]
mov dword [ecx + ebp], edi
xor edi, edi
cmp eax, 0x1b
je 0x45c3be
cmp dword [0x52b0e4], edi
je 0x45c3d6
mov ecx, 4
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], ecx
mov ecx, 1
mov dword [esp + 0x24], ecx
jmp 0x45c3db
mov ecx, 1
cmp eax, 0x11a
jne 0x45c3f0
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x24], ecx
jmp 0x45c414
cmp eax, 0x11b
jne 0x45c40a
mov eax, 2
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ecx
jmp 0x45c414
cmp dword [esp + 0x24], edi
je case.0x45c425.1
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + ebx*4 + 0x28]
cmp eax, 4
ja case.0x45c425.1
jmp dword [eax*4 + 0x45d810]
mov edi, dword [esp + 0x48]
mov edx, dword [edi + 0x14]
mov esi, dword [edi + 0x10]
sub esp, 8
fstp qword [esp]
push edx
mov edx, dword [ebp + 0x10348]
push 0xffffffffffffffff
call fcn.00473bc0
push str.Config_keys_menu_n
call fcn.00444320
mov eax, dword [esp + 0x88]
add esp, 0x14
push eax
push 0
call fcn.0045d850
push str.Return_from_config_keys_menu_n
mov dword [esp + 0x80], eax
call fcn.00444320
fld qword [0x4a6bc8]
mov ecx, dword [edi + 0x1c]
fstp qword [esp + 4]
mov edx, dword [0x52b40c]
mov esi, dword [edi + 0x18]
mov edx, dword [edx + 0x10348]
add esp, 4
push ecx
push 0xffffffffffffffff
call fcn.00473bc0
mov ebp, dword [0x52b40c]
add esp, 0x10
mov dword [esp + 0x24], 0
jmp 0x45c1bd
cmp dword [ebp + 0x110f8], edi
jne 0x45c4c8
cmp dword [ebp + 0x110fc], edi
je 0x45c54d
mov edi, dword [esp + 0x48]
mov eax, dword [edi + 0x14]
mov esi, dword [edi + 0x10]
mov edx, dword [ebp + 0x10348]
sub esp, 8
fstp qword [esp]
push eax
push 0xffffffffffffffff
call fcn.00473bc0
push str.Config_pads_menu_n
call fcn.00444320
mov ecx, dword [esp + 0x88]
add esp, 0x14
push ecx
push 1
call fcn.0045d850
push str.Return_from_config_pads_menu_n
mov dword [esp + 0x80], eax
call fcn.00444320
fld qword [0x4a6bc8]
mov edx, dword [edi + 0x1c]
fstp qword [esp + 4]
mov eax, dword [0x52b40c]
mov esi, dword [edi + 0x18]
add esp, 4
push edx
mov edx, dword [eax + 0x10348]
push 0xffffffffffffffff
call fcn.00473bc0
mov ebp, dword [0x52b40c]
add esp, 0x10
xor edi, edi
mov dword [esp + 0x24], edi
jmp 0x45c1bd
fstp st(0)
mov dword [esp + 0x24], edi
jmp 0x45c1bd
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x14]
mov esi, dword [eax + 0x10]
mov edx, dword [ebp + 0x10348]
sub esp, 8
fstp qword [esp]
push ecx
push 0xffffffffffffffff
call fcn.00473bc0
mov ebp, dword [0x52b40c]
lea edx, [ebx + ebx*4]
add esp, 0x10
mov dword [ebp + edx*4 + 0x11bb4], edi
mov dword [esp + 0x24], edi
jmp 0x45c1bd
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x1c]
mov esi, dword [eax + 0x18]
mov edx, dword [ebp + 0x10348]
sub esp, 8
fstp qword [esp]
push ecx
push 0xffffffffffffffff
call fcn.00473bc0
mov edx, dword [esp + 0x15c]
mov eax, dword [esp + 0x168]
add esp, 0x10
mov dword [esp + 0x28], edx
mov dword [esp + 0x44], edi
jmp 0x45b979
cmp eax, 1
jne case.0x45c425.1
mov esi, dword [esp + 0x5c]
mov edx, dword [esp + esi*4 + 0x28]
mov eax, dword [ebp + edx*4 + 0x11bd8]
lea esi, [esp + esi*4 + 0x28]
mov ecx, edx
sub ecx, 0
je 0x45c60b
sub ecx, 1
jne 0x45c625
test ebx, ebx
je 0x45c5ff
test eax, eax
jle 0x45c5ff
dec eax
test edi, edi
je 0x45c625
cmp eax, 1
jge 0x45c625
inc eax
jmp 0x45c625
test ebx, ebx
je 0x45c617
cmp eax, 0x64
jle 0x45c617
sub eax, 0xa
test edi, edi
je 0x45c625
cmp eax, 0x12c
jge 0x45c625
add eax, 0xa
cmp dword [esp + 0x50], 0x1b
mov dword [ebp + edx*4 + 0x11bd8], eax
je 0x45c63c
cmp dword [0x52b0e4], 0
je 0x45c64c
mov dword [esi], 3
mov dword [esp + 0x24], 1
jmp 0x45c657
cmp dword [esp + 0x24], 0
je case.0x45c425.1
mov eax, dword [esi]
sub eax, 2
je 0x45c6a7
sub eax, 1
jne case.0x45c425.1
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x1c]
mov esi, dword [eax + 0x18]
mov edx, dword [ebp + 0x10348]
sub esp, 8
fstp qword [esp]
push ecx
push 0xffffffffffffffff
call fcn.00473bc0
mov edx, dword [esp + 0x15c]
mov eax, dword [esp + 0x168]
add esp, 0x10
mov dword [esp + 0x28], edx
mov dword [esp + 0x44], 0
jmp 0x45b979
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x14]
mov esi, dword [eax + 0x10]
mov edx, dword [ebp + 0x10348]
sub esp, 8
fstp qword [esp]
push ecx
push 0xffffffffffffffff
call fcn.00473bc0
mov ebp, dword [0x52b40c]
add esp, 0x10
xor eax, eax
mov dword [ebp + 0x11bd8], 0xc8
mov dword [ebp + 0x11bdc], eax
mov dword [esp + 0x24], eax
jmp 0x45c1bd
movzx eax, byte [edx]
movzx edi, byte [ecx]
sub eax, edi
jne 0x45c715
movzx eax, byte [edx + 1]
movzx edi, byte [ecx + 1]
sub eax, edi
jne 0x45c715
movzx eax, byte [edx + 2]
movzx edi, byte [ecx + 2]
sub eax, edi
jne 0x45c715
movzx eax, byte [edx + 3]
movzx edx, byte [ecx + 3]
sub eax, edx
sar eax, 0x1f
or eax, 1
jne 0x45c722
mov dword [esi + 0x48], eax
jmp 0x45c725
inc dword [esi + 0x4c]
fld dword [ebp + 0x1012c]
mov eax, dword [ebp + 0x10588]
sub esp, 8
fstp dword [esp + 4]
fld dword [ebp + 0x1012c]
fstp dword [esp]
call fcn.004059f0
mov eax, dword [ebp + 0x10588]
push 0
push eax
call fcn.00405cc0
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x64]
mov eax, dword [esp + 0x80]
lea esi, [ecx + edx]
lea edx, [esi - 1]
push edx
add ecx, 0xfffffff2
lea edi, [ebx + eax + 0xf]
push ecx
mov ecx, dword [esp + 0xd0]
lea eax, [edi - 1]
lea edx, [ebx - 0xf]
call fcn.00436ca0
mov ecx, dword [esp + 0x58]
lea ebp, [esi - 2]
lea eax, [ebx - 0x10]
mov ebx, dword [esp + 0xd4]
add ecx, 0xfffffff3
push ebp
push ecx
mov ecx, ebx
mov edx, eax
call fcn.00436ca0
mov eax, dword [esp + 0x60]
add eax, 0xfffffff3
push ebp
push eax
mov ecx, ebx
mov eax, edi
mov edx, edi
call fcn.00436ca0
mov eax, dword [esp + 0x68]
mov ebp, dword [esp + 0x7c]
add eax, 0xfffffff1
push eax
add edi, 0xfffffffe
add ebp, 0xfffffff2
push eax
mov ecx, ebx
mov eax, edi
mov edx, ebp
call fcn.00436ca0
push esi
push esi
mov ecx, ebx
mov eax, edi
mov edx, ebp
call fcn.00436ca0
xor esi, esi
add esp, 0x38
cmp dword [esp + 0x44], esi
jne 0x45c7fe
mov esi, str.OPTIONS
jmp 0x45c8db
mov eax, dword [esp + 0x44]
cmp eax, 2
jne 0x45c8d1
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x70]
add eax, dword [esp + 0x64]
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
push 0x100
push 0x100
push 0x80
mov eax, edi
fstp dword [esp + 0x20]
fld1
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 + 0x40], eax
fld dword [esp + 0x38]
mov eax, str.PLAYER_1
fstp dword [esp + 4]
mov esi, str.INPUT_CONFIG
fild dword [esp + 0x40]
fstp dword [esp]
call fcn.0040f830
fld1
add esp, 0x24
push 0x80
push 0x80
push 0x100
lea eax, [edi + edi*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 + 0x38]
mov dword [esp + 0x38], eax
fstp dword [esp + 4]
mov eax, str.PLAYER_2
fild dword [esp + 0x38]
fstp dword [esp]
call fcn.0040f830
add esp, 0x24
jmp 0x45c8db
cmp eax, 1
jne 0x45c8db
mov esi, str.TEAM_MODE_CONFIG
mov edi, dword [esp + 0x48]
mov dword [edi + 0xa8], esi
add edi, 0x20
cmp dword [edi], 0
je 0x45c9db
call fcn.0048d3f0
cmp dword [edi + 0x2c], 0
mov eax, dword [0x52b40c]
mov edx, dword [eax + 0x1054c]
mov esi, dword [eax + 0x10144]
mov ebp, dword [eax + 0xfcb4]
lea ecx, [eax + 0x10550]
jne 0x45ca31
push 0
push 0
push ecx
push edx
push esi
push edi
push ebp
call fcn.00446790
mov edi, eax
add esp, 0x1c
test edi, edi
jl 0x45c954
fld1
mov ecx, dword [0x52b40c]
sub esp, 8
fstp dword [esp + 4]
fld dword [ecx + 0x1012c]
fstp dword [esp]
call fcn.00446b80
add esp, 8
cmp edi, 0xffffffff
je 0x45ca31
mov esi, dword [ebp]
mov ebx, edi
imul ebx, ebx, 0x108
add esi, ebx
cmp dword [esi + 0x3c], 0
jne 0x45c97f
cmp dword [esi + 4], 1
jne 0x45c97f
mov eax, edi
mov ecx, ebp
call fcn.00444bc0
mov edx, dword [0x52b40c]
cmp dword [edx + 0x10eb4], 0
jne 0x45c997
push esi
call fcn.00444d90
add esp, 4
mov dword [esi + 8], 1
mov esi, dword [esi + 0x40]
cmp esi, 1
jg 0x45ca31
cmp esi, 0xffffffff
je 0x45ca31
mov esi, dword [ebp]
add esi, ebx
cmp dword [esi], 0
je 0x45ca31
mov ebx, dword [esi + 0x7c]
test ebx, ebx
je 0x45c9c9
call fcn.00417520
xor eax, eax
mov dword [esi + 0x7c], eax
mov dword [esi + 0x90], eax
mov dword [esi], eax
dec dword [ebp + 8]
jmp 0x45ca31
mov eax, dword [esp + 0x40]
fld1
mov ebx, dword [esp + 0x78]
push 0x100
push 0x100
add eax, 0xffffffe2
mov dword [esp + 0x1c], eax
mov eax, dword [0x52be10]
push 0x100
push 0
cdq
push 0
sub esp, 0x10
sub eax, edx
fst dword [esp + 0xc]
sar eax, 1
fstp dword [esp + 8]
fild dword [esp + 0x38]
mov dword [esp + 0x38], eax
mov eax, esi
fstp dword [esp + 4]
fild dword [esp + 0x38]
fstp dword [esp]
call fcn.0040f830
add esp, 0x24
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x14]
imul eax, dword [esp + 0x70]
cdq
sub eax, edx
xor ecx, ecx
sar eax, 1
cmp dword [esp + 0x6c], 1
setne cl
inc ecx
mov dword [esp + 0x9c], ecx
xor ecx, ecx
cmp dword [esp + 0x80], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x34], ecx
jle 0x45d113
mov edx, dword [esp + 0x54]
add eax, edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + eax*4 + 0x28]
mov eax, dword [esp + edx*4 + 0x140]
mov dword [esp + 0x98], ecx
mov dword [esp + 0x38], eax
jmp 0x45caa0
cmp dword [esp + 0x6c], 2
mov ecx, dword [esp + 0xa0]
mov edx, 1
mov dword [esp + 0x18], ecx
jne 0x45caca
cmp dword [esp + 0x14], 0
jne 0x45cac5
sub dword [esp + 0x18], 7
jmp 0x45caca
add dword [esp + 0x18], 7
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x34]
mov ebp, 0xc0
mov edi, ebp
mov dword [esp + 0x20], ebp
test ecx, ecx
jne 0x45caeb
cmp eax, 0xb
je 0x45cb06
cmp eax, 9
jmp 0x45cb04
cmp ecx, 2
jne 0x45cafd
test eax, eax
je 0x45cb06
cmp eax, 3
je 0x45cb06
cmp eax, edx
jmp 0x45cb04
cmp ecx, edx
jne 0x45cb0a
cmp eax, 3
jne 0x45cb0a
add dword [esp + 0x1c], edx
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x64]
lea esi, [eax + edx]
imul esi, dword [esp + 0xa4]
add esi, dword [esp + 0x40]
add esi, ebx
mov dword [esp + 0x30], esi
cmp eax, dword [esp + 0x98]
jne 0x45cbf6
mov eax, dword [esp + 0x74]
add eax, eax
add eax, eax
mov ecx, eax
and ecx, 0x8000007f
jns 0x45cb4b
dec ecx
or ecx, 0xffffff80
inc ecx
cmp ecx, 0x40
jge 0x45cb61
and eax, 0x8000003f
jns 0x45cb5c
dec eax
or eax, 0xffffffc0
inc eax
add eax, 0x20
jmp 0x45cb77
mov edx, eax
and edx, 0x8000003f
jns 0x45cb70
dec edx
or edx, 0xffffffc0
inc edx
mov eax, 0x5f
sub eax, edx
mov ecx, dword [0x52b3ac]
mov edx, dword [ecx]
mov ecx, dword [edx + 4]
imul ecx, dword [0x52b3b0]
add ecx, dword [edx + 0x18]
je 0x45cb99
cmp dword [ecx + 0x1c], 1
jne 0x45cb99
mov ecx, dword [ecx + 0x24]
jmp 0x45cb9b
xor ecx, ecx
mov edx, dword [ecx + 4]
push eax
push eax
push eax
push edx
call sub.SDL.dll_SDL_MapRGB
mov ecx, eax
mov eax, dword [esp + 0x8c]
lea edx, [esi + eax]
mov eax, dword [esp + 0x80]
push edx
cdq
idiv dword [esp + 0xb0]
mov edx, dword [esp + 0x2c]
sub esi, ebx
push esi
mov dword [esp + 0xcc], ecx
lea eax, [eax + edx + 4]
add edx, 0xfffffffb
call fcn.00436980
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x4c]
mov ebp, 0x100
add esp, 0x18
mov edi, 0xf8
mov dword [esp + 0x20], ebp
cmp ecx, 2
jne 0x45cc24
cmp eax, ecx
jne 0x45cc24
mov eax, dword [0x52b40c]
cmp dword [eax + 0x110f8], 0
jne 0x45cc24
cmp dword [eax + 0x110fc], 0
jne 0x45cc24
mov ebp, 0x80
mov edi, 0x90
mov dword [esp + 0x20], ebp
mov eax, dword [esp + 0x20]
fild dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x78]
fstp dword [esp + 0x30]
fld1
push eax
mov eax, dword [ecx + esi*4]
push ebp
push edi
push 0
push 1
sub esp, 0x10
fst dword [esp + 0xc]
fstp dword [esp + 8]
fld dword [esp + 0x54]
fstp dword [esp + 4]
fild dword [esp + 0x3c]
fstp dword [esp]
call fcn.0040f830
mov eax, dword [esp + 0x68]
add esp, 0x24
mov byte [esp + 0xc0], 0
test eax, eax
jne 0x45ce39
mov edx, dword [0x52b40c]
mov eax, dword [edx + esi*4 + 0x11b7c]
cmp esi, 9
ja case.0x45cc94.7
jmp dword [esi*4 + 0x45d824]
cmp eax, 3
jge 0x45ccbc
mov ecx, dword [str.Easy]
mov dl, byte [0x4a16b8]
mov dword [esp + 0xc0], ecx
mov byte [esp + 0xc4], dl
jmp 0x45cd06
cmp eax, 5
jle 0x45ccdd
mov ecx, dword [str.Hard]
mov dl, byte [0x4a16c0]
mov dword [esp + 0xc0], ecx
mov byte [esp + 0xc4], dl
jmp 0x45cd06
mov ecx, dword [str.Medium]
mov dx, word [0x4a16c8]
mov dword [esp + 0xc0], ecx
mov cl, byte [0x4a16ca]
mov word [esp + 0xc4], dx
mov byte [esp + 0xc6], cl
lea ecx, [esp + 0xc0]
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x45cd10
push eax
sub ecx, esi
push 0x49f818
lea edx, [esp + ecx + 0xc8]
push edx
jmp 0x45d00e
push eax
jmp 0x45d001
cmp eax, 0xffffffff
je 0x45cd4a
push eax
push 0x49da1c
lea ecx, [esp + 0xc8]
push ecx
jmp 0x45d00e
mov edx, dword [str.None]
mov al, byte [0x4a16d8]
mov dword [esp + 0xc0], edx
mov byte [esp + 0xc4], al
jmp case.0x45cc94.7
test eax, eax
jne 0x45cd99
mov ecx, dword [str.Normal]
mov dx, word [0x4a16e0]
mov al, byte [0x4a16e2]
mov dword [esp + 0xc0], ecx
mov word [esp + 0xc4], dx
mov byte [esp + 0xc6], al
jmp case.0x45cc94.7
jle 0x45cdae
push eax
push str.Fast__i
lea ecx, [esp + 0xc8]
push ecx
jmp 0x45d00e
neg eax
push eax
push str.Slow__i
lea edx, [esp + 0xc8]
push edx
jmp 0x45d00e
cmp eax, 0xffffffff
jne 0x45cdd8
mov dword [esp + 0xc0], 0x66664f
jmp case.0x45cc94.7
cmp eax, 0x65
jne 0x45cded
mov dword [esp + 0xc0], 0x78614d
jmp case.0x45cc94.7
push eax
push 0x49da1c
jmp 0x45d006
test eax, eax
jne 0x45ce1b
mov ecx, dword [str.Load]
mov dl, byte [0x4a16f8]
mov dword [esp + 0xc0], ecx
mov byte [esp + 0xc4], dl
jmp case.0x45cc94.7
mov eax, dword [str.Save]
mov cl, byte [0x4a1700]
mov dword [esp + 0xc0], eax
mov byte [esp + 0xc4], cl
jmp case.0x45cc94.7
cmp eax, 2
jne 0x45cf88
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x14]
mov ecx, dword [0x52b40c]
lea edx, [eax + ebx*4]
add edx, ebx
sub eax, 1
mov esi, dword [ecx + edx*4 + 0x11bb0]
jne 0x45cf59
test esi, esi
jne 0x45ce86
mov cl, byte [0x4a170c]
mov edx, dword [str.Disabled]
mov eax, dword [0x4a1708]
mov byte [esp + 0xc8], cl
jmp 0x45cf4b
cmp esi, 1
jne 0x45ce9b
mov edx, dword [str.Enabled]
mov eax, dword [0x4a1714]
jmp 0x45cf4b
lea ecx, [esi - 4]
cmp ecx, 4
ja 0x45cebf
push esi
lea edx, [esp + 0xc4]
push str._i_button
push edx
call dword [sym.imp.MSVCR90.dll_sprintf]
add esp, 0xc
jmp 0x45cf59
cmp esi, 0x14
jne 0x45cefa
mov eax, dword [str.Sidewinder]
mov ecx, dword [0x4a1728]
mov dx, word [0x4a172c]
mov dword [esp + 0xc0], eax
mov al, byte [0x4a172e]
mov dword [esp + 0xc4], ecx
mov word [esp + 0xc8], dx
mov byte [esp + 0xca], al
jmp 0x45cf59
cmp esi, 0x15
jne 0x45cf1b
mov ecx, dword [str.SNESKey]
mov edx, dword [0x4a1734]
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xc4], edx
jmp 0x45cf59
cmp esi, 0x16
jne 0x45cf3b
mov eax, dword [str.PSX_Pad]
mov ecx, dword [0x4a173c]
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], ecx
jmp 0x45cf59
cmp esi, 0x17
jne 0x45cf59
mov edx, dword [str.N64_Pad]
mov eax, dword [0x4a1744]
mov dword [esp + 0xc0], edx
mov dword [esp + 0xc4], eax
mov ecx, dword [0x52b40c]
cmp dword [ecx + ebx*4 + 0x110f8], 0
jne case.0x45cc94.7
test esi, esi
je case.0x45cc94.7
mov ebp, 0x80
mov edi, 0x90
mov dword [esp + 0x20], ebp
jmp case.0x45cc94.7
cmp eax, 1
jne case.0x45cc94.7
mov edx, dword [0x52b40c]
mov ecx, dword [edx + esi*4 + 0x11bd8]
mov eax, esi
sub eax, 0
je 0x45d000
sub eax, 1
jne case.0x45cc94.7
test ecx, ecx
jne 0x45cfc6
lea eax, [esp + 0xc0]
push str.Team_loses
push eax
call dword [sym.imp.MSVCR90.dll_sprintf]
add esp, 8
jmp case.0x45cc94.7
cmp ecx, 1
jne 0x45cfe3
lea ecx, [esp + 0xc0]
push str.AI_keeps_fighting
push ecx
call dword [sym.imp.MSVCR90.dll_sprintf]
add esp, 8
jmp case.0x45cc94.7
cmp ecx, 2
jne case.0x45cc94.7
lea edx, [esp + 0xc0]
push str.Control_AI
push edx
call dword [sym.imp.MSVCR90.dll_sprintf]
add esp, 8
jmp case.0x45cc94.7
push ecx
push str._i__
lea eax, [esp + 0xc8]
push eax
call dword [sym.imp.MSVCR90.dll_sprintf]
add esp, 0xc
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x78]
push eax
add ecx, edx
push ebp
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
push edi
push 0
push 0xffffffffffffffff
fstp dword [esp + 0x2c]
sub esp, 0x10
fld1
lea eax, [esp + 0xe4]
fst dword [esp + 0xc]
fstp dword [esp + 8]
fld dword [esp + 0x54]
fstp dword [esp + 4]
fld dword [esp + 0x3c]
fstp dword [esp]
call fcn.0040f830
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x58]
add esp, 0x24
test eax, eax
jne 0x45d093
cmp esi, 7
jne 0x45d082
mov eax, str._F1_
jmp 0x45d0ca
cmp esi, 8
jne 0x45d08e
mov eax, str._F2_
jmp 0x45d0ca
cmp esi, 0xb
jmp 0x45d0c3
cmp eax, 2
jne 0x45d0bb
cmp dword [esp + 0x14], 1
jne 0x45d101
test esi, esi
jne 0x45d0aa
mov eax, str._F1_
jmp 0x45d0ca
cmp esi, 2
jne 0x45d0b6
mov eax, str._F2_
jmp 0x45d0ca
cmp esi, 4
jmp 0x45d0c3
cmp eax, 1
jne 0x45d101
cmp esi, 3
jne 0x45d101
mov eax, str._Esc_
fld1
push 0x80
push 0x100
push 0x100
push 0
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
fstp dword [esp + 8]
fld dword [esp + 0x54]
fstp dword [esp + 4]
fld dword [esp + 0x3c]
fstp dword [esp]
call fcn.0040f830
add esp, 0x24
inc esi
cmp esi, dword [esp + 0x80]
mov dword [esp + 0x34], esi
jl 0x45caa0
cmp dword [esp + 0x6c], 1
je 0x45d12c
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 2
mov dword [esp + 0x14], eax
jl 0x45ca39
cmp dword [esp + 0x4c], 0
je 0x45d5a2
mov ecx, dword [0x52be10]
mov esi, dword [esp + 0x64]
mov eax, ecx
cdq
and edx, 3
add eax, edx
mov ebx, eax
mov eax, dword [esp + 0x8c]
cdq
sub eax, edx
mov edi, eax
mov eax, ecx
cdq
sub eax, edx
mov ecx, eax
lea eax, [esi + esi*2]
mov dword [esp + 0x98], eax
cdq
sub eax, edx
mov ebp, eax
mov eax, esi
cdq
sub eax, edx
sar edi, 1
add edi, dword [esp + 0x40]
sar eax, 1
sar ebp, 1
add ebp, edi
lea ebp, [eax + ebp - 1]
sar ecx, 1
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [0x52b3ac]
mov edx, dword [edx]
mov esi, eax
mov eax, dword [edx + 4]
imul eax, dword [0x52b3b0]
sar ebx, 2
sar esi, 1
add esi, ebx
add eax, dword [edx + 0x18]
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xa0], edi
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], esi
je 0x45d1ca
cmp dword [eax + 0x1c], 1
jne 0x45d1ca
mov eax, dword [eax + 0x24]
jmp 0x45d1cc
xor eax, eax
mov eax, dword [eax + 4]
lea edx, [edi - 1]
mov dword [esp + 0x38], edx
fild dword [esp + 0x38]
add ecx, ebx
mov dword [esp + 0x54], ecx
push 0x60
fstp dword [esp + 0x3c]
push 0x38
fild dword [esp + 0x5c]
push 0x38
push eax
fstp dword [esp + 0x2c]
fild dword [esp + 0xac]
fstp dword [esp + 0x30]
call sub.SDL.dll_SDL_MapRGB
fld dword [esp + 0x48]
add esp, 0x10
push eax
sub esp, 0x10
fst dword [esp + 0xc]
fld dword [esp + 0x30]
fstp dword [esp + 8]
fstp dword [esp + 4]
fld dword [esp + 0x34]
fstp dword [esp]
call fcn.00435670
mov ecx, dword [0x52b3ac]
mov ecx, dword [ecx]
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
add esp, 0x14
add eax, dword [ecx + 0x18]
je 0x45d24f
cmp dword [eax + 0x1c], 1
jne 0x45d24f
mov eax, dword [eax + 0x24]
jmp 0x45d251
xor eax, eax
mov edx, dword [esp + 0x98]
mov eax, dword [eax + 4]
lea ecx, [edx + edi]
mov dword [esp + 0x40], ecx
inc ecx
push 0x60
mov dword [esp + 0x3c], ecx
fild dword [esp + 0x3c]
push 0x38
push 0x38
push eax
fstp dword [esp + 0x48]
call sub.SDL.dll_SDL_MapRGB
fld dword [esp + 0x48]
add esp, 0x10
push eax
sub esp, 0x10
fst dword [esp + 0xc]
fld dword [esp + 0x30]
fstp dword [esp + 8]
fstp dword [esp + 4]
fld dword [esp + 0x34]
fstp dword [esp]
call fcn.00435670
mov ecx, dword [0x52b3ac]
mov ecx, dword [ecx]
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
add esp, 0x14
add eax, dword [ecx + 0x18]
je 0x45d2c7
cmp dword [eax + 0x1c], 1
jne 0x45d2c7
mov eax, dword [eax + 0x24]
jmp 0x45d2c9
xor eax, eax
fild dword [esp + 0x40]
mov eax, dword [eax + 4]
lea edx, [ebx - 1]
mov dword [esp + 0x38], edx
fstp dword [esp + 0x1c]
push 0x60
fild dword [esp + 0x3c]
push 0x38
push 0x38
push eax
fstp dword [esp + 0x48]
fild dword [esp + 0xb0]
fstp dword [esp + 0x30]
call sub.SDL.dll_SDL_MapRGB
fld dword [esp + 0x2c]
add esp, 0x10
push eax
sub esp, 0x10
fstp dword [esp + 0xc]
fld dword [esp + 0x4c]
fst dword [esp + 8]
fld dword [esp + 0x34]
fstp dword [esp + 4]
fstp dword [esp]
call fcn.00435670
mov ecx, dword [0x52b3ac]
mov ecx, dword [ecx]
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
add esp, 0x14
add eax, dword [ecx + 0x18]
je 0x45d346
cmp dword [eax + 0x1c], 1
jne 0x45d346
mov eax, dword [eax + 0x24]
jmp 0x45d348
xor eax, eax
mov edx, dword [esp + 0x54]
mov eax, dword [eax + 4]
inc edx
push 0x60
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
push 0x38
push 0x38
push eax
fstp dword [esp + 0x48]
call sub.SDL.dll_SDL_MapRGB
fld dword [esp + 0x2c]
add esp, 0x10
push eax
sub esp, 0x10
fstp dword [esp + 0xc]
fld dword [esp + 0x4c]
fst dword [esp + 8]
fld dword [esp + 0x34]
fstp dword [esp + 4]
fstp dword [esp]
call fcn.00435670
mov ecx, dword [0x52b3ac]
mov ecx, dword [ecx]
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
add esp, 0x14
add eax, dword [ecx + 0x18]
je 0x45d3b4
cmp dword [eax + 0x1c], 1
jne 0x45d3b4
mov eax, dword [eax + 0x24]
jmp 0x45d3b6
xor eax, eax
mov edx, dword [eax + 4]
push 0x88
push 0x54
push 0x54
push edx
call sub.SDL.dll_SDL_MapRGB
push eax
mov eax, dword [esp + 0x54]
push eax
mov eax, dword [esp + 0x6c]
push edi
mov ecx, ebx
call fcn.00436870
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + ecx*4 + 0x44]
add esp, 0x1c
cmp eax, 0xa
jne 0x45d54a
cmp dword [esp + 0x88], 0
mov edi, dword [esp + 0x84]
mov ebx, 0x100
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
lea eax, [ebx - 0x40]
jne 0x45d43b
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
lea eax, [edx + ebp]
push eax
lea eax, [esi + edi*8]
lea edx, [esi + edi*4]
jmp 0x45d460
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x18], eax
lea edx, [ecx + ebp]
push edx
lea eax, [edi*8]
sub eax, edi
lea edx, [esi + edi*8]
lea eax, [esi + eax*2]
add edx, edi
sub ebp, dword [esp + 0x68]
mov ecx, dword [esp + 0xb8]
push ebp
call fcn.00436980
fild dword [esp + 0x1c]
add esp, 8
push ebx
push ebx
fstp dword [esp + 0x5c]
fld1
push ebx
mov ebx, dword [esp + 0x84]
push 0
push 0
sub esp, 0x10
fst dword [esp + 0xc]
lea ecx, [edi*8]
fstp dword [esp + 8]
mov edx, esi
fld dword [esp + 0x78]
sub edx, ecx
mov dword [esp + 0x5c], edx
fstp dword [esp + 4]
fild dword [esp + 0x5c]
mov eax, str.Reset_default_values_
fstp dword [esp]
call fcn.0040f830
mov eax, dword [esp + 0x40]
fld1
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x3c]
add esp, 0x24
push eax
push ecx
push edx
push 0
push 0xffffffffffffffff
sub esp, 0x10
fst dword [esp + 0xc]
lea eax, [edi*8]
sub eax, edi
fstp dword [esp + 8]
fld dword [esp + 0x78]
add eax, esi
mov dword [esp + 0x5c], eax
fstp dword [esp + 4]
fild dword [esp + 0x5c]
mov eax, 0x49fb6c
fstp dword [esp]
call fcn.0040f830
mov ecx, dword [esp + 0x44]
fld1
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
add esp, 0x24
push ecx
push edx
push eax
push 0
push 1
sub esp, 0x10
fst dword [esp + 0xc]
lea ecx, [edi + edi*4]
fstp dword [esp + 8]
lea edx, [esi + ecx*2]
fld dword [esp + 0x78]
mov dword [esp + 0x5c], edx
fstp dword [esp + 4]
mov eax, 0x49fb68
fild dword [esp + 0x5c]
jmp 0x45d597
cmp eax, 9
jne 0x45d5a2
fld1
mov eax, dword [0x52b40c]
mov ebx, dword [esp + 0x78]
push 0x100
push 0x100
push 0x100
push 0
push 0
sub esp, 0x10
cmp dword [eax + 0x11ba0], 0
fst dword [esp + 0xc]
fstp dword [esp + 8]
mov eax, str.Options_Loaded
fild dword [esp + 0x38]
fstp dword [esp + 4]
fild dword [esp + 0x3c]
je 0x45d597
mov eax, str.Options_Saved
fstp dword [esp]
call fcn.0040f830
add esp, 0x24
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 ecx, dword [esi + 0x10588]
push 1
push ecx
call fcn.00405cc0
mov ebp, dword [0x52b40c]
add esp, 0x10
cmp dword [esp + 0x50], 0x125
jne 0x45d5f5
call fcn.00444870
mov ebp, dword [0x52b40c]
cmp dword [ebp + 0x1245c], 0
jne 0x45d609
call fcn.00437730
mov ebp, dword [0x52b40c]
cmp dword [ebp + 0x10eb4], 0
jne 0x45d64a
mov ebx, dword [ebp + 0x80a4]
call fcn.004351b0
mov ebp, dword [0x52b40c]
cmp dword [ebp + 0x10eb4], 0
jne 0x45d64a
mov eax, dword [0x52b34c]
cmp dword [eax + 0x48], 0
je 0x45d64a
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 + 0x74]
cmp dword [esp + 0x24], 0
je 0x45b980
mov eax, 0xb
cmp dword [esp + 0x28], eax
je 0x45d673
cmp dword [esp + 0x2c], eax
jne 0x45b980
xor ebp, ebp
cmp dword [esp + 0x44], ebp
jne 0x45b980
mov eax, dword [0x52b40c]
mov dword [eax + 0x10eb0], ebp
mov dword [eax + 0x10eb4], ebp
cmp dword [0x52b3cc], ebp
je 0x45d6ba
lea edx, [esp + 0xa8]
push edx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xac]
jmp 0x45d6c2
jmp 0x45d6b6
jmp 0x45d6b8
call dword [sym.imp.WINMM.dll_timeGetTime]
xor ecx, ecx
sub eax, dword [0x52aeb0]
mov edx, 1
sbb ecx, dword [0x52aeb4]
mov dword [0x52b3b8], eax
mov eax, dword [esp + 0x48]
mov dword [0x52b3bc], ecx
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0x38], ecx
mov ecx, dword [0x52b40c]
fld qword [ecx + 0x10e90]
mov edi, dword [eax + 0x18]
fld qword [0x4a6bc8]
add dword [0x52b3d0], edx
fdiv st(1), st(0)
mov ebx, dword [ecx + 0x10348]
mov dword [0x52b3c0], ebp
mov dword [0x52b3c4], ebp
fxch st(1)
fmul qword [ecx + 0x10e98]
fdiv st(1)
fmul st(1)
fst qword [esp + 0x58]
fldz
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x45d73d
fstp st(2)
fstp st(0)
fstp qword [esp + 0x58]
jmp 0x45d750
fstp st(0)
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x45d74e
fstp qword [esp + 0x58]
jmp 0x45d750
fstp st(0)
cmp dword [ecx + 0x10e8c], ebp
je 0x45d7bd
cmp ebx, ebp
je 0x45d7bd
cmp dword [ecx + 0x10eb8], ebp
jne 0x45d7bd
cmp edi, 0xffffffff
je 0x45d7bd
cmp dword [0x52b370], edx
jne 0x45d7bd
call fcn.00415520
mov esi, eax
cmp esi, 0xffffffff
je 0x45d7bd
fld qword [esp + 0x58]
mov eax, dword [esp + 0x38]
sub esp, 8
fstp qword [esp]
push esi
mov ecx, edi
mov edx, ebx
call fcn.00415590
add esp, 0xc
mov dword [0x4a907c], ebp
cmp eax, 0xffffffff
je 0x45d7c3
mov eax, dword [0x52b388]
lea edx, [esi + esi*4]
mov dword [eax + edx*8], 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1ac
ret
mov dword [0x4a907c], ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1ac
ret