Function at 0x410090
Capabilities:
Read .ini file

Disassembly:
sub esp, 0x9ec
mov dword [0x4aba50], 1
cmp dword [0x246d5b8], 9
push ebx
push ebp
push esi
push edi
ja 0x4101e4
cmp dword [0x4af47c], 0
je 0x4100d8
push 0x4b0de0
push str._sSave_
push 0x2792610
call fcn.0040e260
add esp, 0xc
mov ecx, 0x2792610
jmp 0x4100dd
mov ecx, 0x4af588
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4100e0
sub ecx, edx
mov edx, 0x4af160
lea esi, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x4100f1
sub edx, esi
lea eax, [ecx + 5]
add eax, edx
push eax
call fcn.0046b317
add esp, 4
mov ebp, eax
cmp dword [0x4af47c], 0
je 0x410131
push 0x4b0de0
push str._sSave_
push 0x2792610
call fcn.0040e260
add esp, 0xc
mov ecx, 0x2792610
jmp 0x410136
mov ecx, 0x4af588
mov edx, ebp
sub edx, ecx
nop word [eax + eax]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edx - 1], al
test al, al
jne 0x410140
mov edx, 0x4af160
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x410154
sub edx, esi
lea edi, [ebp - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x410160
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 1]
nop dword [eax]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x410180
push dword [0x246d5b8]
mov eax, dword [0x49d300]
mov dword [edi], eax
lea eax, [esp + 0x1fc]
push 0x49d304
push eax
call fcn.0040e260
lea edx, [esp + 0x204]
add esp, 0xc
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x4101b5
sub edx, esi
lea edi, [ebp - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4101c1
push dword [0x246d5b8]
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push str.loading_slot__d
jmp 0x41025b
mov ecx, 0x246d5c0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4101f0
sub ecx, edx
lea eax, [ecx + 1]
push eax
call fcn.0046b317
mov ebp, eax
mov ecx, 0x246d5c0
mov edx, ebp
add esp, 4
sub edx, ecx
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edx - 1], al
test al, al
jne 0x410210
sub dword [0x246d5b8], 0xa
lea eax, [esp + 0x30]
push 0
push eax
push 0
push 0
push ebp
call fcn.00474bc5
lea edi, [esp + 0x44]
add esp, 0x14
dec edi
nop dword [eax]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x410240
mov eax, dword [0x49d308]
mov dword [edi], eax
lea eax, [esp + 0x30]
push eax
push str.loading__s
lea eax, [esp + 0x100]
push eax
call fcn.0040e260
add esp, 0xc
lea eax, [esp + 0x30]
push dword [0x246d5b8]
push str.slot__d
push eax
call fcn.0040e260
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
lea eax, [esp + 0x104]
add esp, 0xc
push eax
push 0
push 0x401
push dword [0x4b09c0]
call edi
push 0x49d330
push ebp
call fcn.00401000
add esp, 8
mov ebx, eax
push ebp
test ebx, ebx
jne 0x41035d
push 0x49d334
call fcn.0040e1d0
push ebp
call fcn.0046b2fc
add esp, 0xc
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0xfc]
push str.Savestate___s__not_found._n
push eax
call fcn.0040e260
add esp, 0xc
lea eax, [esp + 0xf8]
push 0x30
push 0x49d36c
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [0x4af428], ebx
je 0x410c55
mov eax, dword [0x24b1aa4]
test eax, eax
je 0x410332
push dword [eax]
push 0xc8
push 0x4b0ef0
push str.You_have_selected_wrong_save_slot_or_save_doesnt_exist
push str.Savestates_Wrong_Slot
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
jmp 0x410344
push str.Savestates_Wrong_Slot
push 0x4b0ef0
call fcn.0040e260
add esp, 8
push 0x4b0ef0
push 0
push 0x401
push dword [0x4b09c0]
call edi
jmp 0x410c55
call fcn.0046b2fc
add esp, 4
lea eax, [esp + 0x1f8]
push 0x20
push eax
push ebx
call fcn.00401850
add esp, 0xc
lea ecx, [esp + 0x1f8]
mov edx, 0x4af264
mov esi, 0x1c
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x410bdb
add ecx, 4
add edx, 4
sub esi, 4
jae 0x410390
push 0x28
push 0x4bb71c
push ebx
call fcn.00401850
add esp, 0xc
push 0x24
push 0x4b9674
push ebx
call fcn.00401850
add esp, 0xc
push 0x34
push 0xcbb7b0
push ebx
call fcn.00401850
add esp, 0xc
push 0x34
push 0xcbb7e4
push ebx
call fcn.00401850
add esp, 0xc
push 8
push 0x4b9698
push ebx
call fcn.00401850
add esp, 0xc
push 0x10
push 0x4bb78c
push ebx
call fcn.00401850
add esp, 0xc
push 0x3c
push 0x4bb6e0
push ebx
call fcn.00401850
add esp, 0xc
push 0x20
push 0x4bb744
push ebx
call fcn.00401850
add esp, 0xc
push 0x28
push 0x4bb764
push ebx
call fcn.00401850
add esp, 0xc
push 0x30
push 0xcbb818
push ebx
call fcn.00401850
add esp, 0xc
push 0x10
push 0x4bb79c
push ebx
call fcn.00401850
add esp, 0xc
push 0x800000
push 0x4bb7b0
push ebx
call fcn.00401850
add esp, 0xc
push 0x1000
push 0x4b96e0
push ebx
call fcn.00401850
add esp, 0xc
push 0x1000
push dword [0x4abafc]
push ebx
call fcn.00401850
add esp, 0xc
push 0x40
push 0x4b96a0
push ebx
call fcn.00401850
add esp, 0xc
lea eax, [esp + 0x1f8]
push 0x18
push eax
push ebx
call fcn.00401850
add esp, 0xc
mov eax, dword [esp + 0x1f8]
mov dword [0x4b9670], eax
mov eax, dword [esp + 0x1fc]
mov dword [0x24d1abc], eax
mov eax, dword [esp + 0x200]
mov dword [0x24d1ab0], eax
mov eax, dword [esp + 0x204]
mov dword [0x24d1ab4], eax
mov eax, dword [esp + 0x208]
push 0x100000
mov dword [0x24b1aac], eax
mov eax, dword [esp + 0x210]
push 0x12dc070
push ebx
mov dword [0x24d1ab8], eax
call fcn.00401850
add esp, 0xc
push 0x100000
push 0xedc070
push ebx
call fcn.00401850
add esp, 0xc
push 4
push 0x16dc9a8
push ebx
call fcn.00401850
add esp, 0xc
push 0x100
push 0x16dc080
push ebx
call fcn.00401850
add esp, 0xc
mov esi, 0x16dc190
push 4
push esi
push ebx
call fcn.00401850
add esp, 0xc
lea eax, [esp + 0x1f8]
push 4
push eax
push ebx
call fcn.00401850
add esi, 4
add esp, 0xc
cmp esi, 0x16dc210
jl 0x410548
push 8
push 0x16dc188
push ebx
call fcn.00401850
add esp, 0xc
push 8
push 0x16dc990
push ebx
call fcn.00401850
add esp, 0xc
push 0x100
push 0x16dc210
push ebx
call fcn.00401850
add esp, 0xc
push 4
push 0x16dc9a4
push ebx
call fcn.00401850
add esp, 0xc
push 4
push 0x16dc998
push ebx
call fcn.00401850
add esp, 0xc
push 0x680
push 0x16dc310
push ebx
call fcn.00401850
add esp, 0xc
cmp dword [0x16dc180], 0
jne 0x4105fc
cmp dword [0x16dc99c], 0
je 0x4105fc
push 4
push 0x16dc070
push ebx
call fcn.00401850
add esp, 0xc
jmp 0x41062e
push 4
lea eax, [esp + 0x18]
push eax
push ebx
call fcn.00401850
add esp, 0xc
push 0x100000
push 1
push 0x16dc9b0
call fcn.004682f0
mov eax, dword [esp + 0x20]
add esp, 0xc
mov dword [0x17dc9b0], eax
call fcn.004427f0
push 4
push 0x16dc078
push ebx
call fcn.00401850
add esp, 0xc
push 4
push 0xedc068
push ebx
call fcn.00401850
add esp, 0xc
push 4
push 0xedc064
push ebx
call fcn.00401850
add esp, 0xc
mov dword [esp + 0x14], 0
lea eax, [esp + 0x1f8]
push 4
push eax
push ebx
call fcn.00401850
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp dword [esp + eax + 0x1f8], 0xffffffff
je 0x4106d3
nop word [eax + eax]
lea ecx, [esp + 0x1fc]
push 4
add eax, ecx
push eax
push ebx
call fcn.00401850
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x204]
add esp, 0xc
add eax, 8
mov dword [esp + 0x14], eax
add eax, ecx
push 4
push eax
push ebx
call fcn.00401850
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp dword [esp + eax + 0x1f8], 0xffffffff
jne 0x410690
mov eax, dword [0x261231c]
test eax, eax
je 0x4106f7
nop dword [eax]
mov esi, dword [eax + 8]
push eax
call fcn.0046b2fc
add esp, 4
mov eax, esi
mov dword [0x261231c], eax
test esi, esi
jne 0x4106e0
mov ecx, dword [esp + 0x1f8]
cmp ecx, 0xffffffff
je 0x410729
lea esi, [esp + 0x1f8]
nop word [eax + eax]
mov edx, dword [esi + 4]
sub edx, dword [0x16dc1b4]
call fcn.00438260
mov ecx, dword [esi + 8]
lea esi, [esi + 8]
cmp ecx, 0xffffffff
jne 0x410710
push 4
lea eax, [esp + 0x20]
push eax
push ebx
call fcn.00401850
mov eax, dword [0x4af29c]
add esp, 0xc
cmp eax, 3
je 0x410748
cmp eax, 6
jne 0x41077a
cmp dword [esp + 0x1c], 0
jne 0x4107f7
push str.Cant_load_a_non_movie_snapshot_while_a_movie_is_active._n
push 2
call fcn.00473dc9
add esp, 4
push eax
call fcn.0040d6c0
mov eax, dword [0x4af29c]
add esp, 8
mov dword [0x4aba50], 0
cmp dword [esp + 0x1c], 0
jne 0x4107f7
cmp eax, 3
je 0x41078b
cmp eax, 6
jne 0x4107ad
push 0x30
push 0x49d44c
push str.The_movie_has_been_stopped_to_load_this_non_movie_snapshot.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [0x4af29c], 6
jne 0x4107f0
call fcn.00412d60
mov edx, 0x4a4c3c
mov ecx, 0x45d440
call fcn.00459ea0
push ebx
call fcn.004023d0
mov ecx, dword [0x16dc070]
add esp, 4
mov eax, dword [0x16dc184]
cmp ecx, 0x80000180
je 0x410b81
cmp dword [eax + 0x14], 0x80000180
je 0x410b81
xor dl, dl
jmp 0x410b83
call fcn.00411f60
jmp 0x4107ad
push 4
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], 0
push eax
push ebx
call fcn.00401850
add esp, 0xc
push dword [esp + 0x18]
call fcn.0046b317
add esp, 4
mov ebp, eax
push dword [esp + 0x18]
push ebp
push ebx
call fcn.00401850
mov edx, dword [esp + 0x24]
add esp, 0xc
cmp eax, edx
je 0x41086b
push str.Corrupt_movie_snapshot._n
push 2
call fcn.00473dc9
add esp, 4
push eax
call fcn.0040d6c0
add esp, 8
test ebp, ebp
je 0x410b72
push ebp
call fcn.0046b2fc
add esp, 4
mov dword [0x4aba50], 0
jmp 0x4107bc
mov edi, dword [0x4af29c]
test edi, edi
jne 0x41087d
lea esi, [edi + 5]
jmp 0x4109e9
cmp edx, 0x10
jae 0x41088c
mov esi, 1
jmp 0x4109e9
mov edx, dword [ebp + 8]
lea esi, [ebp + 4]
mov ecx, dword [esi]
mov eax, dword [ebp]
mov dword [esp + 0x28], edx
mov edx, dword [esi + 8]
add esi, 0xc
mov dword [esp + 0x2c], edx
mov dword [esp + 0x24], ecx
lea edx, [edx*4 + 4]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x18]
cmp eax, dword [0x2498d00]
je 0x4108ca
mov esi, 4
jmp 0x4109e9
cmp ecx, dword [esp + 0x2c]
jbe 0x4108da
mov esi, 6
jmp 0x4109e9
cmp dword [esp + 0x20], edx
jbe 0x4108ea
mov esi, 1
jmp 0x4109e9
cmp dword [0x246d5bc], 0
jne 0x410996
mov dword [0x4af29c], 3
call fcn.00411330
cmp edi, 6
jne 0x41091d
lea ecx, [edi - 5]
call fcn.0041f040
mov ecx, 0x2498cf8
call fcn.00410da0
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
inc dword [0x2498d08]
mov dword [0x4aba54], ecx
mov dword [0x2498d10], ecx
mov ecx, edi
mov dword [0x4aba58], eax
call fcn.00410f90
push edi
push esi
push dword [0x24990f8]
call fcn.00467d70
add esp, 0xc
call fcn.00411330
mov eax, 2
cmp eax, dword [0x2498cfc]
mov eax, dword [0x4aba54]
sbb ecx, ecx
and ecx, 0x200
add ecx, 0x204
push 0
lea eax, [ecx + eax*4]
push eax
push dword [0x248346c]
call fcn.00474451
mov ecx, dword [0x4aba54]
add esp, 0xc
jmp 0x4109d4
cmp ecx, dword [0x2498d10]
jbe 0x4109a5
mov esi, 6
jmp 0x4109e9
mov dword [0x4af29c], 6
call fcn.00411330
cmp edi, 3
jne 0x4109c1
lea ecx, [edi - 2]
call fcn.0041f040
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov dword [0x4aba54], ecx
mov dword [0x4aba58], eax
mov eax, dword [0x24990f8]
xor esi, esi
mov edi, dword [0x4af29c]
lea eax, [eax + ecx*4]
mov dword [0x2483258], eax
test ebp, ebp
je 0x4109fc
push ebp
call fcn.0046b2fc
mov edi, dword [0x4af29c]
add esp, 4
test esi, esi
je 0x4107ad
test edi, edi
je 0x4107ad
movups xmm0, xmmword [str.Failed_to_load_movie_snapshot__n]
dec esi
movups xmmword [esp + 0x5f8], xmm0
movups xmm0, xmmword [0x49d3dc]
movups xmmword [esp + 0x608], xmm0
cmp esi, 5
ja case.0x410a34.2
jmp dword [esi*4 + 0x410c6c]
lea edi, [esp + 0x5f8]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x410a43
mov ecx, 7
mov esi, str.snapshot_not_from_this_movie_n
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp case.0x410a34.2
lea ecx, [esp + 0x5f8]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x410a66
mov eax, dword [str.not_a_movie_snapshot_n]
mov dword [ecx], eax
mov eax, dword [0x49d410]
mov dword [ecx + 4], eax
mov eax, dword [0x49d414]
mov dword [ecx + 8], eax
mov eax, dword [0x49d418]
mov dword [ecx + 0xc], eax
mov eax, dword [0x49d41c]
mov dword [ecx + 0x10], eax
mov ax, word [0x49d420]
mov word [ecx + 0x14], ax
jmp case.0x410a34.2
lea ecx, [esp + 0x5f8]
dec ecx
nop dword [eax + eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x410ab0
mov eax, dword [str.invalid_frame_number_n]
mov dword [ecx], eax
mov eax, dword [0x49d428]
mov dword [ecx + 4], eax
mov eax, dword [0x49d42c]
mov dword [ecx + 8], eax
mov eax, dword [0x49d430]
mov dword [ecx + 0xc], eax
mov eax, dword [0x49d434]
mov dword [ecx + 0x10], eax
mov ax, word [0x49d438]
mov word [ecx + 0x14], ax
jmp case.0x410a34.2
lea ecx, [esp + 0x5f8]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x410af5
mov eax, dword [str.wrong_format_n]
mov dword [ecx], eax
mov eax, dword [0x49d440]
mov dword [ecx + 4], eax
mov eax, dword [0x49d444]
mov dword [ecx + 8], eax
mov ax, word [0x49d448]
mov word [ecx + 0xc], ax
cmp dword [0x4af2a8], 0
lea eax, [esp + 0x5f8]
je 0x410b40
push eax
push str.Warning:__s_n
call fcn.0040e1d0
add esp, 8
jmp 0x410b50
push 0x30
push 0x49d520
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [0x4af29c], 3
jne 0x410b6d
call fcn.00411f60
mov dword [0x4aba50], 0
jmp 0x4107bc
call fcn.00412d60
mov dword [0x4aba50], 0
jmp 0x4107bc
mov dl, 1
mov byte [0x4af28c], dl
mov edx, dword [0x16dc180]
cmp ecx, 0x80000180
je 0x410ba4
cmp dword [eax + 0x14], 0x80000180
jne 0x410bab
test edx, edx
jne 0x410bc8
mov byte [0x4af28f], 1
test edx, edx
jne 0x410bc8
cmp dword [0x16dc99c], edx
je 0x410bc8
mov dword [0x16dc9a0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x9ec
ret
mov eax, dword [eax + 0x14]
mov dword [0x16dc9a0], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x9ec
ret
cmp dword [0x4af428], 0
je 0x410c4c
mov eax, dword [0x24b1aa4]
test eax, eax
je 0x410c0e
push dword [eax]
push 0xc8
push 0x4b0ef0
push str.This_savestate_is_from_another_ROM_or_version
push str.Savestates_Wrong_Region
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
jmp 0x410c20
push str.Savestates_Wrong_Region
push 0x4b0ef0
call fcn.0040e260
add esp, 8
push 0x4b0ef0
push 0
push 0x401
push dword [0x4b09c0]
call edi
push 0x10
push 0x4a0364
push 0x4b0ef0
push dword [0x4b09c4]
call dword [sym.imp.USER32.dll_MessageBoxA]
push ebx
call fcn.004023d0
add esp, 4
pop edi
pop esi
pop ebp
mov dword [0x4aba50], 0
pop ebx
add esp, 0x9ec
ret