Function at 0x477f70
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d5f28
mov eax, dword fs:[0]
push eax
sub esp, 0x2b4
mov eax, dword [0x517ba0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x2ac], esi
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x2a4], eax
lea eax, [edi - 0x1000]
mov dword [ebp - 0x2b4], edx
mov dword [ebp - 0x298], ecx
cmp eax, 0xff
ja 0x477fe5
push ecx
push edx
push edi
push dword [ebp - 0x2a4]
mov ecx, esi
call fcn.00475b50
jmp 0x479afc
mov eax, edi
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
cmp eax, 0x200
jb 0x47807d
cmp eax, 0x20e
ja 0x47807d
movsx eax, cx
xorps xmm0, xmm0
mov dword [ebp - 0x230], eax
mov eax, ecx
shr eax, 0x10
cwde
mov dword [ebp - 0x22c], eax
mov eax, dword [ebp - 0x2a4]
mov dword [ebp - 0x254], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x250], eax
lea eax, [ebp - 0x230]
push eax
push dword [esi + 0x2c]
mov dword [ebp - 0x248], ecx
mov ecx, esi
mov dword [ebp - 0x24c], edx
movq qword [ebp - 0x244], xmm0
mov dword [ebp - 0x23c], 0
call fcn.00477d80
lea eax, [ebp - 0x254]
push eax
push 0
push 0x407
push dword [esi + 0x2c]
call edi
mov edx, dword [ebp - 0x2b4]
mov ecx, dword [ebp - 0x298]
mov eax, dword [ebp + 0xc]
cmp eax, 0x201
jne 0x4781a7
cmp byte [esi + 0xb4], 0
je 0x4780c5
movsx edi, cx
mov eax, edi
sub eax, dword [esi + 0x90]
cdq
xor eax, edx
sub eax, edx
cmp eax, 8
jg 0x478190
push dword [ebp - 0x2a4]
call dword [sym.imp.USER32.dll_SetCapture]
push dword [esi + 0x34]
call dword [sym.imp.USER32.dll_SetCursor]
mov dword [esi + 0xb8], edi
push dword [ebp - 0x2a4]
call dword [sym.imp.USER32.dll_SetFocus]
mov eax, dword [ebp - 0x298]
lea edx, [ebp - 0x2a0]
push edx
movsx ecx, ax
lea edx, [ebp - 0x22c]
push 0
shr eax, 0x10
push edx
cwde
push eax
push ecx
mov ecx, esi
mov dword [ebp - 0x22c], 0
mov dword [ebp - 0x2a0], 0
call fcn.00474da0
mov edi, dword [ebp - 0x2a0]
mov dword [ebp - 0x22c], eax
test al, 0xe0
je 0x478134
push 0
push 0
push edi
push 0
push 0xfffffffffffffffe
push dword [esi + 8]
mov ecx, esi
call fcn.00472ed0
mov eax, dword [ebp - 0x22c]
test al, 0x40
je 0x479960
mov eax, dword [edi + 0x20]
shr eax, 4
mov cl, al
and al, 1
not cl
and cl, 1
mov byte [ebp - 0x2b9], cl
cmp cl, al
je case.0x478cc0.35
mov eax, dword [esi + 8]
test cl, cl
push 0
push 0
push edi
push 0
mov ecx, esi
je 0x479871
push 0x7d1
push eax
call fcn.00472ed0
test eax, eax
jne case.0x478cc0.35
or dword [edi + 0x20], 0x30
mov ecx, edi
call fcn.00474a20
jmp 0x47988f
push 0xfffffffffffffff4
push dword [esi + 8]
call dword [sym.imp.USER32.dll_GetClassLongW]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
jmp 0x4780c5
cmp eax, 0x200
jne 0x478323
cmp byte [esi + 0xb4], 0
je case.0x478cc0.35
movsx edi, cx
mov dword [ebp - 0x29c], edi
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, dword [ebp - 0x2a4]
jne 0x47825f
test byte [ebp - 0x2b4], 1
je 0x47825f
sub edi, dword [esi + 0xb8]
mov dword [ebp - 0x29c], edi
je 0x478251
mov ecx, dword [esi + 0x94]
mov edx, ecx
mov edi, dword [esi + 0x90]
sub edx, edi
mov eax, dword [ebp - 0x29c]
add eax, edi
cmp eax, ecx
mov ecx, esi
cmovge edx, dword [ebp - 0x29c]
add dword [esi + 0xb8], edx
add edi, edx
push edi
call fcn.00476ff0
lea eax, [ebp - 0x268]
mov dword [ebp - 0x268], 1
push eax
mov eax, dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 0x120c
push dword [esi + 0xc]
mov dword [ebp - 0x264], edi
call eax
mov ecx, esi
call fcn.00477180
push dword [esi + 0x34]
call dword [sym.imp.USER32.dll_SetCursor]
jmp case.0x478cc0.35
mov eax, edi
sub eax, dword [esi + 0x90]
cdq
xor eax, edx
sub eax, edx
cmp eax, 8
jle 0x478251
push 0xfffffffffffffff4
push dword [esi + 8]
call dword [sym.imp.USER32.dll_GetClassLongW]
cmp dword [esi + 0xd4], 0
mov ecx, eax
mov edi, dword [ebp - 0x298]
mov dword [ebp - 0x2a0], ecx
je 0x478317
lea ecx, [ebp - 0x2b0]
mov dword [ebp - 0x2b8], 0
push ecx
lea ecx, [ebp - 0x2ac]
mov dword [ebp - 0x2ac], 0
push ecx
mov eax, edi
mov dword [ebp - 0x2b0], 0
shr eax, 0x10
lea ecx, [ebp - 0x2b8]
push ecx
cwde
mov ecx, esi
push eax
push dword [ebp - 0x29c]
call fcn.00474da0
mov ecx, dword [ebp - 0x2b0]
test ecx, ecx
je 0x478311
push dword [ebp - 0x2ac]
mov eax, dword [esi + 0xd4]
push ecx
call eax
mov ecx, dword [ebp - 0x2a0]
add esp, 8
test eax, eax
cmovne ecx, eax
push ecx
call dword [sym.imp.USER32.dll_SetCursor]
jmp 0x479ae2
mov ecx, dword [ebp - 0x2a0]
push ecx
call dword [sym.imp.USER32.dll_SetCursor]
jmp 0x479ae2
cmp eax, 0x202
jne 0x478366
cmp byte [esi + 0xb4], 0
je case.0x478cc0.35
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, dword [ebp - 0x2a4]
jne case.0x478cc0.35
call dword [sym.imp.USER32.dll_ReleaseCapture]
push 0xfffffffffffffff4
push dword [esi + 8]
call dword [sym.imp.USER32.dll_GetClassLongW]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
jmp case.0x478cc0.35
cmp eax, 0x100
ja 0x479050
je 0x478c42
add eax, 0xfffffffe
cmp eax, 0x85
ja case.0x478cc0.35
movzx eax, byte [eax + 0x479b68]
jmp dword [eax*4 + 0x479b38]
push ecx
push edx
push dword [ebp + 0xc]
push dword [ebp - 0x2a4]
test edx, edx
je 0x4783bf
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov ecx, esi
mov byte [esi + 0x9d], 0
mov edi, eax
call fcn.00476d60
mov eax, edi
jmp 0x479afc
mov byte [esi + 0x9d], 1
call dword [sym.imp.USER32.dll_DefWindowProcW]
jmp 0x479afc
cmp edx, dword [ebp - 0x2a4]
je case.0x47970e.8
jmp case.0x478cc0.35
xor eax, eax
movzx ecx, cx
test cx, cx
mov dword [esi + 0x30], edx
setne al
push eax
push edx
push 0x30
push dword [esi + 0xc]
mov dword [ebp - 0x2b8], eax
call edi
mov edi, dword [ebp - 0x2b8]
mov eax, dword [sym.imp.USER32.dll_SendMessageW]
push edi
push dword [esi + 0x30]
push 0x30
push dword [esi + 0x14]
call eax
push edi
push dword [esi + 0x30]
push 0x30
push dword [esi + 0x2c]
call dword [sym.imp.USER32.dll_SendMessageW]
push edi
push dword [esi + 0x30]
push 0x30
push dword [esi + 0x10]
call dword [sym.imp.USER32.dll_SendMessageW]
push edi
push dword [esi + 0x30]
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
push 0x30
push dword [esi + 0x18]
call edi
lea eax, [ebp - 0x248]
push eax
push dword [esi + 8]
call dword [sym.imp.USER32.dll_GetClientRect]
lea eax, [ebp - 0x248]
mov dword [ebp - 0x27c], 0
mov dword [ebp - 0x220], eax
xorps xmm0, xmm0
lea eax, [ebp - 0x294]
movq qword [ebp - 0x284], xmm0
mov dword [ebp - 0x21c], eax
lea eax, [ebp - 0x220]
push eax
push 0
push 0x1205
push dword [esi + 0xc]
movups xmmword [ebp - 0x294], xmm0
call edi
mov eax, dword [ebp - 0x27c]
mov edi, dword [sym.imp.USER32.dll_SetWindowPos]
or eax, 0x40
push eax
push dword [ebp - 0x280]
push dword [esi + 0x90]
push 0
push 0
push dword [ebp - 0x290]
push dword [esi + 0xc]
call edi
mov eax, dword [ebp - 0x27c]
mov ecx, dword [esi + 0x90]
or eax, 0x40
push eax
push dword [ebp - 0x280]
mov eax, dword [ebp - 0x284]
sub eax, ecx
push eax
push 0
push ecx
push dword [esi + 0xc]
push dword [esi + 0x14]
call edi
cmp word [ebp - 0x298], 0
je case.default.0x47970e
mov ecx, esi
call fcn.00476d60
xor eax, eax
jmp 0x479afc
mov eax, dword [esi + 0x7c]
test eax, eax
je case.0x478cc0.35
push eax
mov ecx, esi
call fcn.00476db0
jmp case.0x478cc0.35
push 0
push 0
push 0
push 0
call dword [sym.imp.GDI32.dll_CreateRectRgn]
push 0
mov edi, eax
push edi
push dword [ebp - 0x2a4]
call dword [sym.imp.USER32.dll_GetUpdateRgn]
cmp eax, 1
je 0x47857d
lea eax, [ebp - 0x278]
push eax
push dword [ebp - 0x2a4]
call dword [sym.imp.USER32.dll_BeginPaint]
push edi
lea eax, [ebp - 0x278]
mov ecx, esi
push eax
call fcn.00472f50
lea eax, [ebp - 0x278]
push eax
push dword [ebp - 0x2a4]
call dword [sym.imp.USER32.dll_EndPaint]
push edi
call dword [sym.imp.GDI32.dll_DeleteObject]
xor eax, eax
jmp 0x479afc
push ecx
push edx
push dword [ebp + 0xc]
push dword [ebp - 0x2a4]
call dword [sym.imp.USER32.dll_DefWindowProcW]
or eax, 1
jmp 0x479afc
mov ecx, esi
call fcn.00477180
mov ecx, esi
call fcn.00477380
mov ecx, esi
call fcn.00476ed0
mov eax, dword [esi + 8]
lea ecx, [ebp - 0x258]
xorps xmm0, xmm0
mov dword [ebp - 0x268], 0x30
push ecx
movups xmmword [ebp - 0x260], xmm0
push eax
mov dword [ebp - 0x264], 0
movups xmmword [ebp - 0x250], xmm0
mov dword [ebp - 0x260], eax
movq qword [ebp - 0x240], xmm0
call dword [sym.imp.USER32.dll_GetClientRect]
lea eax, [ebp - 0x268]
push eax
push 0
push 0x434
push dword [esi + 0x2c]
call edi
jmp case.0x478cc0.35
mov eax, dword [ecx]
cmp eax, dword [esi + 0x2c]
mov eax, dword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [ebp - 0x2b0], eax
jne 0x4788a5
mov eax, dword [ecx + 8]
cmp eax, 0xfffffdee
je 0x4786e1
cmp eax, 0xfffffdf7
jne 0x4788a5
lea eax, [ebp - 0x288]
mov ecx, esi
push eax
push dword [esi + 0xac]
push 1
push 0
push dword [esi + 0xa4]
push dword [esi + 0xa8]
call fcn.004742b0
lea eax, [ebp - 0x288]
push eax
push 1
push 0x41f
push dword [esi + 0x2c]
call edi
push 2
lea eax, [ebp - 0x288]
push eax
push 0
push dword [esi + 8]
call dword [sym.imp.USER32.dll_MapWindowPoints]
push 0x15
push 0
push 0
push dword [ebp - 0x284]
push dword [ebp - 0x288]
push 0
push dword [esi + 0x2c]
call dword [sym.imp.USER32.dll_SetWindowPos]
push 0
push dword [esi + 0x30]
push 0x30
push dword [esi + 0x2c]
call edi
push 0
push 0
push dword [esi + 0xac]
mov ecx, esi
push dword [esi + 0xa4]
push 0x7d5
push dword [esi + 0x2c]
call fcn.00472ed0
mov eax, 1
jmp 0x479afc
cmp dword [esi + 0xac], 0
lea eax, [ecx + 0xc]
mov dword [ebp - 0x2a8], eax
je 0x47889f
push eax
push 0
lea edi, [ecx + 0x10]
mov ecx, esi
mov dword [eax], edi
push dword [esi + 0xac]
push dword [esi + 0xa4]
push 0x7d4
push dword [esi + 8]
call fcn.00472ed0
test eax, eax
jne case.default.0x47970e
mov edx, dword [esi + 0xac]
lea esi, [ebp - 0x2b8]
mov dword [ebp - 0x2b8], 0x50
push esi
mov esi, dword [ebp - 0x2ac]
mov ecx, dword [edx + 4]
push edi
push dword [esi + 0xa4]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 8]
call eax
push 0x4e
mov dword [ebp - 0x2ac], eax
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x284], 0
call dword [ebp - 0x2b0]
mov ecx, esi
mov dword [ebp - 0x280], eax
call fcn.00475aa0
mov dword [ebp - 0x27c], eax
mov ecx, esi
lea eax, [ebp - 0x228]
push eax
push dword [esi + 0xac]
push 1
push 1
push dword [esi + 0xa4]
push dword [esi + 0xa8]
call fcn.004742b0
lea eax, [ebp - 0x254]
mov dword [ebp - 0x254], 0x1c
push eax
push 2
push dword [esi + 0x24]
xorps xmm0, xmm0
mov dword [ebp - 0x23c], 0
movups xmmword [ebp - 0x24c], xmm0
mov dword [ebp - 0x250], 4
call dword [sym.imp.USER32.dll_GetScrollInfo]
mov eax, dword [ebp - 0x228]
cmp eax, dword [esi + 0x90]
jne 0x4787ff
cmp dword [ebp - 0x240], 0
jne case.default.0x47970e
mov eax, dword [esi + 0xa0]
push dword [esi + 8]
and eax, 0xfffb3fff
or eax, 0x400
mov dword [ebp - 0x29c], eax
call dword [sym.imp.USER32.dll_GetDC]
push dword [esi + 0x30]
mov dword [ebp - 0x2a0], eax
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [ebp - 0x29c]
mov edi, eax
lea eax, [ebp - 0x288]
push eax
push 0xffffffffffffffff
push dword [ebp - 0x2ac]
push dword [ebp - 0x2a0]
call dword [sym.imp.USER32.dll_DrawTextW]
push edi
mov edi, dword [ebp - 0x2a0]
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
push edi
push dword [esi + 8]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov edx, dword [ebp - 0x220]
mov ecx, 0x4e1a9c
mov eax, dword [ebp - 0x280]
sub eax, dword [ebp - 0x288]
sub edx, dword [ebp - 0x228]
cmp eax, edx
mov eax, dword [ebp - 0x2a8]
cmovg ecx, dword [ebp - 0x2ac]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x298]
jmp 0x4788a5
mov dword [eax], 0x4e1a9c
mov edi, dword [esi + 0xc]
mov edx, dword [ecx]
cmp edx, edi
je 0x4788b7
cmp edx, dword [esi + 0x14]
jne case.0x478cc0.35
mov eax, dword [ecx + 8]
cmp eax, 0xfffffec0
ja 0x478b26
je 0x47898a
cmp eax, 0xfffffebb
je 0x478910
cmp eax, 0xfffffebe
je 0x4788e9
cmp eax, 0xfffffebf
je 0x47897e
jmp case.0x478cc0.35
cmp edx, edi
jne 0x4788f1
xor eax, eax
jmp 0x4788f5
mov eax, dword [ecx + 0xc]
inc eax
push 0
push 0
push 0
push eax
push 0x7d3
push dword [esi + 8]
mov ecx, esi
call fcn.00472ed0
jmp case.0x478cc0.35
xor eax, eax
cmp edx, dword [esi + 0x14]
sete al
add eax, dword [ecx + 0xc]
mov dword [ebp - 0x2a8], eax
jne 0x47894f
cmp byte [esi + 0x9c], 0
je 0x47894f
mov edi, dword [esi + 0x98]
mov ecx, esi
push edi
push eax
call fcn.004776e0
push edi
mov ecx, esi
call fcn.00476ff0
mov ecx, esi
call fcn.00477180
jmp case.0x478cc0.35
push eax
mov ecx, esi
call fcn.00474120
mov edi, dword [ebp - 0x2a8]
mov ecx, esi
push eax
push edi
mov dword [ebp - 0x2b8], eax
call fcn.004776e0
test edi, edi
jne 0x47897e
mov edi, dword [ebp - 0x2b8]
mov ecx, esi
push edi
call fcn.00476ff0
mov ecx, esi
call fcn.00477180
jmp case.0x478cc0.35
mov eax, dword [ecx + 0x14]
test byte [eax], 1
je case.0x478cc0.35
mov ecx, dword [ecx + 0xc]
test ecx, ecx
jne 0x4789ac
mov eax, dword [eax + 4]
cmp eax, dword [esi + 0x94]
jl case.0x47970e.8
xor eax, eax
cmp edx, dword [esi + 0x14]
sete al
add eax, ecx
lea ecx, [ebp - 0x288]
push ecx
push eax
mov ecx, esi
mov dword [ebp - 0x2a8], eax
call fcn.00474500
lea eax, [ebp - 0x248]
push eax
push dword [esi + 8]
call dword [sym.imp.USER32.dll_GetClientRect]
mov edi, dword [ebp - 0x298]
mov ecx, dword [ebp - 0x280]
mov eax, dword [edi + 0x14]
mov eax, dword [eax + 4]
sub eax, ecx
add eax, dword [ebp - 0x288]
mov dword [ebp - 0x2a0], eax
je case.default.0x47970e
mov eax, dword [ebp - 0x27c]
mov edi, dword [ebp - 0x2a8]
mov dword [ebp - 0x224], eax
mov eax, dword [ebp - 0x240]
mov dword [ebp - 0x220], eax
mov eax, dword [ebp - 0x23c]
mov dword [ebp - 0x228], ecx
mov dword [ebp - 0x21c], eax
test edi, edi
jne 0x478a3e
lea eax, [ecx - 1]
mov dword [ebp - 0x228], eax
push 0xfffffffffffffff0
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_GetWindowLongW]
shr eax, 0x1c
test al, 1
je 0x478a5e
push 2
call dword [ebp - 0x2b0]
sub dword [ebp - 0x220], eax
push 2
push 0
push 0
push 0
lea eax, [ebp - 0x228]
push eax
push 0
push dword [ebp - 0x2a0]
push dword [esi + 8]
call dword [sym.imp.USER32.dll_ScrollWindowEx]
test edi, edi
jne 0x478a8b
cmp byte [esi + 0x9c], 0
jne 0x478ad1
mov eax, dword [ebp - 0x288]
mov dword [ebp - 0x238], eax
mov eax, dword [ebp - 0x27c]
mov dword [ebp - 0x234], eax
mov eax, dword [ebp - 0x280]
mov dword [ebp - 0x230], eax
mov eax, dword [ebp - 0x23c]
mov dword [ebp - 0x22c], eax
lea eax, [ebp - 0x238]
push 0
push eax
push dword [esi + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
test edi, edi
jne 0x478b0f
mov eax, dword [ebp - 0x280]
mov ecx, esi
add eax, dword [ebp - 0x2a0]
push eax
call fcn.00476ff0
mov ecx, esi
call fcn.00477180
mov ecx, esi
call fcn.00477380
push dword [esi + 0x14]
mov edi, dword [sym.imp.USER32.dll_UpdateWindow]
call edi
push dword [esi + 0x20]
call edi
push dword [esi + 0x24]
call edi
xor eax, eax
jmp 0x479afc
mov ecx, esi
call fcn.00477180
push dword [esi + 0x24]
call dword [sym.imp.USER32.dll_UpdateWindow]
xor eax, eax
jmp 0x479afc
cmp eax, 0xfffffec9
je 0x478b4c
cmp eax, 0xfffffffb
jne case.0x478cc0.35
push 0
push 0
push 0
push 0
push eax
push edx
mov ecx, esi
call fcn.00472ed0
jmp case.0x478cc0.35
push 0
push 0
push dword [esi + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
jmp 0x479afc
mov ecx, esi
call fcn.004727c0
jmp case.0x478cc0.35
mov eax, dword [esi + 0x38]
test eax, eax
je 0x478b80
cmp byte [esi + 0x3c], 0
jne 0x478b80
push eax
call dword [sym.imp.COMCTL32.dll_ImageList_Destroy]
movzx eax, word [0x51c808]
push 0
push eax
push dword [ebp - 0x2a4]
call dword [sym.imp.USER32.dll_SetPropW]
mov dword [esi], vtable.CTreeList.0
mov edi, dword [esi + 0xcc]
test edi, edi
je 0x478bf0
or eax, 0xffffffff
lock xadd dword [edi + 8], eax
dec eax
jne 0x478be6
mov eax, dword [edi]
test eax, eax
je 0x478bc4
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [edi], 0
mov eax, dword [edi + 4]
test eax, eax
je 0x478bdb
push eax
call fcn.004a447f
add esp, 4
mov dword [edi + 4], 0
push 0xc
push edi
call fcn.004a4471
add esp, 8
mov dword [esi + 0xcc], 0
lea ecx, [esi + 0x40]
call fcn.004724f0
mov eax, dword [esi + 4]
mov dword [ebp - 4], 5
mov dword [esi], vtable.CThemedWindow.0
test eax, eax
je 0x478c13
push eax
call dword [0x51c1fc]
push 0xd8
push esi
call fcn.004a4471
mov edi, dword [ebp - 0x298]
add esp, 8
push edi
push dword [ebp - 0x2b4]
push dword [ebp + 0xc]
push dword [ebp - 0x2a4]
call dword [sym.imp.USER32.dll_DefWindowProcW]
jmp 0x479afc
cmp byte [esi + 0xbc], 0
mov ecx, 0xffffff65
mov eax, 0x7d7
cmovne eax, ecx
mov dword [ebp - 0x244], eax
mov eax, dword [ebp - 0x2a4]
push 0xfffffffffffffff4
push eax
mov dword [ebp - 0x24c], eax
call dword [sym.imp.USER32.dll_GetWindowLongW]
mov ecx, dword [ebp - 0x2b4]
mov word [ebp - 0x240], cx
lea ecx, [ebp - 0x24c]
push ecx
push eax
push 0x4e
push dword [ebp - 0x2a4]
mov dword [ebp - 0x248], eax
mov dword [ebp - 0x23e], 0
call dword [sym.imp.USER32.dll_GetParent]
push eax
call edi
mov eax, dword [ebp - 0x2b4]
add eax, 0xffffffdf
cmp eax, 0x4a
ja case.0x478cc0.35
movzx eax, byte [eax + 0x479c04]
jmp dword [eax*4 + 0x479bf0]
push 0xa2
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
je case.0x478cc0.35
xor edi, edi
push edi
push edi
push 0x1200
push dword [esi + 0x14]
call dword [sym.imp.USER32.dll_SendMessageW]
inc eax
test eax, eax
jle 0x478d8e
test edi, edi
jne 0x478d2b
cmp byte [esi + 0x9c], 0
je 0x478d2b
mov eax, dword [esi + 0x98]
mov dword [ebp - 0x264], eax
lea eax, [ebp - 0x268]
push eax
push edi
push 0x120c
push dword [esi + 0xc]
mov dword [ebp - 0x268], 1
jmp 0x478d6c
push edi
mov ecx, esi
call fcn.00474120
mov dword [ebp - 0x268], 1
mov dword [ebp - 0x264], eax
test edi, edi
jne 0x478d59
lea eax, [ebp - 0x268]
push eax
push edi
push 0x120c
push dword [esi + 0xc]
jmp 0x478d6c
lea eax, [ebp - 0x268]
push eax
lea eax, [edi - 1]
push eax
push 0x120c
push dword [esi + 0x14]
call dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 0
push 0x1200
push dword [esi + 0x14]
inc edi
call dword [sym.imp.USER32.dll_SendMessageW]
inc eax
cmp edi, eax
jl 0x478cf6
mov ecx, esi
call fcn.00477180
jmp case.0x478cc0.35
mov ecx, dword [esi + 0x7c]
test ecx, ecx
je case.0x478cc0.35
cmp dword [ebp - 0x2b4], 0x28
jne 0x478db5
call fcn.004769e0
jmp 0x478dba
call fcn.00476d20
mov dword [ebp - 0x2a0], eax
test eax, eax
je case.0x478cc0.35
push eax
mov ecx, esi
call fcn.004740a0
push dword [ebp - 0x2a0]
mov ecx, esi
mov edi, eax
call fcn.00477660
push edi
mov ecx, esi
call fcn.00473ec0
jmp case.0x478cc0.35
mov edi, dword [esi + 0x7c]
mov dword [ebp - 0x29c], edi
test edi, edi
je case.0x478cc0.35
lea eax, [ebp - 0x254]
mov dword [ebp - 0x254], 0x1c
push eax
push 2
push dword [esi + 0x1c]
xorps xmm0, xmm0
mov dword [ebp - 0x23c], 0
movups xmmword [ebp - 0x24c], xmm0
mov dword [ebp - 0x250], 2
call dword [sym.imp.USER32.dll_GetScrollInfo]
mov eax, dword [ebp - 0x244]
xor edx, edx
mov dword [ebp - 0x2a0], edx
test eax, eax
je 0x478eb8
nop dword [eax]
cmp dword [ebp - 0x2b4], 0x22
jne 0x478eec
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x478e81
mov eax, dword [edi + 0x20]
shr eax, 4
test al, 1
je 0x478e81
mov eax, dword [ebp - 0x244]
mov edi, ecx
mov dword [ebp - 0x29c], edi
jmp 0x478f3e
mov eax, dword [edi + 0x10]
test eax, eax
je 0x478e9b
mov edi, eax
mov eax, dword [ebp - 0x244]
mov dword [ebp - 0x29c], edi
jmp 0x478f3e
mov eax, dword [edi + 8]
test eax, eax
je 0x478eb0
mov ecx, dword [eax + 0x10]
test ecx, ecx
jne 0x478edc
mov eax, dword [eax + 8]
test eax, eax
jne 0x478ea2
test edi, edi
je case.0x478cc0.35
push edi
mov ecx, esi
call fcn.004740a0
push dword [ebp - 0x29c]
mov ecx, esi
mov edi, eax
call fcn.00477660
push edi
mov ecx, esi
call fcn.00473ec0
jmp case.0x478cc0.35
mov eax, dword [ebp - 0x244]
mov edi, ecx
mov dword [ebp - 0x29c], ecx
jmp 0x478f3e
mov ecx, dword [edi + 0xc]
test ecx, ecx
je 0x478f21
mov edx, dword [ecx + 0x18]
test edx, edx
je 0x478f19
nop word [eax + eax]
mov eax, dword [ecx + 0x20]
shr eax, 4
test al, 1
je 0x478f13
mov ecx, edx
mov edx, dword [ecx + 0x18]
test edx, edx
jne 0x478f00
mov eax, dword [ebp - 0x244]
mov edx, dword [ebp - 0x2a0]
jmp 0x478f2e
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x478eb0
cmp dword [ecx + 4], 0
je 0x478eb0
test ecx, ecx
je 0x478eb0
mov edi, ecx
mov dword [ebp - 0x29c], edi
inc edx
mov dword [ebp - 0x2a0], edx
cmp edx, eax
jb 0x478e50
jmp 0x478eb8
mov edi, dword [esi + 0x7c]
test edi, edi
je case.0x478cc0.35
cmp dword [ebp - 0x2b4], 0x27
mov ecx, dword [edi + 0x20]
jne 0x478ff9
mov eax, ecx
shr eax, 6
test al, 1
je case.0x478cc0.35
shr ecx, 4
test cl, 1
mov ecx, esi
push 0
jne 0x478fe2
push 0
push edi
push 0
push 0x7d1
push dword [esi + 8]
call fcn.00472ed0
test eax, eax
jne case.0x478cc0.35
or dword [edi + 0x20], 0x30
mov ecx, edi
call fcn.00474a20
mov dword [ebp - 0x2a8], eax
test eax, eax
je case.0x478cc0.35
push edi
mov ecx, esi
call fcn.004740a0
mov edi, eax
mov ecx, esi
push edi
push edi
call fcn.00476dd0
push dword [ebp - 0x2a8]
lea eax, [edi + 1]
mov ecx, esi
push eax
call fcn.004758b0
jmp case.0x478cc0.35
push 0x28
push 0x100
push dword [ebp - 0x2a4]
call fcn.00477f70
jmp 0x479afc
and ecx, 0x50
cmp cl, 0x50
jne 0x479010
push 0
push edi
mov ecx, esi
call fcn.00473f90
jmp case.0x478cc0.35
mov ecx, dword [edi + 8]
mov dword [ebp - 0x2a8], ecx
test ecx, ecx
je case.0x478cc0.35
lea eax, [esi + 0x40]
cmp ecx, eax
je case.0x478cc0.35
push edi
mov ecx, esi
call fcn.004740a0
push dword [ebp - 0x2a8]
mov ecx, esi
mov edi, eax
call fcn.00477660
push edi
mov ecx, esi
call fcn.00473ec0
jmp case.0x478cc0.35
cmp eax, 0x20a
ja 0x4799ca
je 0x479978
cmp eax, 0x115
ja 0x4797cb
je 0x4796c2
sub eax, 0x102
je 0x47920e
sub eax, 0x11
je 0x4791cb
sub eax, 1
jne case.0x478cc0.35
test ecx, ecx
je case.0x478cc0.35
mov dword [ebp - 0x23c], eax
xorps xmm0, xmm0
lea eax, [ebp - 0x254]
mov dword [ebp - 0x254], 0x1c
push eax
push 2
push ecx
movups xmmword [ebp - 0x24c], xmm0
mov dword [ebp - 0x250], 7
call dword [sym.imp.USER32.dll_GetScrollInfo]
mov eax, dword [ebp - 0x2b4]
movzx ecx, ax
cmp ecx, 8
ja case.default.0x47970e
jmp dword [ecx*4 + 0x479c50]
mov edi, dword [ebp - 0x298]
mov ecx, esi
shr eax, 0x10
push eax
push edi
mov dword [ebp - 0x240], eax
call fcn.004752d0
jmp 0x479ae2
mov eax, dword [ebp - 0x248]
mov ecx, esi
mov edi, dword [ebp - 0x298]
push eax
push edi
mov dword [ebp - 0x240], eax
call fcn.004752d0
jmp 0x479ae2
mov edi, dword [ebp - 0x298]
xor eax, eax
push eax
push edi
mov ecx, esi
mov dword [ebp - 0x240], eax
call fcn.004752d0
jmp 0x479ae2
mov eax, dword [ebp - 0x240]
mov ecx, esi
mov edi, dword [ebp - 0x298]
inc eax
push eax
push edi
mov dword [ebp - 0x240], eax
call fcn.004752d0
jmp 0x479ae2
mov eax, dword [ebp - 0x240]
mov ecx, esi
mov edi, dword [ebp - 0x298]
dec eax
push eax
push edi
mov dword [ebp - 0x240], eax
call fcn.004752d0
jmp 0x479ae2
mov eax, dword [ebp - 0x240]
mov ecx, esi
add eax, dword [ebp - 0x244]
mov edi, dword [ebp - 0x298]
push eax
push edi
mov dword [ebp - 0x240], eax
call fcn.004752d0
jmp 0x479ae2
mov eax, dword [ebp - 0x240]
mov ecx, esi
sub eax, dword [ebp - 0x244]
mov edi, dword [ebp - 0x298]
push eax
push edi
mov dword [ebp - 0x240], eax
call fcn.004752d0
jmp 0x479ae2
cmp edx, 0x64
jne case.0x478cc0.35
lea eax, [ebp - 0x230]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
push 1
lea eax, [ebp - 0x230]
push eax
push dword [ebp - 0x2a4]
push 0
call dword [sym.imp.USER32.dll_MapWindowPoints]
lea eax, [ebp - 0x230]
mov ecx, esi
push eax
push dword [esi + 0x2c]
call fcn.00477d80
jmp case.0x478cc0.35
cmp dword [esi + 0x5c], 0
je case.0x478cc0.35
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
mov dword [ebp - 0x22c], eax
sub ecx, dword [esi + 0xc8]
or eax, 0xffffffff
cmp ecx, 0x2ee
jbe 0x479306
mov edi, dword [esi + 0xcc]
test edi, edi
je 0x479265
cmp dword [edi + 4], 0
jne 0x479258
push dword [edi]
call fcn.004a5e80
mov dword [edi + 4], eax
or eax, 0xffffffff
cmp dword [edi + 4], 0x4e1490
je 0x479306
mov edi, dword [esi + 0xcc]
test edi, edi
je 0x4792b6
lock xadd dword [edi + 8], eax
dec eax
jne 0x4792ac
mov eax, dword [edi]
test eax, eax
je 0x47928a
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [edi], 0
mov eax, dword [edi + 4]
test eax, eax
je 0x4792a1
push eax
call fcn.004a447f
add esp, 4
mov dword [edi + 4], 0
push 0xc
push edi
call fcn.004a4471
add esp, 8
mov dword [esi + 0xcc], 0
push 0xc
call fcn.004a4441
mov edi, eax
add esp, 4
mov dword [ebp - 0x21c], edi
mov dword [ebp - 4], 0
test edi, edi
je 0x4792ef
push 0x4e1490
mov dword [edi + 4], 0
mov dword [edi + 8], 1
call fcn.004a5fa0
mov dword [edi], eax
jmp 0x4792f1
xor edi, edi
mov dword [ebp - 4], 0xffffffff
mov dword [esi + 0xcc], edi
test edi, edi
je 0x479b23
cmp dword [esi + 0x7c], 0
je 0x479498
push 0xc
call fcn.004a4441
mov edi, eax
mov dword [ebp - 0x2a0], eax
add esp, 4
mov dword [ebp - 0x21c], edi
mov dword [ebp - 4], 1
test edi, edi
je 0x47934f
push 0x4e1490
mov dword [edi + 4], 0
mov dword [edi + 8], 1
call fcn.004a5fa0
mov dword [edi], eax
jmp 0x479357
xor edi, edi
mov dword [ebp - 0x2a0], edi
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x29c], edi
test edi, edi
je 0x479b23
mov eax, dword [esi + 0xcc]
mov dword [ebp - 0x2a8], eax
cmp eax, edi
jne 0x47938f
lea ecx, [ebp - 0x29c]
call fcn.00403090
mov eax, dword [esi + 0x7c]
jmp 0x479487
test eax, eax
jne 0x4793b8
mov eax, dword [edi]
test eax, eax
je 0x47937c
push eax
mov eax, dword [sym.imp.OLEAUT32.dll_VariantInit]
call eax
test eax, eax
je 0x47937c
lea ecx, [ebp - 0x29c]
call fcn.00403090
mov eax, dword [esi + 0x7c]
jmp 0x47948e
push dword [eax]
mov eax, dword [sym.imp.OLEAUT32.dll_VariantInit]
call eax
push dword [edi]
mov dword [ebp - 0x2b0], eax
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, dword [ebp - 0x2a8]
mov ecx, eax
mov eax, dword [ebp - 0x2b0]
mov edi, eax
cmp eax, ecx
mov dword [ebp - 0x2b8], ecx
mov edx, dword [edx]
cmova edi, ecx
test edi, edi
je 0x47943d
mov eax, dword [ebp - 0x2a0]
mov eax, dword [eax]
sub eax, edx
mov dword [ebp - 0x2a8], eax
movzx ecx, word [edx + eax]
lea edx, [edx + 2]
mov eax, ecx
dec edi
mov dword [ebp - 0x2a0], eax
movzx eax, word [edx - 2]
mov esi, eax
mov dword [ebp - 0x21c], esi
mov esi, dword [ebp - 0x2ac]
cmp ax, cx
jne 0x479446
mov eax, dword [ebp - 0x2a8]
test edi, edi
jne 0x479400
mov ecx, dword [ebp - 0x2b8]
mov eax, dword [ebp - 0x2b0]
cmp eax, ecx
jae 0x47945c
or edi, 0xffffffff
jmp 0x47946f
mov eax, dword [ebp - 0x2a0]
mov ecx, dword [ebp - 0x21c]
movzx eax, ax
movzx edi, cx
sub edi, eax
jmp 0x47946f
xor eax, eax
cmp dword [ebp - 0x2b0], ecx
setne al
mov dword [ebp - 0x21c], eax
mov edi, eax
lea ecx, [ebp - 0x29c]
call fcn.00403090
mov eax, dword [esi + 0x7c]
mov dword [ebp - 0x29c], eax
test edi, edi
jne 0x479494
mov ecx, eax
call fcn.004769e0
mov dword [ebp - 0x29c], eax
test eax, eax
jne 0x4794a1
mov eax, dword [esi + 0x54]
mov dword [ebp - 0x29c], eax
mov eax, dword [ebp - 0x22c]
mov dword [esi + 0xc8], eax
mov eax, dword [ebp - 0x2b4]
mov dword [ebp - 0x2c0], 0
push 0xc
mov word [ebp - 0x2c0], ax
call fcn.004a4441
mov edi, eax
add esp, 4
mov dword [ebp - 0x22c], edi
mov dword [ebp - 4], 2
test edi, edi
je 0x479508
lea eax, [ebp - 0x2c0]
mov dword [edi + 4], 0
push eax
mov dword [edi + 8], 1
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [edi], eax
test eax, eax
je 0x479b19
jmp 0x47950a
xor edi, edi
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x2ac], edi
test edi, edi
je 0x479b23
push 0xc
mov dword [ebp - 4], 3
call fcn.004a4441
mov ecx, eax
add esp, 4
mov dword [ebp - 0x22c], ecx
mov byte [ebp - 4], 4
test ecx, ecx
je 0x47955d
lea eax, [ebp - 0x2ac]
push eax
lea eax, [esi + 0xcc]
push eax
call fcn.00422850
mov ecx, eax
mov dword [ebp - 0x2a0], eax
jmp 0x479565
xor ecx, ecx
mov dword [ebp - 0x2a0], ecx
mov byte [ebp - 4], 3
test ecx, ecx
je 0x479b2d
mov edi, dword [esi + 0xcc]
lea eax, [esi + 0xcc]
test edi, edi
je 0x4795d3
or edx, 0xffffffff
lock xadd dword [edi + 8], edx
dec edx
jne 0x4795cd
mov eax, dword [edi]
test eax, eax
je 0x47959f
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [edi], 0
mov eax, dword [edi + 4]
test eax, eax
je 0x4795b6
push eax
call fcn.004a447f
add esp, 4
mov dword [edi + 4], 0
push 0xc
push edi
call fcn.004a4471
mov ecx, dword [ebp - 0x2a0]
lea eax, [esi + 0xcc]
add esp, 8
mov dword [eax], 0
mov dword [eax], ecx
lea ecx, [ebp - 0x2ac]
mov dword [ebp - 4], 0xffffffff
call fcn.00403090
mov edi, dword [ebp - 0x29c]
nop dword [eax]
mov dword [ebp - 0x22c], 0x104
lea edx, [ebp - 0x22c]
mov ecx, dword [edi + 4]
push edx
lea edx, [ebp - 0x218]
push edx
mov eax, dword [ecx]
push 0
push edi
mov eax, dword [eax + 8]
call eax
mov ecx, dword [esi + 0xcc]
mov dword [ebp - 0x21c], eax
test ecx, ecx
je 0x479644
mov edx, dword [ecx]
test edx, edx
je 0x47963a
push edx
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov ecx, dword [esi + 0xcc]
jmp 0x47963c
xor eax, eax
test ecx, ecx
je 0x479646
mov ecx, dword [ecx]
jmp 0x479648
xor eax, eax
xor ecx, ecx
push eax
push ecx
push dword [ebp - 0x21c]
call fcn.004b8550
add esp, 0xc
test eax, eax
je 0x4796a5
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x479671
mov eax, dword [edi + 0x20]
shr eax, 4
test al, 1
je 0x479671
mov edi, ecx
jmp 0x479694
mov eax, dword [edi + 0x10]
test eax, eax
je 0x47967c
mov edi, eax
jmp 0x479694
mov eax, dword [edi + 8]
test eax, eax
je 0x479691
mov edi, dword [eax + 0x10]
test edi, edi
jne 0x479694
mov eax, dword [eax + 8]
test eax, eax
jne 0x479683
mov edi, dword [esi + 0x54]
cmp edi, dword [ebp - 0x29c]
jne 0x4795f0
jmp case.0x478cc0.35
push edi
mov ecx, esi
call fcn.00477660
push edi
mov ecx, esi
call fcn.004740a0
push eax
mov ecx, esi
call fcn.00473ec0
jmp case.0x478cc0.35
lea eax, [ebp - 0x254]
mov dword [ebp - 0x254], 0x1c
push eax
push 2
push dword [esi + 0x1c]
xorps xmm0, xmm0
mov dword [ebp - 0x23c], 0
movups xmmword [ebp - 0x24c], xmm0
mov dword [ebp - 0x250], 7
call dword [sym.imp.USER32.dll_GetScrollInfo]
mov eax, dword [ebp - 0x2b4]
movzx ecx, ax
cmp ecx, 8
ja case.default.0x47970e
jmp dword [ecx*4 + 0x479c74]
shr eax, 0x10
mov ecx, esi
push eax
mov dword [ebp - 0x240], eax
call fcn.00477f10
jmp case.0x478cc0.35
mov eax, dword [ebp - 0x248]
mov ecx, esi
push eax
mov dword [ebp - 0x240], eax
call fcn.00477f10
jmp case.0x478cc0.35
xor eax, eax
mov ecx, esi
push eax
mov dword [ebp - 0x240], eax
call fcn.00477f10
jmp case.0x478cc0.35
mov eax, dword [ebp - 0x240]
mov ecx, esi
inc eax
push eax
mov dword [ebp - 0x240], eax
call fcn.00477f10
jmp case.0x478cc0.35
mov eax, dword [ebp - 0x240]
mov ecx, esi
dec eax
push eax
mov dword [ebp - 0x240], eax
call fcn.00477f10
jmp case.0x478cc0.35
mov eax, dword [ebp - 0x240]
mov ecx, esi
add eax, dword [ebp - 0x244]
push eax
mov dword [ebp - 0x240], eax
call fcn.00477f10
jmp case.0x478cc0.35
mov eax, dword [ebp - 0x240]
mov ecx, esi
sub eax, dword [ebp - 0x244]
push eax
mov dword [ebp - 0x240], eax
call fcn.00477f10
jmp case.0x478cc0.35
sub eax, 0x201
je 0x4780c5
sub eax, 2
je 0x4797e4
sub eax, 1
jne case.0x478cc0.35
mov eax, dword [ebp - 0x298]
lea edx, [ebp - 0x2a0]
push edx
lea edx, [ebp - 0x2ac]
shr eax, 0x10
push edx
lea edx, [ebp - 0x22c]
cwde
push edx
movsx ecx, cx
push eax
push ecx
mov ecx, esi
mov dword [ebp - 0x22c], 0
mov dword [ebp - 0x2ac], 0
mov dword [ebp - 0x2a0], 0
call fcn.00474da0
test al, 0xe0
je case.0x478cc0.35
mov edi, dword [ebp - 0x2a0]
mov ecx, esi
push edi
call fcn.00477660
push 0
xor eax, eax
mov ecx, esi
cmp dword [ebp + 0xc], 0x203
push 0
push edi
push dword [ebp - 0x2ac]
sete al
lea eax, [eax*2 - 5]
push eax
push dword [esi + 8]
call fcn.00472ed0
jmp case.0x478cc0.35
push 0x7d2
push eax
call fcn.00472ed0
test eax, eax
jne case.0x478cc0.35
mov ecx, edi
call fcn.00474a20
and dword [edi + 0x20], 0xffffffef
mov dword [ebp - 0x2b0], eax
test eax, eax
je case.0x478cc0.35
mov ecx, dword [esi + 0x54]
xor eax, eax
mov dword [ebp - 0x29c], eax
test ecx, ecx
je 0x4798fe
nop dword [eax]
cmp ecx, edi
je 0x479907
mov edx, dword [ecx + 0x14]
inc eax
mov dword [ebp - 0x29c], eax
test edx, edx
je 0x4798d6
mov eax, dword [ecx + 0x20]
shr eax, 4
test al, 1
je 0x4798d6
mov ecx, edx
mov eax, dword [ebp - 0x29c]
jmp 0x4798b0
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x4798e7
mov ecx, eax
mov eax, dword [ebp - 0x29c]
jmp 0x4798b0
mov eax, dword [ecx + 8]
test eax, eax
je 0x4798fe
nop
mov ecx, dword [eax + 0x10]
test ecx, ecx
jne 0x4798ce
mov eax, dword [eax + 8]
test eax, eax
jne 0x4798f0
or eax, 0xffffffff
mov dword [ebp - 0x29c], eax
push eax
push eax
mov ecx, esi
call fcn.00476dd0
mov ecx, dword [ebp - 0x29c]
inc ecx
cmp byte [ebp - 0x2b9], 0
je 0x479933
push dword [ebp - 0x2b0]
push ecx
mov ecx, esi
call fcn.004758b0
jmp case.0x478cc0.35
mov eax, dword [ebp - 0x2b0]
neg eax
push eax
push ecx
mov ecx, esi
call fcn.004758b0
mov eax, dword [esi + 0x7c]
test eax, eax
je case.0x478cc0.35
nop
cmp eax, edi
je 0x47996b
mov eax, dword [eax + 8]
test eax, eax
jne 0x479950
jmp case.0x478cc0.35
test eax, 0x1e0
je case.0x478cc0.35
push edi
mov ecx, esi
call fcn.00477660
jmp case.0x478cc0.35
mov eax, edx
shr eax, 0x10
movsx edi, ax
add edi, dword [esi + 0x8c]
mov eax, edi
mov dword [esi + 0x8c], edi
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x28
jl case.0x478cc0.35
mov eax, 0x66666667
imul edi
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea eax, [ecx + ecx*4]
neg ecx
shl eax, 3
sub edi, eax
push ecx
mov ecx, esi
mov dword [esi + 0x8c], edi
call fcn.00477e00
jmp case.0x478cc0.35
lea edi, [eax - 0x2000]
cmp edi, 5
ja case.default.0x4799d9
jmp dword [edi*4 + 0x479c98]
mov eax, dword [edx + 0x20]
test ecx, ecx
je 0x479a00
or eax, 0x40
cmp dword [edx + 0x1c], 0
mov dword [edx + 0x20], eax
jne case.default.0x47970e
and eax, 0xffffffef
mov dword [edx + 0x20], eax
xor eax, eax
jmp 0x479afc
and eax, 0xffffffbf
mov dword [edx + 0x20], eax
xor eax, eax
jmp 0x479afc
test ecx, ecx
mov ecx, esi
setne al
movzx eax, al
push eax
push edx
call fcn.00473f90
movzx eax, al
jmp 0x479afc
mov eax, dword [edx + 0x1c]
jmp 0x479afc
push edx
mov ecx, esi
call fcn.00476db0
xor eax, eax
jmp 0x479afc
mov eax, dword [ecx + 8]
mov edi, dword [ecx + 4]
mov dword [ebp - 0x21c], eax
mov eax, dword [ecx]
push 8
mov dword [ebp - 0x2a8], eax
call fcn.004a4441
add esp, 4
mov dword [ebp - 0x22c], eax
test eax, eax
je 0x479a70
mov dword [eax], vtable.CListViewData.0
mov dword [eax + 4], edi
jmp 0x479a72
xor eax, eax
push dword [ebp - 0x21c]
mov ecx, esi
push 0x475b10
push eax
push dword [ebp - 0x2a8]
call fcn.00475790
jmp 0x479afc
push edx
mov ecx, esi
call fcn.004740a0
jmp 0x479afc
cmp eax, 0x31a
jne case.0x478cc0.35
mov eax, dword [esi + 4]
test eax, eax
je 0x479aac
push eax
call dword [0x51c1fc]
mov dword [esi + 4], 0
mov eax, dword [0x51c1f0]
test eax, eax
je case.0x478cc0.35
call eax
test eax, eax
je case.0x478cc0.35
mov eax, dword [esi]
mov ecx, esi
mov edi, dword [0x51c1f4]
mov eax, dword [eax]
call eax
push eax
push dword [ebp - 0x2a4]
call edi
mov dword [esi + 4], eax
mov edi, dword [ebp - 0x298]
mov ecx, dword [ebp - 0x2b4]
mov eax, dword [esi]
push edi
push ecx
push dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, esi
push dword [ebp - 0x2a4]
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004a4433
mov esp, ebp
pop ebp
ret 0x10
push 0x8007000e
call fcn.004a5e60
push 0x8007000e
call fcn.004a5e60
push 0x8007000e
call fcn.004a5e60
nop
pushal
mov eax, dword [edi]
movsb byte es:[edi], byte [esi]
test dword [edi], eax
or al, 0x85
inc edi
add byte [ebx + 0x24004783], dl
test dword [edi], eax
xlatb
xchg byte [edi], al
rol dword [ebx - 0x7c1dffb9], 1
inc edi
add byte [0x6c004786], dl
mov eax, dword [edi]
mov eax, dword [ebp - 0x6523ffb9]
inc edi
add byte [eax], al
or ecx, dword [ebx]
add dword [ebx], ecx
add al, byte [edx]
or ecx, dword [ebx]
add ecx, dword [ebx]
or ecx, dword [ebx]
add al, 11
or ecx, dword [ebx]
or eax, dword [185273099]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or eax, dword [esi]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or eax, dword [edi]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [eax]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ecx, dword [ecx]
or ecx, dword [ebx]
or ecx, dword [ebx]
or ah, byte [esi - 112]
in al, dx
lea eax, [edi]
push edx
pop dword [edi]
lcall 0x478c, 0xc700478d
add ah, bl
lcall 0x404, 0x47
add dword [edx], eax
add dword [edx], eax
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add edx, dword [eax + case.0x4790dd.0]
cmp eax, -1526708335
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 3
nop
pop esi
xchg ecx, eax
inc edi
add byte [0xa5004791], bh
xchg ecx, eax
inc edi
add byte [edi - 0x6f], bh
inc edi
add ah, ah
nop
inc edi
add ah, ah
nop
inc edi
add byte [ecx], ah
xchg ecx, eax
inc edi
add byte [ecx], al
xchg ecx, eax
inc edi
add bh, dl
xchg byte [edi], al
jae 0x479c0d
inc edi
add byte [ecx - 0x69], bl
inc edi
add byte [edi + edx*4 - 0x6872ffb9], ch
inc edi
add byte [0x15004797], dl
xchg edi, eax
inc edi
add byte [edi + edx*4 + 0x47], al
add byte [ebx], ch
xchg edi, eax
inc edi
add bh, dl
xchg byte [edi], al
loopne 0x479c33
inc edi
add byte [0x2600479a], cl
lcall 0x47, 0x9a2e0047
cmp eax, 0x8d00479a
invalid
inc edi
invalid