Function at 0x536730
Capabilities:
Access peb ldr_data
Check if file exists
Get file attributes
Get ntdll base address
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x58cd0e
mov eax, dword fs:[0]
push eax
sub esp, 0x244
mov eax, dword [0x5eb3c0]
xor eax, esp
mov dword [esp + 0x240], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5eb3c0]
xor eax, esp
push eax
lea eax, [esp + 0x258]
mov dword fs:[0], eax
mov eax, dword [0x5f7780]
mov edx, dword [eax + 0xc]
mov edi, ecx
xor esi, esi
mov ecx, 0x5f7780
mov dword [esp + 0x44], edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x40], esi
call edx
add eax, 0x10
mov dword [esp + 0x14], eax
mov dword [esp + 0x260], esi
mov eax, dword [0x5f7780]
mov edx, dword [eax + 0xc]
mov ecx, 0x5f7780
call edx
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x260], 1
mov eax, dword [0x5f7780]
mov edx, dword [eax + 0xc]
mov ecx, 0x5f7780
call edx
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0x260], 2
mov eax, dword [0x5f7780]
mov edx, dword [eax + 0xc]
mov ecx, 0x5f7780
call edx
add eax, 0x10
mov dword [esp + 0x2c], eax
mov byte [esp + 0x260], 3
mov eax, dword [0x5f7780]
mov edx, dword [eax + 0xc]
mov ecx, 0x5f7780
call edx
add eax, 0x10
mov dword [esp + 0x24], eax
mov byte [esp + 0x260], 4
mov eax, dword [0x5f7780]
mov edx, dword [eax + 0xc]
mov ecx, 0x5f7780
call edx
add eax, 0x10
mov dword [esp + 0x38], eax
mov byte [esp + 0x260], 5
mov eax, dword [0x5f7780]
mov edx, dword [eax + 0xc]
mov ecx, 0x5f7780
call edx
lea ebp, [eax + 0x10]
mov dword [esp + 0x30], ebp
push 0x5aead8
lea eax, [esp + 0x40]
push eax
push edi
lea ebx, [esp + 0x4c]
mov byte [esp + 0x26c], 6
call fcn.00440fd0
lea edi, [esp + 0x14]
mov byte [esp + 0x260], 7
call fcn.00480f90
mov byte [esp + 0x260], 6
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53689d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x536c17
jmp 0x5368b4
mov esi, dword [esp + 0x28]
test esi, esi
jne 0x5369cb
mov esi, dword [esp + 0x18]
add eax, 0xfffffff0
add esi, 0xfffffff0
cmp eax, esi
je 0x53690f
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x5368ff
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5368ff
call fcn.00481090
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x5368f6
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x18], ebx
jmp 0x53690f
mov edx, dword [esp + 0x14]
push edx
mov ebx, ecx
lea eax, [esp + 0x1c]
call fcn.00480ff0
mov esi, dword [esp + 0x18]
push ecx
add esi, 0xfffffff0
mov eax, esi
mov dword [esp + 0x4c], esp
mov ebx, esp
call fcn.00481090
add eax, 0x10
mov dword [ebx], eax
lea eax, [esp + 0x40]
push eax
call fcn.005376c0
mov byte [esp + 0x260], 8
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
cmp eax, esi
je 0x536986
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x536979
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x536979
call fcn.00481090
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x536970
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x18], ebx
jmp 0x536986
mov ebx, dword [ecx - 0xc]
push ecx
lea eax, [esp + 0x1c]
call fcn.00480ff0
mov byte [esp + 0x260], 6
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5369ae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x536c13
mov esi, dword [esp + 0x28]
jmp 0x536a58
cmp esi, 1
jne 0x536a25
mov ebx, dword [esp + 0x20]
add eax, 0xfffffff0
add ebx, 0xfffffff0
cmp eax, ebx
je 0x536a58
cmp dword [ebx + 0xc], 0
lea edi, [ebx + 0xc]
jl 0x536a13
mov edx, dword [eax]
cmp edx, dword [ebx]
jne 0x536a13
call fcn.00481090
mov ebp, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x536a0a
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
add ebp, 0x10
mov dword [esp + 0x20], ebp
jmp 0x536a58
mov edx, dword [esp + 0x14]
push edx
mov ebx, ecx
lea eax, [esp + 0x24]
call fcn.00480ff0
jmp 0x536a58
cmp esi, 2
jne 0x536a30
lea edi, [esp + 0x2c]
jmp 0x536a4f
cmp esi, 3
jne 0x536a3b
lea edi, [esp + 0x24]
jmp 0x536a4f
cmp esi, 4
jne 0x536a46
lea edi, [esp + 0x38]
jmp 0x536a4f
cmp esi, 5
jne 0x536a58
lea edi, [esp + 0x30]
lea eax, [esp + 0x14]
call fcn.00480f90
mov ecx, dword [esp + 0x44]
push 0x5aead8
lea eax, [esp + 0x38]
push eax
add esi, 1
push ecx
lea ebx, [esp + 0x4c]
mov dword [esp + 0x34], esi
call fcn.00440fd0
mov byte [esp + 0x260], 9
mov ecx, dword [eax]
mov esi, dword [esp + 0x14]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x536ad1
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x536ac4
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x536ac4
call fcn.00481090
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x536abb
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x14], ebx
jmp 0x536ad1
mov ebx, dword [ecx - 0xc]
push ecx
lea eax, [esp + 0x18]
call fcn.00480ff0
mov byte [esp + 0x260], 6
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x536af9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax - 0xc]
test ecx, ecx
jne 0x5368b0
cmp dword [esp + 0x28], 6
jne 0x536c13
mov ebp, dword [esp + 0x30]
mov esi, dword [sym.imp.SHLWAPI.dll_StrToIntW]
push ebp
call esi
mov ecx, dword [esp + 0x38]
push ecx
call esi
mov edx, dword [0x5f7780]
mov edi, eax
mov eax, dword [edx + 0xc]
mov ecx, 0x5f7780
call eax
cmp edi, 1
mov dword [esp + 0x34], eax
jne 0x536b97
push 0x206
lea ecx, [esp + 0x52]
push 0
push ecx
mov word [esp + 0x58], 0
call fcn.005695a0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
add esp, 0xc
push edx
mov edx, dword [esp + 0x24]
push 0x104
lea eax, [esp + 0x54]
push eax
push 0x5adcfc
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x4c]
push eax
push ecx
call fcn.005645c3
add esp, 8
test eax, eax
jmp 0x536bea
cmp edi, 2
jne case.default.0x536bc9
mov edx, dword [esp + 0x24]
push edx
call esi
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
mov edi, eax
mov eax, dword [esp + 0x18]
push eax
push 0xffffffffffffffff
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push ebp
mov ebx, eax
call esi
add eax, 0xffffffff
cmp eax, 4
ja case.default.0x536bc9
jmp dword [eax*4 + 0x536d5c]
cmp edi, ebx
jl case.default.0x536bc9
jmp 0x536bec
cmp edi, ebx
jg case.default.0x536bc9
jmp 0x536bec
cmp edi, ebx
jle case.default.0x536bc9
jmp 0x536bec
cmp edi, ebx
jge case.default.0x536bc9
jmp 0x536bec
cmp edi, ebx
jne case.default.0x536bc9
mov dword [esp + 0x1c], 1
mov eax, dword [esp + 0x34]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x536c17
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x536c17
mov ebp, dword [esp + 0x30]
add ebp, 0xfffffff0
mov byte [esp + 0x260], 5
lea ecx, [ebp + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x536c3c
mov ecx, dword [ebp]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebp
call edx
mov byte [esp + 0x260], 4
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x536c64
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x260], 3
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x536c8c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x260], 2
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x536cb4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x260], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x536cdc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x260], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x536d04
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x260], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x536d2f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x258]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x240]
xor ecx, esp
call fcn.00564207
add esp, 0x250
ret