Function at 0x40b7e0
Capabilities:
Get graphical window text

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2b4
mov eax, dword [0x49f014]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
call fcn.00403a60
movaps xmm1, xmm0
xor esi, esi
movsd qword [ebp - 0x2a8], xmm1
test edi, edi
jne 0x40b812
xor ebx, ebx
jmp 0x40b815
mov ebx, dword [edi + 0x38]
push ebx
call dword [sym.imp.USER32.dll_GetDC]
push dword [edi + 0x68]
test eax, eax
cmovne esi, eax
push esi
mov dword [ebp - 0x294], esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov esi, eax
lea eax, [ebp - 0x28c]
push eax
push dword [ebp - 0x294]
call dword [sym.imp.GDI32.dll_GetTextMetricsW]
movzx ecx, word [ebp - 0x28c]
push esi
mov esi, dword [ebp - 0x294]
push esi
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x493d70]
movsd qword [ebp - 0x238], xmm0
call dword [sym.imp.GDI32.dll_SelectObject]
push esi
push ebx
call dword [sym.imp.USER32.dll_ReleaseDC]
movsd xmm2, qword [ebp - 0x2a8]
movaps xmm0, xmm2
mulsd xmm0, qword [0x493dd8]
push dword [edi + 0xd8]
cvttsd2si esi, xmm0
movsd xmm0, qword [ebp - 0x238]
mulsd xmm0, qword [0x493dd8]
mov dword [ebp - 0x2b0], esi
cvttsd2si eax, xmm0
movsd xmm0, qword [ebp - 0x238]
mulsd xmm0, qword [0x493e20]
mov dword [ebp - 0x290], eax
cvttsd2si eax, xmm0
movaps xmm0, xmm2
mulsd xmm0, qword [0x493e48]
mov dword [ebp - 0x298], eax
cvttsd2si eax, xmm0
movaps xmm0, xmm2
mulsd xmm0, qword [0x493e90]
mov dword [ebp - 0x29c], eax
cvttsd2si ebx, xmm0
mov dword [ebp - 0x2b4], ebx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x40baf9
push 0x104
lea eax, [ebp - 0x210]
push eax
push dword [edi + 0xd8]
call dword [sym.imp.USER32.dll_GetWindowTextW]
push dword [edi + 0xd8]
call dword [sym.imp.USER32.dll_GetDC]
test eax, eax
mov ecx, 0
cmovne ecx, eax
mov eax, dword [ebp - 0x290]
push eax
sub ebx, esi
mov dword [ebp - 0x294], ecx
push ebx
push eax
push esi
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [ebp - 0x214]
mov edx, dword [ebp - 0x21c]
sub eax, edx
mov ecx, dword [ebp - 0x220]
push 0
push eax
mov eax, dword [ebp - 0x218]
sub eax, ecx
push eax
push edx
push ecx
push dword [edi + 0xd8]
call dword [sym.imp.USER32.dll_MoveWindow]
lea eax, [ebp - 0x220]
push eax
push dword [edi + 0xd8]
call dword [sym.imp.USER32.dll_GetClientRect]
push 6
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov esi, eax
push 5
neg esi
call dword [sym.imp.USER32.dll_GetSystemMetrics]
neg eax
push esi
push eax
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.USER32.dll_InflateRect]
push 0
push 0
push 0x31
push dword [edi + 0xd8]
call dword [sym.imp.USER32.dll_SendMessageW]
mov esi, dword [ebp - 0x294]
push eax
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
lea ecx, [ebp - 0x210]
mov dword [ebp - 0x2ac], eax
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40b9f0
push 0xc10
sub ecx, edx
lea eax, [ebp - 0x220]
push eax
sar ecx, 1
lea eax, [ebp - 0x210]
push ecx
push eax
push esi
call dword [sym.imp.USER32.dll_DrawTextW]
push dword [ebp - 0x2ac]
mov esi, eax
push dword [ebp - 0x294]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [ebp - 0x294]
push dword [edi + 0xd8]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [ebp - 0x21c]
add eax, esi
push 5
mov dword [ebp - 0x214], eax
call dword [sym.imp.USER32.dll_GetSystemMetrics]
push 5
mov esi, eax
call dword [sym.imp.USER32.dll_GetSystemMetrics]
push esi
push eax
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.USER32.dll_InflateRect]
push 0xffffffffffffffec
push dword [edi + 0xd8]
call dword [sym.imp.USER32.dll_GetWindowLongW]
push 0xfffffffffffffff0
push dword [edi + 0xd8]
mov esi, eax
call dword [sym.imp.USER32.dll_GetWindowLongW]
push esi
push 0
push eax
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.USER32.dll_AdjustWindowRectEx]
mov edx, dword [ebp - 0x218]
sub edx, dword [ebp - 0x220]
mov esi, dword [ebp - 0x2b0]
mov ecx, dword [ebp - 0x214]
sub ecx, dword [ebp - 0x21c]
push 1
lea eax, [edx + esi]
mov dword [ebp - 0x220], esi
mov dword [ebp - 0x218], eax
mov eax, dword [ebp - 0x290]
push ecx
add eax, ecx
push edx
mov dword [ebp - 0x214], eax
mov eax, dword [ebp - 0x290]
push eax
push esi
push dword [edi + 0xd8]
mov dword [ebp - 0x21c], eax
call dword [sym.imp.USER32.dll_MoveWindow]
jmp 0x40bafb
sub ebx, esi
push dword [edi + 0x150]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x40bc31
push 0xfffffffffffffff0
push dword [edi + 0x150]
call dword [sym.imp.USER32.dll_GetWindowLongW]
test al, 4
mov dword [ebp - 0x230], esi
mov ecx, 0x32
mov eax, 0xe
cmovne eax, ecx
push dword [edi + 0x114]
movd xmm0, eax
mov eax, dword [ebp - 0x290]
cvtdq2pd xmm0, xmm0
lea ecx, [eax + eax]
mov eax, dword [ebp - 0x214]
sub ecx, dword [ebp - 0x21c]
add eax, ecx
mov dword [ebp - 0x22c], eax
mulsd xmm0, qword [ebp - 0x2a8]
cvttsd2si edx, xmm0
add eax, edx
mov dword [ebp - 0x224], eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x40bbcf
movsd xmm1, qword [ebp - 0x2a8]
mov eax, dword [ebp - 0x230]
movaps xmm0, xmm1
mulsd xmm0, qword [0x493f00]
mov edx, eax
push 0
mulsd xmm1, qword [0x493f08]
cvttsd2si ecx, xmm0
sub edx, ecx
cvttsd2si ecx, xmm1
mov dword [ebp - 0x228], edx
sub eax, ecx
sub eax, edx
cdq
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x230]
push eax
call dword [sym.imp.USER32.dll_OffsetRect]
mov edx, dword [ebp - 0x228]
jmp 0x40bbd7
mov edx, ebx
mov dword [ebp - 0x228], edx
mov eax, dword [ebp - 0x224]
mov ecx, dword [ebp - 0x22c]
sub eax, ecx
push 1
push eax
mov eax, dword [ebp - 0x230]
sub edx, eax
push edx
push ecx
push eax
push dword [edi + 0x150]
call dword [sym.imp.USER32.dll_MoveWindow]
push dword [edi + 0x114]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x40bd28
push 0
push dword [edi + 0x150]
push 0x469
push dword [edi + 0x114]
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x40bd28
push dword [edi + 0x18c]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x40bc98
movsd xmm0, qword [ebp - 0x238]
mulsd xmm0, qword [0x493e40]
mov ecx, dword [ebp - 0x290]
add ecx, dword [ebp - 0x214]
push 1
mov dword [ebp - 0x230], esi
cvttsd2si eax, xmm0
mov dword [ebp - 0x228], ebx
mov dword [ebp - 0x22c], ecx
push eax
mov eax, ebx
sub eax, esi
push eax
push ecx
push esi
push dword [edi + 0x18c]
call dword [sym.imp.USER32.dll_MoveWindow]
lea eax, [ebp - 0x240]
push eax
push dword [edi + 0x18c]
jmp 0x40bd0a
push dword [edi + 0x1c8]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x40bd28
movsd xmm0, qword [ebp - 0x2a8]
mov eax, dword [ebp - 0x290]
mulsd xmm0, qword [0x493e40]
push 1
mov dword [ebp - 0x230], esi
lea ecx, [eax + eax]
mov dword [ebp - 0x228], ebx
sub ecx, dword [ebp - 0x21c]
add ecx, dword [ebp - 0x214]
cvttsd2si eax, xmm0
mov dword [ebp - 0x22c], ecx
push eax
mov eax, ebx
sub eax, esi
push eax
push ecx
push esi
push dword [edi + 0x1c8]
call dword [sym.imp.USER32.dll_MoveWindow]
lea eax, [ebp - 0x240]
push eax
push dword [edi + 0x1c8]
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [ebp - 0x234]
sub eax, dword [ebp - 0x23c]
add eax, dword [ebp - 0x22c]
mov dword [ebp - 0x224], eax
mov eax, dword [ebp - 0x290]
xorps xmm0, xmm0
mov dword [ebp - 0x248], ebx
sub ebx, dword [ebp - 0x29c]
mov dword [ebp - 0x250], ebx
lea ecx, [eax + eax*2]
movlpd qword [ebp - 0x288], xmm0
sub ecx, dword [ebp - 0x22c]
sub ecx, dword [ebp - 0x21c]
add ecx, dword [ebp - 0x224]
mov eax, dword [ebp - 0x214]
add eax, ecx
movlpd qword [ebp - 0x280], xmm0
mov dword [ebp - 0x24c], eax
add eax, dword [ebp - 0x298]
cmp dword [0x4a18cc], 0
mov dword [ebp - 0x244], eax
movlpd qword [ebp - 0x274], xmm0
movlpd qword [ebp - 0x26c], xmm0
movlpd qword [ebp - 0x264], xmm0
mov dword [ebp - 0x25c], 0
mov dword [ebp - 0x254], 0
mov dword [ebp - 0x258], 0
jne 0x40bdd1
push 0x4924a8
call dword [sym.imp.USER32.dll_RegisterWindowMessageW]
mov dword [0x4a18cc], eax
lea eax, [ebp - 0x258]
mov dword [ebp - method.KWnd.virtual_0], vtable.KButton.0
push eax
mov edx, str._klibButton
mov dword [ebp - 0x278], str._klibButton
mov ecx, str.BUTTON
call fcn.0045a960
add esp, 4
push 2
push dword [edi + 0x38]
call dword [sym.imp.USER32.dll_GetDlgItem]
mov ebx, dword [ebp - 0x254]
mov dword [ebp - 0x298], eax
test ebx, ebx
jne 0x40be64
test eax, eax
je 0x40be64
mov ecx, dword [ebp - 0x244]
mov edx, dword [ebp - 0x24c]
sub ecx, edx
mov eax, dword [ebp - 0x248]
push 1
push ecx
mov ecx, dword [ebp - 0x250]
sub eax, ecx
push eax
push edx
push ecx
push dword [ebp - 0x298]
call dword [sym.imp.USER32.dll_MoveWindow]
mov eax, dword [ebp - 0x29c]
add eax, esi
push ebx
neg eax
push eax
lea eax, [ebp - 0x250]
push eax
call dword [sym.imp.USER32.dll_OffsetRect]
push 1
push dword [edi + 0x38]
call dword [sym.imp.USER32.dll_GetDlgItem]
mov esi, eax
test ebx, ebx
jne 0x40bea4
test esi, esi
je 0x40beab
mov ecx, dword [ebp - 0x244]
mov edx, dword [ebp - 0x24c]
sub ecx, edx
mov eax, dword [ebp - 0x248]
push 1
push ecx
mov ecx, dword [ebp - 0x250]
sub eax, ecx
push eax
push edx
push ecx
push esi
call dword [sym.imp.USER32.dll_MoveWindow]
jmp 0x40beab
push ebx
call dword [sym.imp.USER32.dll_DestroyWindow]
mov eax, dword [ebp - 0x244]
add eax, dword [ebp - 0x290]
push eax
push dword [ebp - 0x2b4]
lea eax, [ebp - 0x240]
push 0
push 0
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov ebx, dword [sym.imp.USER32.dll_GetWindowLongW]
push 0xffffffffffffffec
push dword [edi + 0x38]
call ebx
push eax
push 0
push 0xfffffffffffffff0
push dword [edi + 0x38]
call ebx
push eax
lea eax, [ebp - 0x240]
push eax
call dword [sym.imp.USER32.dll_AdjustWindowRectEx]
mov eax, dword [ebp - 0x234]
mov edx, dword [ebp - 0x23c]
sub eax, edx
mov ecx, dword [ebp - 0x240]
push 0x216
push eax
mov eax, dword [ebp - 0x238]
sub eax, ecx
push eax
push edx
push ecx
push 0
push dword [edi + 0x38]
call dword [sym.imp.USER32.dll_SetWindowPos]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0045f9ee
mov esp, ebp
pop ebp
ret