Function at 0x45cc20
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xaa0
mov eax, dword [ebp + 0x1c]
push ebx
push esi
push edi
test eax, eax
mov ebx, ecx
mov dword [ebp - 4], 1
jne 0x45d660
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
cmp eax, 0x10
jne 0x45cc67
lea eax, [ebp - 4]
mov dword [ebp - 4], 1
push eax
push edi
push esi
push 0x10
call fcn.004644c0
jmp 0x45d4cb
cmp eax, 1
jne 0x45cc82
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], eax
call fcn.0045eec0
jmp 0x45d4cb
cmp eax, 6
jne 0x45cca1
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.004645b0
jmp 0x45d4cb
cmp eax, 0x230
jne 0x45ccc2
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.00462850
jmp 0x45d4cb
cmp eax, 0x4e0
jne 0x45cce3
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.00462af0
jmp 0x45d4cb
cmp eax, 0xd20
jne 0x45cd04
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.00462aa0
jmp 0x45d4cb
cmp eax, 0xd22
jne 0x45cd25
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.00462880
jmp 0x45d4cb
cmp eax, 0xd1e
jne 0x45cd46
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.00462cd0
jmp 0x45d4cb
cmp eax, 0x112
jne 0x45cd67
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.00463720
jmp 0x45d4cb
cmp eax, 0x111
jne 0x45ce7e
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.00462ec0
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
test eax, eax
jne 0x45d497
cmp si, 0xe141
jne 0x45cddf
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe141
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
mov dword [ebp + 0x1c], eax
call fcn.004619d0
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
test eax, eax
je 0x45ce09
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp si, 0xe100
jne 0x45ce2a
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe100
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.004619f0
jmp 0x45d48b
mov eax, dword [ebp + 0x1c]
lea edx, [ebp - 4]
push edx
push edi
push 0xe141
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45d48b
cmp si, 0x802f
jne 0x45ce54
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x802f
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461fe0
jmp 0x45d48b
cmp si, 0xb356
jne 0x45ce9f
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xb356
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461fc0
jmp 0x45d48b
cmp eax, 0x113
jne 0x45ceec
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.00465040
jmp 0x45d4cb
cmp si, 0x8503
jne 0x45cf3a
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x8503
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00464710
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
test eax, eax
je 0x45d4eb
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 0x4e
jne 0x45d22e
cmp dword [edi + 8], 0xfffffd3a
jne 0x45d4ae
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
mov dword [ebp - 4], 1
call fcn.0045e870
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
test eax, eax
je 0x45d4ab
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp si, 0xe102
jne 0x45cf64
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe102
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x8006
jne 0x45cf8e
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x8006
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0xe151
jne 0x45cfb8
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe151
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0xe150
jne 0x45cfe2
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe150
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x8031
jne 0x45d00c
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x8031
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x8032
jne 0x45d036
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x8032
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x808f
jne 0x45d060
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x808f
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x8090
jne 0x45d08a
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x8090
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x800d
jne 0x45d0b4
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x800d
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x800c
jne 0x45d0de
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x800c
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x800e
jne 0x45d108
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x800e
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x800a
jne 0x45d132
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x800a
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x8012
jne 0x45d15c
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x8012
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00421ff0
jmp 0x45cec8
cmp si, 0x800f
jne 0x45d186
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x800f
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x852c
jne 0x45d1b0
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x852c
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0x8593
jne 0x45d1da
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x8593
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0xe146
jne 0x45d204
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe146
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp si, 0xa7da
jne 0x45d253
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xa7da
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00460e20
jmp 0x45cec8
cmp eax, 0x117
jne 0x45d671
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
push eax
mov dword [ebp - 4], 1
call fcn.00462d10
jmp 0x45d4cb
cmp si, 0xe800
jne 0x45d27d
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe800
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461a30
jmp 0x45d48b
cmp si, 0xe801
jne 0x45d2a7
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe801
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461d00
jmp 0x45d48b
cmp si, 0xe140
jne 0x45d2d1
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe140
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461df0
jmp 0x45d48b
cmp si, 0xe132
jne 0x45d2fb
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe132
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461f10
jmp 0x45d48b
cmp si, 0xe133
jne 0x45d325
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe133
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461f30
jmp 0x45d48b
cmp si, 0xe134
jne 0x45d34f
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe134
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461f30
jmp 0x45d48b
cmp si, 0xe131
jne 0x45d379
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xe131
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461f80
jmp 0x45d48b
cmp si, 0xb28f
jne 0x45d3a3
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0xb28f
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00461fa0
jmp 0x45d48b
cmp si, 0x80b5
jne 0x45d3cd
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x80b5
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00463800
jmp 0x45d48b
cmp si, 0x80b6
jne 0x45d3f7
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x80b6
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00463800
jmp 0x45d48b
cmp si, 0x80b7
jne 0x45d41e
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x80b7
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00463800
jmp 0x45d48b
cmp si, 0xab7c
jb 0x45d466
cmp si, 0xaba8
ja 0x45d466
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push esi
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00462800
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
test eax, eax
je 0x45d466
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp si, 0x805d
jne 0x45d4eb
lea edx, [ebp - 4]
mov eax, esi
push edx
push edi
shr eax, 0x10
push 0x805d
push eax
mov ecx, ebx
mov dword [ebp - 4], 1
call fcn.00464430
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
test eax, eax
je 0x45d4eb
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [ebp + 0xc]
cmp dword [edi + 8], 0xfffffdee
jne 0x45d513
lea edx, [ebp - 4]
mov ecx, ebx
push edx
push edi
push esi
mov dword [ebp - 4], 1
call fcn.00464520
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
test eax, eax
je 0x45d510
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov edx, dword [ebx + 8]
push 0
push 0
push 0x229
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
test eax, eax
je 0x45d510
push edi
push esi
push 0x111
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [ebp + 0xc]
cmp eax, 0x117
jne 0x45d671
test esi, esi
jne 0x45d52c
mov eax, 1
jmp 0x45d65b
mov edi, dword [ebx + 0x54]
test edi, edi
mov dword [ebp + 0x14], edi
jne 0x45d540
mov eax, 1
jmp 0x45d65b
mov ebx, dword [ebx + 0x50]
mov dword [ebp + 0xc], ebx
mov ax, word [ebx]
cmp ax, 0xffff
je 0x45d659
test byte [ebx + 2], 1
je 0x45d63f
and eax, 0xffff
test byte [edi + 1], 0x40
mov ebx, eax
je 0x45d57a
push 0
push 0xffffffffffffffff
push esi
call dword [sym.imp.USER32.dll_SetMenuDefaultItem]
and word [edi], 0xbfff
mov ecx, 0xb
xor eax, eax
lea edi, [ebp - 0x84]
mov edx, 0x2c
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x84], edx
mov dword [ebp - 0x80], 1
mov dword [ebp - 0x74], ebx
mov ax, word [eax]
test ah, 1
je 0x45d5ad
or dword [ebp - 0x78], 3
test ah, 2
je 0x45d5b6
or dword [ebp - 0x78], 8
test ah, 0x10
je 0x45d5c4
mov ecx, dword [ebp - 0x78]
or ch, 0x10
mov dword [ebp - 0x78], ecx
test ah, 0x20
je 0x45d628
mov ecx, 0xb
xor eax, eax
lea edi, [ebp - 0xe8]
rep stosd dword es:[edi], eax
lea ecx, [ebp - 0xe8]
mov edi, 0x10
push ecx
push eax
push ebx
push esi
mov dword [ebp - 0xe8], edx
mov dword [ebp - 0xe4], edi
mov dword [ebp - 0xd8], ebx
call dword [sym.imp.USER32.dll_GetMenuItemInfoW]
test eax, eax
je 0x45d628
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 0x7c]
or edx, edi
mov dword [ebp - 0x80], edx
mov edx, dword [ebp - 0xe0]
and edx, 0xfffff7fb
or eax, edx
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x60], ecx
lea edx, [ebp - 0x84]
push edx
push 0
push ebx
push esi
call dword [sym.imp.USER32.dll_SetMenuItemInfoW]
mov edi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0xc]
mov ax, word [ebx + 4]
add ebx, 4
add edi, 8
cmp ax, 0xffff
mov dword [ebp + 0xc], ebx
mov dword [ebp + 0x14], edi
jne 0x45d553
xor eax, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
xor eax, eax
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 0x111
jne 0x45d700
mov al, byte [ebx + 0x5a]
xor edx, edx
test al, al
je 0x45d6d4
mov eax, esi
shr eax, 0x10
cmp eax, 1
jne 0x45d6d4
mov ecx, dword [ebx + 0x50]
mov ebx, dword [ebx + 0x54]
and esi, 0xffff
test ebx, ebx
je 0x45d6c1
mov ax, word [ecx]
cmp ax, 0xffff
je 0x45d6c1
and eax, 0xffff
cmp esi, eax
je 0x45d6f9
mov ax, word [ecx + 4]
add ecx, 4
add ebx, 8
cmp ax, 0xffff
jne 0x45d6a8
xor eax, eax
and eax, 0x100
cmp eax, 0x100
jne 0x45d6d4
mov edx, 1
mov ecx, dword [ebp + 0x18]
test edx, edx
mov dword [ecx], 0
je 0x45d660
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
xor eax, eax
mov ax, word [ebx]
jmp 0x45d6c3
cmp eax, 5
jne 0x45d730
cmp esi, 1
je 0x45d713
push 1
mov ecx, ebx
call fcn.00462000
mov edx, dword [ebp + 0x18]
mov eax, 1
mov dword [edx], 0
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 7
jne 0x45d75f
mov ecx, dword [ebx + 4]
push edi
push esi
push eax
mov eax, dword [ebx + 8]
push eax
push ecx
call dword [sym.imp.USER32.dll_DefFrameProcW]
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 0x230
jne 0x45d849
mov edi, dword [ebx + 0xc]
push edi
call dword [sym.imp.USER32.dll_GetMenuItemCount]
cmp eax, 0xffffffff
mov dword [ebp + 0x14], eax
jne 0x45d780
xor eax, eax
jmp 0x45d7f6
mov eax, dword [ebp + 0x14]
push 0x400
add eax, 0xfffffffe
push 0
push 0
push eax
push edi
call dword [sym.imp.USER32.dll_GetMenuStringW]
mov esi, eax
test esi, esi
je 0x45d7f6
lea eax, [esi + 1]
add eax, eax
add eax, 3
and al, 0xfc
call fcn.004c5440
mov ecx, esp
lea eax, [esi + 1]
push 0x400
push eax
mov dword [ebp + 0xc], ecx
push ecx
mov ecx, dword [ebp + 0x14]
lea eax, [ecx - 2]
push eax
push edi
call dword [sym.imp.USER32.dll_GetMenuStringW]
cmp eax, esi
je 0x45d7d1
xor eax, eax
jmp 0x45d7f6
mov edx, dword [ebp + 0xc]
push 0x4db498
push edx
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x45d7e8
xor eax, eax
jmp 0x45d7f6
mov eax, dword [ebp + 0x14]
add eax, 0xfffffffe
push eax
push edi
call dword [sym.imp.USER32.dll_GetSubMenu]
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebx + 8]
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push eax
push ecx
push 0x230
push edx
call esi
mov eax, dword [ebx + 8]
push 0
push 0
push 0x234
push eax
call esi
mov ecx, dword [ebx + 8]
push ecx
call dword [sym.imp.USER32.dll_GetParent]
push eax
call dword [sym.imp.USER32.dll_DrawMenuBar]
mov edx, dword [ebp + 0x18]
mov eax, 1
mov dword [edx], 0
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 0x4e
jne 0x45de5a
mov edi, dword [edi + 8]
cmp edi, 0xfffffcbe
jne 0x45d883
push 0
mov ecx, ebx
call fcn.00462000
mov eax, dword [ebp + 0x18]
mov dword [eax], 0
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp edi, 0xfffffcb7
jne 0x45e006
mov ecx, 0x13
xor eax, eax
lea edi, [ebp - 0x168]
mov dword [ebp - 0x8c], 1
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x16c], 0x50
mov dword [ebp - 0x168], 0x10
lea ecx, [ebp - 0x16c]
mov edx, dword [eax + 0xc]
mov eax, dword [eax]
push ecx
push edx
push 0x41c
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [ebp - 0x14c]
push 0
push 0
push 0x418
push eax
mov dword [ebp + 0x10], eax
call dword [sym.imp.USER32.dll_SendMessageW]
test eax, eax
mov dword [ebp - 0x14], eax
jle 0x45dbd4
mov edi, dword [ebp + 0x10]
push 0
push 0
push 0x52e
push edi
call dword [sym.imp.USER32.dll_SendMessageW]
test eax, eax
mov dword [ebp - 0x88], eax
mov dword [ebp + 0x1c], 0
setne byte [ebp - 0x18]
call dword [sym.imp.USER32.dll_CreatePopupMenu]
xor ecx, ecx
lea edx, [ebp - 0x9c]
mov dword [ebp - 0x98], ecx
push edx
mov dword [ebp - 0x94], ecx
push edi
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x90], ecx
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [ebp - 0x14]
xor edi, edi
test eax, eax
mov dword [ebp - 8], edi
jle 0x45dba5
mov edx, dword [ebp + 0x10]
xor eax, eax
mov dword [ebp - 0x40], eax
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x3c], eax
push ecx
push edi
mov dword [ebp - 0x38], eax
push 0x417
push edx
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x34], eax
call dword [sym.imp.USER32.dll_SendMessageW]
test byte [ebp - 0x3c], 8
jne 0x45db96
mov edx, dword [ebp + 0x10]
xor eax, eax
lea ecx, [ebp - 0xac]
mov dword [ebp - 0xa8], eax
push ecx
push edi
mov dword [ebp - 0xa4], eax
push 0x41d
push edx
mov dword [ebp - 0xac], 0
mov dword [ebp - 0xa0], eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x94]
mov al, cl
shr al, 2
and al, 1
mov byte [ebp + 0xf], al
mov eax, dword [ebp - 0xa4]
cmp eax, edx
jle 0x45db96
test ch, 1
je 0x45da1f
mov ecx, dword [ebp + 0x1c]
push ecx
call dword [sym.imp.USER32.dll_GetMenuItemCount]
test eax, eax
jle 0x45db96
mov edx, dword [ebp + 0x1c]
push 0
push 0
push 0x800
push edx
call dword [sym.imp.USER32.dll_AppendMenuW]
jmp 0x45db96
mov al, byte [ebp - 0x18]
test al, al
je 0x45dab6
mov ecx, 0x63
xor eax, eax
lea edi, [ebp - 0x89e]
mov word [ebp - 0x8a0], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov edx, dword [ebp - 8]
mov ecx, 0xb
xor eax, eax
lea edi, [ebp - 0xe8]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x8a0]
lea ecx, [ebp - 0xe8]
mov dword [ebp - 0xc4], eax
mov eax, dword [ebp - 0x88]
push ecx
push 1
push edx
push eax
mov dword [ebp - 0xe8], 0x2c
mov dword [ebp - 0xe4], 0x14
mov dword [ebp - 0xc0], 0xc8
call dword [sym.imp.USER32.dll_GetMenuItemInfoW]
mov ecx, dword [ebp - 0xc4]
mov edx, dword [ebp - 0xd4]
push ecx
mov cl, byte [ebp + 0xf]
xor eax, eax
push edx
test cl, cl
sete al
or al, 0x10
jmp 0x45db88
mov ecx, 0x63
xor eax, eax
lea edi, [ebp - 0x2fa]
mov word [ebp - 0x2fc], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 7
xor eax, eax
lea edi, [ebp - 0x74]
lea edx, [ebp - 0x2fc]
rep stosd dword es:[edi], eax
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0x40]
lea eax, [ebp - 0x2fc]
lea ecx, [ebp - 0x78]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp + 0x10]
push ecx
push edx
push 0x43f
push eax
mov dword [ebp - 0x78], 0x20
mov dword [ebp - 0x74], 2
mov dword [ebp - 0x5c], 0xc8
call dword [sym.imp.USER32.dll_SendMessageW]
cmp eax, 0xffffffff
je 0x45db30
lea ecx, [ebp - 0x2fc]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
jne 0x45db76
mov ecx, dword [ebp - 0x40]
mov eax, dword [0x4edfe8]
lea edx, [ebp - 0x2fc]
push 0xc8
push edx
push ecx
push eax
mov edi, 0x4e3a28
call dword [sym.imp.USER32.dll_LoadStringW]
xor ecx, ecx
test eax, eax
jle 0x45db79
lea edx, [ebp - 0x2fc]
cmp word [edx], 0xa
je 0x45db6d
inc ecx
add edx, 2
cmp ecx, eax
jl 0x45db5d
jmp 0x45db79
lea edi, [ebp + ecx*2 - 0x2fa]
jmp 0x45db79
mov edi, dword [ebp - 0xc]
mov edx, dword [ebp - 0x40]
push edi
push edx
mov dl, byte [ebp + 0xf]
xor eax, eax
test dl, dl
sete al
mov ecx, dword [ebp + 0x1c]
push eax
push ecx
call dword [sym.imp.USER32.dll_AppendMenuW]
mov edi, dword [ebp - 8]
mov eax, dword [ebp - 0x14]
inc edi
cmp edi, eax
mov dword [ebp - 8], edi
jl 0x45d967
mov edx, dword [ebp + 0x1c]
push edx
call dword [sym.imp.USER32.dll_GetMenuItemCount]
test eax, eax
mov eax, dword [ebp + 0x1c]
jne 0x45dbe0
test eax, eax
je 0x45dbcc
push eax
call dword [sym.imp.USER32.dll_DestroyMenu]
test eax, eax
je 0x45dbcc
mov dword [ebp + 0x1c], 0
push 0xffffffffffffffff
call dword [sym.imp.USER32.dll_MessageBeep]
xor ecx, ecx
mov eax, 1
jmp 0x45de39
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0x14]
push 1
mov edi, dword [eax]
lea ecx, [eax + 0x18]
mov dword [ebp + 0xc], ecx
mov ecx, dword [ecx]
mov dword [ebp - 0x10], ecx
mov edx, dword [eax + 0x24]
lea eax, [ebp - 0x10]
mov dword [ebp - 0xc], edx
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_MapWindowPoints]
mov ecx, dword [ebp + 0xc]
push 2
mov edx, dword [ecx]
mov dword [ebp - 0x30], edx
mov eax, dword [ecx + 4]
mov dword [ebp - 0x2c], eax
mov edx, dword [ecx + 8]
mov dword [ebp - 0x28], edx
mov eax, dword [ecx + 0xc]
lea ecx, [ebp - 0x30]
push ecx
push 0
push edi
mov dword [ebp - 0x24], eax
call dword [sym.imp.USER32.dll_MapWindowPoints]
mov ecx, 0x44
xor eax, eax
lea edi, [ebp - 0x40c]
lea edx, [ebp - 0x410]
rep stosd dword es:[edi], eax
push edx
mov dword [ebp - 0x410], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x45dc78
mov eax, dword [ebp - 0x40c]
cmp eax, 5
jae 0x45dc74
cmp eax, 4
jne 0x45dc78
cmp dword [ebp - 0x408], 0x5a
jb 0x45dc78
xor eax, eax
jmp 0x45dc7d
mov eax, 1
neg al
sbb eax, eax
mov edx, dword [ebp - 0x2c]
and eax, 0xfffff000
mov ecx, dword [ebp - 0x30]
add eax, 0x1000
push 0
or al, 0x40
push 0
mov dword [ebp + 0xc], eax
xor eax, eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x50], edx
mov edx, dword [ebx + 4]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x28]
push 0x52d
push edx
mov dword [ebp - 0x58], 0x14
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], ecx
call dword [sym.imp.USER32.dll_SendMessageW]
mov edi, eax
push edi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x45dd2b
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0xf4], edx
lea edx, [ebp - 0x100]
mov dword [ebp - 0xfc], eax
mov eax, dword [ebp - 0xc]
push edx
mov dword [ebp - 0xf8], ecx
push 0
lea ecx, [ebp - 0x58]
push 0x52f
push edi
mov dword [ebp - 0x100], 0x18
mov dword [ebp - 0xf0], eax
mov dword [ebp - 0xec], ecx
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x45dd49
mov ecx, dword [ebx + 4]
mov edx, dword [ebp - 0xc]
lea eax, [ebp - 0x58]
push eax
mov eax, dword [ebp - 0x10]
push ecx
mov ecx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp - 0x20]
push eax
push ecx
push edx
call dword [sym.imp.USER32.dll_TrackPopupMenuEx]
mov al, byte [ebp - 0x18]
test al, al
je 0x45dd72
mov eax, dword [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_GetMenuItemCount]
mov edi, eax
dec edi
js 0x45dd72
mov ecx, dword [ebp - 0x20]
push 0x400
push edi
push ecx
call dword [sym.imp.USER32.dll_RemoveMenu]
dec edi
jns 0x45dd5f
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x45dd80
push eax
call dword [sym.imp.USER32.dll_DestroyMenu]
mov eax, dword [ebp + 0x14]
push 2
mov ecx, dword [eax]
mov edx, dword [eax + 0x18]
add eax, 0x18
mov dword [ebp - 0xbc], edx
mov edx, dword [eax + 4]
mov dword [ebp - 0xb8], edx
mov edx, dword [eax + 8]
mov dword [ebp - 0xb4], edx
mov eax, dword [eax + 0xc]
lea edx, [ebp - 0xbc]
mov dword [ebp - 0xb0], eax
push edx
push 0
push ecx
call dword [sym.imp.USER32.dll_MapWindowPoints]
mov ecx, 6
xor eax, eax
lea edi, [ebp - 0x118]
mov dword [ebp - 0x11c], 0
rep stosd dword es:[edi], eax
mov edi, dword [sym.imp.USER32.dll_PeekMessageW]
push eax
mov eax, dword [ebx + 4]
push 0x201
push 0x201
lea ecx, [ebp - 0x11c]
push eax
push ecx
call edi
test eax, eax
je 0x45de31
mov edx, dword [ebp - 0x104]
mov eax, dword [ebp - 0x108]
push edx
lea ecx, [ebp - 0xbc]
push eax
push ecx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x45de31
mov edx, dword [ebx + 4]
push 1
push 0x201
push 0x201
lea eax, [ebp - 0x11c]
push edx
push eax
call edi
mov ecx, dword [ebp - 0x8c]
xor eax, eax
mov edx, dword [ebp + 0x18]
test ecx, ecx
mov dword [edx], eax
je 0x45e006
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 0x14
jne 0x45de94
mov ecx, dword [ebx + 0x30]
mov eax, 1
test ecx, ecx
je 0x45de6f
mov ecx, eax
jmp 0x45de73
xor eax, eax
xor ecx, ecx
mov edx, dword [ebp + 0x18]
test eax, eax
mov dword [edx], ecx
je 0x45d660
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 0x11f
jne 0x45dfc3
mov ecx, dword [ebx + 0x2c]
test ecx, ecx
je 0x45dfa9
mov eax, esi
shr eax, 0x10
cmp ax, 0xffff
jne 0x45dee1
test edi, edi
jne 0x45dee1
push edi
push edi
push 0x409
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
mov edx, dword [ebp + 0x18]
xor eax, eax
mov dword [edx], 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
test al, 0x10
mov word [ebp - 0x710], 0
jne 0x45df7d
cmp si, 0xf000
jb 0x45df17
cmp si, 0xf1f0
jae 0x45df17
and esi, 0xffff
sub esi, 0xf000
sar esi, 4
sub esi, 0x1100
jmp 0x45df38
cmp si, 0xe110
jb 0x45df2c
cmp si, 0xe11f
ja 0x45df2c
mov esi, 0xefda
jmp 0x45df38
cmp si, 0xff00
jb 0x45df38
mov esi, 0xef1f
mov eax, dword [0x4edfe8]
lea ecx, [ebp - 0x710]
push 0x100
and esi, 0xffff
push ecx
push esi
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
xor ecx, ecx
test eax, eax
jle 0x45df7d
lea edx, [ebp - 0x710]
cmp word [edx], 0xa
je 0x45df73
inc ecx
add edx, 2
cmp ecx, eax
jl 0x45df63
jmp 0x45df7d
mov word [ebp + ecx*2 - 0x710], 0
mov edx, dword [ebx + 0x2c]
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 1
push 0x409
push edx
call esi
mov ecx, dword [ebx + 0x2c]
lea eax, [ebp - 0x710]
push eax
push 0x1ff
push 0x40b
push ecx
call esi
mov edx, dword [ebp + 0x18]
xor eax, eax
mov dword [edx], 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 2
jne 0x45dffd
mov eax, dword [ebx + 4]
push 0xfffffffffffffff0
push eax
call dword [sym.imp.USER32.dll_GetWindowLongW]
test eax, 0xc0000000
jne 0x45dfe3
push 1
call dword [sym.imp.USER32.dll_PostQuitMessage]
mov ecx, dword [ebp + 0x18]
xor eax, eax
mov dword [ecx], 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 0x4e
jne 0x45d660
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebx + 8]
cmp eax, 0xfffffdf8
jne 0x45e0ab
lea edi, [ebx + 0x10]
test esi, esi
mov byte [edi], 0
je 0x45e12f
test byte [ebx + 0x64], 1
jne 0x45e12f
mov eax, dword [0x4edfe8]
lea edx, [ebp - 0x510]
push 0x100
push edx
push esi
push eax
mov byte [ebp - 0x510], 0
call dword [sym.imp.USER32.dll_LoadStringA]
mov esi, eax
xor eax, eax
test esi, esi
jle 0x45e12f
cmp byte [ebp + eax - 0x510], 0xa
je 0x45e06c
inc eax
cmp eax, esi
jl 0x45e05b
jmp 0x45e07d
lea eax, [ebp + eax - 0x50f]
push 0x50
push eax
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
test esi, esi
jle 0x45e12f
mov eax, dword [ebx + 0x64]
mov ecx, dword [ebp + 0x18]
or ah, 0x80
mov dword [ebx + 0x64], eax
mov dword [ecx], 0
mov eax, 1
lea esp, [ebp - 0xaac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp eax, 0xfffffdee
jne 0x45d660
lea edi, [ebx + 0x10]
test esi, esi
mov word [edi], 0
je 0x45e12f
test byte [ebx + 0xb4], 1
jne 0x45e12f
mov eax, dword [0x4edfe8]
lea edx, [ebp - 0xaa0]
push 0x100
push edx
push esi
push eax
mov word [ebp - 0xaa0], 0
call dword [sym.imp.USER32.dll_LoadStringW]
mov esi, eax
xor eax, eax
test esi, esi
jle 0x45e12f
lea ecx, [ebp - 0xaa0]
cmp word [ecx], 0xa
je 0x45e10b
inc eax
add ecx, 2
cmp eax, esi
jl 0x45e0fb
jmp 0x45e11c
lea eax, [ebp + eax*2 - 0xa9e]
push 0x50
push eax
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
test esi, esi
jle 0x45e12f
mov eax, dword [ebx + 0xb4]
or ah, 0x80
mov dword [ebx + 0xb4], eax
mov ecx, dword [ebp + 0x18]
lea esp, [ebp - 0xaac]
mov eax, 1
pop edi
pop esi
mov dword [ecx], 0
pop ebx
mov esp, ebp
pop ebp
ret 0x18