Function at 0x42eb20
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x54198c
mov eax, dword fs:[0]
push eax
sub esp, 0x820
mov eax, dword [0x5a5784]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov ecx, dword [ebx + 0x48]
mov edx, dword [ebx + 0x4c]
sub edx, ecx
mov dword [ebp - 0x81c], eax
mov eax, dword [ebp + 0x10]
xor edi, edi
sar edx, 2
mov dword [ebp - 0x818], ebx
mov dword [ebp - 0x82c], edi
cmp edx, eax
ja 0x42eb84
push str.invalid_vector_T__subscript
call fcn.005414fa
mov esi, dword [ecx + eax*4]
mov byte [ebp - 0x410], 0
call fcn.00431a74
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x42eba8
push 0x80004005
call fcn.00401cd0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x814], eax
mov dword [ebp - 4], edi
call fcn.00431a74
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x42ebd7
push 0x80004005
call fcn.00401cd0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x820], eax
mov ecx, dword [esi + 0x14]
mov edx, dword [ecx + 4]
mov eax, dword [edx]
push eax
lea ecx, [ebp - 0x814]
push 0x584670
push ecx
mov byte [ebp - 4], 1
call fcn.0042e7e0
mov edx, dword [esi + 0x14]
mov edi, 1
mov eax, edi
add esp, 0xc
cmp ax, word [edx]
jae 0x42ec5f
lea esp, [esp]
mov ecx, dword [esi + 0x14]
mov edx, dword [ecx + 4]
mov eax, dword [edx + edi*4]
push eax
lea eax, [ebp - 0x820]
push 0x5556e0
push eax
call fcn.0042e7e0
mov ecx, dword [ebp - 0x820]
mov eax, dword [ecx - 0xc]
add esp, 0xc
push eax
push ecx
lea ecx, [ebp - 0x814]
call fcn.0042e6b0
mov ecx, dword [esi + 0x14]
movzx edx, word [ecx]
inc edi
cmp edi, edx
jl 0x42ec20
mov eax, dword [esi + 0x14]
movzx edx, word [eax + 2]
mov ecx, dword [esi + 0x24]
mov word [ecx + 2], dx
mov eax, dword [esi + 0x14]
movzx edx, word [eax]
mov ecx, dword [esi + 0x24]
mov word [ecx], dx
mov ecx, dword [esi + 0x24]
xor edx, edx
xor eax, eax
cmp dx, word [ecx]
jae 0x42eca2
mov ecx, dword [esi + 0x14]
mov edx, dword [ecx + 4]
mov ecx, dword [esi + 0x24]
mov edx, dword [edx + eax*4]
mov ecx, dword [ecx + 4]
mov dword [ecx + eax*4], edx
mov ecx, dword [esi + 0x24]
movzx edx, word [ecx]
inc eax
cmp eax, edx
jl 0x42ec85
cmp dword [ebx + 8], 1
jne 0x42ee7d
push 2
push 0x5556dc
lea ecx, [ebp - 0x814]
call fcn.0042e6b0
mov eax, dword [esi + 0x24]
movzx ecx, word [eax]
mov edx, dword [eax + 4]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov dword [edx + ecx*4], 1
mov eax, dword [esi + 0x24]
inc word [eax]
mov eax, dword [ebp - 0x81c]
mov edx, dword [ebp - 0x814]
push eax
push 0x400
lea ecx, [ebp - 0x410]
push ecx
push str.NoSuch
push edx
push 0x5556d0
call ebx
mov ecx, str.NoSuch
lea eax, [ebp - 0x410]
jmp 0x42ed10
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x42ed30
test dl, dl
je 0x42ed2c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x42ed30
add eax, 2
add ecx, 2
test dl, dl
jne 0x42ed10
xor eax, eax
jmp 0x42ed35
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x42eea7
push 2
push 0x5556dc
lea ecx, [ebp - 0x814]
call fcn.0042e6b0
mov eax, dword [esi + 0x24]
movzx ecx, word [eax]
mov edx, dword [eax + 4]
mov dword [edx + ecx*4], 1
mov eax, dword [esi + 0x24]
inc word [eax]
mov eax, dword [ebp - 0x81c]
mov edx, dword [ebp - 0x814]
push eax
push 0x400
lea ecx, [ebp - 0x410]
push ecx
push str.NoSuch
push edx
push 0x5556d0
call ebx
mov ecx, str.NoSuch
lea eax, [ebp - 0x410]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x42edb6
test dl, dl
je 0x42edb2
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x42edb6
add eax, 2
add ecx, 2
test dl, dl
jne 0x42ed96
xor eax, eax
jmp 0x42edbb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x42eea7
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + 4]
mov edx, dword [ecx]
push edx
lea eax, [ebp - 0x814]
push 0x584670
push eax
call fcn.0042e7e0
mov ecx, dword [esi + 0x14]
mov edi, 1
mov edx, edi
add esp, 0xc
cmp dx, word [ecx]
jae 0x42ee38
nop
mov eax, dword [esi + 0x14]
movzx edx, word [eax]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx + edi*4]
dec edx
cmp edi, edx
jne 0x42ee02
inc ecx
push ecx
lea eax, [ebp - 0x820]
push 0x5556e0
push eax
call fcn.0042e7e0
mov ecx, dword [ebp - 0x820]
mov eax, dword [ecx - 0xc]
add esp, 0xc
push eax
push ecx
lea ecx, [ebp - 0x814]
call fcn.0042e6b0
mov ecx, dword [esi + 0x14]
movzx edx, word [ecx]
inc edi
cmp edi, edx
jl 0x42edf0
mov eax, dword [esi + 0x14]
mov dx, word [eax]
mov ecx, dword [esi + 0x24]
mov word [ecx], dx
mov eax, dword [esi + 0x24]
movzx ecx, word [eax]
mov edx, dword [eax + 4]
inc dword [edx + ecx*4 - 4]
lea eax, [edx + ecx*4 - 4]
mov eax, dword [ebp - 0x81c]
mov edx, dword [ebp - 0x814]
push eax
push 0x400
lea ecx, [ebp - 0x410]
push ecx
push str.NoSuch
push edx
push 0x5556d0
call ebx
jmp 0x42eea7
mov eax, dword [ebp - 0x81c]
mov edx, dword [ebp - 0x814]
push eax
push 0x400
lea ecx, [ebp - 0x410]
push ecx
push str.NoSuch
push edx
push 0x5556d0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ecx, str.NoSuch
lea eax, [ebp - 0x410]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x42eed2
test dl, dl
je 0x42eece
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x42eed2
add eax, 2
add ecx, 2
test dl, dl
jne 0x42eeb2
xor eax, eax
jmp 0x42eed7
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x42eeea
mov dword [ebp - 0x82c], 2
jmp case.0x42f1d7.3
lea eax, [ebp - 0x824]
push eax
lea ecx, [ebp - 0x410]
push 0x584670
push ecx
call fcn.00525c9f
mov ecx, dword [ebp - 0x824]
mov edx, dword [ebp - 0x818]
add esp, 0xc
mov dword [esi + 0xc], ecx
cmp dword [edx + 8], 3
jne 0x42f198
cmp ecx, dword [esi + 4]
je 0x42ef32
mov dword [ebp - 0x82c], 3
jmp case.0x42f1d7.3
call fcn.00431a74
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x42ef4c
push 0x80004005
call fcn.00401cd0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [ebp - 0x828], ebx
mov eax, dword [ebp - 0x824]
movzx ecx, ax
dec ecx
mov byte [ebp - 4], 2
cmp ecx, 0x43
ja case.0x42ef7c.3
movzx ecx, byte [ecx + 0x42f308]
jmp dword [ecx*4 + 0x42f2f8]
mov edi, dword [esi + 8]
push edi
push eax
lea edx, [ebp - 0x410]
push str._d__d
push edx
call fcn.00526c33
mov eax, dword [ebp - 0x81c]
mov edx, dword [ebp - 0x814]
add esp, 0x10
push eax
lea ecx, [ebp - 0x410]
push ecx
push edx
push 0x5556d0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov dword [esi + 0x10], edi
jmp case.0x42ef7c.3
mov eax, dword [esi + 0x1c]
movzx ecx, word [eax]
mov eax, dword [eax + 4]
push ecx
lea edx, [ebp - 0x810]
push edx
push eax
call fcn.0042e080
add esp, 0xc
test al, al
je 0x42f032
mov ecx, dword [esi + 0x1c]
movzx edx, word [ecx]
mov ecx, dword [ebp - 0x824]
lea eax, [ebp - 0x810]
push eax
push ecx
mov byte [ebp + edx*2 - 0x810], 0
lea edx, [ebp - 0x410]
push 0x5556c0
push edx
call fcn.00526c33
mov eax, dword [ebp - 0x81c]
mov edx, dword [ebp - 0x814]
add esp, 0x10
push eax
lea ecx, [ebp - 0x410]
push ecx
push edx
push 0x5556d0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov eax, dword [esi + 0x1c]
movzx ecx, word [eax]
mov edx, dword [eax + 4]
mov eax, dword [esi + 0x2c]
push ecx
mov ecx, dword [eax + 4]
push edx
push ecx
call fcn.005263a0
mov edx, dword [esi + 0x1c]
mov eax, dword [esi + 0x2c]
mov cx, word [edx]
add esp, 0xc
mov word [eax], cx
jmp case.0x42ef7c.3
mov edx, dword [esi + 0x18]
mov ecx, dword [edx + 4]
mov edx, dword [ecx]
push edx
push eax
lea eax, [ebp - 0x828]
push str._d__d
push eax
call fcn.0042e7e0
mov ecx, dword [esi + 0x18]
mov edx, dword [ecx + 4]
mov eax, dword [esi + 0x28]
mov ecx, dword [eax + 4]
mov edx, dword [edx]
mov dword [ecx], edx
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x28]
mov dx, word [eax]
mov word [ecx], dx
mov eax, dword [esi + 0x18]
mov edi, 1
mov ecx, edi
add esp, 0x10
cmp cx, word [eax]
jae 0x42f14f
lea ebx, [ebx]
call fcn.00431a74
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x42eb9e
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x818], eax
mov ecx, dword [esi + 0x18]
mov edx, dword [ecx + 4]
mov eax, dword [edx + edi*4]
push eax
lea ecx, [ebp - 0x818]
push 0x5556e0
push ecx
mov byte [ebp - 4], 3
call fcn.0042e7e0
mov ebx, dword [ebp - 0x818]
mov eax, dword [ebx - 0xc]
add esp, 0xc
push eax
push ebx
lea ecx, [ebp - 0x828]
call fcn.0042e6b0
mov edx, dword [esi + 0x18]
mov eax, dword [edx + 4]
mov ecx, dword [esi + 0x28]
mov edx, dword [ecx + 4]
mov eax, dword [eax + edi*4]
mov dword [edx + edi*4], eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42f140
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esi + 0x18]
movzx edx, word [ecx]
inc edi
cmp edi, edx
jl 0x42f0b0
mov eax, dword [ebp - 0x81c]
mov ebx, dword [ebp - 0x828]
mov ecx, dword [ebp - 0x814]
push eax
push ebx
push ecx
push 0x5556d0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg case.0x42f1d7.3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp case.0x42f1d7.3
lea ecx, [ebp - 0x410]
push 0x5556bc
push ecx
xor ebx, ebx
call fcn.00526e60
mov edi, eax
add esp, 8
test edi, edi
je case.0x42f1d7.3
movzx eax, word [ebp - 0x824]
dec eax
inc edi
mov dword [ebp - 0x818], ebx
cmp eax, 0x43
ja case.0x42f1d7.3
movzx edx, byte [eax + 0x42f35c]
jmp dword [edx*4 + 0x42f34c]
lea eax, [ebp - 0x818]
push eax
push 0x584670
push edi
call fcn.00525c9f
mov ecx, dword [ebp - 0x818]
add esp, 0xc
mov dword [esi + 0x10], ecx
jmp case.0x42f1d7.3
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42f206
sub eax, edx
cdq
sub eax, edx
mov ebx, eax
sar ebx, 1
cmp ebx, 0xff
jge 0x42f244
mov edx, dword [esi + 0x2c]
mov eax, dword [edx + 4]
push eax
push edi
call fcn.0042dfa0
add esp, 8
test al, al
je 0x42f23a
mov ecx, dword [esi + 0x2c]
mov word [ecx], bx
jmp case.0x42f1d7.3
mov edx, dword [esi + 0x2c]
xor eax, eax
mov word [edx], ax
jmp case.0x42f1d7.3
mov ecx, dword [esi + 0x2c]
xor edx, edx
mov word [ecx], dx
jmp case.0x42f1d7.3
test edi, edi
je 0x42f27f
mov eax, dword [esi + 0x28]
mov ecx, dword [eax + 4]
lea edx, [ecx + ebx*4]
push edx
push 0x584670
push edi
call fcn.00525c9f
push 0x555668
push edi
inc ebx
call fcn.00526e60
mov edi, eax
add esp, 0x14
test edi, edi
je 0x42f27f
inc edi
jne 0x42f252
mov eax, dword [esi + 0x28]
mov word [eax], bx
mov eax, dword [ebp - 0x820]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42f2ab
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x814]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42f2d4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x82c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0052442d
mov esp, ebp
pop ebp
ret 0xc