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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5478fd
mov eax, dword fs:[0]
push eax
sub esp, 0x40
push esi
push edi
mov eax, dword [0x58313c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x1c], esi
cmp byte [esi + 0x14], 0
lea eax, [esi + 0x14]
mov dword [ebp - 0x20], eax
jne 0x508c50
mov dword [ebp - 0x2c], eax
mov byte [ebp - 0x28], 0
mov byte [eax], 1
mov eax, dword [esi + 8]
mov dword [ebp - 4], 0
test eax, eax
je 0x508c36
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x508c36
call fcn.004ee210
test al, al
je 0x508c36
mov eax, dword [esi + 8]
test eax, eax
je 0x50898c
mov ecx, dword [eax + 8]
jmp 0x50898e
xor ecx, ecx
cmp dword [ecx + 0x24], 0
jle 0x508c36
test eax, eax
je 0x5089a1
mov eax, dword [eax + 8]
jmp 0x5089a3
xor eax, eax
cmp dword [eax + 0x28], 0
jle 0x508c36
mov edi, dword [esi + 0xc]
test edi, edi
jne 0x508af5
mov eax, dword [esi + 4]
push 0x90
mov dword [ebp - 0x14], eax
call fcn.00512877
mov edi, eax
add esp, 4
mov dword [ebp - 0x24], edi
test edi, edi
je 0x508ad8
mov eax, dword [esi + 8]
test eax, eax
je 0x5089e7
mov eax, dword [eax + 8]
mov dword [ebp - 0x18], eax
jmp 0x5089ee
mov dword [ebp - 0x18], 0
mov ecx, edi
call fcn.004a9c00
push dword [ebp - 0x18]
lea ecx, [edi + 0x88]
mov byte [ebp - 4], 2
mov dword [edi], vtable.juce::OutlineWindowComponent.0
call fcn.004a91d0
mov eax, dword [ebp - 0x14]
mov ecx, edi
push 1
mov byte [ebp - 4], 3
mov dword [edi + 0x8c], eax
call fcn.00504320
mov al, byte [edi + 0x80]
and al, 0xef
or al, 8
mov byte [edi + 0x80], al
mov ecx, dword [edi + 0x88]
test ecx, ecx
je 0x508a42
mov eax, dword [ecx + 8]
jmp 0x508a44
xor eax, eax
mov al, byte [eax + 0x80]
and al, 1
je 0x508a72
push 1
push 1
push dword [edi + 0x20]
mov ecx, edi
push dword [edi + 0x1c]
call fcn.00500920
push 0
push 0x406
mov ecx, edi
call fcn.004bb0a0
mov esi, dword [ebp - 0x1c]
jmp 0x508ada
test ecx, ecx
je 0x508a7b
mov eax, dword [ecx + 8]
jmp 0x508a7d
xor eax, eax
mov esi, dword [eax + 0x18]
mov dword [ebp - 0x14], esi
test esi, esi
je 0x508abc
test ecx, ecx
je 0x508a90
mov edx, dword [ecx + 8]
jmp 0x508a92
xor edx, edx
mov ecx, dword [esi + 0x34]
mov eax, dword [esi + 0x3c]
mov esi, dword [ebp - 0x14]
lea eax, [ecx + eax*4]
cmp ecx, eax
je 0x508aad
cmp edx, dword [ecx]
je 0x508ac1
add ecx, 4
cmp ecx, eax
jne 0x508aa2
or ecx, 0xffffffff
lea eax, [ecx + 1]
mov ecx, esi
push eax
push edi
call fcn.004ba2a0
mov esi, dword [ebp - 0x1c]
jmp 0x508ada
sub ecx, dword [esi + 0x34]
sar ecx, 2
lea eax, [ecx + 1]
mov ecx, esi
push eax
push edi
call fcn.004ba2a0
mov esi, dword [ebp - 0x1c]
jmp 0x508ada
xor edi, edi
mov ecx, dword [esi + 0xc]
mov byte [ebp - 4], 0
mov dword [esi + 0xc], edi
test ecx, ecx
je 0x508af1
mov eax, dword [ecx]
push 1
call dword [eax]
mov edi, dword [esi + 0xc]
test edi, edi
je 0x508b68
mov ecx, dword [edi + 0x78]
test ecx, ecx
jne 0x508b5a
push 0xc
call fcn.00512877
add esp, 4
test eax, eax
je 0x508b1c
mov dword [eax + 4], 0
mov dword [eax], vtable.juce::WeakReference_class_juce::Component__class_juce::ReferenceCountedObject_::SharedPointer.0
mov dword [eax + 8], edi
jmp 0x508b1e
xor eax, eax
cmp dword [edi + 0x78], eax
je 0x508b47
lock inc dword [eax + 4]
mov ecx, dword [edi + 0x78]
mov dword [edi + 0x78], eax
test ecx, ecx
je 0x508b47
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
sete al
test al, al
je 0x508b47
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [edi + 0x78]
mov esi, eax
mov dword [ebp - 0x18], eax
mov ecx, eax
mov dword [ebp - 0x14], esi
test eax, eax
je 0x508b70
jmp 0x508b62
mov esi, ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], esi
lock inc dword [ecx + 4]
jmp 0x508b70
xor esi, esi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], esi
mov edi, dword [ebp - 0x1c]
mov byte [ebp - 4], 4
mov eax, dword [edi + 8]
test eax, eax
je 0x508b83
mov eax, dword [eax + 8]
jmp 0x508b85
xor eax, eax
mov al, byte [eax + 0x81]
mov ecx, dword [edi + 0xc]
shr al, 3
and al, 1
movzx eax, al
push eax
call fcn.00500730
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x508c4a
cmp dword [esi + 8], 0
jne 0x508bc5
or ecx, 0xffffffff
lock xadd dword [eax + 4], ecx
dec ecx
jne 0x508c4a
mov eax, dword [esi]
mov ecx, esi
jmp 0x508c46
mov ecx, dword [edi + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
mov eax, dword [edi + 8]
test eax, eax
je 0x508bd9
mov eax, dword [eax + 8]
jmp 0x508bdb
xor eax, eax
push eax
lea eax, [ebp - 0x3c]
push eax
call edx
mov ecx, dword [edi + 0x10]
test ecx, ecx
je 0x508c11
mov ecx, dword [ecx + 8]
test ecx, ecx
je 0x508c11
movups xmm0, xmmword [ebp - 0x3c]
sub esp, 0x10
mov eax, esp
push 0
movups xmmword [eax], xmm0
push ecx
lea eax, [ebp - 0x4c]
push eax
call fcn.004a5b40
movups xmm0, xmmword [ebp - 0x4c]
add esp, 0x1c
jmp 0x508c15
movups xmm0, xmmword [ebp - 0x3c]
mov ecx, dword [edi + 0xc]
sub esp, 0x10
mov eax, esp
movups xmmword [eax], xmm0
call fcn.00500a70
or eax, 0xffffffff
lock xadd dword [esi + 4], eax
dec eax
jne 0x508c4a
mov eax, dword [esi]
mov ecx, esi
jmp 0x508c46
mov ecx, dword [esi + 0xc]
mov dword [esi + 0xc], 0
test ecx, ecx
je 0x508c4a
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [ebp - 0x20]
mov byte [eax], 0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret