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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa0
mov ebx, dword [ebp + 8]
test edx, edx
mov dword [esp + 0x1c], ecx
je 0x427899
cmp edx, 1
jne 0x427ad4
lea eax, [esp + 0x70]
lea ecx, [esp + 0x50]
xorps xmm0, xmm0
mov dword [eax + 8], 0x3b9aca00
movaps xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
xor esi, esi
xor edi, edi
mov dword [esp + 0xc], 0
inc esi
mov dword [esp + 0x10], ecx
cmp edi, 6
mov ecx, 6
mov ebx, eax
cmovb ecx, edi
shr eax, 1
mov edx, eax
and edx, 0x1f
cmp edx, 0x1f
mov dword [esp + 0x18], edx
jne 0x4276fc
mov ebx, dword [ebp + 8]
cmp edi, 6
ja 0x427780
test edi, edi
je 0x427786
mov eax, dword [esp + 0xc]
pause
dec eax
jne 0x4276f2
jmp 0x427786
lea edx, [ebx + 2]
mov dword [esp + 0x14], ebx
test bl, 1
mov ebx, dword [esp + 0x10]
jne 0x42773b
mov dword [esp + 0x48], esi
mov esi, edx
mov edx, dword [ebp + 8]
mfence
mov edx, dword [edx + 0x40]
mov ebx, edx
shr ebx, 1
cmp eax, ebx
je 0x42779c
xor edx, dword [esp + 0x14]
xor eax, eax
mov ebx, dword [esp + 0x10]
cmp edx, 0x40
mov edx, esi
mov esi, dword [esp + 0x48]
setae al
or edx, eax
test ebx, ebx
je 0x427769
mov eax, dword [esp + 0x14]
mov ebx, dword [ebp + 8]
lock cmpxchg dword [ebx], edx
je 0x427be5
cmp edi, 6
mov eax, 6
cmovb eax, edi
test eax, eax
je 0x427786
imul ecx, ecx
pause
dec ecx
jne 0x427762
jmp 0x427786
mov ebx, dword [ebp + 8]
cmp edi, 6
ja 0x427780
test edi, edi
je 0x427786
mov eax, dword [esp + 0xc]
pause
dec eax
jne 0x427779
jmp 0x427786
call dword [sym.imp.kernel32.dll_SwitchToThread]
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
add dword [esp + 0xc], esi
inc edi
add esi, 2
mov dword [esp + 0x10], ecx
jmp 0x4276bd
mov bl, 1
test dl, 1
jne 0x427cad
mov esi, dword [esp + 0x78]
cmp esi, 0x3b9aca00
je 0x4277ec
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
call fcn.005a62b0
mov dword [esp + 0x10], ebx
cmp eax, ebx
mov ebx, edx
mov dword [esp + 0xc], ecx
sbb ebx, edi
mov bl, 1
jb 0x4277ec
xor eax, dword [esp + 0x10]
xor edx, edi
mov ecx, edi
or edx, eax
jne 0x427cad
cmp dword [esp + 0xc], esi
jae 0x427cad
call fcn.005c1160
test eax, eax
je 0x427855
mov ebx, dword [eax]
mov esi, eax
mov dword [eax], 0
test ebx, ebx
je 0x427855
mov edx, dword [ebp + 8]
lea eax, [esp + 0x50]
lea ecx, [esp + 0x70]
mov dword [ebx + 0xc], 0
mov dword [ebx + 0x10], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
lea ecx, [esp + 0x20]
mov edx, ebx
call fcn.004243b0
mov eax, dword [esi]
mov dword [esi], ebx
test eax, eax
mov dword [esp + 0x20], eax
je 0x42784d
lock dec dword [eax]
jne 0x42784d
lea ecx, [esp + 0x20]
call fcn.005c3678
mov ebx, dword [ebp + 8]
jmp 0x4276a7
call fcn.0065a2d0
mov ebx, dword [ebp + 8]
mov esi, eax
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x50]
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], eax
mov edx, esi
lea eax, [esp + 0x70]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], eax
call fcn.004243b0
lock dec dword [esi]
jne 0x4276a7
lea ecx, [esp + 0x3c]
call fcn.005c3678
jmp 0x4276a7
lea eax, [esp + 0x70]
lea ecx, [esp + 0x50]
xorps xmm0, xmm0
mov dword [eax + 8], 0x3b9aca00
movaps xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
mov ecx, dword [ebx]
xor eax, eax
xor edi, edi
mov dword [esp + 0xc], 0
inc eax
mov dword [esp + 0x14], eax
cmp edi, 6
mov edx, 6
mov dword [esp + 0x10], edi
mov esi, dword [ebx + 0xd4]
cmovb edx, edi
mov edi, dword [ebx + 0x88]
xor eax, eax
sub eax, dword [ebx + 0x84]
imul edx, edx
mov dword [esp + 0x18], esi
dec edi
and edi, ecx
lea ebx, [edi + edi*2]
mov dword [esp + 0x48], ebx
mov esi, dword [esi + ebx*4 + 8]
lea ebx, [ecx + 1]
cmp ebx, esi
jne 0x427947
mov ebx, dword [ebp + 8]
inc edi
cmp edi, dword [ebx + 0x80]
jb 0x42791d
and eax, ecx
add eax, dword [ebx + 0x84]
mov esi, eax
mov eax, ecx
lock cmpxchg dword [ebx], esi
mov edi, dword [esp + 0x10]
je 0x427b97
mov esi, dword [esp + 0xc]
cmp edi, 6
mov eax, 6
cmovb eax, edi
test eax, eax
je 0x4279a5
pause
dec edx
jne 0x427940
jmp 0x4279a5
cmp esi, ecx
jne 0x427982
mov ebx, dword [ebp + 8]
mfence
mov eax, dword [ebx + 0x40]
mov esi, dword [ebx + 0x88]
mov edi, esi
not edi
and edi, eax
cmp edi, ecx
je 0x4279be
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
mov eax, 6
cmp edi, 6
cmovb eax, edi
test eax, eax
je 0x4279a5
pause
dec edx
jne 0x42797b
jmp 0x4279a5
mov edi, dword [esp + 0x10]
mov ebx, dword [ebp + 8]
mov esi, dword [esp + 0xc]
cmp edi, 7
jae 0x42799f
test edi, edi
je 0x4279a5
mov eax, esi
pause
dec eax
jne 0x427998
jmp 0x4279a5
call dword [sym.imp.kernel32.dll_SwitchToThread]
mov ecx, dword [ebx]
mov eax, dword [esp + 0x14]
inc edi
add esi, eax
add eax, 2
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], eax
jmp 0x4278c8
mov cl, 1
test esi, eax
mov dword [esp + 0x10], ecx
jne 0x427bd8
mov esi, dword [esp + 0x78]
cmp esi, 0x3b9aca00
je 0x427a12
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
call fcn.005a62b0
mov dword [esp + 0xc], ebx
cmp eax, ebx
mov ebx, edx
mov dword [esp + 0x14], ecx
sbb ebx, edi
mov ebx, dword [ebp + 8]
jb 0x427a12
xor eax, dword [esp + 0xc]
xor edx, edi
mov ecx, edi
or edx, eax
jne 0x427bd8
cmp dword [esp + 0x14], esi
jae 0x427bd8
call fcn.005c1160
test eax, eax
je 0x427a7b
mov ebx, dword [eax]
mov esi, eax
mov dword [eax], 0
test ebx, ebx
je 0x427a90
mov edx, dword [ebp + 8]
lea eax, [esp + 0x50]
lea ecx, [esp + 0x70]
mov dword [ebx + 0xc], 0
mov dword [ebx + 0x10], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
lea ecx, [esp + 0x20]
mov edx, ebx
call fcn.004257d8
mov eax, dword [esi]
mov dword [esi], ebx
test eax, eax
mov dword [esp + 0x20], eax
je 0x427a73
lock dec dword [eax]
jne 0x427a73
lea ecx, [esp + 0x20]
call fcn.005c3678
mov ebx, dword [ebp + 8]
jmp 0x4278b5
call fcn.0065a2d0
mov esi, eax
lea ecx, [esp + 0x50]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x20], ecx
jmp 0x427aa6
call fcn.0065a2d0
mov ebx, dword [ebp + 8]
mov esi, eax
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x50]
mov dword [esp + 0x20], eax
lea eax, [esp + 0x70]
lea ecx, [esp + 0x20]
mov edx, esi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], eax
call fcn.004257d8
lock dec dword [esi]
jne 0x4278b5
lea ecx, [esp + 0x3c]
call fcn.005c3678
jmp 0x4278b5
add ebx, 8
lea esi, [esp + 0x50]
xorps xmm0, xmm0
mov dword [esp + 0x28], 0x3b9aca00
mov dword [esp + 0x80], 0
mov ecx, esi
mov edx, ebx
movaps xmmword [esp + 0x70], xmm0
mov dword [esp + 0x18], ebx
call fcn.005f8836
cmp dword [esi], 0
jne 0x427f58
mov eax, dword [esp + 0x54]
mov cl, byte [esp + 0x58]
mov edi, dword [eax + 0x10]
mov byte [esp + 0x14], cl
mov dword [esp + 0xc], eax
test edi, edi
je 0x427b6f
call fcn.005bcbb0
test eax, eax
je 0x427f7f
mov ecx, eax
mov eax, dword [esp + 0xc]
shl edi, 2
lea ebx, [edi + edi*2]
xor edi, edi
mov dword [esp + 0x10], ecx
add eax, 8
mov edx, dword [eax]
mov dword [esp + 0x48], eax
mov esi, dword [edx]
cmp dword [esi + 0x14], ecx
je 0x427b66
mov ecx, dword [edx + 4]
xor eax, eax
lock cmpxchg dword [esi + 0xc], ecx
mov ecx, dword [esp + 0x10]
je 0x427dc1
add edx, 0xc
inc edi
add ebx, 0xfffffff4
jne 0x427b4b
mov ebx, dword [esp + 0xc]
cmp byte [ebx + 0x38], 0
je 0x427cb6
movzx edx, byte [esp + 0x14]
mov ecx, ebx
mov byte [esp + 0x30], 1
call fcn.005aa9d0
mov esi, dword [esp + 0x1c]
jmp 0x427d9a
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x48]
lea eax, [edx + esi*4 + 8]
lea edx, [edx + esi*4]
mov dword [esp + 0x50], edx
add ecx, dword [ebx + 0x84]
add ebx, 0x8c
mov dword [esp + 0x54], ecx
mov esi, dword [edx]
mov edi, dword [edx + 4]
mov dword [eax], ecx
mov ecx, ebx
call fcn.00425b7c
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], edi
mov dword [esp + 0x10], 0
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
jmp 0x427d9e
cmp dword [esp + 0x18], 0x1e
jne 0x427c0c
mov ecx, dword [esp + 0x10]
mov esi, edx
call fcn.00424154
mov ecx, dword [eax]
and esi, 0xfffffffe
xor edx, edx
mov dword [ebx + 4], eax
test ecx, ecx
setne dl
lea ecx, [esi + edx + 2]
mov dword [ebx], ecx
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
lea ecx, [ebx + ebx*2]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ebx
lea edi, [eax + 4]
lea esi, [eax + ecx*4 + 4]
mov dword [esp + 0x14], ecx
mov ecx, esi
call fcn.00424055
mov eax, dword [esi]
mov esi, dword [esi + 4]
lea edx, [ebx + 1]
xor ecx, ecx
cmp edx, 0x1f
mov dword [esp + 0xc], eax
je 0x427c66
mov eax, dword [esp + 0x14]
lea ecx, [edi + eax*4 + 8]
mov eax, dword [ecx]
mov ebx, eax
or ebx, 2
lock cmpxchg dword [ecx], ebx
jne 0x427c4e
test al, 4
je 0x427c9f
cmp dword [esp + 0x18], 0x1d
mov ecx, edx
jae 0x427c8d
lea eax, [ecx + ecx*2]
mov edx, dword [edi + eax*4 + 8]
test dl, 2
jne 0x427c87
lea edx, [edi + eax*4 + 8]
mov eax, dword [edx]
mov ebx, eax
or ebx, 4
lock cmpxchg dword [edx], ebx
jne 0x427c78
test al, 2
je 0x427c9f
inc ecx
cmp ecx, 0x1e
jne 0x427c66
push dword [esp + 0x10]
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [esp + 0xc]
xor ebx, ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x1c]
jmp 0x427d9e
call fcn.005c1160
test eax, eax
je 0x427ea6
mov edi, dword [eax]
mov esi, eax
mov dword [eax], 0
test edi, edi
je 0x427f07
mov ecx, ebx
lea eax, [esp + 0x70]
lea ebx, [esp + 0x50]
mov dword [edi + 0xc], 0
mov dword [edi + 0x10], 0
mov dword [ebx], eax
lea eax, [esp + 0x20]
movzx edx, word [esp + 0x4d]
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x18]
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], ecx
mov ch, byte [esp + 0x14]
mov cl, byte [esp + 0x4f]
mov byte [ebx + 0x10], ch
mov word [ebx + 0x11], dx
mov byte [ebx + 0x13], cl
lea ecx, [esp + 0x3c]
mov edx, ebx
push edi
call fcn.004252a8
add esp, 4
mov eax, dword [esi]
mov dword [esi], edi
test eax, eax
mov dword [ebx], eax
je 0x427d3e
lock dec dword [eax]
jne 0x427d3e
lea ecx, [esp + 0x50]
call fcn.005c3678
movsd xmm0, qword [esp + 0x3c]
mov eax, dword [esp + 0x44]
movsd qword [esp + 0x30], xmm0
mov dword [esp + 0x38], eax
mov al, byte [esp + 0x30]
movsd xmm0, qword [esp + 0x31]
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
cmp al, 2
movsd qword [esp + 0x90], xmm0
mov dword [esp + 0x97], ecx
je 0x427f9e
mov ecx, dword [esp + 0x97]
movsd xmm0, qword [esp + 0x90]
mov dword [esp + 0x38], ecx
movsd qword [esp + 0x31], xmm0
mov byte [esp + 0x30], al
mov bl, byte [esp + 0x30]
test bl, bl
je 0x427da7
xor eax, eax
inc eax
jmp 0x427db7
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov dword [esi + 4], eax
xor eax, eax
mov dword [esi + 8], ecx
mov dword [esi], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [edx + 8]
test eax, eax
je 0x427dcb
mov dword [esi + 0x10], eax
mov ecx, dword [esi + 8]
add ecx, 0x18
call fcn.005c0ef0
mov edx, dword [esp + 0x48]
lea ebx, [esp + 0x3c]
mov ecx, ebx
push 0x7f4a34
push edi
call fcn.006146f6
add esp, 8
cmp dword [ebx], 0
je 0x427b6f
mov esi, dword [esp + 0x44]
movsd xmm0, qword [esp + 0x3c]
movzx edx, byte [esp + 0x14]
mov ecx, dword [esp + 0xc]
movsd qword [esp + 0x50], xmm0
mov dword [esp + 0x58], esi
mov dword [esp + 0x80], esi
call fcn.005aa9d0
test esi, esi
je 0x427e45
cmp byte [esi + 0xd], 0
je 0x427e4e
mov edi, dword [esi + 4]
mov ebx, dword [esi + 8]
cmp dword [esi], 0
mov dword [esi], 0
je 0x427fc0
mov byte [esi + 0xc], 1
jmp 0x427e79
mov al, 1
mov byte [esp + 0x31], 1
jmp 0x427e83
mov ecx, esi
call fcn.005e5b44
mov edi, dword [esi + 4]
mov ebx, dword [esi + 8]
cmp dword [esi], 0
mov dword [esi], 0
je 0x427fd1
push esi
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], ebx
xor eax, eax
mov ecx, dword [esp + 0x50]
mov byte [esp + 0x30], al
mov esi, dword [esp + 0x1c]
lock dec dword [ecx]
jne 0x427d9a
lea ecx, [esp + 0x50]
call fcn.005c3678
jmp 0x427d9a
call fcn.0065a2d0
mov esi, eax
lea eax, [esp + 0x70]
lea edx, [esp + 0x50]
mov ch, byte [esp + 0x14]
movzx edi, word [esp + 0x4d]
mov cl, byte [esp + 0x4f]
mov dword [edx], eax
lea eax, [esp + 0x20]
mov dword [esp + 0x3c], esi
mov dword [edx + 4], eax
mov eax, dword [esp + 0x18]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ebx
mov byte [edx + 0x10], ch
mov byte [edx + 0x13], cl
mov word [edx + 0x11], di
lea ecx, [esp + 0x30]
push esi
call fcn.004252a8
add esp, 4
lock dec dword [esi]
jne 0x427b8e
lea ecx, [esp + 0x3c]
call fcn.005c3678
jmp 0x427b8e
call fcn.0065a2d0
mov edi, dword [esp + 0x18]
mov cl, byte [esp + 0x14]
mov esi, eax
lea eax, [esp + 0x70]
lea edx, [esp + 0x50]
mov dword [edx], eax
lea eax, [esp + 0x20]
mov dword [esp + 0x3c], esi
mov dword [edx + 4], eax
mov dword [edx + 8], edi
mov dword [edx + 0xc], ebx
mov byte [edx + 0x10], cl
lea ecx, [esp + 0x30]
push esi
call fcn.004252a8
add esp, 4
lock dec dword [esi]
jne 0x427d52
lea ecx, [esp + 0x3c]
call fcn.005c3678
jmp 0x427d52
mov eax, dword [esp + 0x54]
mov cl, byte [esp + 0x58]
lea esi, [esp + 0x3c]
mov edx, 0x2b
mov dword [esi], eax
mov byte [esi + 4], cl
mov ecx, str.called__Result::unwrap____on_an__Err__value
push 0x7f47a4
push 0x666cc8
jmp 0x427f93
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
mov edx, 0x46
push 0x7f49d0
push 0x666bb8
push esi
call fcn.006525c0
add esp, 0xc
ud2
call fcn.0065a2d0
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_syncmpmclist.rs
mov edx, 0x2b
mov dword [esp + 0x3c], eax
push 0x7f4ae8
call fcn.006522d0
add esp, 4
ud2
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_syncmpmclist.rs
mov edx, 0x2b
push 0x7f4794
jmp 0x427fb6
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_syncmpmclist.rs
mov edx, 0x2b
push 0x7f4784
jmp 0x427fb6