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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x460
mov esi, esp
mov edi, ecx
mov eax, dword [0x511014]
xor eax, ebp
mov dword [esi + 0x458], eax
xor eax, eax
dec eax
mov dword [esi + 0x34], eax
mov dword [esi + 0x30], eax
mov eax, dword [ecx + 0x78]
mov dword [esi + 0x30], eax
cmp dword [eax + 8], 0
mov dword [esi + 0xc], edx
sete byte [esi + 0x34]
lea ebx, [esi + 0xb8]
push 0x3a0
push 0xff
push ebx
call fcn.00498980
mov edx, edi
add esp, 0xc
lea eax, [esi + 0x438]
mov dword [eax + 8], ebx
mov dword [eax + 0x18], ebx
mov byte [eax], 1
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ebx
mov dword [eax + 0x14], eax
mov edi, dword [edi + 0x84]
cmp edi, dword [edx + 0x88]
je 0x477367
lea eax, [edx + 0x80]
mov dword [esi + 0x2c], eax
mov dword [esi + 4], edx
mov ebx, dword [edi]
test ebx, ebx
je 0x4775e8
mov ecx, dword [ebx + 0xc]
cmp ecx, 0x493140
je 0x4770f9
call dword [section..00cfg]
push 0
push ebx
call ecx
mov edx, dword [esi + 4]
add esp, 8
test al, al
jne 0x477489
cmp dword [edi + 0x30], 1
je 0x47759a
mov ebx, dword [edi + 0x20]
mov edi, dword [edi + 0x24]
mov eax, dword [esi + 0xc]
cmp byte [eax], 0
jne 0x4772ff
mov dword [esi + 0x20], edi
mov dword [esi + 8], ebx
mov ebx, dword [eax + 0x18]
mov eax, dword [ebx]
mov edi, dword [eax + 4]
cmp edi, 0x476f00
jne 0x47732a
mov ecx, dword [fcn.0048cd00]
cmp ecx, 0x493220
jne 0x47733f
xor eax, eax
mov dword [esi + 0x44], eax
mov dword [esi + 0x40], eax
lea eax, [esi + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [esi + 0x40]
mov edi, dword [esi + 0x44]
mov eax, 0x7bd05af6
cmp eax, ebx
mov eax, 0x863
sbb eax, edi
jl 0x477645
mov eax, ebx
mov ecx, 0xf4240
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x52120c]
push dword [0x521208]
push ecx
push eax
call fcn.004b5fc0
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], edx
mov edi, dword [esi + 0xc]
mov ebx, dword [esi + 8]
cmp byte [edi], 0
mov ecx, dword [esi + 0x38]
mov eax, dword [esi + 0x3c]
mov dword [edi + 8], ecx
mov dword [edi + 0xc], eax
mov edx, dword [esi + 4]
jne 0x4771b4
mov byte [edi], 1
mov edi, dword [esi + 0x20]
cmp ecx, ebx
sbb eax, edi
jl 0x477353
xor ebx, ebx
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0xa0], xmm0
movdqa xmmword [esi + 0x90], xmm0
movdqa xmmword [esi + 0x80], xmm0
movdqa xmmword [esi + 0x70], xmm0
movdqa xmmword [esi + 0x60], xmm0
movdqa xmmword [esi + 0x50], xmm0
movdqa xmmword [esi + 0x40], xmm0
mov eax, dword [edx + 0x84]
cmp eax, dword [edx + 0x88]
lea edi, [esi + 0x40]
je 0x477611
cmp byte [eax + 0x59], 0
je 0x477214
dec dword [edx + 0x90]
mov ecx, dword [esi + 0x2c]
push 0
push edi
call fcn.004778e0
test bl, bl
jne 0x4773e8
mov eax, dword [ebp + 8]
mov dword [esi + 0xa0], eax
mov eax, dword [ebp + 0xc]
mov dword [esi + 0xa4], eax
mov ebx, dword [esi + 4]
mov ecx, ebx
mov edx, edi
call fcn.004776d0
mov dword [esi + 8], esp
sub esp, 0x70
mov eax, esp
mov ecx, dword [esi + 0x40]
mov dword [eax], ecx
xor edi, edi
mov dword [esi + 0x40], edi
lea edx, [esi + 0x44]
movups xmm0, xmmword [edx]
movups xmmword [eax + 4], xmm0
movups xmm0, xmmword [edx + 0x3d]
movups xmmword [eax + 0x41], xmm0
movups xmm0, xmmword [edx + 0x34]
movups xmmword [eax + 0x38], xmm0
movups xmm0, xmmword [edx + 0x14]
movups xmm1, xmmword [edx + 0x24]
movups xmmword [eax + 0x28], xmm1
movups xmmword [eax + 0x18], xmm0
movzx ecx, word [edx + 0x54]
mov word [eax + 0x58], cx
mov cl, byte [edx + 0x56]
mov byte [eax + 0x5a], cl
mov ecx, dword [esi + 0x9c]
mov dword [eax + 0x5c], ecx
mov dword [esi + 0x9c], edi
movq xmm0, qword [esi + 0xa0]
movq qword [eax + 0x60], xmm0
mov ecx, dword [esi + 0xa8]
mov dword [eax + 0x68], ecx
mov dword [esi + 0xa8], edi
mov ecx, dword [esi + 0xac]
mov dword [eax + 0x6c], ecx
lea ecx, [esi + 0x30]
call fcn.00477750
mov edx, ebx
mov esp, dword [esi + 8]
mov eax, dword [esi + 0xa8]
test eax, eax
jne 0x47730a
mov ebx, dword [esi + 0x9c]
test ebx, ebx
jne 0x477314
mov edi, dword [esi + 0x40]
test edi, edi
jne 0x47731f
mov edi, dword [edx + 0x84]
cmp edi, dword [edx + 0x88]
jne 0x4770cb
jmp 0x477353
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
jmp 0x4771b7
lock dec dword [eax]
jne 0x4772da
jmp 0x4774bf
lock dec dword [ebx + 4]
jne 0x4772e4
jmp 0x4774d0
lock dec dword [edi]
je 0x4773d1
jmp 0x4772eb
mov ecx, edi
call dword [section..00cfg]
mov ecx, ebx
lea eax, [esi + 0x38]
push eax
call edi
jmp 0x477197
call dword [section..00cfg]
lea eax, [esi + 0x38]
push eax
call ecx
add esp, 4
jmp 0x477197
mov ebx, dword [esi + 0x444]
mov edi, dword [esi + 0x448]
cmp edi, ebx
jne 0x477490
mov dword [esi + 0x448], ebx
mov ecx, edx
push dword [esi + 0xc]
call fcn.00478670
mov ebx, dword [esi + 0x444]
test ebx, ebx
je 0x4773b4
mov edi, dword [esi + 0x448]
mov eax, ebx
cmp edi, ebx
jne 0x4774a6
mov dword [esi + 0x448], ebx
mov ecx, dword [esi + 0x450]
test ecx, ecx
je 0x477526
cmp ecx, eax
jne 0x477526
mov byte [eax + 0x380], 0
lea ecx, [esi + 0x30]
call fcn.00478ad0
mov ecx, dword [esi + 0x458]
xor ecx, ebp
call fcn.00496ce3
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [edi + 8]
call dword [section..00cfg]
push edi
call ecx
mov edx, dword [esi + 4]
add esp, 4
jmp 0x4772eb
mov eax, dword [esi + 0x448]
cmp eax, dword [esi + 0x44c]
jae 0x477515
test eax, eax
je 0x477627
mov ecx, dword [esi + 0x40]
mov dword [eax], ecx
xor edi, edi
mov dword [esi + 0x40], edi
lea edx, [esi + 0x44]
movups xmm0, xmmword [edx]
movups xmmword [eax + 4], xmm0
movups xmm0, xmmword [edx + 0x3d]
movups xmmword [eax + 0x41], xmm0
movups xmm0, xmmword [edx + 0x34]
movups xmmword [eax + 0x38], xmm0
movups xmm0, xmmword [edx + 0x14]
movups xmm1, xmmword [edx + 0x24]
movups xmmword [eax + 0x28], xmm1
movups xmmword [eax + 0x18], xmm0
movzx ecx, word [edx + 0x54]
mov word [eax + 0x58], cx
mov cl, byte [edx + 0x56]
mov byte [eax + 0x5a], cl
mov ecx, dword [esi + 0x9c]
mov dword [eax + 0x5c], ecx
mov dword [esi + 0x9c], edi
movq xmm0, qword [esi + 0xa0]
movq qword [eax + 0x60], xmm0
mov ecx, dword [esi + 0xa8]
mov dword [eax + 0x68], ecx
mov dword [esi + 0xa8], edi
mov ecx, dword [esi + 0xac]
mov dword [eax + 0x6c], ecx
add eax, 0x70
mov dword [esi + 0x448], eax
mov edx, dword [esi + 4]
jmp 0x4772d0
mov bl, 1
jmp 0x4771c3
add edi, 0xffffff90
mov ecx, edi
call fcn.0045d4d0
cmp edi, ebx
jne 0x477490
mov edx, dword [esi + 4]
jmp 0x477367
add edi, 0xffffff90
mov ecx, edi
call fcn.0045d4d0
cmp edi, ebx
jne 0x4774a6
mov eax, dword [esi + 0x444]
jmp 0x477391
push eax
call fcn.00494aa1
mov edx, dword [esi + 4]
add esp, 4
jmp 0x4772da
mov eax, dword [ebx]
mov edi, dword [eax + 8]
cmp edi, 0x48fb30
jne 0x477544
mov edi, dword [eax + 4]
cmp edi, 0x492530
jne 0x477534
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x4774f8
lock dec dword [eax]
je 0x47758c
mov edi, dword [ebx + 8]
test edi, edi
je 0x477504
lock dec dword [edi]
je 0x477552
push ebx
call fcn.00494aa1
add esp, 4
mov edx, dword [esi + 4]
jmp 0x4772e4
lea ecx, [esi + 0x444]
push edi
call fcn.00476200
jmp 0x477481
push eax
call fcn.00494aa1
add esp, 4
jmp 0x4773b4
mov ecx, edi
call dword [section..00cfg]
mov ecx, ebx
push 1
call edi
jmp 0x47750d
mov ecx, edi
call dword [section..00cfg]
mov ecx, ebx
call edi
jmp 0x47750d
mov eax, dword [edi + 0x10]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x518914]
bt edx, ecx
jb 0x4776c2
mov dword [edi + 0x10], 0
lea ecx, [edi + 4]
call fcn.0040a0c0
push edi
call fcn.00494aa1
add esp, 4
jmp 0x477504
push eax
call fcn.00494aa1
add esp, 4
jmp 0x4774f8
mov eax, dword [edi + 0x2c]
mov edx, dword [edi + 0x28]
mov ecx, edx
add ecx, 0xffffffff
mov ebx, eax
adc ebx, 0x7fffffff
add ecx, 2
adc ebx, 0
cmp ecx, 2
sbb ebx, 0
mov ebx, dword [edi + 0x20]
mov ecx, dword [edi + 0x24]
jae 0x4775eb
xor ebx, edx
xor ecx, eax
or ecx, ebx
je 0x477642
xor ecx, ecx
dec ecx
mov ebx, ecx
add ebx, 1
mov edi, 0x7fffffff
adc edi, 0
test eax, eax
mov eax, 0x7fffffff
cmovs edi, eax
cmovs ebx, ecx
jmp 0x477609
int3
sub ebx, edx
sbb ecx, eax
seto al
mov edx, ecx
sar edx, 0x1f
test al, al
lea edi, [edx - 0x80000000]
cmove edx, ebx
mov ebx, edx
test al, al
cmove edi, ecx
mov edx, dword [esi + 4]
jmp 0x477109
push str.front___called_on_an_empty_vector
push str._empty__
push 0x225
push str....._buildtools_third_partylibc_trunkinclude_vector
jmp 0x477638
push str.null_pointer_given_to_construct_at
push str.__location___nullptr
push 0x23
push str....._buildtools_third_partylibc_trunkinclude__memoryconstruct_at.h
push str._s:_d:_assertion__s_failed:__s
call fcn.004be7c0
int3
mov eax, dword [0x521208]
mov dword [esi + 0x18], eax
mov ecx, dword [0x52120c]
mov dword [esi + 0x1c], ecx
push ecx
push eax
push edi
push ebx
call fcn.004b5fc0
mov dword [esi + 0x10], eax
mov dword [esi + 0x24], edx
mul dword [esi + 0x18]
mov dword [esi + 0x28], eax
mov ecx, dword [esi + 0x10]
imul ecx, dword [esi + 0x1c]
add edx, ecx
mov eax, dword [esi + 0x24]
imul ecx, eax, 0xf4240
mov dword [esi + 0x14], ecx
imul eax, dword [esi + 0x18]
add eax, edx
sub ebx, dword [esi + 0x28]
sbb edi, eax
mov ecx, 0xf4240
mov eax, dword [esi + 0x10]
mul ecx
mov dword [esi + 0x10], eax
add edx, dword [esi + 0x14]
mov dword [esi + 0x14], edx
mov eax, ebx
mul ecx
imul ecx, edi, 0xf4240
add edx, ecx
push dword [esi + 0x1c]
push dword [esi + 0x18]
push edx
push eax
call fcn.004b5fc0
add eax, dword [esi + 0x10]
adc edx, dword [esi + 0x14]
jmp 0x477191
push eax
call fcn.00454d60
add esp, 4
jmp 0x47756f