Function at 0x59d288
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffff64
mov edi, edx
mov ebp, eax
xor ebx, ebx
test edi, edi
je case.0x59d2c8.0
mov eax, dword [ebp]
cmp eax, 0x200
jg 0x59d345
je 0x59d3e5
cmp eax, 0xf
jg 0x59d2ff
je 0x59e5c0
cmp eax, 0xb
ja case.0x59d2c8.0
jmp dword [eax*4 + 0x59d2cf]
cmp eax, 0x7b
jg 0x59d32a
je 0x59d8f3
sub eax, 0x18
je 0x59e781
sub eax, 5
je 0x59df12
sub eax, 0x29
je 0x59e538
jmp case.0x59d2c8.0
sub eax, 0x81
je case.0x59d2c8.1
sub eax, 0xa7
je 0x59d89b
jmp case.0x59d2c8.0
cmp eax, 0xb00b
jg 0x59d396
je 0x59d94c
cmp eax, 0x317
jg 0x59d37f
je 0x59d7d1
sub eax, 0x201
je 0x59e960
dec eax
je 0x59e969
sub eax, 0xe
je 0x59db2d
jmp case.0x59d2c8.0
sub eax, 0xa100
je 0x59d3d5
sub eax, 0xf08
je 0x59db61
jmp case.0x59d2c8.0
cmp eax, 0xb014
jg 0x59d3bc
je 0x59e2f7
sub eax, 0xb00c
je 0x59df12
sub eax, 7
je 0x59df79
jmp case.0x59d2c8.0
sub eax, 0xb019
je 0x59daf4
sub eax, 0x1e
je 0x59df58
jmp case.0x59d2c8.0
mov eax, ebp
mov edx, edi
call fcn.0059bfd8
mov ebx, eax
jmp case.0x59d2c8.0
mov eax, dword [0x63cb58]
cmp dword [eax], 0
je 0x59d751
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp byte [eax + 0x89], 0
je 0x59d751
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp byte [eax + 0xb0], 0
je 0x59d751
mov eax, dword [0x63cb58]
mov eax, dword [eax]
test byte [eax + 0x1c], 8
jne 0x59d751
cmp dword [edi + 0xb4], 0
je 0x59d751
mov eax, dword [edi + 0xb4]
test byte [eax + 0x1c], 8
jne 0x59d751
mov byte [esp + 8], 0
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je 0x59d46f
mov eax, dword [edi + 0xb4]
mov dword [esp + 0xc], eax
jmp 0x59d496
mov eax, dword [edi + 0x70]
mov edx, dword [0x5a2d94]
call fcn.00404ba0
test al, al
je 0x59d490
mov eax, dword [edi + 0x70]
mov eax, dword [eax + 0x2cc]
mov dword [esp + 0xc], eax
jmp 0x59d496
xor eax, eax
mov dword [esp + 0xc], eax
cmp dword [esp + 0xc], 0
je 0x59d61f
mov eax, dword [esp + 0xc]
call fcn.0045a76c
dec eax
test eax, eax
jl 0x59d61f
inc eax
mov dword [esp + 0x14], eax
xor esi, esi
movsx eax, word [ebp + 8]
mov dword [esp], eax
movsx eax, word [ebp + 0xa]
mov dword [esp + 4], eax
mov edx, esi
mov eax, dword [esp + 0xc]
call fcn.0045a730
mov edx, dword [eax]
call dword [edx + 0x50]
test al, al
jne 0x59d614
mov edx, esi
mov eax, dword [esp + 0xc]
call fcn.0045a730
lea edx, [esp + 0x64]
call fcn.004560e0
lea eax, [esp + 0x64]
mov edx, esp
call fcn.00408208
test al, al
je 0x59d614
mov edx, esi
mov eax, dword [esp + 0xc]
call fcn.0045a730
cmp byte [eax + 0x8d], 0
je 0x59d614
mov edx, esi
mov eax, dword [esp + 0xc]
call fcn.0045a730
cmp dword [eax + 0x84], 0
je 0x59d614
mov edx, esi
mov eax, dword [esp + 0xc]
call fcn.0045a730
mov eax, dword [eax + 0x40]
sub dword [esp], eax
mov edx, esi
mov eax, dword [esp + 0xc]
call fcn.0045a730
mov eax, dword [eax + 0x44]
sub dword [esp + 4], eax
push esi
push edi
mov esi, ebp
lea edi, [esp + 0x4c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov ax, word [esp]
mov word [esp + 0x4c], ax
mov ax, word [esp + 4]
mov word [esp + 0x4e], ax
mov byte [esp + 8], 1
mov edx, esi
mov eax, dword [esp + 0xc]
call fcn.0045a730
mov edx, dword [0x63cb58]
mov edx, dword [edx]
cmp eax, dword [edx + 0xc0]
je 0x59d612
mov eax, dword [0x63d0a4]
mov eax, dword [eax]
call fcn.0047eb38
lea edx, [esp + 0x74]
xor eax, eax
call fcn.00571904
mov eax, dword [esp + 0x74]
mov dword [esp], eax
lea edx, [esp + 0x74]
xor eax, eax
call fcn.00571904
mov eax, dword [esp + 0x78]
mov dword [esp + 4], eax
mov edx, esi
mov eax, dword [esp + 0xc]
call fcn.0045a730
mov edx, dword [0x63cb58]
mov edx, dword [edx]
mov dword [edx + 0xc0], eax
mov eax, dword [0x63d0a4]
mov eax, dword [eax]
mov eax, dword [eax + 0x74]
push eax
mov edx, esi
mov eax, dword [esp + 0x10]
call fcn.0045a730
mov ecx, dword [eax + 0x84]
mov eax, dword [0x63cb58]
mov eax, dword [eax]
lea edx, [esp + 4]
call fcn.004e50e0
mov bl, 1
inc esi
dec dword [esp + 0x14]
jne 0x59d4ba
cmp byte [esp + 8], 0
jne 0x59d6f5
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp dword [eax + 0xc0], 0
je 0x59d6f5
mov eax, dword [0x63cb58]
mov eax, dword [eax]
mov eax, dword [eax + 0xc0]
mov edx, dword [eax]
call dword [edx + 0x50]
test al, al
jne 0x59d6f5
mov eax, dword [0x63cb58]
mov eax, dword [eax]
mov eax, dword [eax + 0xc0]
cmp eax, dword [esp + 0xc]
je 0x59d6e9
cmp dword [esp + 0xc], 0
je 0x59d6e9
mov eax, dword [esp + 0xc]
cmp byte [eax + 0x8d], 0
je 0x59d6e9
mov eax, dword [esp + 0xc]
cmp dword [eax + 0x84], 0
je 0x59d6e9
lea edx, [esp + 0x74]
xor eax, eax
call fcn.00571904
mov eax, dword [esp + 0x74]
mov dword [esp], eax
lea edx, [esp + 0x74]
xor eax, eax
call fcn.00571904
mov eax, dword [esp + 0x78]
mov dword [esp + 4], eax
mov eax, dword [0x63cb58]
mov eax, dword [eax]
mov edx, dword [esp + 0xc]
mov dword [eax + 0xc0], edx
mov eax, dword [0x63d0a4]
mov eax, dword [eax]
mov eax, dword [eax + 0x74]
push eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x84]
mov eax, dword [0x63cb58]
mov eax, dword [eax]
lea edx, [esp + 4]
call fcn.004e50e0
jmp 0x59d6f5
mov eax, dword [0x63cb58]
mov eax, dword [eax]
call fcn.004e4980
cmp byte [esp + 8], 0
jne 0x59d751
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp byte [eax + 0x89], 0
je 0x59d751
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp byte [eax + 0xb0], 0
je 0x59d751
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp dword [eax + 0xc0], 0
je 0x59d751
mov eax, dword [0x63cb58]
mov eax, dword [eax]
mov eax, dword [eax + 0xc0]
mov edx, dword [eax]
call dword [edx + 0x50]
test al, al
jne 0x59d751
mov eax, dword [0x63cb58]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0xc0], edx
mov eax, edi
mov edx, dword [0x597768]
call fcn.00404ba0
test al, al
je case.0x59d2c8.0
xor edx, edx
mov eax, edi
call fcn.005a0cb4
test al, al
je case.0x59d2c8.0
movsx eax, word [ebp + 8]
mov edx, dword [edi + 0xb4]
mov edx, dword [edx + 0x48]
sar edx, 1
jns 0x59d78b
adc edx, 0
sub eax, edx
mov esi, edi
mov dword [esi + 0xcc], eax
movsx eax, word [ebp + 0xa]
mov edx, dword [edi + 0xb4]
mov edx, dword [edx + 0x4c]
sar edx, 1
jns 0x59d7a9
adc edx, 0
sub eax, edx
mov dword [esi + 0xd0], eax
lea eax, [esi + 0xb8]
call fcn.0041252c
mov byte [edi + 0xad], 1
mov dl, 1
mov eax, esi
call fcn.0054b080
jmp case.0x59d2c8.0
mov dl, 1
mov eax, dword [edi + 0xb4]
call fcn.00572298
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
jne case.0x59d2c8.0
cmp dword [ebp + 4], 0
je case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je case.0x59d2c8.0
push 0xffffffffffffffec
mov eax, dword [edi + 0xb4]
call fcn.0045e714
push eax
call sub.user32.dll_GetWindowLongA
test ah, 2
je 0x59d831
mov esi, 2
jmp 0x59d833
xor esi, esi
lea ecx, [esp + 0x74]
mov edx, esi
mov eax, esi
call fcn.004081e8
lea eax, [esp + 0x74]
push eax
push 1
mov eax, dword [ebp + 4]
xor ecx, ecx
mov edx, dword [edi + 0xb4]
call fcn.005764d4
mov bl, 1
jmp case.0x59d2c8.0
cmp dword [ebp + 4], 1
jne 0x59d893
cmp dword [edi + 0x24], 0
jle case.0x59d2c8.0
dec dword [edi + 0x24]
mov eax, dword [edi + 0xb4]
cmp byte [eax + 0x57], 0
jne case.0x59d2c8.0
mov al, byte [edi + 0x39]
sub al, 0xa
je case.0x59d2c8.0
mov bl, 1
jmp case.0x59d2c8.0
inc dword [edi + 0x24]
jmp case.0x59d2c8.0
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
je 0x59d8af
mov bl, 1
jmp case.0x59d2c8.0
call fcn.0043e04c
test al, al
je case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je case.0x59d2c8.0
push 0
push 0
mov eax, dword [edi + 0xb4]
call fcn.0045e714
push eax
mov eax, dword [0x63d43c]
mov eax, dword [eax]
call eax
jmp case.0x59d2c8.0
mov esi, dword [edi + 0xb4]
test esi, esi
je case.0x59d2c8.0
cmp dword [esi + 0x80], 0
je case.0x59d2c8.0
mov eax, edi
call fcn.0059ad2c
test eax, eax
je case.0x59d2c8.0
mov eax, edi
call fcn.0059ad2c
mov al, byte [eax + 0x30]
push eax
mov eax, edi
call fcn.0059ad2c
mov eax, dword [eax + 0xe8]
mov edx, dword [edi + 0xb4]
mov edx, dword [edx + 0x80]
pop ecx
call fcn.00580a5c
jmp case.0x59d2c8.0
cmp dword [ebp + 4], 0
jne 0x59d9bc
lea eax, [edi + 0x3c]
xor edx, edx
call fcn.0051b068
lea eax, [edi + 0x40]
call fcn.0051b22c
mov esi, dword [edi + 0xb4]
mov eax, esi
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je 0x59d9bc
mov eax, esi
call fcn.0045eab4
test al, al
je 0x59d9bc
push 0
lea eax, [esp + 0x68]
push eax
mov dx, 0x52
xor eax, eax
call fcn.004092e8
mov edx, eax
xor ecx, ecx
mov eax, 0xa100
call fcn.0057a26c
lea eax, [esp + 0x64]
push eax
mov eax, dword [edi + 0xb4]
call fcn.0045e714
pop edx
call fcn.00572378
mov eax, edi
call fcn.0059ad2c
test eax, eax
je case.0x59d2c8.0
cmp dword [edi + 0xb4], 0
je case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
test byte [eax + 0x1c], 8
jne case.0x59d2c8.0
cmp dword [edi + 0x5c], 0
je case.0x59d2c8.0
mov eax, edi
call fcn.0059ad2c
mov eax, dword [eax + 0x74]
cmp byte [eax + 0x14], 1
jne 0x59dad7
cmp dword [ebp + 4], 0
jne 0x59dacc
xor edx, edx
mov eax, dword [edi + 0x5c]
mov ecx, dword [eax]
call dword [ecx + 0x40]
xor edx, edx
mov eax, dword [edi + 0x5c]
mov ecx, dword [eax]
call dword [ecx + 0x34]
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je 0x59dad0
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404bc4
mov ebp, eax
mov eax, ebp
call fcn.0045a76c
dec eax
test eax, eax
jl 0x59dad0
inc eax
mov dword [esp + 0x14], eax
xor esi, esi
mov edx, esi
mov eax, ebp
call fcn.0045a730
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je 0x59daa9
mov edx, esi
mov eax, ebp
call fcn.0045a730
call fcn.0045eab4
test al, al
je 0x59daa9
mov edx, esi
mov eax, ebp
call fcn.0045a730
call fcn.0045e714
xor ecx, ecx
mov edx, 0x21
call fcn.00576d10
jmp 0x59dac3
push 0
mov edx, esi
mov eax, ebp
call fcn.0045a730
mov ecx, 0x210000
mov edx, 0xa100
call fcn.00457aa8
inc esi
dec dword [esp + 0x14]
jne 0x59da63
jmp 0x59dad0
mov byte [edi + 0x35], 0
mov byte [edi + 0xad], 1
mov eax, dword [edi + 0x20]
call fcn.005a0298
test al, al
je case.0x59d2c8.0
mov eax, dword [edi + 0x20]
call fcn.005a0234
jmp case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
test eax, eax
je case.0x59d2c8.0
cmp byte [eax + 0x57], 0
je 0x59db11
mov dl, 1
mov eax, edi
mov ecx, dword [eax]
call dword [ecx + 0x10]
cmp byte [edi + 0x38], 0
jne case.0x59d2c8.0
mov dl, 1
mov eax, dword [edi + 0xb4]
call fcn.00572298
jmp case.0x59d2c8.0
cmp word [ebp + 4], 1
jne case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
call fcn.00572248
jmp case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
cmp dword [eax + 0x30], 0
je 0x59dbd3
mov eax, dword [0x63cbf4]
cmp byte [eax], 0
jne case.0x59d2c8.0
cmp byte [edi + 0x38], 0
jne 0x59db8e
mov dl, 1
mov eax, dword [edi + 0xb4]
call fcn.00572298
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je case.0x59d2c8.0
push 0
lea eax, [esp + 0x58]
push eax
xor ecx, ecx
mov edx, 0x110001
mov eax, 0xa100
call fcn.0057a26c
lea edx, [esp + 0x54]
mov eax, dword [edi + 0xb4]
call fcn.00576fa0
jmp case.0x59d2c8.0
mov byte [edi + 0x3a], 0
jmp case.0x59d2c8.0
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
je case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
mov dword [esp + 0x18], eax
mov eax, edi
call fcn.0059a9f4
mov eax, dword [eax + 0x52c]
imul edx, dword [edi + 0xb0], 0x26
lea ebp, [eax + edx*8]
mov eax, dword [esp + 0x18]
mov si, 0xffb6
call fcn.00404c10
test al, al
je case.0x59d2c8.0
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x1d8], 0
je case.0x59d2c8.0
cmp dword [ebp + 0x14], 0x64
jne 0x59dc5d
cmp dword [ebp + 0x50], 0x64
je case.0x59d2c8.0
mov byte [edi + 0xad], 1
mov byte [edi + 0x34], 1
mov eax, dword [0x63cfbc]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jae 0x59dd3c
cmp dword [ebp + 0xc0], 1
jle 0x59dd3c
mov byte [edi + 0xad], 1
mov byte [esp + 0x10], 0
mov eax, dword [ebp + 0x58]
mov edx, dword [edi + 0xb4]
cmp eax, dword [edx + 0x70]
je 0x59dcbf
cmp byte [edi + 0x11], 0
jne 0x59dcbf
mov edx, dword [ebp + 0x58]
mov eax, dword [edi + 0xb4]
call fcn.00456960
mov byte [esp + 0x10], 1
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x68]
mov eax, dword [eax + 0x18]
cmp eax, dword [ebp + 0x68]
je 0x59dd00
cmp byte [edi + 0x10], 0
jne 0x59dd00
or dword [edi + 0xa8], 0x2000
mov edx, dword [ebp + 0x68]
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x68]
call fcn.004323d0
and dword [edi + 0xa8], 0xffffdfff
mov byte [esp + 0x10], 1
cmp byte [edi + 0x35], 0
jne 0x59dd3c
cmp byte [esp + 0x10], 0
je 0x59dd25
push 0x585
push 0
push 0
mov eax, dword [esp + 0x24]
call fcn.0045e714
push eax
call sub.user32.dll_RedrawWindow
push 0
mov eax, dword [esp + 0x1c]
call fcn.0045e714
xor ecx, ecx
mov edx, 0x85
call fcn.00576e20
mov eax, dword [edi + 0x20]
cmp byte [eax + 8], 2
jne 0x59dd4d
mov eax, dword [edi + 0x20]
call fcn.005a0234
mov eax, dword [edi + 0x3c]
call fcn.0051b364
jmp case.0x59d2c8.0
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
je case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je case.0x59d2c8.0
mov eax, edi
call fcn.00597c8c
mov ebp, dword [edi + 0xb4]
mov eax, edi
call fcn.0059a9f4
mov eax, dword [eax + 0x52c]
imul edx, dword [edi + 0xb0], 0x26
lea eax, [eax + edx*8]
mov dword [esp + 0x1c], eax
mov eax, ebp
mov si, 0xffb6
call fcn.00404c10
test al, al
je case.0x59d2c8.0
mov byte [edi + 0x34], 0
mov byte [esp + 0x10], 0
mov eax, dword [0x63cfbc]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jae 0x59de99
mov eax, edi
call fcn.0059a52c
test al, al
jne 0x59de99
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x1c]
mov edx, dword [edi + 0xb4]
cmp eax, dword [edx + 0x70]
je 0x59de1d
cmp byte [edi + 0x11], 0
jne 0x59de1d
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x1c]
mov eax, dword [edi + 0xb4]
call fcn.00456960
mov byte [esp + 0x10], 1
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x68]
mov eax, dword [eax + 0x18]
mov edx, dword [esp + 0x1c]
cmp eax, dword [edx + 0x2c]
je 0x59de66
cmp byte [edi + 0x10], 0
jne 0x59de66
or dword [edi + 0xa8], 0x2000
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x2c]
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x68]
call fcn.004323d0
and dword [edi + 0xa8], 0xffffdfff
mov byte [esp + 0x10], 1
cmp byte [esp + 0x10], 0
jne 0x59de99
mov eax, dword [edi + 0xb4]
mov edx, dword [0x4ea6a8]
call fcn.00404ba0
test al, al
je 0x59de99
mov eax, dword [edi + 0xb4]
mov edx, dword [eax]
call dword [edx + 0x158]
test al, al
je 0x59de99
mov byte [esp + 0x10], 1
mov byte [edi + 0xad], 1
mov eax, edi
call fcn.00597c8c
mov eax, dword [edi + 0xb4]
cmp byte [eax + 0x57], 0
je 0x59def8
mov eax, dword [0x63cfbc]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jae 0x59def8
cmp byte [esp + 0x10], 0
je 0x59dee3
push 0x585
push 0
push 0
mov eax, ebp
call fcn.0045e714
push eax
call sub.user32.dll_RedrawWindow
push 0
mov eax, ebp
call fcn.0045e714
xor ecx, ecx
mov edx, 0x85
call fcn.00576e20
mov eax, dword [edi + 0x20]
cmp byte [eax + 8], 2
jne case.0x59d2c8.0
mov eax, dword [edi + 0x20]
call fcn.005a0234
jmp case.0x59d2c8.0
mov byte [edi + 0xac], 0
mov byte [edi + 0x34], 0
mov byte [edi + 0xad], 1
mov esi, dword [edi + 0xb4]
test esi, esi
je case.0x59d2c8.0
mov eax, esi
mov edx, dword [eax]
call dword [edx + 0x50]
test al, al
jne case.0x59d2c8.0
lea eax, [edi + 0x3c]
xor edx, edx
call fcn.0051b068
lea eax, [edi + 0x40]
call fcn.0051b22c
jmp case.0x59d2c8.0
mov esi, dword [edi + 0x74]
test esi, esi
je case.0x59d2c8.0
cmp byte [esi + 0x30], 0
je case.0x59d2c8.0
mov eax, esi
mov edx, dword [eax]
call dword [edx + 0x38]
jmp case.0x59d2c8.0
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
je 0x59e2a1
cmp byte [edi + 0xac], 0
jne 0x59e2a1
mov eax, edi
call fcn.0059ad2c
mov dword [esp + 0x20], eax
mov eax, edi
call fcn.0059a9f4
imul edx, dword [edi + 0xb0], 0x26
mov eax, dword [eax + 0x52c]
lea eax, [eax + edx*8]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
test byte [eax + 0x1c], 0x10
jne 0x59e252
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x74]
mov edx, 1
call fcn.0058f55c
test al, al
jne 0x59e252
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x14], 0x64
jne 0x59dffc
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x50], 0x64
je 0x59e252
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je 0x59e252
mov eax, dword [edi + 0xb4]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
test byte [eax + 0x1c], 0x10
jne 0x59e29a
mov eax, dword [esp + 0x28]
call fcn.0045a76c
dec eax
test eax, eax
jl 0x59e0b9
inc eax
mov dword [esp + 0x14], eax
xor esi, esi
mov edx, esi
mov eax, dword [esp + 0x28]
call fcn.0045a730
mov edx, dword [0x5518f8]
call fcn.00404ba0
test al, al
je 0x59e0b2
mov edx, esi
mov eax, dword [esp + 0x28]
call fcn.0045a730
cmp eax, dword [edi + 0xb4]
je 0x59e0b2
mov edx, esi
mov eax, dword [esp + 0x28]
call fcn.0045a730
cmp eax, dword [ebp + 8]
je 0x59e0b2
mov edx, esi
mov eax, dword [esp + 0x28]
call fcn.0045a730
mov eax, dword [eax + 0x210]
cmp byte [eax + 0xac], 0
je 0x59e0b2
push 0
mov edx, esi
mov eax, dword [esp + 0x2c]
call fcn.0045a730
xor ecx, ecx
mov edx, 0xb014
call fcn.00457aa8
inc esi
dec dword [esp + 0x14]
jne 0x59e042
mov eax, dword [0x63cd18]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jb 0x59e0d3
mov byte [edi + 0xac], 1
mov eax, dword [edi + 0xb4]
call fcn.0045e714
mov edx, eax
mov eax, dword [0x63cf48]
mov eax, dword [eax]
call fcn.0058c628
mov eax, dword [0x63d3b4]
push edi
mov esi, eax
lea edi, [esp + 0x80]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
pop edi
lea eax, [esp + 0x7c]
mov edx, dword [0x63d3f8]
mov cl, 0x20
call fcn.004044cc
mov al, byte [edi + 0x39]
and eax, 0xff
bt dword [esp + 0x7c], eax
jb 0x59e152
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x80]
mov al, byte [eax + 5]
xor al, 1
mov edx, eax
shl eax, 8
sub eax, edx
push eax
push 1
push 0xffffffffffffffff
mov eax, dword [esp + 0x34]
call fcn.0045e714
mov ecx, eax
xor edx, edx
mov eax, edi
call fcn.0059980c
mov eax, dword [0x63cfbc]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jae 0x59e29a
mov eax, dword [0x63cf78]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jae 0x59e18a
mov eax, dword [0x63cf44]
cmp byte [eax], 0
je 0x59e29a
mov eax, dword [esp + 0x24]
cmp dword [eax + 0xc0], 1
jle 0x59e29a
mov byte [edi + 0xad], 1
mov byte [esp + 0x10], 0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x58]
mov edx, dword [edi + 0xb4]
cmp eax, dword [edx + 0x70]
je 0x59e1d6
cmp byte [edi + 0x11], 0
jne 0x59e1d6
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x58]
mov eax, dword [edi + 0xb4]
call fcn.00456960
mov byte [esp + 0x10], 1
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x68]
mov eax, dword [eax + 0x18]
mov edx, dword [esp + 0x24]
cmp eax, dword [edx + 0x68]
je 0x59e21f
cmp byte [edi + 0x10], 0
jne 0x59e21f
or dword [edi + 0xa8], 0x2000
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x68]
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x68]
call fcn.004323d0
and dword [edi + 0xa8], 0xffffdfff
mov byte [esp + 0x10], 1
cmp byte [esp + 0x10], 0
je 0x59e239
push 0xffffffffffffffff
push 0
mov eax, dword [esp + 0x30]
call fcn.0045e714
push eax
call sub.user32.dll_InvalidateRect
push 0
mov eax, dword [esp + 0x2c]
call fcn.0045e714
xor ecx, ecx
mov edx, 0x85
call fcn.00576e20
jmp 0x59e29a
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je 0x59e280
mov eax, dword [edi + 0xb4]
call fcn.0045e714
mov edx, eax
mov eax, dword [0x63cf48]
mov eax, dword [eax]
call fcn.0058c628
mov eax, dword [0x63cd18]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jb 0x59e29a
mov byte [edi + 0xac], 1
mov eax, edi
call fcn.0054d200
mov eax, dword [0x63cb58]
cmp dword [eax], 0
je 0x59e2d6
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp dword [eax + 0xf4], 0
je 0x59e2d6
lea edx, [esp + 0x74]
xor eax, eax
call fcn.00571904
lea edx, [esp + 0x74]
mov eax, dword [0x63d0a4]
mov eax, dword [eax]
call fcn.0047edf4
mov esi, dword [edi + 0x74]
test esi, esi
je case.0x59d2c8.0
cmp byte [esi + 0x30], 0
je case.0x59d2c8.0
mov eax, esi
mov edx, dword [eax]
call dword [edx + 0x38]
jmp case.0x59d2c8.0
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
je case.0x59d2c8.0
cmp dword [edi + 0xb4], 0
je case.0x59d2c8.0
mov eax, dword [0x63cb58]
cmp dword [eax], 0
je 0x59e374
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp byte [eax + 0x89], 0
je 0x59e374
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp byte [eax + 0xb0], 0
je 0x59e374
mov eax, dword [0x63cb58]
mov eax, dword [eax]
cmp dword [eax + 0xc0], 0
je 0x59e374
mov eax, dword [0x63cb58]
mov eax, dword [eax]
mov eax, dword [eax + 0xc0]
mov edx, dword [eax]
call dword [edx + 0x50]
test al, al
jne 0x59e374
mov eax, dword [0x63cb58]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0xc0], edx
mov eax, dword [edi + 0xb4]
mov dword [esp + 0x2c], eax
mov eax, edi
call fcn.0059ad2c
mov ebp, eax
mov eax, edi
call fcn.0059a9f4
mov eax, dword [eax + 0x52c]
imul edx, dword [edi + 0xb0], 0x26
lea esi, [eax + edx*8]
mov eax, dword [ebp + 0x74]
mov edx, 1
call fcn.0058f55c
test al, al
jne 0x59e50c
test byte [ebp + 0x1c], 0x10
jne 0x59e50c
mov eax, edi
call fcn.0059d0c0
test al, al
jne 0x59e50c
mov eax, dword [0x63cd18]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jb 0x59e3e6
mov byte [edi + 0xac], 0
mov eax, dword [0x63d3b4]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jb 0x59e41e
mov eax, dword [0x63d3f8]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jb 0x59e41e
lea eax, [edi + 0x3c]
mov dl, 1
call fcn.0051b068
lea eax, [edi + 0x40]
call fcn.0051b22c
mov byte [esp + 0x10], 0
mov eax, dword [0x63cfbc]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jae 0x59e4b5
mov eax, edi
call fcn.0059a52c
test al, al
jne 0x59e4b5
cmp dword [esi + 0x14], 0x64
jne 0x59e44d
cmp dword [esi + 0x50], 0x64
je 0x59e4b5
mov eax, dword [esi + 0x1c]
mov edx, dword [edi + 0xb4]
cmp eax, dword [edx + 0x70]
je 0x59e474
cmp byte [edi + 0x11], 0
jne 0x59e474
mov edx, dword [esi + 0x1c]
mov eax, dword [edi + 0xb4]
call fcn.00456960
mov byte [esp + 0x10], 1
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x68]
mov eax, dword [eax + 0x18]
cmp eax, dword [esi + 0x2c]
je 0x59e4b5
cmp byte [edi + 0x10], 0
jne 0x59e4b5
or dword [edi + 0xa8], 0x2000
mov edx, dword [esi + 0x2c]
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x68]
call fcn.004323d0
and dword [edi + 0xa8], 0xffffdfff
mov byte [esp + 0x10], 1
mov eax, dword [edi + 0xb4]
cmp byte [eax + 0x57], 0
je 0x59e50c
mov eax, dword [0x63cfbc]
mov dl, byte [edi + 0x39]
and edx, 0xff
bt dword [eax], edx
jae 0x59e50c
mov byte [edi + 0xad], 1
cmp byte [esp + 0x10], 0
je 0x59e4f5
push 0xffffffffffffffff
push 0
mov eax, dword [esp + 0x34]
call fcn.0045e714
push eax
call sub.user32.dll_InvalidateRect
push 0
mov eax, dword [esp + 0x30]
call fcn.0045e714
xor ecx, ecx
mov edx, 0x85
call fcn.00576e20
mov esi, dword [edi + 0x74]
test esi, esi
je 0x59e520
cmp byte [esi + 0x30], 0
je 0x59e520
mov eax, esi
mov edx, dword [eax]
call dword [edx + 0x38]
mov eax, edi
call fcn.0054d200
jmp case.0x59d2c8.0
mov eax, edi
call fcn.005a0384
jmp case.0x59d2c8.0
lea eax, [esp + 0x34]
push eax
mov eax, edi
call fcn.0059afc8
push eax
call sub.user32.dll_GetWindowRect
test eax, eax
je 0x59e588
lea eax, [esp + 0x34]
xor edx, edx
call fcn.0057a698
mov edx, dword [ebp + 8]
cmp eax, dword [edx + 0x10]
je 0x59e56b
or dword [edi + 0xa8], 0x8000
lea eax, [esp + 0x34]
xor edx, edx
call fcn.0057a6ac
mov edx, dword [ebp + 8]
cmp eax, dword [edx + 0x14]
je 0x59e588
or dword [edi + 0xa8], 0x10000
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
je case.0x59d2c8.0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x18]
test dl, 1
jne case.0x59d2c8.0
test dl, 2
jne case.0x59d2c8.0
or dword [edi + 0xa8], 0x200000
jmp case.0x59d2c8.0
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
je case.0x59d2c8.0
and dword [edi + 0xa8], 0xffdfffff
jmp case.0x59d2c8.0
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
je case.0x59d2c8.0
mov byte [edi + 0xad], 1
mov eax, edi
call fcn.00598190
test al, al
je 0x59e634
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je 0x59e634
mov eax, dword [edi + 0xb4]
call fcn.0045e714
push eax
call sub.user32.dll_IsWindowVisible
test eax, eax
je 0x59e634
mov eax, edi
call fcn.0059a090
mov eax, edi
call fcn.0059bf7c
test al, al
je 0x59e751
mov eax, dword [edi + 0xb4]
mov edx, dword [0x6287bc]
call fcn.00404ba0
test al, al
je 0x59e6d2
mov eax, dword [edi + 0xb4]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
call fcn.00556b40
mov ebp, eax
mov eax, dword [esp + 0x30]
call fcn.00556b40
test eax, eax
je 0x59e73b
mov eax, ebp
call fcn.0045a76c
dec eax
test eax, eax
jl 0x59e73b
inc eax
mov dword [esp + 0x14], eax
xor esi, esi
mov eax, ebp
call fcn.0045a76c
cmp esi, eax
jge 0x59e6c9
mov edx, esi
mov eax, ebp
call fcn.0045a730
test byte [eax + 0x1c], 8
jne 0x59e6c9
push 0
mov edx, esi
mov eax, ebp
call fcn.0045a730
mov ecx, 0x140001
mov edx, 0xa100
call fcn.00457aa8
inc esi
dec dword [esp + 0x14]
jne 0x59e695
jmp 0x59e73b
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je 0x59e73b
mov ebp, dword [edi + 0xb4]
mov eax, ebp
call fcn.0045a76c
dec eax
test eax, eax
jl 0x59e73b
inc eax
mov dword [esp + 0x14], eax
xor esi, esi
mov eax, ebp
call fcn.0045a76c
cmp esi, eax
jge 0x59e734
mov edx, esi
mov eax, ebp
call fcn.0045a730
test byte [eax + 0x1c], 8
jne 0x59e734
push 0
mov edx, esi
mov eax, ebp
call fcn.0045a730
mov ecx, 0x140001
mov edx, 0xa100
call fcn.00457aa8
inc esi
dec dword [esp + 0x14]
jne 0x59e700
mov eax, dword [edi + 0xa8]
and eax, 0xffff7fff
and eax, 0xfffeffff
mov dword [edi + 0xa8], eax
cmp dword [edi + 0xa0], 0
je 0x59e76a
mov eax, dword [edi + 0xa0]
cmp byte [eax + 0x30], 0
jne case.0x59d2c8.0
lea eax, [edi + 0x3c]
xor edx, edx
call fcn.0051b068
lea eax, [edi + 0x40]
call fcn.0051b22c
jmp case.0x59d2c8.0
mov eax, edi
call fcn.00597c8c
jmp case.0x59d2c8.0
xor edx, edx
mov eax, edi
call fcn.0059bba8
test al, al
je case.0x59d2c8.0
mov eax, dword [edi + 0xb4]
mov edx, dword [0x452068]
call fcn.00404ba0
test al, al
je 0x59e8b0
mov eax, edi
call fcn.00598190
test al, al
je 0x59e839
mov eax, dword [edi + 0xb4]
call fcn.0045e714
push eax
call sub.user32.dll_IsWindowVisible
test eax, eax
je 0x59e839
push 0
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x30]
call fcn.0045e714
mov ecx, 0x110001
mov edx, 0xa100
call fcn.00576e20
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x30]
call fcn.0045e714
xor ecx, ecx
mov edx, 0x17
call fcn.00576d10
mov eax, dword [edi + 0xb4]
test byte [eax + 0x1c], 0x10
je 0x59e839
push 0x105
push 0
push 0
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x30]
call fcn.0045e714
push eax
call sub.user32.dll_RedrawWindow
mov eax, edi
call fcn.0059b648
test al, al
je 0x59e94c
mov byte [edi + 0xad], 1
mov eax, edi
call fcn.005a0964
test al, al
jne 0x59e94c
push 0
mov ecx, 0x140001
mov edx, 0xa100
mov eax, dword [edi + 0xb4]
call fcn.00457aa8
push 0
lea eax, [esp + 0x68]
push eax
mov dx, 0x52
xor eax, eax
call fcn.004092e8
mov edx, eax
xor ecx, ecx
mov eax, 0xa100
call fcn.0057a26c
lea eax, [esp + 0x64]
push eax
mov eax, dword [edi + 0xb4]
call fcn.0045e714
pop edx
call fcn.00572378
jmp 0x59e94c
mov eax, edi
call fcn.00598190
test al, al
je 0x59e945
mov eax, dword [edi + 0xb4]
cmp dword [eax + 0x30], 0
je 0x59e945
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x30]
call fcn.0045e714
push eax
call sub.user32.dll_IsWindowVisible
test eax, eax
je 0x59e945
push 0
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x30]
call fcn.0045e714
mov ecx, 0x110001
mov edx, 0xa100
call fcn.00576e20
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x30]
call fcn.0045e714
xor ecx, ecx
mov edx, 0x17
call fcn.00576d10
mov eax, dword [edi + 0xb4]
test byte [eax + 0x1c], 0x10
je 0x59e945
push 0x105
push 0
push 0
mov eax, dword [edi + 0xb4]
mov eax, dword [eax + 0x30]
call fcn.0045e714
push eax
call sub.user32.dll_RedrawWindow
mov byte [edi + 0xad], 1
lea eax, [edi + 0x3c]
xor edx, edx
call fcn.0051b068
lea eax, [edi + 0x40]
call fcn.0051b22c
jmp case.0x59d2c8.0
mov eax, edi
call fcn.0054d200
jmp case.0x59d2c8.0
mov eax, edi
call fcn.0054d200
mov eax, ebx
add esp, 0x9c
pop ebp
pop edi
pop esi
pop ebx
ret