Function at 0x404290
Capabilities:
Read .ini file

Disassembly:
sub esp, 0x458
mov eax, dword [0x457a00]
xor eax, esp
mov dword [esp + 0x454], eax
mov eax, dword [esp + 0x45c]
push ebx
push ebp
push esi
push edi
mov ebx, ecx
push 0x1ff
xor esi, esi
lea ecx, [esp + 0x65]
mov edi, edx
push esi
xor ebp, ebp
push ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x48], ebx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x20], 1
mov dword [esp + 0x28], ebp
mov byte [esp + 0x6c], 0
call fcn.00433570
xor eax, eax
add esp, 0xc
push str.backup_nv_ex_enter_n
mov byte [esp + 0x44], 0
mov dword [esp + 0x45], eax
mov dword [esp + 0x49], eax
mov dword [esp + 0x4d], eax
mov word [esp + 0x51], ax
mov byte [esp + 0x53], al
mov byte [esp + 0x54], al
mov dword [esp + 0x55], eax
mov dword [esp + 0x59], eax
mov dword [esp + 0x5d], eax
mov word [esp + 0x61], ax
mov byte [esp + 0x63], al
mov dword [esp + 0x14], esi
mov dword [esp + 0x30], 0xa
mov dword [esp + 0x24], eax
call fcn.00401000
mov edx, dword [edi]
add esp, 4
sub edx, 1
mov dword [esp + 0x18], esi
js 0x404782
jmp 0x404354
mov ebx, dword [esp + 0x3c]
xor eax, eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
lea eax, [ebp + 1]
push eax
push str.NV_d
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x48]
push 0x10
push eax
call fcn.00430bb0
add esp, 0x10
push 0x45bb50
push 0x200
lea ecx, [esp + 0x68]
push ecx
push 0x45029b
lea edx, [esp + 0x50]
push edx
push 0x44c94c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov edi, eax
test edi, edi
je 0x404728
mov byte [esp + edi + 0x60], 0
mov al, byte [esp + esi + 0x60]
add esi, 1
cmp al, 0x2c
je 0x4043c4
cmp esi, edi
jl 0x4043b5
cmp esi, edi
mov dword [esp + 0x14], 0
jne 0x40449e
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x64]
push 0x450298
push edx
call fcn.0043059e
mov eax, ebp
imul eax, eax, 0x94
add ebx, eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax - 0x4e20]
add esp, 0xc
cmp ecx, 0x270f
mov word [ebx], ax
ja 0x40443c
mov ecx, dword [esp + 0x24]
push ebx
push eax
call fcn.0041f770
movzx eax, ax
movzx edx, ax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
push edx
push eax
push str.PASDLib_ReadEfsFile_Ex_id__d__ret_d_n
call fcn.00401000
add esp, 0x14
mov esi, 1
jmp 0x404571
lea edi, [ebx + 2]
jmp 0x404445
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x24]
push edi
push eax
push ecx
call fcn.0041c470
movzx esi, ax
mov eax, dword [esp + 0x1c]
movzx edx, si
add esp, 0xc
push edx
push eax
push str.PASDLib_ReadNvItem_id__d__ret_d_n
mov dword [esp + 0x20], esi
call fcn.00401000
add esp, 0xc
test si, si
jne 0x40447b
add dword [esp + 0x20], 1
test ebp, ebp
jne 0x404497
mov eax, dword [esp + 0x2c]
mov ecx, eax
sub eax, 1
test ecx, ecx
mov dword [esp + 0x2c], eax
je 0x404497
cmp dword [esp + 0x20], 2
jle 0x404441
xor esi, esi
jmp 0x404571
lea edx, [esp + 0x10]
push edx
push 0x450298
push esi
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x60]
push ecx
call fcn.00430ca0
add esp, 0xc
push eax
call fcn.0043059e
mov eax, dword [esp + 0x1c]
lea edx, [eax - 0x4e20]
add esp, 0xc
cmp edx, 0x270f
ja 0x40450f
mov ecx, ebp
imul ecx, ecx, 0x94
add ebx, ecx
mov ecx, dword [esp + 0x24]
push ebx
push eax
call fcn.0041f770
movzx eax, ax
movzx edx, ax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
push edx
push eax
push str.PASDLib_ReadEfsFile_Ex_id__d__ret_d_n
call fcn.00401000
add esp, 0x14
mov esi, 1
jmp 0x404571
mov ecx, edi
sub ecx, esi
cmp ecx, 0x17f
jae 0x404558
sub esi, edi
add esi, 0x17f
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x404558
mov edx, dword [0x44cf14]
jmp 0x404540
lea edi, [esp + 0x60]
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x404547
sub eax, 1
mov dword [edi], edx
jne 0x404540
mov edx, ebp
imul edx, edx, 0x94
add ebx, edx
push ebx
lea ecx, [esp + 0x64]
xor esi, esi
call fcn.00403fc0
add esp, 4
cmp byte [0x45bd5f], 0
jne 0x404728
test esi, esi
je 0x4046bb
cmp word [esp + 0x14], 0
jne 0x4046ad
mov edi, dword [ebx + 0x90]
lea ebp, [edi*4 + 0xa]
push ebp
mov dword [esp + 0x2c], edi
call fcn.0042504f
add esp, 4
mov esi, eax
mov eax, dword [esp + 0x10]
push eax
push 0x44ce9c
push ebp
push esi
call fcn.00430bb0
add esp, 0x10
test edi, edi
je 0x404747
xor edi, edi
cmp dword [esp + 0x28], edi
jle 0x404626
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4045d7
sub eax, edx
mov ecx, eax
mov eax, esi
lea edx, [eax + 1]
mov dword [esp + 0x38], edx
lea ecx, [ecx]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4045f0
mov edx, dword [ebx + 0x8c]
movzx edx, byte [edx + edi]
sub eax, dword [esp + 0x38]
push edx
mov edx, ebp
push str._02X
sub edx, ecx
push edx
add eax, esi
push eax
call fcn.00430bb0
add edi, 1
add esp, 0x10
cmp edi, dword [esp + 0x28]
jl 0x4045d2
mov eax, esi
lea edx, [eax + 1]
jmp 0x404630
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404630
sub eax, edx
mov edi, eax
mov eax, esi
lea ecx, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404642
sub eax, ecx
movzx ecx, byte [ebx + 0x88]
push ecx
push str.__d
sub ebp, edi
add eax, esi
push ebp
push eax
call fcn.00430bb0
mov eax, esi
add esp, 0x10
lea ecx, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x404670
push 0x45bc58
sub eax, ecx
mov byte [eax + esi - 1], dl
push esi
lea edx, [esp + 0x48]
push edx
push 0x44c94c
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
test eax, eax
je 0x40474b
push esi
call fcn.0042504a
add esp, 4
add dword [esp + 0x18], 1
jmp 0x404728
push 0x45bc58
push 0
lea eax, [esp + 0x48]
push eax
jmp 0x40471d
cmp word [esp + 0x14], 0
jne 0x404711
push 0x1ff
lea ecx, [esp + 0x265]
push 0
push ecx
mov byte [esp + 0x26c], 0
call fcn.00433570
add esp, 0xc
lea edi, [esp + 0x260]
call fcn.00403f30
push 0x45bc58
mov edx, edi
push edx
lea eax, [esp + 0x48]
push eax
push 0x44c94c
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
test eax, eax
je 0x404768
add dword [esp + 0x18], 1
jmp 0x404728
push 0x45bc58
push 0
lea ecx, [esp + 0x48]
push ecx
push 0x44c94c
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov ecx, dword [edx]
sub ecx, 1
xor esi, esi
cmp eax, ecx
mov dword [esp + 0x1c], eax
mov ebp, eax
jle 0x404350
jmp 0x404782
xor al, al
jmp 0x4047b4
push str.WritePrivateProfileString_efs_file_buffer_fail_KeyName
call fcn.00401000
add esp, 4
lea edx, [esp + 0x40]
push edx
call fcn.00401000
mov ebp, dword [esp + 0x20]
jmp 0x40477f
push str.WritePrivateProfileString_str_nv_data_fail_KeyName
call fcn.00401000
add esp, 4
lea eax, [esp + 0x40]
push eax
call fcn.00401000
add esp, 4
mov eax, dword [esp + 0x30]
cmp ebp, dword [eax]
jl 0x404747
mov ecx, dword [esp + 0x18]
push str.backup_nv_ex_exit_n
mov dword [eax], ecx
call fcn.00401000
mov eax, dword [esp + 0x18]
add esp, 4
test ax, ax
je 0x4047b2
cmp ax, 5
je 0x4047b2
cmp ax, 2
jne 0x404747
mov al, 1
mov ecx, dword [esp + 0x464]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0042fb8f
add esp, 0x458
ret