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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x64
mov eax, dword [edx]
mov edi, edx
mov esi, ecx
test eax, eax
je 0x4cee8f
mov ecx, dword [esp + 0x78]
cmp eax, 1
jne 0x4ceebb
mov eax, dword [edi + 8]
mov ecx, 2
lea ebx, [edi + 4]
xchg dword [eax + 8], ecx
cmp ecx, 2
je 0x4cee49
mov ecx, dword [edi + 8]
mov eax, dword [ecx + 0x14]
mov edx, eax
or edx, 2
lock cmpxchg dword [ecx + 0x14], edx
jne 0x4cee1c
test eax, eax
jne 0x4cee49
mov eax, dword [ecx + 0xc]
mov edx, dword [ecx + 0x10]
mov dword [ecx + 0xc], 0
lock and dword [ecx + 0x14], 0xfffffffd
test eax, eax
je 0x4cee49
push edx
call dword [eax + 4]
add esp, 4
lea ebp, [esp + 0x24]
mov edx, ebx
mov ecx, ebp
call fcn.004cb879
mov ebp, dword [ebp]
cmp ebp, 2
jne 0x4cef5a
mov ecx, dword [ebx]
test ecx, ecx
je 0x4cf0c3
mov eax, dword [esp + 0x78]
add ecx, 0x24
mov edx, dword [eax]
call fcn.004b54cd
lea ebp, [esp + 0xc]
mov edx, ebx
mov ecx, ebp
call fcn.004cb879
mov ebp, dword [ebp]
jmp 0x4cefa6
mov eax, dword [edi + 4]
mov dword [edi + 4], 0
test eax, eax
je 0x4cf022
mov ecx, dword [edi + 0x10]
movsd xmm0, qword [edi + 8]
mov dword [esp + 0x2c], ecx
xor ecx, ecx
movsd qword [esp + 0x24], xmm0
inc ecx
jmp 0x4cf024
lea ebp, [edi + 8]
mov eax, ecx
lea ebx, [esp + 0xc]
mov ecx, ebx
mov edx, ebp
push eax
call fcn.004c47b6
add esp, 4
movzx eax, byte [ebx]
cmp eax, 7
je 0x4cf00c
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
cmp eax, 5
mov dword [esp], edx
mov edx, dword [esp + 0x1c]
je 0x4cf03a
cmp eax, 6
je 0x4cf017
lea edi, [esp + 0x4c]
mov ebp, ecx
mov ecx, dword [esp + 0x20]
mov byte [edi], al
movzx eax, word [esp + 0xd]
mov word [edi + 1], ax
mov al, byte [esp + 0xf]
mov byte [edi + 3], al
mov eax, dword [esp]
mov dword [edi + 4], ebp
mov dword [edi + 8], eax
mov dword [edi + 0xc], ebx
mov dword [edi + 0x10], edx
mov dword [edi + 0x14], ecx
mov ecx, 8
call fcn.004cbacb
mov ecx, eax
mov edx, edi
mov ebx, eax
call fcn.004cf1d6
mov dword [esi], 1
mov dword [esi + 4], 0
mov dword [esi + 8], ebx
jmp 0x4cf0a9
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [esp + 0x30]
test ebp, ebp
movsd qword [esp + 0x44], xmm1
movsd qword [esp + 0x3c], xmm0
jne 0x4cef8e
mov eax, dword [ebx]
test eax, eax
je 0x4cef88
lock dec dword [eax]
jne 0x4cef88
mov ecx, dword [ebx]
call fcn.004cb61d
mov dword [ebx], 0
movsd xmm0, qword [esp + 0x3c]
movsd xmm1, qword [esp + 0x44]
movsd qword [esp + 0x18], xmm1
movsd qword [esp + 0x10], xmm0
test ebp, ebp
je 0x4cf017
cmp ebp, 1
jne 0x4cf00c
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
test ecx, ecx
je 0x4cf0b1
mov dword [esp], eax
mov eax, dword [esp + 0x18]
mov ebp, dword [edi + 0x10]
mov ebx, dword [edi + 0x14]
xor edx, edx
dec edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 8], eax
mov eax, 0xfffffffd
cmp eax, ebp
sbb edx, ebx
mov edx, dword [esp + 4]
jb 0x4ceff5
sub ebp, edx
sbb ebx, 0
mov dword [edi + 0x10], ebp
mov dword [edi + 0x14], ebx
mov eax, dword [esp]
mov dword [esi], 1
mov dword [esi + 4], ecx
mov dword [esi + 8], eax
mov dword [esi + 0xc], edx
jmp 0x4cf0a2
mov dword [esi], 2
jmp 0x4cf0a9
mov dword [esi], 0
jmp 0x4cf0a9
xor ecx, ecx
mov dword [esi], ecx
mov dword [esi + 4], eax
movsd xmm0, qword [esp + 0x24]
mov eax, dword [esp + 0x2c]
movsd qword [esi + 8], xmm0
jmp 0x4cf0a6
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
lea ecx, [esp + 0x24]
mov edx, ebp
push ebx
call fcn.004c4cbb
lea eax, [esp + 0x28]
add esp, 4
cmp byte [eax], 5
je 0x4cf063
push eax
call fcn.004cafba
add esp, 4
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x1c]
xor edx, edx
mov ebp, 0xfffffffd
dec edx
cmp ebp, eax
sbb edx, ecx
jb 0x4cf082
sub eax, ebx
sbb ecx, 0
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], ecx
mov ecx, dword [edi + 4]
mov edx, ebx
call fcn.004cf0dc
mov eax, dword [esp]
mov ecx, dword [esp + 4]
mov dword [esi], 1
mov dword [esi + 8], eax
mov dword [esi + 4], ecx
mov dword [esi + 0xc], ebx
mov eax, dword [esp + 8]
mov dword [esi + 0x10], eax
add esp, 0x64
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esi], 1
mov dword [esi + 4], 0
mov dword [esi + 8], eax
jmp 0x4cf0a9
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_syncmpmclist.rs
mov edx, 0x2b
push 0x7b8ff8
call fcn.006522d0
add esp, 4
ud2