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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x2b0
mov edi, edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x68], 2
mov dword [esp + 0x78], 0
lea ecx, [edx + 0x70]
lea eax, [edx + 0xa8]
mov dword [esp + 0xc], eax
lea eax, [edx + 0x74]
mov dword [esp + 0x4c], eax
lea eax, [edx + 0x78]
mov dword [esp + 0x84], eax
mov esi, ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x40], edi
mov dword [esp + 0x48], edx
mov dword [esp + 0x1c], ebx
mov ecx, esi
mov esi, dword [esi]
lea eax, [esi - 3]
cmp eax, 2
jae 0x476a09
mov edx, dword [edi + 0xbc]
mov eax, dword [edi + 0xac]
mov ecx, dword [edi + 0xb8]
cmp ecx, eax
sbb edx, 0
jae 0x476a16
cmp eax, ecx
je 0x476a16
jmp 0x476c13
call fcn.004631c9
test eax, eax
jne 0x476d13
xor eax, eax
mov dword [edi + 0xbc], eax
mov dword [edi + 0xb8], eax
mov dword [edi + 0xac], eax
mov dword [edi + 0x70], 4
cmp esi, 3
jne 0x476f2b
mov eax, dword [esp + 0x4c]
movups xmm0, xmmword [eax]
movaps xmmword [esp + 0x20], xmm0
mov edx, dword [edi + 0x84]
mov eax, dword [edi + 0xc0]
add eax, 9
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], eax
mov word [esp + 0x8c], 0x904
mov dword [esp + 0x44], edx
mov dword [esp + 0x88], edx
lea ecx, [esp + 0x88]
lea esi, [esp + 0x50]
mov edx, esi
call fcn.0041a6b7
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
mov edi, dword [eax + 4]
mov eax, dword [esp + 0x28]
mov dword [esp + 8], edi
not edi
cmp edi, ecx
cmovae edi, ecx
cmp eax, edi
mov dword [esp + 0x18], eax
jbe 0x476b11
lea ecx, [esp + 0xa0]
lea edx, [esp + 0x20]
push edi
call fcn.00402d6d
add esp, 4
mov ebx, dword [esp + 0xa4]
mov ecx, esi
mov esi, dword [esp + 0xa8]
mov edx, ebx
push esi
call fcn.00413a80
add esp, 4
mov eax, dword [esp + 0xa0]
push esi
push ebx
lea ecx, [esp + 0xb4]
push ecx
call dword [eax + 8]
add esp, 0xc
mov ebx, dword [esp + 0x20]
lea eax, [esp + 0x24]
movsd xmm0, qword [eax]
movsd qword [esp + 0xa0], xmm0
mov eax, dword [eax + 8]
mov dword [esp + 0xa8], eax
jmp 0x476b22
mov edx, dword [esp + 0x24]
mov ecx, esi
push eax
call fcn.00413a80
add esp, 4
xor ebx, ebx
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x50]
mov edx, dword [eax + 4]
mov ecx, edx
sub ecx, dword [esp + 8]
bswap ecx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], 0
xor ecx, ecx
cmp ecx, 5
je 0x476b57
cmp byte [esp + ecx + 0x58], 0
lea ecx, [ecx + 1]
je 0x476b43
jmp 0x47709a
cmp edx, 2
jbe 0x4770ae
mov ecx, dword [eax]
lea edx, [esp + 0x5d]
mov dl, byte [edx + 2]
mov byte [ecx + 2], dl
lea edx, [esp + 0x5d]
movzx edx, word [edx]
mov word [ecx], dx
test ebx, ebx
je 0x476b8c
mov edx, dword [eax + 4]
cmp edx, 4
jbe 0x47705f
mov eax, dword [eax]
add byte [eax + 4], 0xfc
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x98], eax
movsd xmm0, qword [esp + 0xa0]
movsd qword [esp + 0x90], xmm0
cmp dword [esp + 0x18], edi
ja 0x476bc9
mov eax, dword [esp + 0x20]
push dword [esp + 0x28]
push dword [esp + 0x28]
lea ecx, [esp + 0x34]
push ecx
call dword [eax + 8]
add esp, 0xc
test ebx, ebx
mov edi, dword [esp + 0x40]
je 0x4769db
mov ecx, esi
call fcn.0046ae34
mov dword [edi + 0x70], 3
mov dword [edi + 0x74], ebx
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x84]
mov dword [ecx + 8], eax
movsd xmm0, qword [esp + 0x90]
movsd qword [ecx], xmm0
mov eax, dword [esp + 0x44]
mov dword [edi + 0x84], eax
jmp 0x4769db
mov edx, dword [edi + 0xbc]
mov eax, dword [edi + 0xac]
mov ecx, dword [edi + 0xb8]
xor ebx, ebx
cmp ecx, eax
sbb edx, 0
mov esi, dword [esp + 0x10]
jae 0x4769d7
cmp eax, ecx
je 0x4769d7
mov eax, edi
mov edi, dword [edi + 0xd0]
mov esi, dword [eax + 0xd4]
push edi
call dword [esi + 0x20]
add esp, 4
test al, al
je 0x476cba
xor eax, eax
mov dword [esp + eax*8 + 0xa0], 0
mov dword [esp + eax*8 + 0xa4], str._rustc_a4472498d7e88041f6206faf4503eb1f246fd427librarycore_src_sync_atomic.rsthere_is_no_such_thing_as_an_acquire_store
inc eax
cmp eax, 0x40
jne 0x476c59
mov ecx, dword [esp + 0xc]
call fcn.00444674
mov dword [esp + 0xa0], edx
mov dword [esp + 0xa4], eax
push 1
lea eax, [esp + 0xa4]
push eax
push dword [ebp + 8]
push edi
lea eax, [esp + 0x30]
push eax
call dword [esi + 0x1c]
add esp, 0x14
cmp byte [esp + 0x20], 5
je 0x47706e
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
jmp 0x476cf3
mov ecx, dword [esp + 0xc]
call fcn.00444674
push edx
push eax
push dword [ebp + 8]
push edi
lea eax, [esp + 0xb0]
push eax
call dword [esi + 0x10]
add esp, 0x14
cmp byte [esp + 0xa0], 5
je 0x47706e
mov eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0xa4]
cmp al, 4
jne 0x477076
mov ecx, dword [esp + 0xc]
mov edx, ebx
call fcn.004446a6
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x10]
jmp 0x4769d7
mov eax, dword [edi + 0xb8]
mov ecx, dword [edi + 0xac]
mov esi, eax
sub esi, ecx
neg esi
cmp eax, ecx
mov eax, dword [edi + 0xbc]
sbb eax, 0
mov eax, 0
cmovae esi, eax
mov ecx, dword [esp + 0x10]
call fcn.004631c9
add eax, esi
jb 0x4770bd
xor edx, edx
test eax, eax
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
je 0x4769d3
mov eax, dword [edi + 0xd0]
mov ebx, dword [edi + 0xd4]
mov dword [esp + 8], eax
push eax
call dword [ebx + 0x20]
add esp, 4
test al, al
je 0x476e43
xor eax, eax
mov dword [esp + eax*8 + 0xa0], 0
mov dword [esp + eax*8 + 0xa4], str._rustc_a4472498d7e88041f6206faf4503eb1f246fd427librarycore_src_sync_atomic.rsthere_is_no_such_thing_as_an_acquire_store
inc eax
cmp eax, 0x40
jne 0x476d7c
mov dword [esp + 0x18], ebx
mov edx, dword [edi + 0xbc]
mov eax, dword [edi + 0xac]
mov ecx, dword [edi + 0xb8]
xor edi, edi
cmp ecx, eax
sbb edx, 0
mov esi, 0
jae 0x476dda
cmp eax, ecx
je 0x476dda
mov ecx, dword [esp + 0xc]
call fcn.00444674
mov dword [esp + 0xa0], edx
mov dword [esp + 0xa4], eax
xor esi, esi
inc esi
mov ebx, dword [esp + 0x10]
mov ecx, ebx
call fcn.004631c9
test eax, eax
je 0x476e01
mov ecx, ebx
call fcn.00463203
mov dword [esp + esi*8 + 0xa0], edx
mov dword [esp + esi*8 + 0xa4], eax
xor edi, edi
inc edi
add edi, esi
push edi
lea eax, [esp + 0xa4]
push eax
push dword [ebp + 8]
push dword [esp + 0x14]
lea eax, [esp + 0x30]
push eax
mov eax, dword [esp + 0x2c]
call dword [eax + 0x1c]
add esp, 0x14
cmp byte [esp + 0x20], 5
je 0x477036
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
cmp al, 4
jne 0x47703e
mov edi, dword [esp + 0x40]
jmp 0x476ead
mov edx, dword [edi + 0xbc]
mov eax, dword [edi + 0xac]
mov ecx, dword [edi + 0xb8]
cmp ecx, eax
sbb edx, 0
jae 0x476e6b
cmp eax, ecx
je 0x476e6b
mov ecx, dword [esp + 0xc]
call fcn.00444674
jmp 0x476e72
mov ecx, esi
call fcn.00463203
push edx
push eax
push dword [ebp + 8]
push dword [esp + 0x14]
lea eax, [esp + 0xb0]
push eax
call dword [ebx + 0x10]
add esp, 0x14
cmp byte [esp + 0xa0], 5
je 0x477036
mov eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0xa4]
cmp al, 4
jne 0x47703e
mov eax, dword [edi + 0xac]
mov ecx, dword [edi + 0xb8]
mov edx, ecx
sub edx, eax
mov esi, dword [edi + 0xbc]
sbb esi, 0
mov dword [esp + 8], ebx
mov dword [esp + 0x18], ebx
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
jae 0x476f03
mov dword [esp + 0x44], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x18], eax
cmp dword [esp + 0x44], ecx
je 0x476f03
neg edx
mov eax, dword [esp + 8]
mov ecx, eax
sub ecx, edx
jbe 0x476f17
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0xc]
call fcn.004446a6
mov ecx, esi
mov edx, dword [esp + 0x18]
call fcn.004676f6
mov edx, dword [esp + 8]
jmp 0x4769d3
mov ecx, dword [esp + 0xc]
mov edx, eax
call fcn.004446a6
mov edx, dword [esp + 8]
jmp 0x4769d3
cmp esi, 4
je 0x476f9a
mov ecx, dword [esp + 0x4c]
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x30], eax
movups xmm0, xmmword [ecx]
movaps xmmword [esp + 0x20], xmm0
movups xmm0, xmmword [edi + 0x88]
movups xmm1, xmmword [edi + 0x98]
movaps xmmword [esp + 0xb0], xmm1
movaps xmmword [esp + 0xa0], xmm0
cmp dword [edi + 0x38], 3
je 0x476f6f
lea ecx, [edi + 0x38]
call fcn.0046ae58
mov dword [edi + 0x38], esi
movaps xmm0, xmmword [esp + 0x20]
movups xmmword [edi + 0x3c], xmm0
mov eax, dword [esp + 0x30]
mov dword [edi + 0x4c], eax
movaps xmm0, xmmword [esp + 0xa0]
movaps xmm1, xmmword [esp + 0xb0]
movups xmmword [edi + 0x50], xmm0
movups xmmword [edi + 0x60], xmm1
mov eax, dword [edi + 0xd4]
push dword [ebp + 8]
push dword [edi + 0xd0]
lea ecx, [esp + 0xa8]
push ecx
call dword [eax + 0x14]
add esp, 0xc
cmp byte [esp + 0xa0], 5
jne 0x476fca
mov eax, dword [esp + 0x14]
mov byte [eax], 5
jmp 0x476fee
mov eax, dword [esp + 0xa0]
cmp al, 4
jne 0x476fde
mov eax, dword [esp + 0x14]
mov byte [eax], 4
jmp 0x476fee
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x14]
mov dword [edx], eax
mov dword [edx + 4], ecx
mov eax, dword [esp + 0x68]
cmp eax, 2
je 0x477025
test eax, eax
je 0x477011
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x70]
mov edx, dword [eax + 8]
dec edx
and edx, 0xfffffff8
add ecx, edx
add ecx, 8
jmp 0x477019
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x70]
lea edx, [esp + 0x60]
push edx
push ecx
call dword [eax + 0x34]
add esp, 8
lea ecx, [esp + 0x60]
call fcn.0046af66
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov al, 5
mov edx, dword [esp + 0x48]
jmp 0x477046
mov ecx, eax
shrd ecx, ebx, 8
mov edx, ebx
cmp al, 5
je 0x476fc1
shl ecx, 8
movzx eax, al
or eax, ecx
mov ecx, dword [esp + 0x14]
mov dword [ecx + 4], edx
jmp 0x477093
mov ecx, 4
push 0x4e1488
call fcn.004cb900
mov al, 5
mov ebx, dword [esp + 0x1c]
jmp 0x47707c
mov ecx, eax
shrd ecx, ebx, 8
cmp al, 5
je 0x476fc1
shl ecx, 8
movzx eax, al
or eax, ecx
mov ecx, dword [esp + 0x14]
mov dword [ecx + 4], ebx
mov dword [ecx], eax
jmp 0x476fee
mov ecx, 0x4e1429
mov edx, 0x3e
push 0x4e1468
call fcn.004cb970
mov ecx, 3
push 0x4e1478
call fcn.004cb960
mov ecx, 0x4f50a0
call fcn.004cbd00
int3