Function at 0x4a2520
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x572ff8
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5d72e0]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
mov esi, ecx
mov edi, dword [esp + 0x40]
mov eax, dword [edi]
push eax
lea eax, [esp + 0x44]
push eax
call fcn.004a8310
add esp, 8
xor ebx, ebx
cmp dword [esi + 0x144], ebx
mov dword [esp + 0x38], ebx
je 0x4a25cb
lea ecx, [esi + 0x20]
call fcn.0051816f
lea ecx, [esi + 0x28]
call fcn.0051816f
lea ecx, [esi + 0x30]
call fcn.0051816f
lea ecx, [esi + 0x38]
call fcn.0051816f
lea ecx, [esi + 0x84]
call fcn.0051816f
lea ecx, [esi + 0x94]
call fcn.0051816f
lea ecx, [esi + 0x7c]
call fcn.0051816f
lea ecx, [esi + 0x8c]
call fcn.0051816f
mov eax, 0xcfcfcf
mov dword [esi + 0x128], eax
mov dword [esi + 0x12c], eax
mov dword [esi + 0x144], ebx
mov eax, dword [esp + 0x40]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x18], esp
mov ebp, esp
push eax
call fcn.004016a0
add esp, 4
add eax, 0x10
push edi
mov ecx, esi
mov dword [ebp], eax
call fcn.004a1170
cmp eax, ebx
jne 0x4a2623
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
mov dword [esp + 0x38], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4a261c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x4a2ac3
push edi
mov ecx, esi
call fcn.0049f2b0
mov eax, dword [esp + 0x40]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x18], esp
mov ebp, esp
push eax
call fcn.004016a0
add esp, 4
add eax, 0x10
push edi
mov ecx, esi
mov dword [ebp], eax
call fcn.004a1800
cmp eax, ebx
je 0x4a25f4
mov eax, dword [edi]
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push eax
push ebx
push str.TextShift
push str.Personality
call ebp
mov dword [esi + 0x114], eax
mov eax, dword [edi]
push eax
push ebx
push str.TextShiftVert
push str.Personality
call ebp
mov ebp, dword [sym.imp.USER32.dll_GetSysColor]
push 9
mov dword [esi + 0x118], eax
call ebp
push eax
mov eax, dword [edi]
push ecx
sub eax, 0x10
mov dword [esp + 0x20], esp
mov dword [esp + 0x1c], esp
push eax
call fcn.004016a0
mov ecx, dword [esp + 0x20]
add eax, 0x10
mov dword [ecx], eax
mov ecx, esp
mov dword [esp + 0x20], esp
push str.TitleText
mov byte [esp + 0x48], 1
call fcn.004019c0
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push str.Colours
mov byte [esp + 0x4c], 2
call fcn.004019c0
mov ecx, esi
mov byte [esp + 0x48], bl
call fcn.004a0490
push 9
mov dword [esi + 0x11c], eax
call ebp
push eax
mov eax, dword [edi]
push ecx
sub eax, 0x10
mov dword [esp + 0x24], esp
mov dword [esp + 0x1c], esp
push eax
call fcn.004016a0
mov edx, dword [esp + 0x20]
add eax, 0x10
mov dword [edx], eax
mov ecx, esp
mov dword [esp + 0x24], esp
push str.InactiveTitleText
mov byte [esp + 0x48], 3
call fcn.004019c0
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push str.Colours
mov byte [esp + 0x4c], 4
call fcn.004019c0
mov ecx, esi
mov byte [esp + 0x48], bl
call fcn.004a0490
mov dword [esi + 0x120], eax
mov eax, dword [edi]
push eax
push ebx
push str.UsesTran
push str.Personality
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp eax, ebx
mov dword [esi + 0x140], eax
je 0x4a27c4
mov eax, dword [edi]
push 0xff00ff
push ecx
sub eax, 0x10
mov dword [esp + 0x24], esp
mov dword [esp + 0x1c], esp
push eax
call fcn.004016a0
mov ecx, dword [esp + 0x20]
add eax, 0x10
mov dword [ecx], eax
mov ecx, esp
mov dword [esp + 0x24], esp
push str.TransColor
mov byte [esp + 0x48], 5
call fcn.004019c0
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push str.Colours
mov byte [esp + 0x4c], 6
call fcn.004019c0
mov ecx, esi
mov byte [esp + 0x48], bl
call fcn.004a0490
mov dword [esi + 0x124], eax
mov eax, dword [edi]
push 0xcfcfcf
push ecx
sub eax, 0x10
mov dword [esp + 0x24], esp
mov dword [esp + 0x1c], esp
push eax
call fcn.004016a0
mov edx, dword [esp + 0x20]
add eax, 0x10
mov dword [edx], eax
mov ecx, esp
mov dword [esp + 0x24], esp
push str.BarColor
mov byte [esp + 0x48], 7
call fcn.004019c0
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push str.Colours
mov byte [esp + 0x4c], 8
call fcn.004019c0
mov ecx, esi
mov byte [esp + 0x48], bl
call fcn.004a0490
mov dword [esi + 0x128], eax
mov eax, dword [edi]
push 0xcfcfcf
push ecx
sub eax, 0x10
mov dword [esp + 0x24], esp
mov dword [esp + 0x1c], esp
push eax
call fcn.004016a0
mov ecx, dword [esp + 0x20]
add eax, 0x10
mov dword [ecx], eax
mov ecx, esp
mov dword [esp + 0x24], esp
push str.MenuColor
mov byte [esp + 0x48], 9
call fcn.004019c0
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push str.Colours
mov byte [esp + 0x4c], 0xa
call fcn.004019c0
mov ecx, esi
mov byte [esp + 0x48], bl
call fcn.004a0490
push 0xf
mov dword [esi + 0x12c], eax
call ebp
push eax
mov eax, dword [edi]
push ecx
sub eax, 0x10
mov dword [esp + 0x24], esp
mov dword [esp + 0x1c], esp
push eax
call fcn.004016a0
mov edx, dword [esp + 0x20]
add eax, 0x10
mov dword [edx], eax
mov ecx, esp
mov dword [esp + 0x24], esp
push str.ButtonFace
mov byte [esp + 0x48], 0xb
call fcn.004019c0
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
mov byte [esp + 0x48], 0xc
push str.Colours
call fcn.004019c0
mov ecx, esi
mov byte [esp + 0x48], bl
call fcn.004a0490
push 0x12
mov dword [esi + 0x130], eax
call ebp
push eax
mov eax, dword [edi]
push ecx
sub eax, 0x10
mov dword [esp + 0x24], esp
mov dword [esp + 0x1c], esp
push eax
call fcn.004016a0
mov ecx, dword [esp + 0x20]
add eax, 0x10
mov dword [ecx], eax
mov ecx, esp
mov dword [esp + 0x24], esp
push str.ButtonText
mov byte [esp + 0x48], 0xd
call fcn.004019c0
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push str.Colours
mov byte [esp + 0x4c], 0xe
call fcn.004019c0
mov ecx, esi
mov byte [esp + 0x48], bl
call fcn.004a0490
push 0xf
mov dword [esi + 0x134], eax
call ebp
push eax
mov eax, dword [edi]
push ecx
sub eax, 0x10
mov dword [esp + 0x24], esp
mov dword [esp + 0x1c], esp
push eax
call fcn.004016a0
mov edx, dword [esp + 0x20]
add eax, 0x10
mov dword [edx], eax
mov ecx, esp
mov dword [esp + 0x24], esp
push str.ButtonHilight
mov byte [esp + 0x48], 0xf
call fcn.004019c0
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push str.Colours
mov byte [esp + 0x4c], 0x10
call fcn.004019c0
mov ecx, esi
mov byte [esp + 0x48], bl
call fcn.004a0490
push 0xf
mov dword [esi + 0x138], eax
call ebp
mov edi, dword [edi]
push eax
push ecx
sub edi, 0x10
mov dword [esp + 0x24], esp
mov ebp, esp
push edi
call fcn.004016a0
add eax, 0x10
mov dword [ebp], eax
mov byte [esp + 0x44], 0x11
mov ecx, esp
mov dword [esp + 0x24], esp
push str.ButtonFocus
call fcn.004019c0
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push str.Colours
mov byte [esp + 0x4c], 0x12
call fcn.004019c0
mov ecx, esi
mov byte [esp + 0x48], bl
call fcn.004a0490
mov ebp, dword [sym.imp.USER32.dll_GetSystemMetrics]
push ebx
mov dword [esi + 0x13c], eax
call ebp
push 1
mov edi, eax
call ebp
push ebx
mov ebp, eax
lea eax, [esp + 0x24]
push eax
push ebx
push 0x30
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
lea ecx, [ebp*4]
mov eax, 0x55555556
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, edi
jg 0x4a2a53
mov eax, edi
sub eax, ecx
cdq
sub eax, edx
mov edx, dword [esp + 0x2c]
sar eax, 1
add ecx, eax
mov dword [esi + 0xe4], ecx
mov ecx, dword [esp + 0x24]
mov dword [esi + 0xe0], ecx
mov dword [esi + 0xe8], edx
jmp 0x4a2a86
lea eax, [edi + edi*2]
cdq
and edx, 3
add eax, edx
mov ecx, eax
sar ecx, 2
mov eax, ebp
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
add ecx, eax
mov dword [esi + 0xe8], ecx
mov ecx, dword [esp + 0x28]
mov dword [esi + 0xe0], eax
mov eax, dword [esp + 0x20]
mov dword [esi + 0xe4], ecx
mov dword [esi + 0xdc], eax
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
mov dword [esi + 0x144], 1
mov dword [esp + 0x38], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4a2abe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 4