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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4cb99b
mov eax, dword fs:[0]
push eax
sub esp, 0x6ac
mov eax, dword [0x504628]
xor eax, esp
mov dword [esp + 0x6a4], eax
push ebx
push edi
mov eax, dword [0x504628]
xor eax, esp
push eax
lea eax, [esp + 0x6b8]
mov dword fs:[0], eax
mov ecx, dword [0x50e888]
call fcn.004368d0
test dword [0x50eadc], 0x40000000
mov dword [esp + 0x14], eax
mov ecx, esi
je 0x419653
push 0x50e780
jmp 0x419657
add eax, 0x18
push eax
call fcn.0044bda6
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 [0x50eac0]
mov eax, dword [esi + 0x20]
push 1
push 0
push edx
push eax
call dword [sym.imp.USER32.dll_SetLayeredWindowAttributes]
mov edx, dword [0x5096c4]
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.0044c0b5
mov eax, dword [esi + 0x20]
push 0
push 0
push 0x31
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push eax
call fcn.00451ec7
push 0x3f6
mov ecx, esi
mov edi, eax
call fcn.0044bce8
test edi, edi
je 0x41972e
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.0045f850
mov ebx, 0x40000000
add esp, 0xc
lea edx, [esp + 0x94]
test dword [0x50eadc], ebx
je 0x419795
mov edi, dword [esp + 0x14]
add edi, 0x18
push edi
push 0x4f52f0
call fcn.00407ab0
push 0x50e780
push 0x20
push edi
call fcn.0045ab86
add esp, 0x14
jmp 0x4197af
mov ecx, dword [esp + 0x14]
push 0x134dacd
add ecx, 0x18
push ecx
push str._s_Ver:_d
call fcn.00407ab0
add esp, 0xc
push 0x3f6
mov ecx, esi
call fcn.0044bce8
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.00451bf5
mov edi, eax
lea eax, [esp + 0x94]
push eax
lea ecx, [esp + 0x1c]
call fcn.00433040
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 0x419816
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
lea eax, [esp + 0x94]
push eax
push 0x3f6
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044bda6
test dword [0x50eadc], ebx
je 0x41989c
push 0
push 0x3f6
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 1
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0x3ea
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
test eax, eax
je 0x4199ec
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0x4f7698
push 0x3eb
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044bda6
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 [0x50e890], ecx
mov edx, dword [eax + 0x12c]
mov eax, dword [eax + 0x128]
push edx
mov edx, dword [0x5096c4]
push eax
push edx
call fcn.00427790
add esp, 0x10
push eax
lea ecx, [esi + 0xc0]
call fcn.00451edb
mov eax, dword [esi + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x419ac6
cmp dword [0x50e894], 0
je 0x419ac6
push 0x3ec
mov ecx, esi
mov dword [0x50e894], 0
call fcn.0044bce8
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0x4f50fc
push 0x3ec
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044bda6
push 0x3ec
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044bd72
push 0x3ec
mov ecx, esi
mov ebx, eax
call fcn.0044bce8
test eax, eax
je 0x419b3b
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 [0x50e898], ecx
mov edx, dword [eax + 0x154]
mov eax, dword [eax + 0x150]
push edx
mov edx, dword [0x5096c4]
push eax
push edx
call fcn.00427790
add esp, 0x10
push eax
lea ecx, [esi + 0xc8]
call fcn.00451edb
mov eax, dword [esi + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x419bd3
cmp dword [0x50e89c], 0
je 0x419bd3
push 0x3ed
mov ecx, esi
mov dword [0x50e89c], 0
call fcn.0044bce8
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0x4f50fc
push 0x3ed
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044bda6
push 0x3ed
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044bd72
push 0x3ed
mov ecx, esi
mov edi, eax
call fcn.0044bce8
test eax, eax
je 0x419c48
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.0044bce8
mov ecx, eax
call fcn.0044be6f
test eax, eax
je 0x419ccb
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
add dword [esp + 0x10], 8
add edi, 4
inc ebx
sub dword [esp + 0x18], 1
jne 0x419c70
push 0
push 0x4f77c8
lea ecx, [esi + 0x17c]
push 0x64
call fcn.00452987
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 0x419e1b
push edi
call fcn.0044bce8
lea ecx, [esi + 0x17c]
test ecx, ecx
je 0x419d42
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.0044bce8
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.00451bf5
mov ebx, eax
mov eax, dword [esp + 0x10]
push eax
lea ecx, [esp + 0x48]
call fcn.00433040
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 0x419db1
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
mov ecx, dword [esp + 0x10]
push ecx
push edi
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044bda6
push 1
push edi
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
mov ebx, 1
jmp 0x419e2a
push 0
push edi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be8a
add dword [esp + 0x14], 4
add dword [esp + 0x18], ebx
add dword [esp + 0x10], 0x40
add edi, ebx
sub dword [esp + 0x34], ebx
jne 0x419d20
push 0x407
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
mov edi, dword [sym.imp.GDI32.dll_GetObjectW]
test eax, eax
je 0x419ec2
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 0x407
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
push 0x406
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
test eax, eax
je 0x419f3a
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 0x406
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
push 0x3fa
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
test eax, eax
je 0x419fab
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 0x3fa
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
push 0x3fb
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
test eax, eax
je 0x41a01c
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 0x3fb
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
push 0x3fc
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
test eax, eax
je 0x41a08d
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 0x3fc
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
push 0x3fd
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
test eax, eax
je 0x41a0fe
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 0x3fd
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
push 0x3f9
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
test eax, eax
je 0x41a176
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 0x3f9
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
push 0x409
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
test eax, eax
je 0x41a38a
xor ecx, ecx
push 0x206
push ecx
lea edx, [esp + 0x2a6]
push edx
mov word [esp + 0x2a8], cx
call fcn.0045f850
add esp, 0xc
push 0x50e700
push 0x4f765c
push 0x4f7664
lea edx, [esp + 0x2a8]
call fcn.00407ab0
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 0x41a201
lea ecx, [esp + 0x29c]
push ecx
push 0
jmp 0x41a20b
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 0x41a231
mov ecx, dword [esi + 0x15c]
lea eax, [esp + 0x1c]
push eax
push 0x18
push ecx
jmp 0x41a23f
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 0x409
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
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.00451ec7
push 0x3f8
mov ecx, esi
mov edi, eax
call fcn.0044bce8
test edi, edi
je 0x41a2b8
mov edi, dword [edi + 4]
mov ecx, dword [eax + 0x20]
push 1
push edi
push 0x30
push ecx
call ebx
push 0x4f77f0
push 0x3f8
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044bda6
push 0x3f8
mov ecx, esi
call fcn.0044bce8
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.00451bf5
push 0x4f77f0
lea ecx, [esp + 0x38]
mov edi, eax
call fcn.00433040
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 0x41a33f
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
jmp 0x41a390
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push 0x40a
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be6f
test eax, eax
je 0x41a7b3
call fcn.0044c7ef
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x41a3c5
push 0x80004005
call fcn.00406bd0
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.00425890
mov eax, dword [0x50ecf4]
cmp eax, 5
je 0x41a427
cmp eax, 6
je 0x41a427
push 0
push 0x40a
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
push 0
push 0x3f7
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
jmp 0x41a788
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], 0
mov edi, dword [ecx - 0x10]
lea eax, [ecx - 0x10]
je 0x41a482
cmp dword [eax + 0xc], 0
lea edx, [eax + 0xc]
jge 0x41a45c
cmp dword [ecx - 8], 0
jge 0x41a450
push 0x80070057
call fcn.00406bd0
mov dword [ecx - 0xc], 0
mov byte [ecx], 0
jmp 0x41a482
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41a472
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.0045f850
add esp, 0xc
push 0x50e700
push 0x4f765c
push 0x4f7664
lea edx, [esp + 0x4b0]
call fcn.00407ab0
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 0x41a5e3
mov eax, dword [esi + 0x15c]
lea edx, [esp + 0x1c]
push edx
push 0x18
push eax
jmp 0x41a5f1
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
push 0
push 0x40a
mov ecx, esi
call fcn.0044bce8
mov ecx, eax
call fcn.0044be48
mov eax, dword [esi + 0x20]
push 0
push 0
push 0x31
push eax
call ebx
push eax
call fcn.00451ec7
push 0x3f7
mov ecx, esi
mov edi, eax
call fcn.0044bce8
test edi, edi
je 0x41a66b
mov edi, dword [edi + 4]
mov ecx, dword [eax + 0x20]
push 1
push edi
push 0x30
push ecx
call ebx
cmp dword [0x50ecf4], 5
mov ecx, esi
jne 0x41a688
push 0x4f77f8
jmp 0x41a68d
push str.LHVM_Graphics
push 0x3f7
call fcn.0044bce8
mov ecx, eax
call fcn.0044bda6
push 0x3f7
mov ecx, esi
call fcn.0044bce8
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.00451bf5
cmp dword [0x50ecf4], 5
mov edi, eax
jne 0x41a6f1
push 0x4f77f8
lea ecx, [esp + 0x38]
call fcn.00433040
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 0x41a71b
push str.LHVM_Graphics
lea ecx, [esp + 0x18]
call fcn.00433040
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 0x41a743
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.0044bce8
mov ecx, eax
call fcn.0044c0b5
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 0x41a7b3
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.0045a0a2
mov esp, ebp
pop ebp
ret