Function at 0x401d30
Capabilities:
Get graphical window text

Disassembly:
push 0xffffffffffffffff
push 0x44e6b0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x54
push ebx
push ebp
push esi
mov esi, dword [esp + 0x74]
push edi
mov ebx, ecx
mov eax, dword [esi + 0x18]
mov dword [esp + 0x78], eax
xor edi, edi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], edi
mov al, byte [ebx + 0x39]
mov byte [esp + 0x6c], 2
test al, 4
je 0x401d98
test byte [esi + 0x10], 1
jne 0x401d81
test al, 8
jne 0x401d81
xor eax, eax
jmp 0x401d86
mov eax, 1
mov cl, byte [ebx + 0x38]
and al, 1
shl al, 2
and cl, 0xfb
or al, cl
mov byte [ebx + 0x38], al
jmp 0x401dab
mov dl, byte [esi + 0x10]
mov al, byte [ebx + 0x38]
and dl, 1
and al, 0xfb
shl dl, 2
or dl, al
mov byte [ebx + 0x38], dl
mov eax, dword [esi + 0x10]
mov cl, byte [ebx + 0x38]
shr eax, 4
and al, 1
and cl, 0xf7
shl al, 3
or al, cl
add esi, 0x1c
mov byte [ebx + 0x38], al
mov edx, dword [esi - 0xc]
shr edx, 2
and dl, 1
and al, 0xef
shl dl, 4
or dl, al
lea eax, [esp + 0x34]
push esi
push eax
mov byte [ebx + 0x38], dl
mov dword [esp + 0x28], esi
call dword [sym.imp.USER32.dll_CopyRect]
mov ecx, dword [esp + 0x78]
push 1
push ecx
call dword [sym.imp.GDI32.dll_SetBkMode]
mov al, byte [ebx + 0x38]
mov ebp, dword [sym.imp.GDI32.dll_CreateSolidBrush]
test al, 0x40
jne 0x401e4a
test al, 8
jne 0x401e10
mov ecx, ebx
call fcn.00401480
test al, al
je 0x401e4a
push edi
mov dword [esp + 0x18], edi
call ebp
mov dword [esp + 0x14], eax
push eax
mov eax, dword [esp + 0x7c]
lea edx, [esp + 0x38]
push edx
push eax
call dword [sym.imp.USER32.dll_FrameRect]
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.USER32.dll_InflateRect]
cmp dword [esp + 0x14], edi
je 0x401e4a
lea ecx, [esp + 0x14]
call fcn.00403000
test byte [ebx + 0x38], 2
je 0x401e5e
mov edx, dword [esp + 0x78]
mov ecx, ebx
push edx
call fcn.004018c0
jmp 0x401e6f
mov edx, dword [esp + 0x78]
mov eax, dword [ebx]
lea ecx, [esp + 0x34]
push ecx
push edx
mov ecx, ebx
call dword [eax + 0xc]
mov al, byte [ebx + 0x38]
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
test al, 4
je 0x401ee0
test al, 0x40
je 0x401e9e
test al, 0x20
je 0x40210a
mov edx, dword [esp + 0x78]
mov eax, dword [ebx]
lea ecx, [esp + 0x34]
push ecx
push edx
mov ecx, ebx
call dword [eax + 0x10]
jmp 0x40210a
push 0x10
mov dword [esp + 0x18], 0
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
call ebp
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x14], eax
push eax
lea eax, [esp + 0x38]
push eax
push ecx
call dword [sym.imp.USER32.dll_FrameRect]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x40210a
lea ecx, [esp + 0x14]
call fcn.00403000
jmp 0x40210a
mov esi, dword [sym.imp.USER32.dll_GetSysColor]
push 0x14
mov byte [esp + 0x70], 6
call esi
push eax
push 0
push 0
call dword [sym.imp.GDI32.dll_CreatePen]
mov ebp, eax
push 0x16
mov dword [esp + 0x34], ebp
call esi
push eax
push 0
push 0
call dword [sym.imp.GDI32.dll_CreatePen]
push 0x10
mov dword [esp + 0x20], eax
call esi
push eax
push 0
push 0
call dword [sym.imp.GDI32.dll_CreatePen]
push 0x15
mov dword [esp + 0x1c], eax
call esi
push eax
push 0
push 0
call dword [sym.imp.GDI32.dll_CreatePen]
mov dword [esp + 0x14], eax
mov al, byte [ebx + 0x38]
test al, 0x40
je 0x401f8b
test al, 1
je 0x4020d0
test al, 0x20
je 0x4020d0
push 0x10
call esi
push 0x14
mov dword [esp + 0x2c], eax
call esi
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x40]
push edx
mov edx, dword [esp + 0x40]
push eax
mov eax, dword [esp + 0x40]
sub ecx, eax
push ecx
mov ecx, dword [esp + 0x40]
sub edx, ecx
push edx
push eax
push ecx
lea ecx, [esp + 0x90]
call fcn.00402ed0
jmp 0x4020d0
mov eax, dword [esp + 0x78]
push ebp
push eax
call edi
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x34]
mov ebp, dword [sym.imp.GDI32.dll_MoveToEx]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea eax, [ecx - 1]
push 0
push eax
mov eax, dword [esp + 0x80]
push edx
push eax
call ebp
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x78]
mov esi, dword [sym.imp.GDI32.dll_LineTo]
push ecx
push edx
push eax
call esi
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x78]
push ecx
push edx
push eax
call esi
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x78]
push ecx
push edx
call edi
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x78]
dec eax
inc ecx
push 0
push eax
push ecx
push edx
call ebp
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x78]
inc eax
inc ecx
push eax
push ecx
push edx
call esi
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x78]
inc eax
push eax
push ecx
push edx
call esi
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x78]
push eax
push ecx
call edi
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x78]
push 0
lea eax, [edx - 1]
push eax
mov eax, dword [esp + 0x3c]
push eax
push ecx
call ebp
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
dec ecx
lea eax, [edx - 1]
mov edx, dword [esp + 0x78]
push eax
push ecx
push edx
call esi
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x78]
dec eax
dec ecx
push eax
push ecx
push edx
call esi
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x78]
push eax
push ecx
call edi
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
inc ecx
push 0
lea eax, [edx - 2]
mov edx, dword [esp + 0x7c]
push eax
push ecx
push edx
call ebp
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x78]
add eax, 0xfffffffe
add ecx, 0xfffffffe
push eax
push ecx
push edx
call esi
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x78]
add eax, 0xfffffffe
push ecx
push eax
push edx
call esi
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x78]
push eax
push ecx
call edi
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4020e3
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
push eax
call esi
jmp 0x4020e9
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4020f4
push eax
call esi
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4020ff
push eax
call esi
test ebp, ebp
je 0x402106
push ebp
call esi
mov esi, dword [esp + 0x20]
mov edx, dword [0x45c050]
mov dword [esp + 0x10], edx
mov eax, dword [ebx + 4]
mov byte [esp + 0x6c], 7
push eax
call dword [sym.imp.USER32.dll_GetWindowTextLengthA]
mov ebp, eax
lea ecx, [esp + 0x10]
push ebp
call fcn.00403630
test eax, eax
je 0x402146
mov ecx, dword [esp + 0x10]
mov dword [ecx - 8], ebp
mov edx, dword [esp + 0x10]
mov byte [edx + ebp], 0
mov eax, dword [esp + 0x10]
inc ebp
push ebp
push eax
mov eax, dword [ebx + 4]
push eax
call dword [sym.imp.USER32.dll_GetWindowTextA]
lea ecx, [esp + 0x44]
push esi
push ecx
call dword [sym.imp.USER32.dll_CopyRect]
mov eax, dword [ebx + 0x15c]
test eax, eax
je 0x40219d
mov al, byte [ebx + 0x38]
mov ecx, dword [esp + 0x10]
mov dl, al
shr dl, 4
shr al, 2
and dl, 1
and al, 1
push edx
push eax
lea eax, [esp + 0x4c]
push eax
mov eax, dword [ecx - 8]
test eax, eax
mov eax, dword [esp + 0x84]
push esi
setne dl
push edx
push eax
mov ecx, ebx
call fcn.00401c50
mov eax, dword [ebx + 0x174]
test eax, eax
je 0x4021eb
mov ecx, dword [esp + 0x78]
push 0xffffff
push ecx
call dword [sym.imp.GDI32.dll_SetBkColor]
mov al, byte [ebx + 0x38]
mov ecx, dword [esp + 0x10]
mov dl, al
mov ebp, dword [ecx - 8]
mov ecx, ebx
shr dl, 4
shr al, 2
and dl, 1
and al, 1
push edx
push eax
lea eax, [esp + 0x4c]
test ebp, ebp
push eax
mov eax, dword [esp + 0x84]
setne dl
push esi
push edx
push eax
call fcn.00401b10
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx - 8]
test eax, eax
je 0x402362
mov al, byte [ebx + 0x38]
mov esi, dword [sym.imp.USER32.dll_OffsetRect]
test al, 4
je 0x402218
test byte [ebx + 0x39], 4
jne 0x402218
push 1
lea edx, [esp + 0x48]
push 1
push edx
call esi
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov ebp, dword [sym.imp.USER32.dll_DrawTextA]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x58], ecx
lea ecx, [esp + 0x44]
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x10]
push 0x411
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x7c]
push ecx
push 0xffffffffffffffff
push edx
push eax
call ebp
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x50]
sub eax, edx
mov edx, dword [esp + 0x60]
sub eax, ecx
add eax, edx
mov ecx, dword [esp + 0x54]
cdq
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, 1
push eax
mov eax, dword [esp + 0x60]
sub eax, edx
mov edx, dword [esp + 0x48]
sub eax, ecx
lea ecx, [esp + 0x48]
add eax, edx
cdq
sub eax, edx
sar eax, 1
push eax
push ecx
call esi
mov edx, dword [esp + 0x78]
push 1
push edx
call dword [sym.imp.GDI32.dll_SetBkMode]
mov al, byte [ebx + 0x38]
test al, 0x10
je 0x402311
push 1
lea eax, [esp + 0x48]
push 1
push eax
call esi
push 0x14
call dword [sym.imp.USER32.dll_GetSysColor]
mov ecx, dword [esp + 0x78]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x78]
lea edx, [esp + 0x44]
push 0x11
push edx
push 0xffffffffffffffff
push eax
push ecx
call ebp
push 0xffffffffffffffff
lea edx, [esp + 0x48]
push 0xffffffffffffffff
push edx
call esi
push 0x10
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
mov eax, dword [esp + 0x7c]
push eax
call dword [sym.imp.GDI32.dll_SetTextColor]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0x44]
push 0x11
push ecx
push 0xffffffffffffffff
push edx
push eax
jmp 0x402360
test al, 5
jne 0x40232f
mov ecx, dword [ebx + 0x54]
mov edx, dword [esp + 0x78]
push ecx
push edx
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, dword [ebx + 0x50]
mov ecx, dword [esp + 0x78]
push eax
push ecx
jmp 0x402347
mov edx, dword [ebx + 0x4c]
mov eax, dword [esp + 0x78]
push edx
push eax
call dword [sym.imp.GDI32.dll_SetTextColor]
mov ecx, dword [ebx + 0x48]
mov edx, dword [esp + 0x78]
push ecx
push edx
call dword [sym.imp.GDI32.dll_SetBkColor]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x78]
lea eax, [esp + 0x44]
push 0x11
push eax
push 0xffffffffffffffff
push ecx
push edx
call ebp
mov al, byte [ebx + 0x38]
test al, 0x40
je 0x40236d
test al, 0x80
je 0x4023b0
test al, 8
je 0x4023b0
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
push 0xfffffffffffffffd
lea ecx, [esp + 0x58]
push 0xfffffffffffffffd
push ecx
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], eax
call dword [sym.imp.USER32.dll_InflateRect]
mov eax, dword [esp + 0x78]
lea edx, [esp + 0x54]
push edx
push eax
call dword [sym.imp.USER32.dll_DrawFocusRect]
mov al, byte [ebx + 0x38]
test al, 4
jne 0x40244e
test al, 0x40
je 0x40244e
test al, 3
jne 0x40244e
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x40244e
mov ebx, dword [ebx + 0x48]
push ebx
push 0
push 0
call dword [sym.imp.GDI32.dll_CreatePen]
mov ecx, dword [esp + 0x78]
mov ebx, eax
push ebx
push ecx
call edi
push 5
mov ebp, eax
call dword [sym.imp.GDI32.dll_GetStockObject]
mov edx, dword [esp + 0x78]
mov esi, eax
push esi
push edx
call edi
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x40]
push eax
mov eax, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x80]
push edx
push eax
push ecx
call dword [sym.imp.GDI32.dll_Rectangle]
mov edx, dword [esp + 0x78]
push ebp
push edx
call edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
push eax
push ecx
call edi
test esi, esi
je 0x402443
push esi
call dword [sym.imp.GDI32.dll_DeleteObject]
test ebx, ebx
je 0x40244e
push ebx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x10]
mov ecx, dword [0x45c054]
pop edi
pop esi
lea edx, [eax - 0xc]
pop ebp
cmp edx, ecx
pop ebx
je 0x402481
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x402481
mov eax, dword [esp]
add eax, 0xfffffff4
push eax
call fcn.004447ea
add esp, 4
mov ecx, dword [esp + 0x54]
mov dword fs:[0], ecx
add esp, 0x60
ret 8