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

Disassembly:
sub esp, 0xd0
push ebx
push ebp
push esi
mov esi, ecx
cmp dword [esi + 0x3a8], 0x313
push edi
jne 0x528eaf
push 0
push 0x6a39dc
push 0x697ffc
push 0
push str.tooltip
call fcn.004fdfa0
add esp, 4
push eax
call fcn.004893f8
add esp, 0x14
test eax, eax
je 0x528ea7
add eax, 0x314
jmp 0x528ea9
xor eax, eax
mov dword [esi + 0x3a8], eax
mov edi, dword [esp + 0xe8]
mov eax, dword [edi + 8]
mov ebp, dword [edi + 0x4c]
mov ebx, dword [edi + 0x50]
dec eax
cmp eax, 0x12
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], ebx
ja case.0x528ed8.3
movzx eax, byte [eax + 0x5299b8]
jmp dword [eax*4 + 0x5299a0]
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
call fcn.0050d8c0
mov edx, dword [esp + 0x24]
cmp edx, dword [esp + 0x2c]
jge 0x528eff
mov eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x30]
jl 0x528f11
mov eax, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
fild dword [esp + 0x24]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 0x41
jp 0x528f4d
fild dword [esp + 0x2c]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 0x41
jne 0x528f4d
fild dword [esp + 0x28]
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jp 0x528f4d
fild dword [esp + 0x30]
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 0x41
je 0x528f51
xor bl, bl
jmp 0x528f61
push 0xff
push ebx
push ebp
mov ecx, esi
call fcn.0050d9c0
mov bl, al
mov al, byte [esi + 0x362]
test al, al
mov byte [esp + 0x13], bl
je 0x528fee
test bl, bl
je 0x528fee
mov eax, dword [esi + 0x3a8]
test eax, eax
je 0x528fee
mov eax, dword [esi + 0x3ac]
test eax, eax
je 0x528fee
add eax, 4
test eax, eax
je 0x528fee
push 1
call fcn.004c9380
add esp, 4
test al, al
jne 0x528fee
mov ecx, dword [esi + 0x3a8]
test ecx, ecx
je 0x52900e
mov eax, dword [esi + 0x3ac]
test eax, eax
je 0x52900e
add eax, 4
test eax, eax
je 0x52900e
mov ebx, dword [ecx]
sub esp, 0x10
or eax, 0xffffffff
mov ebp, esp
mov dword [ebp], eax
or edx, 0xffffffff
mov dword [ebp + 4], edx
or edi, 0xffffffff
or eax, 0xffffffff
mov dword [ebp + 8], edi
mov dword [ebp + 0xc], eax
lea eax, [esi + 0x3ac]
push eax
push esi
call dword [ebx + 4]
mov edi, dword [esp + 0xe8]
mov bl, byte [esp + 0x13]
jmp 0x52900e
mov ecx, dword [esi + 0x3a8]
test ecx, ecx
je 0x52900e
mov eax, dword [esi + 0x3ac]
test eax, eax
je 0x52900e
add eax, 4
test eax, eax
je 0x52900e
mov edx, dword [ecx]
push esi
call dword [edx]
test bl, bl
jne 0x529020
mov al, byte [esi + 0x408]
test al, al
je 0x5291ef
mov ecx, esi
call fcn.0050d970
test bl, bl
je 0x5291ef
mov eax, dword [esi + 0x354]
test eax, eax
je 0x529052
cmp eax, 1
jne 0x529059
mov al, byte [esi + 0x359]
test al, al
je 0x529059
mov al, byte [esi + 0x35a]
test al, al
je 0x529059
mov ecx, esi
call fcn.0050d840
mov eax, dword [esi + 0x354]
mov edi, 2
cmp eax, edi
jne 0x529071
push 1
mov ecx, esi
call fcn.0050d700
cmp dword [esi + 0x354], 1
jne 0x529405
lea ebp, [esi + 0x3fc]
push ebp
lea eax, [esp + 0x18]
push eax
mov ecx, esi
call fcn.00528dd0
test eax, eax
jne 0x529405
mov eax, dword [esi + 0x3ec]
test eax, eax
je 0x5290a8
add eax, 4
jmp 0x5290aa
xor eax, eax
push 0
push 0x698018
push 0x697ffc
push 0
push eax
call fcn.004fdfa0
add esp, 4
push eax
call fcn.004893f8
add esp, 0x14
test eax, eax
je 0x529405
movzx edx, byte [esi + 0x3fd]
xor ecx, ecx
mov ch, byte [esi + 0x3ff]
push 1
push 0
push 1
push 1
sub esp, 0x10
mov ebx, esp
mov cl, byte [esi + 0x3fe]
shl ecx, 8
or ecx, edx
movzx edx, byte [ebp]
shl ecx, 8
or ecx, edx
mov dword [eax + 0x268], ecx
or dword [eax + 8], edi
or eax, 0xffffffff
mov dword [ebx], eax
or ecx, 0xffffffff
mov dword [ebx + 4], ecx
or edx, 0xffffffff
mov dword [ebx + 8], edx
or edi, 0xffffffff
mov ecx, esi
mov dword [ebx + 0xc], edi
call fcn.004db4d0
mov ecx, eax
call fcn.00506ef0
mov eax, dword [esi + 0x3f4]
test eax, eax
je 0x529405
mov ecx, dword [esp + 0xe4]
lea eax, [esp + 0x3c]
push eax
call fcn.004e32a0
mov eax, dword [eax]
test eax, eax
je 0x52915a
add eax, 4
jmp 0x52915c
xor eax, eax
mov ecx, dword [esi + 0x3f4]
mov edx, dword [ecx]
push 0
push ebp
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x529405
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov edi, eax
jae 0x529405
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x5291c1
mov edx, dword [edi]
and edx, 0xff
cmp edx, 0x80
jae 0x5291bc
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5291c1
mov eax, 0xff
test eax, eax
jne 0x529405
mov eax, dword [esp + 0x3c]
push eax
call fcn.00499410
mov eax, dword [esi + 8]
add esp, 4
neg eax
sbb eax, eax
add eax, 0xf4241
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
cmp dword [esi + 0x354], 1
mov byte [esi + 0x362], 1
jne 0x5293d9
fld dword [edi + 0x54]
fcomp dword [0x65c2f0]
fnstsw ax
test ah, 1
jne 0x5293d9
mov ecx, dword [esi + 0x414]
xor ebx, ebx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebx
fild qword [esp + 0x14]
fcomp dword [edi + 0x54]
fnstsw ax
test ah, 0x41
jne 0x5293d9
fld dword [edi + 0x58]
fcomp dword [0x65c2f0]
fnstsw ax
test ah, 1
jne 0x5293d9
mov edx, dword [esi + 0x418]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ebx
fild qword [esp + 0x14]
fcomp dword [edi + 0x58]
fnstsw ax
test ah, 0x41
jne 0x5293d9
fld dword [edi + 0x58]
lea ebp, [esi + 0x3fc]
call fcn.00487bd0
fld dword [edi + 0x54]
mov ecx, dword [esi + 0x410]
imul ecx, eax
mov dword [esp + 0x14], ecx
call fcn.00487bd0
mov ecx, dword [esp + 0x14]
add ecx, eax
mov eax, dword [esi + 0x41c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [esi + 0x3ec]
cmp eax, ebx
mov dword [ebp], ecx
je 0x5292b1
add eax, 4
jmp 0x5292b3
xor eax, eax
push ebx
push 0x698018
push 0x697ffc
push ebx
push eax
call fcn.004fdfa0
add esp, 4
push eax
call fcn.004893f8
add esp, 0x14
cmp eax, ebx
je 0x5293d9
movzx ecx, byte [esi + 0x3fd]
xor edx, edx
mov dh, byte [esi + 0x3ff]
push 1
push ebx
push 1
push 1
sub esp, 0x10
mov ebx, esp
mov dl, byte [esi + 0x3fe]
or edi, 0xffffffff
shl edx, 8
or edx, ecx
movzx ecx, byte [ebp]
shl edx, 8
or edx, ecx
or dword [eax + 8], 2
mov dword [eax + 0x268], edx
or eax, 0xffffffff
mov dword [ebx], eax
or ecx, 0xffffffff
mov dword [ebx + 4], ecx
or edx, 0xffffffff
mov dword [ebx + 8], edx
mov ecx, esi
mov dword [ebx + 0xc], edi
call fcn.004db4d0
mov ecx, eax
call fcn.00506ef0
mov eax, dword [esi + 0x3f4]
test eax, eax
je 0x5293d9
mov ecx, dword [esp + 0xe4]
lea edx, [esp + 0x34]
push edx
call fcn.004e32a0
mov eax, dword [eax]
test eax, eax
je 0x529361
add eax, 4
jmp 0x529363
xor eax, eax
mov ecx, dword [esi + 0x3f4]
mov edx, dword [ecx]
push 0
push ebp
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x34]
test eax, eax
je 0x5293d1
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov edi, eax
jae 0x5293d1
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x5293c0
mov edx, dword [edi]
and edx, 0xff
cmp edx, 0x80
jae 0x5293bb
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5293c0
mov eax, 0xff
test eax, eax
jne 0x5293d1
mov eax, dword [esp + 0x34]
push eax
call fcn.00499410
add esp, 4
mov dword [esp + 0x34], 0
mov eax, dword [esi + 0x3e8]
test eax, eax
jne 0x529405
cmp dword [esi + 0x354], 1
jne 0x5293f3
mov ecx, esi
call fcn.0050d7d0
cmp dword [esi + 0x354], 3
jne 0x529405
push 1
mov ecx, esi
call fcn.0050d670
mov eax, dword [esi + 8]
neg eax
sbb eax, eax
add eax, 0xf4241
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
mov al, byte [esi + 0x408]
test al, al
mov byte [esi + 0x35f], 1
jne 0x52943a
lea ecx, [esi + 0x400]
call fcn.004a9a90
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
call fcn.0050d8c0
mov edx, dword [esp + 0x24]
cmp edx, dword [esp + 0x2c]
jge 0x52945a
mov eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x30]
jl 0x52946c
mov eax, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
fild dword [esp + 0x24]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 0x41
jp 0x529633
fild dword [esp + 0x2c]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 0x41
jne 0x529633
fild dword [esp + 0x28]
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jp 0x529633
fild dword [esp + 0x30]
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jne 0x529633
mov al, byte [edi + 0x64]
test al, al
jne 0x529633
push 0xff
push ebx
push ebp
mov ecx, esi
call fcn.0050d9c0
test al, al
je 0x529633
mov ecx, dword [esi + 0x3a8]
test ecx, ecx
je 0x529500
mov eax, dword [esi + 0x3ac]
test eax, eax
je 0x529500
add eax, 4
test eax, eax
je 0x529500
mov byte [esi + 0x362], 0
mov edx, dword [ecx]
push esi
call dword [edx]
mov ecx, esi
call fcn.0050d970
push 1
mov ecx, esi
call fcn.0050d700
cmp byte [esi + 0x219], 1
mov edi, 7
je 0x529521
or dword [esi + 8], edi
mov eax, dword [esp + 0xec]
mov ecx, dword [esp + 0xe4]
mov byte [esi + 0x219], 1
mov dword [eax], ecx
mov al, byte [esi + 0x408]
test al, al
jne 0x5295d6
mov ecx, esi
call fcn.004db4d0
mov edx, dword [eax + 0x140]
mov ecx, esi
mov dword [esi + 0x3e8], edx
call fcn.004db4d0
mov edx, dword [eax]
push esi
mov ecx, eax
call dword [edx + 0x60]
mov ecx, esi
mov byte [esi + 0x408], 1
call fcn.004db4d0
mov eax, dword [eax + 0x13c]
add eax, 0x188
mov ecx, dword [eax]
mov dword [esp + 0x14], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x18], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov edx, dword [eax + 0xc]
push 0
lea eax, [esp + 0x18]
lea edi, [esi + 0x40c]
push eax
mov ecx, edi
mov dword [esp + 0x28], edx
call fcn.0049a6c0
push edi
lea ecx, [esp + 0x18]
push ecx
mov ecx, esi
call fcn.004db4d0
mov ecx, eax
call fcn.0050a7d0
mov eax, 0xf4240
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
push 0
push 0
push 0
lea ecx, [esp + 0x4c]
call fcn.004998c0
push eax
lea ecx, [esi + 0x40c]
call fcn.00499b00
lea ecx, [esp + 0x40]
call fcn.00499ac0
mov ecx, esi
call fcn.004db4d0
mov ecx, dword [esi + 0x3e8]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0x60]
push 1
mov ecx, esi
mov dword [esi + 0x3e8], 0
call fcn.0050d670
mov al, byte [esi + 0x219]
test al, al
je 0x5296a6
mov eax, dword [esi + 8]
or eax, edi
jmp 0x5296a3
mov al, byte [esi + 0x408]
test al, al
je case.0x528ed8.3
push 0
push 0
push 0
lea ecx, [esp + 0x9c]
call fcn.004998c0
push eax
lea ecx, [esi + 0x40c]
call fcn.00499b00
lea ecx, [esp + 0x90]
call fcn.00499ac0
mov ecx, esi
call fcn.004db4d0
mov ecx, dword [esi + 0x3e8]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0x60]
push 1
mov ecx, esi
mov dword [esi + 0x3e8], 0
call fcn.0050d670
mov al, byte [esi + 0x219]
test al, al
je 0x5296a6
mov eax, dword [esi + 8]
or eax, 7
mov dword [esi + 8], eax
mov byte [esi + 0x219], 0
mov byte [esi + 0x408], 0
mov byte [esi + 0x35f], 0
mov eax, 0xf4240
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
lea ecx, [esi + 0x400]
call fcn.004a99a0
mov cl, byte [esi + 0x408]
test cl, cl
je 0x529701
fcomp dword [0x663728]
fnstsw ax
test ah, 5
jp 0x529703
mov eax, 0xf4240
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
fstp st(0)
test cl, cl
je 0x529751
push 0
push 0
push 0
lea ecx, [esp + 0x74]
call fcn.004998c0
push eax
lea ecx, [esi + 0x40c]
call fcn.00499b00
lea ecx, [esp + 0x68]
call fcn.00499ac0
mov ecx, esi
call fcn.004db4d0
mov ecx, dword [esi + 0x3e8]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0x60]
mov dword [esi + 0x3e8], 0
mov byte [esi + 0x408], 0
lea edx, [esp + 0x24]
push edx
mov ecx, esi
mov byte [esi + 0x35f], 0
call fcn.0050d8c0
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x2c]
jge 0x529778
mov ecx, dword [esp + 0x28]
cmp ecx, dword [esp + 0x30]
jl 0x52978a
mov eax, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
fild dword [esp + 0x24]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 0x41
jp 0x529938
fild dword [esp + 0x2c]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 0x41
jne 0x529938
fild dword [esp + 0x28]
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jp 0x529938
fild dword [esp + 0x30]
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jne 0x529938
push 0xff
push ebx
push ebp
mov ecx, esi
call fcn.0050d9c0
test al, al
je 0x529938
mov ecx, esi
call fcn.0050d970
mov eax, dword [esi + 0x3f4]
test eax, eax
je 0x52989b
mov ecx, dword [esp + 0xe4]
lea edx, [esp + 0x38]
push edx
call fcn.004e32a0
mov eax, dword [eax]
test eax, eax
je 0x52981d
add eax, 4
jmp 0x52981f
xor eax, eax
mov ecx, dword [esi + 0x3f4]
mov edx, dword [ecx]
push 1
lea edi, [esi + 0x3fc]
push edi
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x38]
test eax, eax
je 0x529893
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov edi, eax
jae 0x529893
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x529882
mov edx, dword [edi]
and edx, 0xff
cmp edx, 0x80
jae 0x52987d
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x529882
mov eax, 0xff
test eax, eax
jne 0x529893
mov eax, dword [esp + 0x38]
push eax
call fcn.00499410
add esp, 4
mov dword [esp + 0x38], 0
mov al, byte [esi + 0x35c]
test al, al
jne 0x529938
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx + 0x78]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
mov eax, dword [esi + 0x3e8]
test eax, eax
je case.0x528ed8.3
cmp dword [edi + 0x10], 0x1b
jne case.0x528ed8.3
mov al, byte [esi + 0x408]
test al, al
mov byte [esi + 0x35f], 0
je 0x529938
push 0
push 0
push 0
lea ecx, [esp + 0xc4]
call fcn.004998c0
push eax
lea ecx, [esi + 0x40c]
call fcn.00499b00
lea ecx, [esp + 0xb8]
call fcn.00499ac0
mov ecx, esi
call fcn.004db4d0
mov ecx, dword [esi + 0x3e8]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0x60]
mov dword [esi + 0x3e8], 0
mov byte [esi + 0x408], 0
push 1
mov ecx, esi
call fcn.0050d670
mov al, byte [esi + 0x219]
test al, al
je 0x52994f
or dword [esi + 8], 7
mov byte [esi + 0x219], 0
mov eax, 0xf4240
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
mov edx, dword [esp + 0xec]
mov eax, dword [esp + 0xe4]
push edx
push edi
push eax
mov ecx, esi
call fcn.004e03c0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret 0xc
pop edi
pop esi
pop ebp
mov eax, 0xf4241
pop ebx
add esp, 0xd0
ret 0xc