Function at 0x4228d0
Capabilities:
Read .ini file
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4e4fdb
mov eax, dword fs:[0]
push eax
sub esp, 0x6ac
mov eax, dword [0x51f620]
xor eax, esp
mov dword [esp + 0x6a4], eax
push ebx
push edi
mov eax, dword [0x51f620]
xor eax, esp
push eax
lea eax, [esp + 0x6b8]
mov dword fs:[0], eax
mov ecx, dword [0x52990c]
call fcn.00449e50
test dword [0x529b60], 0x40000000
mov dword [esp + 0x14], eax
mov ecx, esi
je 0x422933
push 0x529800
jmp 0x422937
add eax, 0x18
push eax
call fcn.0045fd66
mov eax, dword [esi + 0x20]
push 0xffffffffffffffec
push eax
call dword [sym.imp.USER32.dll_GetWindowLongW]
mov ecx, dword [esi + 0x20]
or eax, 0x80000
push eax
push 0xffffffffffffffec
push ecx
call dword [sym.imp.USER32.dll_SetWindowLongW]
mov edx, dword [0x529b44]
mov eax, dword [esi + 0x20]
push 1
push 0
push edx
push eax
call dword [sym.imp.USER32.dll_SetLayeredWindowAttributes]
mov edx, dword [0x5246a8]
lea ecx, [esp + 0x1c]
push ecx
push 0x18
push edx
call dword [sym.imp.GDI32.dll_GetObjectW]
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
push 0
lea eax, [esp + 0x50]
push eax
push 0
push 0x30
call dword [sym.imp.USER32.dll_SystemParametersInfoW]
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0x4c]
push 4
sub eax, edi
cdq
sub eax, edx
mov ecx, eax
mov eax, dword [esp + 0x5c]
sub eax, dword [esp + 0x54]
push ebx
sub eax, ebx
cdq
sub eax, edx
mov edx, dword [esi + 0x84]
push edi
mov edi, dword [edx + 0x68]
mov edx, dword [edx + 0x64]
sar eax, 1
add eax, dword [esp + 0x5c]
sar ecx, 1
add ecx, dword [esp + 0x58]
add edi, eax
push edi
add edx, ecx
push edx
push 0
mov ecx, esi
call fcn.00460079
mov eax, dword [esi + 0x20]
push 0
push 0
push 0x31
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push eax
call fcn.004657ea
push 0x3f6
mov ecx, esi
mov edi, eax
call fcn.0045fca8
test edi, edi
je 0x422a0e
mov edi, dword [edi + 4]
mov ecx, dword [eax + 0x20]
push 1
push edi
push 0x30
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
xor edx, edx
push 0x206
push edx
lea eax, [esp + 0x9e]
push eax
mov word [esp + 0xa0], dx
call fcn.004737c0
mov ebx, 0x40000000
add esp, 0xc
lea edx, [esp + 0x94]
test dword [0x529b60], ebx
je 0x422a75
mov edi, dword [esp + 0x14]
add edi, 0x18
push edi
push 0x50f4b8
call fcn.0040bf60
push 0x529800
push 0x20
push edi
call fcn.0046e8b6
add esp, 0x14
jmp 0x422a8f
mov ecx, dword [esp + 0x14]
push 0x134dacd
add ecx, 0x18
push ecx
push str._s_Ver:_d
call fcn.0040bf60
add esp, 0xc
push 0x3f6
mov ecx, esi
call fcn.0045fca8
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.00465518
mov edi, eax
lea eax, [esp + 0x94]
push eax
lea ecx, [esp + 0x1c]
call fcn.00446560
mov eax, dword [esp + 0x18]
mov ecx, dword [eax - 0xc]
lea edx, [esp + 0x34]
push edx
push ecx
push eax
mov eax, dword [edi + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
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 0x422af6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi + 4]
mov edx, dword [esi + 0x20]
push ecx
push edx
call dword [sym.imp.USER32.dll_ReleaseDC]
mov ecx, dword [esi + 0x20]
lea eax, [esp + 0x5c]
push eax
push ecx
call dword [sym.imp.USER32.dll_GetClientRect]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x68]
push 4
push edx
mov edx, dword [esp + 0x64]
push eax
add ecx, 0xffffffe7
push ecx
add edx, 0x29
push edx
push 0
push 0x3f6
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
lea eax, [esp + 0x94]
push eax
push 0x3f6
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fd66
test dword [0x529b60], ebx
je 0x422b7c
push 0
push 0x3f6
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
mov edx, dword [esi + 0x8c]
mov edi, dword [sym.imp.GDI32.dll_GetObjectW]
lea ecx, [esp + 0x1c]
push ecx
push 0x18
push edx
call edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x84]
push 4
push eax
mov eax, dword [esp + 0x28]
cdq
idiv dword [ecx + 0x94]
mov edx, dword [ecx + 0xbc]
push eax
mov eax, dword [ecx + 0xb8]
push edx
push eax
push 0
push 1
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 1
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
mov edx, dword [esi + 0x94]
lea ecx, [esp + 0x1c]
push ecx
push 0x18
push edx
call edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x84]
push 4
push eax
mov eax, dword [esp + 0x28]
cdq
idiv dword [ecx + 0xc0]
mov edx, dword [ecx + 0xe8]
push eax
mov eax, dword [ecx + 0xe4]
push edx
push eax
push 0
push 2
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
mov edx, dword [esi + 0x9c]
lea ecx, [esp + 0x1c]
push ecx
push 0x18
push edx
call edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x84]
push 4
push eax
mov eax, dword [esp + 0x28]
cdq
idiv dword [ecx + 0xc]
mov edx, dword [ecx + 0x34]
push eax
mov eax, dword [ecx + 0x30]
push edx
push eax
push 0
push 0x3e9
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0x3ea
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
test eax, eax
je 0x422ccc
mov edx, dword [esi + 0xac]
lea ecx, [esp + 0x1c]
push ecx
push 0x18
push edx
call edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x84]
push 4
push eax
mov eax, dword [esp + 0x28]
cdq
idiv dword [ecx + 0x158]
mov edx, dword [ecx + 0x180]
push eax
mov eax, dword [ecx + 0x17c]
push edx
push eax
push 0
push 0x3ea
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
mov eax, dword [esi + 0x84]
mov ecx, dword [eax + 0xf8]
mov edx, dword [eax + 0xf4]
push 4
push ecx
mov ecx, dword [eax + 0xf0]
push edx
mov edx, dword [eax + 0xec]
push ecx
push edx
push 0
push 0x3eb
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0x511878
push 0x3eb
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fd66
mov ecx, dword [esi + 0xb4]
lea eax, [esp + 0x1c]
push eax
push 0x18
push ecx
call edi
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov eax, dword [esi + 0x84]
push edx
mov dword [0x529914], ecx
mov edx, dword [eax + 0x12c]
mov eax, dword [eax + 0x128]
push edx
mov edx, dword [0x5246a8]
push eax
push edx
call fcn.00438d60
add esp, 0x10
push eax
lea ecx, [esi + 0xc0]
call fcn.004657fe
mov eax, dword [esi + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x422da6
cmp dword [0x529918], 0
je 0x422da6
push 0x3ec
mov ecx, esi
mov dword [0x529918], 0
call fcn.0045fca8
mov ecx, dword [eax + 0x20]
push 0
push 0
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov edx, dword [esp + 0x24]
mov eax, dword [esi + 0x84]
mov ecx, dword [esp + 0x20]
push 4
push edx
mov edx, dword [eax + 0x12c]
mov eax, dword [eax + 0x128]
push ecx
push edx
push eax
push 0
push 0x3ec
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0x50f2c0
push 0x3ec
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fd66
push 0x3ec
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fd32
push 0x3ec
mov ecx, esi
mov ebx, eax
call fcn.0045fca8
test eax, eax
je 0x422e1b
mov eax, dword [eax + 0x20]
or ebx, 0xd
push ebx
mov ebx, dword [sym.imp.USER32.dll_SetWindowLongW]
push 0xfffffffffffffff0
push eax
call ebx
mov edx, dword [esi + 0xbc]
lea ecx, [esp + 0x1c]
push ecx
push 0x18
push edx
call edi
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov eax, dword [esi + 0x84]
push edx
mov dword [0x52991c], ecx
mov edx, dword [eax + 0x154]
mov eax, dword [eax + 0x150]
push edx
mov edx, dword [0x5246a8]
push eax
push edx
call fcn.00438d60
add esp, 0x10
push eax
lea ecx, [esi + 0xc8]
call fcn.004657fe
mov eax, dword [esi + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x422eb3
cmp dword [0x529920], 0
je 0x422eb3
push 0x3ed
mov ecx, esi
mov dword [0x529920], 0
call fcn.0045fca8
mov ecx, dword [eax + 0x20]
push 0
push 0
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov edx, dword [esp + 0x24]
mov eax, dword [esi + 0x84]
mov ecx, dword [esp + 0x20]
push 4
push edx
mov edx, dword [eax + 0x154]
mov eax, dword [eax + 0x150]
push ecx
push edx
push eax
push 0
push 0x3ed
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0x50f2c0
push 0x3ed
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fd66
push 0x3ed
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fd32
push 0x3ed
mov ecx, esi
mov edi, eax
call fcn.0045fca8
test eax, eax
je 0x422f28
mov eax, dword [eax + 0x20]
or edi, 0xd
push edi
push 0xfffffffffffffff0
push eax
call ebx
lea ecx, [esi + 0xd4]
mov ebx, 0x3ee
mov edi, 0xaf4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], 8
lea ecx, [ecx]
push ebx
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
test eax, eax
je 0x422fab
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
lea edx, [esp + 0x1c]
push edx
push 0x18
push ecx
call dword [sym.imp.GDI32.dll_GetObjectW]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x84]
push 4
push edx
cdq
idiv dword [edi + ecx - 0x960]
push eax
mov eax, dword [edi + ecx]
mov ecx, dword [edi + ecx - 0x20]
push eax
push ecx
push 0
push ebx
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
add dword [esp + 0x10], 8
add edi, 4
inc ebx
sub dword [esp + 0x18], 1
jne 0x422f50
push 0
push 0x511e00
lea ecx, [esi + 0x17c]
push 0x64
call fcn.0046629f
mov eax, dword [esp + 0x14]
lea edx, [eax + 0xc62]
add eax, 0xc6a
mov edi, 0x3fe
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], 0xb74
mov dword [esp + 0x10], eax
mov dword [esp + 0x34], 8
mov ebx, 1
mov eax, dword [esp + 0x18]
cmp byte [eax], 0
mov ecx, esi
je 0x4230fb
push edi
call fcn.0045fca8
lea ecx, [esi + 0x17c]
test ecx, ecx
je 0x423022
mov ecx, dword [ecx + 4]
push 1
push ecx
mov ecx, dword [eax + 0x20]
push 0x30
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
push edi
mov ecx, esi
call fcn.0045fca8
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.00465518
mov ebx, eax
mov eax, dword [esp + 0x10]
push eax
lea ecx, [esp + 0x48]
call fcn.00446560
mov eax, dword [esp + 0x44]
mov ecx, dword [eax - 0xc]
lea edx, [esp + 0x3c]
push edx
push ecx
push eax
mov eax, dword [ebx + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423091
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebx + 4]
mov edx, dword [esi + 0x20]
push ecx
push edx
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esp + 0x40]
mov ecx, dword [esi + 0x84]
mov edx, dword [esp + 0x3c]
push 4
push eax
mov eax, dword [esp + 0x1c]
push edx
mov edx, dword [eax + ecx + 0x20]
mov eax, dword [eax + ecx]
push edx
push eax
push 0
push edi
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
mov ecx, dword [esp + 0x10]
push ecx
push edi
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fd66
push 1
push edi
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
mov ebx, 1
jmp 0x42310a
push 0
push edi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe4a
add dword [esp + 0x14], 4
add dword [esp + 0x18], ebx
add dword [esp + 0x10], 0x40
add edi, ebx
sub dword [esp + 0x34], ebx
jne 0x423000
push 0x407
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
mov edi, dword [sym.imp.GDI32.dll_GetObjectW]
test eax, eax
je 0x4231a2
mov eax, dword [esi + 0x124]
lea edx, [esp + 0x1c]
push edx
push 0x18
push eax
call edi
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x84]
push 4
push edx
cdq
idiv dword [ecx + 0xd54]
push eax
mov eax, dword [ecx + 0xd7c]
mov ecx, dword [ecx + 0xd78]
push eax
push ecx
push 0
push 0x407
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 0x407
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
push 0x406
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
test eax, eax
je 0x42321a
mov eax, dword [esi + 0x11c]
lea edx, [esp + 0x1c]
push edx
push 0x18
push eax
call edi
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x84]
push 4
push edx
cdq
idiv dword [ecx + 0xd28]
push eax
mov eax, dword [ecx + 0xd50]
mov ecx, dword [ecx + 0xd4c]
push eax
push ecx
push 0
push 0x406
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 0x406
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
push 0x3fa
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
test eax, eax
je 0x42328b
mov eax, dword [esi + 0x12c]
lea edx, [esp + 0x1c]
push edx
push 0x18
push eax
call edi
mov ecx, dword [esp + 0x24]
mov eax, dword [esi + 0x84]
mov edx, dword [esp + 0x20]
push 4
push ecx
mov ecx, dword [eax + 0xc28]
push edx
mov edx, dword [eax + 0xc24]
push ecx
push edx
push 0
push 0x3fa
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 0x3fa
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
push 0x3fb
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
test eax, eax
je 0x4232fc
mov ecx, dword [esi + 0x134]
lea eax, [esp + 0x1c]
push eax
push 0x18
push ecx
call edi
mov edx, dword [esp + 0x24]
mov eax, dword [esi + 0x84]
mov ecx, dword [esp + 0x20]
push 4
push edx
mov edx, dword [eax + 0xc50]
mov eax, dword [eax + 0xc4c]
push ecx
push edx
push eax
push 0
push 0x3fb
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 0x3fb
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
push 0x3fc
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
test eax, eax
je 0x42336d
mov edx, dword [esi + 0x13c]
lea ecx, [esp + 0x1c]
push ecx
push 0x18
push edx
call edi
mov ecx, dword [esp + 0x24]
mov eax, dword [esi + 0x84]
mov edx, dword [esp + 0x20]
push 4
push ecx
mov ecx, dword [eax + 0xc78]
push edx
mov edx, dword [eax + 0xc74]
push ecx
push edx
push 0
push 0x3fc
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 0x3fc
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
push 0x3fd
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
test eax, eax
je 0x4233de
mov ecx, dword [esi + 0x144]
lea eax, [esp + 0x1c]
push eax
push 0x18
push ecx
call edi
mov edx, dword [esp + 0x24]
mov eax, dword [esi + 0x84]
mov ecx, dword [esp + 0x20]
push 4
push edx
mov edx, dword [eax + 0xca0]
mov eax, dword [eax + 0xc9c]
push ecx
push edx
push eax
push 0
push 0x3fd
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 0x3fd
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
push 0x3f9
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
test eax, eax
je 0x423456
mov edx, dword [esi + 0x14c]
lea ecx, [esp + 0x1c]
push ecx
push 0x18
push edx
call edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x84]
push 4
push eax
mov eax, dword [esp + 0x28]
cdq
idiv dword [ecx + 0xca4]
mov edx, dword [ecx + 0xccc]
push eax
mov eax, dword [ecx + 0xcc8]
push edx
push eax
push 0
push 0x3f9
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 0x3f9
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
push 0x409
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
test eax, eax
je 0x42366a
xor ecx, ecx
push 0x206
push ecx
lea edx, [esp + 0x2a6]
push edx
mov word [esp + 0x2a8], cx
call fcn.004737c0
add esp, 0xc
push 0x529780
push 0x51183c
push 0x511844
lea edx, [esp + 0x2a8]
call fcn.0040bf60
add esp, 0xc
lea eax, [esp + 0x29c]
push eax
push 0
push str.ChangeDisplay
push str.WinMode
call ebx
mov dword [esi + 0x194], eax
test eax, eax
je 0x4234e1
lea ecx, [esp + 0x29c]
push ecx
push 0
jmp 0x4234eb
lea edx, [esp + 0x29c]
push edx
push 1
push str.Type
push str.WinMode
call ebx
mov dword [esi + 0x190], eax
test eax, eax
je 0x423511
mov ecx, dword [esi + 0x15c]
lea eax, [esp + 0x1c]
push eax
push 0x18
push ecx
jmp 0x42351f
mov eax, dword [esi + 0x154]
lea edx, [esp + 0x1c]
push edx
push 0x18
push eax
call edi
mov ecx, dword [esp + 0x24]
mov eax, dword [esi + 0x84]
mov edx, dword [esp + 0x20]
push 4
push ecx
mov ecx, dword [eax + 0xd84]
push edx
mov edx, dword [eax + 0xd80]
push ecx
push edx
push 0
push 0x409
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 0x409
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
mov eax, dword [esi + 0x20]
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 0
push 0x31
push eax
call ebx
push eax
call fcn.004657ea
push 0x3f8
mov ecx, esi
mov edi, eax
call fcn.0045fca8
test edi, edi
je 0x423598
mov edi, dword [edi + 4]
mov ecx, dword [eax + 0x20]
push 1
push edi
push 0x30
push ecx
call ebx
push 0x511e28
push 0x3f8
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fd66
push 0x3f8
mov ecx, esi
call fcn.0045fca8
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.00465518
push 0x511e28
lea ecx, [esp + 0x38]
mov edi, eax
call fcn.00446560
mov eax, dword [esp + 0x34]
mov ecx, dword [eax - 0xc]
lea edx, [esp + 0x3c]
push edx
push ecx
push eax
mov eax, dword [edi + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
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 0x42361f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi + 4]
mov edx, dword [esi + 0x20]
push ecx
push edx
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esi + 0x84]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
push 4
push ecx
mov ecx, dword [eax + 0xd84]
push edx
mov edx, dword [eax + 0xd80]
add ecx, 2
push ecx
add edx, 0x14
push edx
push 0
push 0x3f8
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
jmp 0x423670
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push 0x40a
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe2f
test eax, eax
je 0x423a93
call fcn.00450641
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4236a5
push 0x80004005
call fcn.004071f0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x10]
mov dword [esp + 0x6c0], 0
call fcn.0042f460
mov eax, dword [0x529d78]
cmp eax, 5
je 0x423707
cmp eax, 6
je 0x423707
push 0
push 0x40a
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
push 0
push 0x3f7
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
jmp 0x423a68
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], 0
mov edi, dword [ecx - 0x10]
lea eax, [ecx - 0x10]
je 0x423762
cmp dword [eax + 0xc], 0
lea edx, [eax + 0xc]
jge 0x42373c
cmp dword [ecx - 8], 0
jge 0x423730
push 0x80070057
call fcn.004071f0
mov dword [ecx - 0xc], 0
mov byte [ecx], 0
jmp 0x423762
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x423752
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
add eax, 0x10
mov dword [esp + 0x10], eax
xor ecx, ecx
push 0x206
push ecx
lea edx, [esp + 0x4ae]
push edx
mov word [esp + 0x4b0], cx
call fcn.004737c0
add esp, 0xc
push 0x529780
push 0x51183c
push 0x511844
lea edx, [esp + 0x4b0]
call fcn.0040bf60
mov ecx, 0x74
mov word [esp + 0x7a], cx
mov eax, 0x4f
mov word [esp + 0x78], ax
mov ecx, 0x72
mov word [esp + 0x80], cx
mov edx, 0x68
mov word [esp + 0x7c], dx
xor edx, edx
mov eax, 0x65
mov word [esp + 0x7e], ax
mov word [esp + 0x82], dx
mov ecx, 0x70
mov word [esp + 0x86], cx
mov eax, 0x4f
mov word [esp + 0x84], ax
mov ecx, 0x6d
mov word [esp + 0x8c], cx
mov edx, 0x74
mov word [esp + 0x88], dx
mov eax, 0x69
mov edx, eax
mov word [esp + 0x8a], ax
mov ecx, 0x61
mov word [esp + 0x8e], dx
mov word [esp + 0x92], cx
add esp, 0xc
mov eax, 0x7a
mov word [esp + 0x84], ax
mov ecx, 0x6f
mov edx, 0x74
mov word [esp + 0x88], dx
mov word [esp + 0x8c], cx
mov eax, 0x69
lea ecx, [esp + 0x4a4]
push ecx
mov word [esp + 0x8e], ax
mov edx, 0x6e
xor eax, eax
mov word [esp + 0x92], dx
push 2
lea edx, [esp + 0x80]
mov word [esp + 0x98], ax
push edx
lea eax, [esp + 0x78]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
xor ecx, ecx
cmp eax, 2
setge cl
mov eax, ecx
mov dword [esi + 0x198], eax
test eax, eax
je 0x4238c3
mov eax, dword [esi + 0x15c]
lea edx, [esp + 0x1c]
push edx
push 0x18
push eax
jmp 0x4238d1
mov edx, dword [esi + 0x154]
lea ecx, [esp + 0x1c]
push ecx
push 0x18
push edx
call dword [sym.imp.GDI32.dll_GetObjectW]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
mov eax, dword [esi + 0x84]
push 4
push ecx
mov ecx, dword [eax + 0xd84]
push edx
mov edx, dword [eax + 0xd80]
push ecx
add edx, 0x3c
push edx
push 0
push 0x40a
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
push 0
push 0x40a
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.0045fe08
mov eax, dword [esi + 0x20]
push 0
push 0
push 0x31
push eax
call ebx
push eax
call fcn.004657ea
push 0x3f7
mov ecx, esi
mov edi, eax
call fcn.0045fca8
test edi, edi
je 0x42394b
mov edi, dword [edi + 4]
mov ecx, dword [eax + 0x20]
push 1
push edi
push 0x30
push ecx
call ebx
cmp dword [0x529d78], 5
mov ecx, esi
jne 0x423968
push 0x511e30
jmp 0x42396d
push str.LHVM_Graphics
push 0x3f7
call fcn.0045fca8
mov ecx, eax
call fcn.0045fd66
push 0x3f7
mov ecx, esi
call fcn.0045fca8
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.00465518
cmp dword [0x529d78], 5
mov edi, eax
jne 0x4239d1
push 0x511e30
lea ecx, [esp + 0x38]
call fcn.00446560
mov eax, dword [esp + 0x34]
mov ecx, dword [eax - 0xc]
lea edx, [esp + 0x3c]
push edx
push ecx
push eax
mov eax, dword [edi + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov eax, dword [esp + 0x34]
jmp 0x4239fb
push str.LHVM_Graphics
lea ecx, [esp + 0x18]
call fcn.00446560
mov eax, dword [esp + 0x14]
mov ecx, dword [eax - 0xc]
lea edx, [esp + 0x3c]
push edx
push ecx
push eax
mov eax, dword [edi + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x3c]
add eax, 0xfffffff0
mov dword [esp + 0x48], ecx
or ecx, 0xffffffff
lea edx, [eax + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x423a23
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi + 4]
mov edx, dword [esi + 0x20]
push ecx
push edx
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esi + 0x84]
mov ecx, dword [esp + 0x48]
mov edx, dword [eax + 0xd84]
mov eax, dword [eax + 0xd80]
push 4
push ecx
push ebx
add edx, 2
push edx
add eax, 0x50
push eax
push 0
push 0x3f7
mov ecx, esi
call fcn.0045fca8
mov ecx, eax
call fcn.00460079
mov dword [esp + 0x6c0], 0xffffffff
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423a93
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x6b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop ebx
mov ecx, dword [esp + 0x6a4]
xor ecx, esp
call fcn.0046d9d8
mov esp, ebp
pop ebp
ret