Function at 0x4bf8a1
Capabilities:
Check if file exists
Get file attributes
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2b4
push ebx
mov dword [ebp - 0x2b0], ecx
mov dword [ebp - 0x108], 0x20
mov dword [ebp - 0x10c], 0
push 0x104
push 0
lea eax, [ebp - 0x104]
push eax
call fcn.0054bfb0
add esp, 0xc
lea ecx, [ebp - 0x104]
push ecx
call fcn.0053534c
add esp, 4
push str.UFD_ALL_FORCEID_
lea edx, [ebp - 0x104]
push edx
call fcn.0054bed0
add esp, 8
lea eax, [ebp - 0x104]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
call fcn.0054bec0
add esp, 8
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x4764]
mov dword [ebp - 0x2b4], eax
mov ecx, dword [ebp - 0x2b4]
sub ecx, 1
mov dword [ebp - 0x2b4], ecx
cmp dword [ebp - 0x2b4], 5
ja case.default.0x4bf942
mov edx, dword [ebp - 0x2b4]
jmp dword [edx*4 + 0x4bfefd]
push str.SM325AC.FID
lea eax, [ebp - 0x104]
push eax
call fcn.0054bed0
add esp, 8
push str.SM325AC_
mov ecx, dword [ebp + 0x10]
push ecx
call fcn.0054bed0
add esp, 8
jmp 0x4bfa52
push str.SM3252A.FID
lea edx, [ebp - 0x104]
push edx
call fcn.0054bed0
add esp, 8
push str.SM3252A_
mov eax, dword [ebp + 0x10]
push eax
call fcn.0054bed0
add esp, 8
jmp 0x4bfa52
push str.SM3252B.FID
lea ecx, [ebp - 0x104]
push ecx
call fcn.0054bed0
add esp, 8
push str.SM3252B_
mov edx, dword [ebp + 0x10]
push edx
call fcn.0054bed0
add esp, 8
jmp 0x4bfa52
push str.SM3211BC.FID
lea eax, [ebp - 0x104]
push eax
call fcn.0054bed0
add esp, 8
push str.SM3211BC_
mov ecx, dword [ebp + 0x10]
push ecx
call fcn.0054bed0
add esp, 8
jmp 0x4bfa52
push str.SM3211BC1.FID
lea edx, [ebp - 0x104]
push edx
call fcn.0054bed0
add esp, 8
push str.SM3211BC1_
mov eax, dword [ebp + 0x10]
push eax
call fcn.0054bed0
add esp, 8
jmp 0x4bfa52
push str.SM3252C.FID
lea ecx, [ebp - 0x104]
push ecx
call fcn.0054bed0
add esp, 8
push str.SM3252C_
mov edx, dword [ebp + 0x10]
push edx
call fcn.0054bed0
add esp, 8
jmp 0x4bfa52
push 0x104
push 0
lea eax, [ebp - 0x104]
push eax
call fcn.0054bfb0
add esp, 0xc
lea ecx, [ebp - 0x104]
push ecx
call fcn.0054c3e0
add esp, 4
test eax, eax
je 0x4bfee0
lea edx, [ebp - 0x104]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x4bfee0
mov dword [ebp - 0x2a4], 0
mov dword [ebp - 0x218], 9
mov dword [ebp - 0x2a8], 0
mov dword [ebp - 0x260], 0
mov dword [ebp - 0x110], 0x10
mov eax, dword [ebp + 8]
cmp dword [eax + 0x4764], 0
jl 0x4bfad3
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x4764], 7
jg 0x4bfad3
mov dword [ebp - 0x110], 8
mov dword [ebp - 0x25c], 0
jmp 0x4bfaee
mov edx, dword [ebp - 0x25c]
add edx, 1
mov dword [ebp - 0x25c], edx
cmp dword [ebp - 0x25c], 8
jge 0x4bfb3e
mov eax, dword [ebp - 0x25c]
imul eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0x108]
add ecx, eax
mov edx, dword [ebp + 0xc]
xor eax, eax
mov al, byte [edx + ecx]
test eax, eax
je 0x4bfb3c
cmp dword [ebp - 0x218], 9
jne 0x4bfb2d
mov ecx, dword [ebp - 0x25c]
mov dword [ebp - 0x218], ecx
mov edx, dword [ebp - 0x2a8]
add edx, 1
mov dword [ebp - 0x2a8], edx
jmp 0x4bfadf
mov eax, dword [ebp + 8]
cmp dword [eax + 0x4764], 8
jl 0x4bfb60
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x4764], 0xd
jg 0x4bfb60
mov dword [ebp - 0x108], 0x30
mov edx, dword [ebp + 0xc]
add edx, dword [ebp - 0x108]
xor eax, eax
mov al, byte [edx]
mov ecx, dword [ebp - 0x110]
mov edx, dword [ebp - 0x108]
lea ecx, [edx + ecx*4]
mov edx, dword [ebp + 0xc]
xor ebx, ebx
mov bl, byte [edx + ecx]
cmp eax, ebx
jne 0x4bfc25
mov eax, dword [ebp + 0xc]
add eax, dword [ebp - 0x108]
xor ecx, ecx
mov cl, byte [eax + 1]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x108]
lea edx, [eax + edx + 1]
mov eax, dword [ebp - 0x110]
xor ebx, ebx
mov bl, byte [edx + eax*4]
cmp ecx, ebx
jne 0x4bfc25
mov ecx, dword [ebp + 0xc]
add ecx, dword [ebp - 0x108]
xor edx, edx
mov dl, byte [ecx + 2]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x108]
lea eax, [ecx + eax + 2]
mov ecx, dword [ebp - 0x110]
xor ebx, ebx
mov bl, byte [eax + ecx*4]
cmp edx, ebx
jne 0x4bfc25
mov edx, dword [ebp + 0xc]
add edx, dword [ebp - 0x108]
xor eax, eax
mov al, byte [edx + 3]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x108]
lea ecx, [edx + ecx + 3]
mov edx, dword [ebp - 0x110]
xor ebx, ebx
mov bl, byte [ecx + edx*4]
cmp eax, ebx
jne 0x4bfc25
mov eax, dword [ebp + 0xc]
add eax, dword [ebp - 0x108]
xor ecx, ecx
mov cl, byte [eax]
test ecx, ecx
je 0x4bfc25
mov dword [ebp - 0x260], 1
mov edx, dword [ebp - 0x218]
imul edx, dword [ebp - 0x110]
mov eax, dword [ebp - 0x108]
add eax, edx
mov ecx, dword [ebp + 0xc]
xor edx, edx
mov dl, byte [ecx + eax + 3]
push edx
mov eax, dword [ebp - 0x218]
imul eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0x108]
add ecx, eax
mov edx, dword [ebp + 0xc]
xor eax, eax
mov al, byte [edx + ecx + 2]
push eax
mov ecx, dword [ebp - 0x218]
imul ecx, dword [ebp - 0x110]
mov edx, dword [ebp - 0x108]
add edx, ecx
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov cl, byte [eax + edx + 1]
push ecx
mov edx, dword [ebp - 0x218]
imul edx, dword [ebp - 0x110]
mov eax, dword [ebp - 0x108]
add eax, edx
mov ecx, dword [ebp + 0xc]
xor edx, edx
mov dl, byte [ecx + eax]
push edx
push str.FLASH__.2X_.2X_.2X_.2XCENO
lea eax, [ebp - 0x258]
push eax
call fcn.0054c45b
add esp, 0x18
lea ecx, [ebp - 0x104]
push ecx
push 0
lea edx, [ebp - 0x258]
push edx
push 0x5ad1f8
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebp - 0x2a4], eax
mov eax, dword [ebp - 0x2a4]
cmp eax, dword [ebp - 0x2a8]
jle 0x4bfcea
xor eax, eax
jmp 0x4bfef6
mov ecx, dword [ebp - 0x218]
imul ecx, dword [ebp - 0x110]
mov edx, dword [ebp - 0x108]
add edx, ecx
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov cl, byte [eax + edx + 3]
push ecx
mov edx, dword [ebp - 0x218]
imul edx, dword [ebp - 0x110]
mov eax, dword [ebp - 0x108]
add eax, edx
mov ecx, dword [ebp + 0xc]
xor edx, edx
mov dl, byte [ecx + eax + 2]
push edx
mov eax, dword [ebp - 0x218]
imul eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0x108]
add ecx, eax
mov edx, dword [ebp + 0xc]
xor eax, eax
mov al, byte [edx + ecx + 1]
push eax
mov ecx, dword [ebp - 0x218]
imul ecx, dword [ebp - 0x110]
mov edx, dword [ebp - 0x108]
add edx, ecx
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov cl, byte [eax + edx]
push ecx
push str.FLASH__.2X_.2X_.2X_.2XMODE
lea edx, [ebp - 0x258]
push edx
call fcn.0054c45b
add esp, 0x18
lea eax, [ebp - 0x104]
push eax
push 0x40
lea ecx, [ebp - 0x2a0]
push ecx
push 0x5d96d4
lea edx, [ebp - 0x258]
push edx
push 0x5ad21c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x2a0]
push eax
call fcn.0054c538
add esp, 4
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x19c], eax
mov edx, dword [ebp - 0x218]
imul edx, dword [ebp - 0x110]
mov eax, dword [ebp - 0x108]
add eax, edx
mov ecx, dword [ebp + 0xc]
xor edx, edx
mov dl, byte [ecx + eax + 3]
push edx
mov eax, dword [ebp - 0x218]
imul eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0x108]
add ecx, eax
mov edx, dword [ebp + 0xc]
xor eax, eax
mov al, byte [edx + ecx + 2]
push eax
mov ecx, dword [ebp - 0x218]
imul ecx, dword [ebp - 0x110]
mov edx, dword [ebp - 0x108]
add edx, ecx
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov cl, byte [eax + edx + 1]
push ecx
mov edx, dword [ebp - 0x218]
imul edx, dword [ebp - 0x110]
mov eax, dword [ebp - 0x108]
add eax, edx
mov ecx, dword [ebp + 0xc]
xor edx, edx
mov dl, byte [ecx + eax]
push edx
push str.FLASH__.2X_.2X_.2X_.2XFILE
lea eax, [ebp - 0x258]
push eax
call fcn.0054c45b
add esp, 0x18
lea ecx, [ebp - 0x104]
push ecx
push 0x104
lea edx, [ebp - 0x214]
push edx
push 0x5d96d8
lea eax, [ebp - 0x258]
push eax
push str.FORCEID
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [ebp - 0x214]
push ecx
mov edx, dword [ebp + 0x10]
push edx
call fcn.0054bed0
add esp, 8
mov eax, dword [ebp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x4bfece
mov ecx, dword [ebp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [ebp - 0x2ac], eax
mov edx, dword [ebp - 0x2ac]
and edx, 0x20
test edx, edx
je 0x4bfebc
mov dword [ebp - 0x10c], 1
jmp 0x4bfecc
mov dword [ebp - 0x10c], 0
mov eax, dword [ebp + 0x10]
mov byte [eax], 0
jmp 0x4bfede
mov dword [ebp - 0x10c], 0
mov ecx, dword [ebp + 0x10]
mov byte [ecx], 0
jmp 0x4bfef0
mov edx, dword [ebp + 0x10]
mov byte [edx], 0
mov dword [ebp - 0x10c], 0
mov eax, dword [ebp - 0x10c]
pop ebx
mov esp, ebp
pop ebp
ret 0xc