Function at 0x54fd70
Capabilities:
Packed with generic packer

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x6c
push ebx
mov ebx, dword [ebp + 8]
cmp dword [ebx + 0x364], 0
push esi
push edi
jbe 0x550793
mov eax, dword [ebx + 0x360]
mov esi, dword [eax]
cmp esi, eax
jne 0x54fd9d
call fcn.0061c63f
add esi, 8
mov ecx, 7
lea edi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 0x360]
mov esi, dword [ecx]
cmp esi, ecx
jne 0x54fdc4
call fcn.0061c63f
cmp esi, dword [ebx + 0x360]
je 0x54fde3
mov edx, dword [esi + 4]
mov eax, dword [esi]
mov dword [edx], eax
mov ecx, dword [esi]
mov edx, dword [esi + 4]
push esi
mov dword [ecx + 4], edx
call fcn.0061c19a
add esp, 4
add dword [ebx + 0x364], 0xffffffff
cmp byte [ebx + 0x510], 0
je case.0x54fef7.259
cmp byte [ebx + 0x341], 0
jne case.0x54fef7.259
mov eax, dword [esp + 0x34]
cmp eax, 0x100
ja 0x54fed3
je case.0x54fef7.260
cmp eax, 5
je 0x54fe9f
cmp eax, 0x10
je 0x54fe68
cmp eax, 0x1c
jne case.0x54fef7.259
mov eax, dword [esp + 0x30]
cmp eax, dword [ebx + 0x350]
jne case.0x54fef7.259
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 0
call fcn.005d62e0
push 5
push 1
call fcn.005d62e0
xor ecx, ecx
cmp dword [esp + 0x38], ecx
push 1
setne cl
jmp 0x550140
mov eax, dword [esp + 0x30]
cmp eax, dword [ebx + 0x350]
je 0x54fe80
cmp eax, dword [ebx + 0x354]
jne case.0x54fef7.259
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 0
call fcn.005d62e0
push 5
push 6
jmp 0x550141
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 0
call fcn.005d62e0
push 5
push 2
call fcn.005d62e0
cmp dword [esp + 0x38], 1
mov ecx, esi
sete dl
push edx
call fcn.005d63e0
jmp case.0x54fef7.259
cmp eax, 0x208
ja 0x5500fb
cmp eax, 0x200
jae 0x54ff86
add eax, 0xfffffeff
cmp eax, 4
ja case.0x54fef7.259
jmp dword [eax*4 + 0x55089c]
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 0
call fcn.005d62e0
push 5
push 3
call fcn.005d62e0
mov eax, dword [esp + 0x38]
push 8
push eax
jmp 0x550141
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 0
call fcn.005d62e0
push 5
push 4
call fcn.005d62e0
mov ecx, dword [esp + 0x38]
jmp 0x55013e
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 0
call fcn.005d62e0
push 5
push 5
call fcn.005d62e0
push 1
push 0
call fcn.005d62e0
movsx edx, byte [esp + 0x38]
push 8
push edx
jmp 0x550141
mov eax, dword [esp + 0x3c]
movsx ecx, ax
sub ecx, dword [ebx + 0x570]
shr eax, 0x10
movsx esi, ax
mov eax, ecx
cdq
xor eax, edx
mov dword [esp + 0x18], esi
sub esi, dword [ebx + 0x574]
sub eax, edx
cmp eax, 0x20
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], esi
jge 0x54ffff
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x20
jge 0x54ffff
test ecx, ecx
jne 0x54ffcb
test esi, esi
je 0x550037
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 1
call fcn.005d62e0
push 1
push 0
call fcn.005d62e0
mov eax, dword [esp + 0x10]
push 6
push eax
call fcn.005d62e0
mov ecx, dword [esp + 0x1c]
push 6
push ecx
jmp 0x550032
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 0
call fcn.005d62e0
push 5
push 0
call fcn.005d62e0
movsx eax, word [esp + 0x3c]
push 0xc
push eax
call fcn.005d62e0
mov edx, dword [esp + 0x18]
push 0xc
push edx
call fcn.005d62e0
mov eax, dword [esp + 0x34]
add eax, 0xfffffdff
cmp eax, 7
mov byte [esp + 0xf], 1
ja case.default.0x55004e
jmp dword [eax*4 + 0x5508b0]
mov dword [esp + 0x10], 1
jmp 0x5500a8
mov dword [esp + 0x10], 0xffffffff
jmp 0x5500a8
mov dword [esp + 0x10], 2
jmp 0x5500a8
mov dword [esp + 0x10], 0xfffffffe
jmp 0x5500a8
mov dword [esp + 0x10], 1
mov byte [esp + 0xf], 0
jmp 0x5500a8
mov dword [esp + 0x10], 0xffffffff
mov byte [esp + 0xf], 0
jmp 0x5500a8
mov byte [esp + 0xf], 0
mov dword [esp + 0x10], 3
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 1
call fcn.005d62e0
push 1
push 1
call fcn.005d62e0
xor eax, eax
cmp byte [esp + 0xf], al
push 1
setne al
push eax
call fcn.005d62e0
mov ecx, dword [esp + 0x10]
push 3
push ecx
call fcn.005d62e0
movsx eax, word [esp + 0x3c]
mov edx, dword [esp + 0x18]
mov dword [ebx + 0x570], eax
mov dword [ebx + 0x574], edx
jmp case.0x54fef7.259
cmp eax, 0x20a
jne case.0x54fef7.259
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 0
call fcn.005d62e0
push 5
push 0x15
call fcn.005d62e0
mov eax, dword [esp + 0x38]
shr eax, 0x10
movsx ecx, ax
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
push 8
push ecx
call fcn.005d62e0
cmp byte [ebx + 0x511], 0
jne case.0x55033e.259
mov eax, dword [esp + 0x34]
cmp eax, 0x100
ja 0x55031f
je 0x550349
add eax, 0xfffffffd
cmp eax, 0x7b
ja case.0x55033e.259
movzx edx, byte [eax + 0x5508e4]
jmp dword [edx*4 + 0x5508d0]
mov eax, dword [esp + 0x30]
cmp eax, dword [ebx + 0x350]
jne case.0x55033e.259
cmp byte [0x6a9fc5], 0
jne case.0x55033e.259
cmp byte [ebx + 0x340], 0
jne case.0x55033e.259
cmp byte [ebx + 0x341], 0
jne case.0x55033e.259
mov esi, ebx
call fcn.0054eb80
cmp byte [ebx + 0x4ce], 0
je 0x5501df
cmp byte [ebx + 0x343], 0
jne 0x5501df
mov ecx, dword [ebx + 0x320]
mov edx, dword [ecx]
mov eax, dword [edx + 0x28]
call eax
cmp byte [ebx + 0x3ec], 0
je case.0x55033e.259
cmp byte [ebx + 0x4ce], 0
jne case.0x55033e.259
mov edx, dword [ebx]
mov edx, dword [edx + 0x90]
lea eax, [ebx + 0x3f0]
push eax
mov ecx, ebx
call edx
jmp case.0x55033e.259
mov eax, dword [esp + 0x30]
cmp eax, dword [ebx + 0x350]
jne case.0x55033e.259
cmp byte [ebx + 0x343], 0
je case.0x55033e.259
lea ecx, [esp + 0x4c]
push ecx
mov edx, eax
push edx
mov dword [esp + 0x54], 0x2c
call dword [sym.imp.USER32.dll_GetWindowPlacement]
mov eax, dword [esp + 0x54]
cmp eax, 5
je 0x550256
cmp eax, 1
jne case.0x55033e.259
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
mov dword [ebx + 0xb8], eax
mov dword [ebx + 0xbc], ecx
jmp case.0x55033e.259
cmp dword [esp + 0x38], 1
mov edx, dword [esp + 0x30]
sete al
cmp edx, dword [ebx + 0x350]
jne 0x5502db
cmp byte [ebx + 0x341], 0
jne 0x5502db
cmp al, byte [ebx + 0x4cf]
je 0x5502db
test al, al
mov byte [ebx + 0x4cf], al
je 0x5502b7
cmp byte [ebx + 0x431], 0
je 0x5502db
mov eax, dword [ebx]
mov edx, dword [eax + 0xf8]
push 1
mov ecx, ebx
call edx
jmp 0x5502db
cmp byte [ebx + 0x431], 0
je 0x5502ce
mov eax, dword [ebx]
mov edx, dword [eax + 0xfc]
push 1
mov ecx, ebx
call edx
mov ecx, dword [ebx + 0x320]
mov eax, dword [ecx]
mov edx, dword [eax + 0x28]
call edx
mov esi, ebx
call fcn.0054eb80
cmp dword [esp + 0x38], 2
jne case.0x55033e.259
mov eax, dword [ebx]
mov edx, dword [eax + 0x114]
push 0
mov ecx, ebx
call edx
jmp case.0x55033e.259
mov ecx, dword [ebx + 0x320]
mov eax, dword [ecx]
mov edx, dword [eax + 0x70]
call edx
mov ecx, dword [ebx + 0x320]
mov eax, dword [ecx]
mov edx, dword [eax + 0x28]
call edx
jmp case.0x55033e.259
cmp eax, 0x113
ja 0x550636
je 0x550459
add eax, 0xfffffeff
cmp eax, 4
ja case.0x55033e.259
jmp dword [eax*4 + 0x550960]
mov eax, dword [esp + 0x34]
mov ecx, dword [ebx + 0x410]
mov dword [ebx + 0x478], ecx
mov ecx, dword [esp + 0x38]
cmp ecx, 0xd
jne 0x5503a3
cmp eax, 0x104
jne 0x5503e3
cmp byte [ebx + 0x346], 0
jne 0x5503e3
cmp byte [ebx + 0x347], 0
jne 0x5503e3
cmp byte [ebx + 0x5b0], 0
je 0x5503e3
cmp byte [ebx + 0x343], 0
mov edx, dword [ebx]
mov edx, dword [edx + 0x114]
sete al
mov ecx, ebx
push eax
call edx
mov ecx, ebx
call fcn.0054ec20
jmp 0x550793
cmp ecx, 0x44
jne 0x5503e3
mov eax, dword [ebx + 0x320]
test eax, eax
je 0x5503e3
cmp byte [eax + 0x105], 0
je 0x5503e3
cmp byte [eax + 0x106], 0
je 0x5503e3
push 1
push 0
push str.c:windowsmediaWindows_XP_Menu_Command.wav
call dword [sym.imp.WINMM.dll_PlaySoundA]
cmp byte [ebx + 0x5ac], 0
sete al
mov byte [ebx + 0x5ac], al
cmp byte [ebx + 0x5ac], 0
je 0x550405
mov edx, dword [ebx]
mov eax, dword [esp + 0x38]
mov edx, dword [edx + 0x154]
push eax
mov ecx, ebx
call edx
test al, al
jne case.0x55033e.259
mov ecx, dword [esp + 0x38]
mov eax, dword [ebx + 0x320]
call fcn.00539660
jmp case.0x55033e.259
mov eax, dword [ebx + 0x410]
mov ecx, dword [esp + 0x38]
mov dword [ebx + 0x478], eax
mov eax, dword [ebx + 0x320]
call fcn.005396a0
jmp case.0x55033e.259
mov ecx, dword [ebx + 0x410]
mov eax, dword [ebx + 0x320]
mov dword [ebx + 0x478], ecx
mov cl, byte [esp + 0x38]
call fcn.00539610
jmp case.0x55033e.259
cmp byte [0x6a9fc5], 0
jne 0x550793
cmp byte [ebx + 0x340], 0
jne 0x550793
cmp byte [ebx + 0x4cd], 0
je 0x550793
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, eax
sub edx, dword [ebx + 0x410]
cmp edx, 0x1f4
jbe 0x55049c
mov dword [ebx + 0x414], eax
cmp byte [ebx + 0x3ec], 0
mov dword [ebx + 0x410], eax
je 0x550505
mov ecx, eax
sub ecx, dword [ebx + 0x414]
cmp ecx, 0x1388
jbe 0x550505
sub eax, dword [ebx + 0x40c]
cmp eax, 0x1f40
jbe 0x5504e2
cmp byte [ebx + 0x4ce], 0
jne 0x5504e2
mov edx, dword [ebx]
mov edx, dword [edx + 0x90]
lea eax, [ebx + 0x3f0]
push eax
jmp 0x550501
cmp eax, 0x2ee0
jbe 0x550505
cmp byte [ebx + 0x4ce], 0
je 0x550505
mov eax, dword [ebx]
mov edx, dword [eax + 0x8c]
lea ecx, [ebx + 0x3f0]
push ecx
mov ecx, ebx
call edx
mov esi, dword [esp + 0x30]
mov edi, dword [sym.imp.USER32.dll_ClientToScreen]
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
lea eax, [esp + 0x20]
push eax
push esi
call edi
mov eax, dword [ebx + 0x36c]
mov ecx, dword [eax + 0xa0]
mov dword [esp + 0x28], ecx
mov edx, dword [eax + 0xa4]
lea eax, [esp + 0x28]
push eax
push esi
mov dword [esp + 0x34], edx
call edi
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.USER32.dll_GetCursorPos]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edx
push eax
call dword [sym.imp.USER32.dll_WindowFromPoint]
cmp eax, esi
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
jne 0x550587
cmp esi, dword [esp + 0x20]
jl 0x550587
cmp eax, dword [esp + 0x24]
jl 0x550587
cmp esi, dword [esp + 0x28]
jge 0x550587
cmp eax, dword [esp + 0x2c]
mov byte [esp + 0xf], 1
jl 0x55058c
mov byte [esp + 0xf], 0
mov cl, byte [esp + 0xf]
cmp byte [ebx + 0x4cc], cl
je 0x550793
cmp byte [ebx + 0x510], 0
je 0x5505dc
cmp byte [ebx + 0x341], 0
jne 0x5505dc
mov edi, ebx
call fcn.0054ec60
push 1
lea esi, [ebx + 0x54c]
push 0
call fcn.005d62e0
cmp byte [esp + 0xf], 0
push 5
je 0x550625
push 7
call fcn.005d62e0
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
cmp byte [esp + 0xf], 0
jne 0x550611
sub eax, dword [esp + 0x24]
sub esi, dword [esp + 0x20]
mov ecx, dword [ebx + 0x320]
lea edx, [esp + 0x1c]
push edx
lea ebx, [esp + 0x1c]
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], eax
call fcn.00538a00
mov edi, ecx
call fcn.005395c0
mov ebx, dword [ebp + 8]
mov al, byte [esp + 0xf]
mov edx, dword [ebx]
mov byte [ebx + 0x4cc], al
mov eax, dword [edx + 0x30]
jmp 0x55078f
push 8
call fcn.005d62e0
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
jmp 0x5505e3
cmp eax, 0x200
jb case.0x55033e.259
mov eax, dword [esp + 0x34]
cmp eax, 0x208
jbe 0x550688
cmp eax, 0x20a
jne case.0x55033e.259
mov eax, dword [esp + 0x38]
shr eax, 0x10
movsx ecx, ax
mov eax, 0x88888889
imul ecx
mov eax, dword [ebx + 0x320]
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
movsx edx, cl
push edx
call fcn.005395f0
jmp 0x550793
cmp byte [0x6a9fc5], 0
jne case.0x55033e.259
cmp byte [ebx + 0x340], 0
jne case.0x55033e.259
mov eax, dword [esp + 0x3c]
mov esi, dword [ebx + 0x320]
movsx ecx, ax
shr eax, 0x10
movsx edx, ax
lea eax, [esp + 0x18]
mov dword [esp + 0x18], ecx
push eax
lea ebx, [esp + 0x14]
mov ecx, esi
mov dword [esp + 0x14], edx
call fcn.00538a00
mov edi, dword [ebp + 8]
mov ecx, dword [edi + 0x410]
mov ebx, dword [esp + 0x18]
mov dword [edi + 0x478], ecx
mov ecx, dword [esp + 0x10]
mov eax, ebx
mov edx, esi
call fcn.005394a0
cmp byte [edi + 0x4cc], 0
jne 0x55072c
cmp byte [edi + 0x510], 0
je 0x55071c
call fcn.0054ec60
push 1
lea esi, [edi + 0x54c]
push 0
call fcn.005d62e0
push 5
push 7
call fcn.005d62e0
mov edx, dword [edi]
mov eax, dword [edx + 0x30]
mov ecx, edi
mov byte [edi + 0x4cc], 1
call eax
jmp 0x79f0c1
cmp dword [esp + 0x34], 0x10
jne 0x550793
mov eax, dword [esp + 0x30]
cmp eax, dword [ebx + 0x350]
je 0x550780
cmp eax, dword [ebx + 0x354]
jne 0x550793
mov edx, dword [ebx]
mov eax, dword [edx + 0xa8]
mov byte [ebx + 0x512], 1
mov ecx, ebx
call eax
xor ecx, ecx
cmp ecx, dword [ebx + 0x364]
pop edi
sbb eax, eax
pop esi
neg eax
pop ebx
mov esp, ebp
pop ebp
ret 4