Function at 0x406710
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x44999d
mov eax, dword fs:[0]
push eax
sub esp, 0x220
mov eax, dword [0x45e7b0]
xor eax, esp
mov dword [esp + 0x21c], eax
push ebx
push ebp
push edi
mov eax, dword [0x45e7b0]
xor eax, esp
push eax
lea eax, [esp + 0x230]
mov dword fs:[0], eax
call fcn.004156e6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x406764
push 0x80004005
call fcn.0040b0a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
push 0x100
lea ecx, [esp + 0x130]
push ecx
push 0
mov dword [esp + 0x244], 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push str.EasyGhost.ini
push ecx
lea edx, [esp + 0x134]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.0040a8e0
lea eax, [esp + 0x1c]
push eax
call fcn.0040dbd0
add esp, 8
push eax
lea ecx, [esp + 0x20]
push ecx
mov byte [esp + 0x244], 1
call fcn.00409b40
add esp, 0xc
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x23c], 2
call fcn.0040b000
mov byte [esp + 0x238], 1
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40680a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x238], 0
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 0x406832
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebp, dword [esp + 0x1c]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push ebp
push 0x100
lea ecx, [esp + 0x34]
push ecx
push 0x452aa2
push 0x452718
push str.EasyGhost
call edi
lea eax, [esp + 0x2c]
lea ecx, [esi + 0x47c]
lea edx, [eax + 1]
mov bl, byte [eax]
inc eax
test bl, bl
jne 0x406865
sub eax, edx
push eax
lea edx, [esp + 0x30]
push edx
call fcn.0040aef0
push ebp
push 0x100
lea eax, [esp + 0x34]
push eax
push 0x452aa2
push str.Part
push str.EasyGhost
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push ebp
push 2
push 0x45278c
push str.EasyGhost
call ebx
mov dword [esi + 0x7c], eax
call fcn.004156e6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4068c7
push 0x80004005
call fcn.0040b0a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0x238], 3
call fcn.004156e6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4068f9
push 0x80004005
call fcn.0040b0a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
lea eax, [esp + 0x2c]
mov byte [esp + 0x238], 4
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x406918
sub eax, edx
push eax
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0x20]
call fcn.0040aef0
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.0040b000
mov edi, dword [esp + 0x14]
jmp 0x406956
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov eax, dword [esp + 0x18]
push 0x4523d4
push eax
call fcn.00432109
add esp, 8
test eax, eax
je 0x406b6d
sub eax, dword [esp + 0x18]
mov dword [esp + 0x10], eax
cmp eax, 0xffffffff
je 0x406b6d
push eax
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x20]
call fcn.00409a00
mov byte [esp + 0x238], 5
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea ebx, [edi - 0x10]
cmp eax, ebx
je 0x4069f5
cmp dword [ebx + 0xc], 0
lea edi, [ebx + 0xc]
jl 0x4069e3
mov edx, dword [eax]
cmp edx, dword [ebx]
jne 0x4069e3
push eax
call fcn.0040af90
mov dword [esp + 0x2c], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4069d6
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov edi, dword [esp + 0x28]
add edi, 0x10
mov dword [esp + 0x14], edi
jmp 0x4069f5
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040aef0
mov edi, dword [esp + 0x14]
mov byte [esp + 0x238], 4
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 0x406a1d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi - 8]
mov eax, 1
sub eax, dword [edi - 4]
or ecx, eax
jge 0x406a3b
push 0
lea ecx, [esp + 0x18]
call fcn.0040ae40
mov edi, dword [esp + 0x14]
push edi
call fcn.00431957
mov ebx, eax
add esp, 4
lea eax, [esi + 0x3e4]
call fcn.00410600
cmp eax, ebx
jle 0x406a65
push 2
push 2
push ebx
lea ecx, [esi + 0x3e4]
call fcn.004131fd
mov ecx, dword [esp + 0x10]
inc ecx
push ecx
lea edx, [esp + 0x24]
push edx
lea ecx, [esp + 0x20]
call fcn.00409920
mov byte [esp + 0x238], 6
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea ebx, [edi - 0x10]
cmp eax, ebx
je 0x406ade
cmp dword [ebx + 0xc], 0
lea edi, [ebx + 0xc]
jl 0x406acc
mov edx, dword [eax]
cmp edx, dword [ebx]
jne 0x406acc
push eax
call fcn.0040af90
mov dword [esp + 0x14], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x406abf
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov edi, dword [esp + 0x10]
add edi, 0x10
mov dword [esp + 0x14], edi
jmp 0x406ade
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040aef0
mov edi, dword [esp + 0x14]
mov byte [esp + 0x238], 4
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 0x406b06
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [esp + 0x18]
lea eax, [edi - 0x10]
add ebx, 0xfffffff0
cmp eax, ebx
je 0x406950
cmp dword [ebx + 0xc], 0
jl 0x406b5a
mov ecx, dword [eax]
cmp ecx, dword [ebx]
jne 0x406b5a
push eax
call fcn.0040af90
mov dword [esp + 0x14], eax
add esp, 4
lea eax, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x406b4a
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, dword [esp + 0x10]
add eax, 0x10
mov dword [esp + 0x18], eax
jmp 0x406950
mov ecx, dword [edi - 0xc]
push ecx
push edi
lea ecx, [esp + 0x20]
call fcn.0040aef0
jmp 0x406950
mov ecx, dword [edi - 8]
mov eax, 1
sub eax, dword [edi - 4]
or ecx, eax
jge 0x406b8b
push 0
lea ecx, [esp + 0x18]
call fcn.0040ae40
mov edi, dword [esp + 0x14]
push edi
call fcn.00431957
mov dword [esp + 0x14], eax
add esp, 4
lea eax, [esi + 0x3e4]
call fcn.00410600
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jle 0x406bbb
push 2
push 2
push ecx
lea ecx, [esi + 0x3e4]
call fcn.004131fd
mov byte [esp + 0x238], 3
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406be3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
mov byte [esp + 0x238], 0
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406c07
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov edi, dword [sym.imp.USER32.dll_LoadStringA]
push 0x100
lea eax, [esp + 0x30]
push eax
push 0x6e
push 0
call edi
lea eax, [esp + 0x2c]
lea edx, [eax + 1]
lea ecx, [esi + 0xa8]
mov dword [esp + 0x10], edx
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x406c30
sub eax, dword [esp + 0x10]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.0040aef0
push 0x100
lea ecx, [esp + 0x30]
push ecx
push 0x74
push 0
call edi
lea edx, [esp + 0x2c]
push edx
call fcn.00431957
add esp, 4
push 0x100
mov dword [esi + 0xac], eax
lea eax, [esp + 0x30]
push eax
push 0x73
push 0
call edi
lea ecx, [esp + 0x2c]
push ecx
call fcn.00431957
add esp, 4
push 0x100
lea edx, [esp + 0x30]
push edx
push 0x71
push 0
mov dword [esi + 0xb0], eax
call edi
lea eax, [esp + 0x2c]
lea edx, [eax + 1]
lea ecx, [esi + 0xb8]
mov dword [esp + 0x10], edx
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x406cb0
sub eax, dword [esp + 0x10]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.0040aef0
push 0x100
lea ecx, [esp + 0x30]
push ecx
push 0x72
push 0
call edi
lea eax, [esp + 0x2c]
lea edx, [eax + 1]
lea ecx, [esi + 0xb4]
mov dword [esp + 0x10], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x406ce7
sub eax, dword [esp + 0x10]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.0040aef0
push 0x100
lea ecx, [esp + 0x30]
push ecx
push 0x6f
push 0
call edi
lea eax, [esp + 0x2c]
lea edx, [eax + 1]
lea ecx, [esi + 0xa4]
mov dword [esp + 0x10], edx
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x406d20
sub eax, dword [esp + 0x10]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.0040aef0
push 0x100
lea ecx, [esp + 0x30]
push ecx
push 0x70
push 0
call edi
lea eax, [esp + 0x2c]
lea edi, [esi + 0xa0]
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x406d53
sub eax, ecx
push eax
lea edx, [esp + 0x30]
push edx
mov ecx, edi
call fcn.0040aef0
push ebp
push 3
push 0x45272c
push str.EasyGhost
call ebx
push ebp
push 0
push 0x452734
push str.EasyGhost
mov dword [esi + 0x470], eax
call ebx
push ebp
push 0
push 0x45273c
push str.EasyGhost
mov dword [esi + 0x46c], eax
call ebx
push ebp
push 0
push 0x452744
push str.EasyGhost
mov dword [esi + 0x478], eax
call ebx
push ebp
push 0
push 0x452748
push str.EasyGhost
mov dword [esi + 0xdc], eax
call ebx
push ebp
push 0
push str.CRCIGNORE
push str.EasyGhost
mov dword [esi + 0xd4], eax
call ebx
push ebp
push 0
push str.crcignore
push str.EasyGhost
mov dword [esi + 0xcc], eax
call ebx
push ebp
push 0
push str.NTEXACT
push str.EasyGhost
mov dword [esi + 0xd0], eax
call ebx
push ebp
push 0
push 0x452768
push str.EasyGhost
mov dword [esi + 0xd8], eax
call ebx
push ebp
push 0
push 0x452770
push str.EasyGhost
mov dword [esi + 0xc8], eax
call ebx
push ebp
push 0
push 0x452774
push str.EasyGhost
mov dword [esi + 0xc4], eax
call ebx
push ebp
push 0x100
mov dword [esi + 0xc0], eax
lea eax, [esp + 0x34]
push eax
push 0x452aa2
push 0x45277c
push str.EasyGhost
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [esi + 0xbc]
lea eax, [esp + 0x2c]
lea edi, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x406e80
sub eax, edi
push eax
lea edx, [esp + 0x30]
push edx
call fcn.0040aef0
push 0
mov ecx, esi
call fcn.00418318
mov eax, dword [esi + 0x46c]
cmp eax, 3
ja case.default.0x406ea8
jmp dword [eax*4 + 0x406f20]
mov ecx, esi
call fcn.00403b90
jmp case.default.0x406ea8
mov ecx, esi
call fcn.00403b40
jmp case.default.0x406ea8
mov ecx, esi
call fcn.004056c0
jmp case.default.0x406ea8
mov ecx, esi
call fcn.00405800
add ebp, 0xfffffff0
mov dword [esp + 0x238], 0xffffffff
lea eax, [ebp + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x406ef9
mov ecx, dword [ebp]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebp
call eax
mov ecx, dword [esp + 0x230]
mov dword fs:[0], ecx
pop ecx
pop edi
pop ebp
pop ebx
mov ecx, dword [esp + 0x21c]
xor ecx, esp
call fcn.004311a6
add esp, 0x22c
ret