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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x4c0
mov esi, esp
mov ebx, ecx
mov eax, dword [0x644040]
xor eax, ebp
mov dword [esi + 0x4b8], eax
mov eax, dword [ecx + 0x60]
mov dword [esi + 0x2c], eax
mov eax, dword [eax + 8]
mov dword [esi + 0x4c], eax
lea eax, [esi + 0xe8]
push 0x388
push 0xff
push eax
call fcn.00569910
add esp, 0xc
mov dword [esi + 0xe8], 0
mov edi, dword [ebx + 0x6c]
cmp edi, dword [ebx + 0x70]
mov dword [esi + 0x24], ebx
je 0x51e86b
lea eax, [ebx + 0x68]
mov dword [esi + 0x38], eax
lea eax, [esi + 0xf0]
mov dword [esi + 0x40], eax
jmp 0x51e685
mov bl, 1
jmp 0x51e3d1
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
cmp dword [edi + 0x28], 1
je 0x51f20f
mov edx, dword [edi + 0x18]
mov edi, dword [edi + 0x1c]
cmp eax, edx
sbb ecx, edi
jl 0x51e84a
xor ebx, ebx
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0xd0], xmm0
movdqa xmmword [esi + 0xc0], xmm0
movdqa xmmword [esi + 0xb0], xmm0
movdqa xmmword [esi + 0xa0], xmm0
movdqa xmmword [esi + 0x90], xmm0
movdqa xmmword [esi + 0x80], xmm0
movdqa xmmword [esi + 0x70], xmm0
mov ecx, dword [esi + 0x24]
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
je 0x51f1bf
cmp byte [eax + 0x59], 0
jne 0x51f19e
mov ecx, dword [esi + 0x38]
push 0
lea edi, [esi + 0x70]
push edi
call fcn.0051f6f0
test bl, bl
jne 0x51eda5
mov eax, dword [ebp + 0xc]
mov dword [esi + 0xd0], eax
mov eax, dword [ebp + 0x10]
mov dword [esi + 0xd4], eax
mov ecx, dword [esi + 0x24]
mov edx, edi
call fcn.0051f5a0
mov dword [esi + 0xc], esp
sub esp, 0x70
mov edx, esp
mov dword [esi + 0x28], esp
movaps xmm0, xmmword [esi + 0x70]
movups xmmword [edx], xmm0
lea ecx, [esi + 0x80]
movups xmm0, xmmword [ecx + 0x29]
movups xmmword [edx + 0x39], xmm0
movups xmm0, xmmword [ecx + 0x20]
movups xmmword [edx + 0x30], xmm0
movups xmm0, xmmword [ecx]
movups xmm1, xmmword [ecx + 0x10]
movups xmmword [edx + 0x20], xmm1
movups xmmword [edx + 0x10], xmm0
mov eax, dword [esi + 0xc0]
mov dword [esi + 0x1c], eax
mov dword [esi + 0xc0], 0
movzx eax, word [ecx + 0x48]
mov word [edx + 0x58], ax
movzx eax, byte [ecx + 0x4a]
mov byte [edx + 0x5a], al
mov eax, dword [esi + 0xcc]
mov dword [esi + 0x14], eax
mov dword [esi + 0xcc], 0
mov eax, dword [esi + 0xd4]
mov dword [esi + 0x18], eax
mov dword [edx + 0x64], eax
mov eax, dword [esi + 0xd0]
mov dword [esi + 0x30], eax
mov dword [edx + 0x60], eax
mov eax, dword [esi + 0xdc]
mov dword [esi + 0x20], eax
mov dword [edx + 0x6c], eax
movups xmm0, xmmword [edx]
movups xmm2, xmmword [edx + 0x39]
movups xmm3, xmmword [edx + 0x30]
movups xmm1, xmmword [edx + 0x10]
movups xmm4, xmmword [edx + 0x20]
mov dword [edx + 0x50], 0
movzx eax, word [edx + 0x58]
mov word [esi + 0x6c], ax
movzx eax, byte [edx + 0x5a]
mov byte [esi + 0x6e], al
movaps xmmword [esi + 0x50], xmm0
movups xmmword [esi + 0x499], xmm2
movaps xmmword [esi + 0x490], xmm3
mov eax, dword [esi + 0xd8]
mov dword [esi + 0x3c], eax
mov dword [esi + 0xd8], 0
movaps xmmword [esi + 0x480], xmm4
movaps xmmword [esi + 0x470], xmm1
mov dword [edx + 0x5c], 0
mov dword [edx + 0x68], 0
mov eax, dword [esi + 0x2c]
cmp dword [eax], 0
mov dword [esi + 0x10], edx
je 0x51efb6
mov ebx, dword [eax + 4]
mov eax, dword [ebx]
mov dword [esi + 0x34], eax
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 0x10]
inc eax
cmp eax, ecx
mov edx, eax
mov edi, 0
cmove edx, edi
cmp dword [esi + 0x34], edx
je 0x51ef12
cmp eax, ecx
cmove eax, edi
mov dword [ebx + 4], eax
cmp ecx, eax
jbe 0x51f1a9
mov esp, dword [esi + 0x28]
mov ecx, dword [ebx + 0xc]
imul eax, eax, 0x70
movaps xmm0, xmmword [esi + 0x50]
movups xmmword [ecx + eax], xmm0
movaps xmm0, xmmword [esi + 0x470]
movaps xmm1, xmmword [esi + 0x480]
movups xmmword [ecx + eax + 0x10], xmm0
movups xmmword [ecx + eax + 0x20], xmm1
movaps xmm0, xmmword [esi + 0x490]
movups xmmword [ecx + eax + 0x30], xmm0
movdqu xmm0, xmmword [esi + 0x499]
movdqu xmmword [ecx + eax + 0x39], xmm0
mov edx, dword [esi + 0x1c]
mov dword [ecx + eax + 0x50], edx
movzx edx, byte [esi + 0x6e]
mov byte [ecx + eax + 0x5a], dl
movzx edx, word [esi + 0x6c]
mov word [ecx + eax + 0x58], dx
mov edx, dword [esi + 0x14]
mov dword [ecx + eax + 0x5c], edx
mov edx, dword [esi + 0x30]
mov dword [ecx + eax + 0x60], edx
mov edx, dword [esi + 0x18]
mov dword [ecx + eax + 0x64], edx
mov edx, dword [esi + 0x3c]
mov dword [ecx + eax + 0x68], edx
mov edx, dword [esi + 0x20]
mov dword [ecx + eax + 0x6c], edx
mov edx, dword [esi + 0x2c]
mov eax, dword [edx + 8]
inc eax
mov dword [edx + 8], eax
mov ecx, dword [edx + 0xc]
cmp ecx, eax
cmova eax, ecx
mov dword [edx + 0xc], eax
mov edi, dword [esi + 0x10]
mov eax, dword [edi + 0x68]
test eax, eax
jne 0x51e797
mov ebx, dword [edi + 0x5c]
test ebx, ebx
jne 0x51e760
mov edi, dword [edi + 0x50]
test edi, edi
jne 0x51e7ae
mov esp, dword [esi + 0xc]
mov ebx, dword [esi + 0x24]
mov eax, dword [esi + 0xd8]
test eax, eax
jne 0x51e780
mov edi, dword [esi + 0xcc]
test edi, edi
jne 0x51e751
mov edi, dword [esi + 0xc0]
test edi, edi
jne 0x51e7cb
mov edi, dword [ebx + 0x6c]
cmp edi, dword [ebx + 0x70]
je 0x51e84a
mov ebx, dword [edi + 0x50]
test ebx, ebx
je 0x51f18c
mov ecx, dword [ebx + 0xc]
cmp ecx, 0x5630a0
je 0x51e6b1
call dword [0x63e63c]
push 0
push ebx
call ecx
add esp, 8
test al, al
jne 0x51e3a2
mov ebx, dword [ebp + 8]
cmp byte [ebx + 8], 0
jne 0x51e3b0
mov ecx, dword [fcn.005515a0]
cmp ecx, 0x522100
jne 0x51e76f
xor eax, eax
mov dword [esi + 0x74], eax
mov dword [esi + 0x70], eax
lea eax, [esi + 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edx, dword [esi + 0x70]
mov ecx, dword [esi + 0x74]
mov eax, 0x7bd05af6
cmp eax, edx
mov eax, 0x863
mov ebx, ecx
sbb eax, ecx
jl 0x51f2b1
mov eax, edx
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esi + 0x70], eax
mov dword [esi + 0x74], edx
mov ebx, dword [ebp + 8]
cmp byte [ebx + 8], 0
jne 0x51f1ff
test ebx, ebx
je 0x51f1ce
mov eax, dword [esi + 0x70]
mov ecx, dword [esi + 0x74]
mov dword [ebx], eax
mov dword [ebx + 4], ecx
mov byte [ebx + 8], 1
jmp 0x51e3b5
lock dec dword [edi + 4]
jne 0x51e66b
jmp 0x51eea5
lock dec dword [ebx + 4]
jne 0x51e63e
jmp 0x51ee6e
call dword [0x63e63c]
lea eax, [esi + 0x70]
push eax
call ecx
add esp, 4
jmp 0x51e72b
lock dec dword [eax]
jne 0x51e65d
push eax
call fcn.00564ea0
add esp, 4
jmp 0x51e65d
lock dec dword [eax]
jne 0x51e633
push eax
call fcn.00564ea0
add esp, 4
jmp 0x51e633
lock dec dword [edi]
jne 0x51e649
mov ecx, dword [edi + 8]
call dword [0x63e63c]
push edi
call ecx
add esp, 4
jmp 0x51e649
lock dec dword [edi]
jne 0x51e679
mov ecx, dword [edi + 8]
call dword [0x63e63c]
push edi
call ecx
add esp, 4
jmp 0x51e679
shr ebx, 1
imul eax, ebx, 0x70
mov ecx, dword [esi + 0x40]
lea edi, [eax + ecx]
add edi, 0xffffff90
test edi, edi
je 0x51f2a2
dec ebx
mov ecx, edi
call fcn.0051fa50
add edi, 0xffffff90
test ebx, ebx
jne 0x51e7f6
mov eax, dword [esi + 0xe8]
and eax, 1
jmp 0x51e860
mov byte [esi + 0x470], 0
xor edx, edx
dec edx
xor eax, eax
mov ecx, edx
mov dword [esi + 0x1c], edx
mov dword [esi + 0x14], edx
mov dword [esi + 0x18], edx
jmp 0x51e921
mov edx, ecx
cmp byte [esi + 0x10], 0
setne cl
cmp cl, al
je 0x51ea7e
jmp 0x51e9a6
mov ebx, dword [esi + 0xe8]
xor eax, eax
test bl, 1
jne 0x51f02c
cmp ebx, 2
jae 0x51e7e8
test eax, eax
mov ebx, dword [esi + 0x24]
jne 0x51f019
mov dword [esi + 0xe8], 0
mov eax, dword [ebx]
cmp dword [eax + 0x4c], 0x535dc0
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x480], xmm0
movdqa xmmword [esi + 0x470], xmm0
cmp dword [eax + 0x18], 0x4ee1e0
mov eax, dword [ebx + 0x6c]
cmp eax, dword [ebx + 0x70]
je 0x51e818
cmp byte [ebx + 0xa4], 0
je 0x51e818
cmp dword [ebx + 0x78], 0
mov ecx, dword [ebx + 0x64]
mov ecx, dword [ecx + 0x20]
jne 0x51f28d
mov edx, dword [ebx + 8]
movzx ebx, byte [edx + 0x35]
mov dword [esi + 0xc], 0
mov edi, dword [eax + 0x28]
xor edx, edx
cmp edi, 2
cmovne edx, edi
cmp bl, cl
cmovae edx, edi
mov ecx, dword [eax + 0x18]
mov edi, dword [eax + 0x1c]
mov ebx, dword [eax + 0x24]
mov eax, dword [eax + 0x20]
mov dword [esi + 0x470], ecx
mov dword [esi + 0x474], edi
mov dword [esi + 0x1c], eax
mov dword [esi + 0x478], eax
mov dword [esi + 0x18], ebx
mov dword [esi + 0x47c], ebx
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x480], ecx
mov dword [esi + 0x14], edx
mov dword [esi + 0x484], edx
mov al, 1
mov ebx, dword [esi + 0x24]
mov byte [esi + 0x488], al
mov ebx, dword [ebx + 0x5c]
test ebx, ebx
mov dword [esi + 0x10], eax
jne 0x51f07f
mov dword [esi + 0xc], ecx
mov ecx, dword [esi + 0x470]
mov edi, dword [esi + 0x474]
mov ebx, dword [esi + 0x24]
movzx eax, byte [ebx + 0x110]
cmp byte [esi + 0x10], 0
je 0x51e834
test al, al
je 0x51e834
mov eax, dword [ebx + 0xf8]
mov edx, ecx
xor eax, ecx
mov ecx, dword [ebx + 0xfc]
xor ecx, edi
or ecx, eax
jne 0x51e9a6
mov eax, dword [ebx + 0x100]
xor eax, dword [esi + 0x1c]
mov ecx, dword [ebx + 0x104]
xor ecx, dword [esi + 0x18]
or ecx, eax
jne 0x51e9a6
mov eax, dword [esi + 0xc]
cmp dword [ebx + 0x108], eax
jne 0x51e9a6
mov eax, dword [esi + 0x14]
cmp dword [ebx + 0x10c], eax
je 0x51ea7e
mov dword [esi + 0x20], edx
mov dword [ebx + 0xf8], edx
mov dword [ebx + 0xfc], edi
mov eax, dword [esi + 0x1c]
mov dword [ebx + 0x100], eax
mov edx, dword [esi + 0x18]
mov dword [ebx + 0x104], edx
mov eax, dword [esi + 0xc]
mov dword [ebx + 0x108], eax
mov eax, dword [esi + 0x14]
mov dword [ebx + 0x10c], eax
mov ecx, dword [esi + 0x10]
mov byte [ebx + 0x110], cl
lea eax, [esi + 0x489]
mov eax, dword [eax]
mov dword [esi + 0x28], eax
lea eax, [esi + 0x489]
mov eax, dword [eax + 3]
mov dword [esi + 0x30], eax
mov eax, dword [esi + 0x28]
mov dword [ebx + 0x111], eax
mov eax, dword [esi + 0x30]
mov dword [ebx + 0x114], eax
mov eax, dword [ebx + 0x58]
mov dword [esi + 0x28], eax
mov dword [esi + 0x74], edi
mov eax, dword [esi + 0x20]
mov dword [esi + 0x70], eax
mov dword [esi + 0x7c], edx
mov eax, dword [esi + 0x1c]
mov dword [esi + 0x78], eax
mov eax, dword [esi + 0xc]
mov dword [esi + 0x80], eax
mov eax, dword [esi + 0x14]
mov dword [esi + 0x84], eax
mov byte [esi + 0x88], cl
lea eax, [esi + 0x489]
mov ecx, dword [eax + 3]
mov dword [esi + 0x8c], ecx
mov eax, dword [eax]
mov dword [esi + 0x89], eax
sub esp, 0x28
movdqu xmm0, xmmword [esi + 0x70]
movups xmm1, xmmword [esi + 0x80]
movups xmmword [esp + 0x18], xmm1
movdqu xmmword [esp + 8], xmm0
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov dword [esp], ebx
mov ecx, dword [esi + 0x28]
call fcn.0050f670
cmp dword [esi + 0xe8], 0
mov ebx, dword [esi + 0x2c]
jne 0x51f1ec
test ebx, ebx
je 0x51ec73
cmp dword [esi + 0x4c], 0
jne 0x51ec73
cmp dword [ebx + 8], 0
je 0x51ec73
mov eax, dword [ebx + 0x18]
mov dword [esi + 0x24], eax
test eax, eax
je 0x51ec73
cmp byte [ebx + 0x48], 0
jne 0x51ecf7
mov edi, dword [ebx]
mov ecx, dword [edi]
mov ebx, dword [edi + 0x10]
inc ecx
xor eax, eax
cmp ecx, ebx
cmove ecx, eax
cmp ebx, ecx
jbe 0x51f1b2
mov edx, dword [edi + 0xc]
imul ecx, ecx, 0x70
lea eax, [edx + ecx]
mov edi, dword [edx + ecx + 0x44]
mov dword [esi + 0x14], edi
mov edi, dword [edx + ecx + 0x18]
mov edx, dword [edx + ecx + 0x1c]
mov ecx, edi
or ecx, edx
mov dword [esi + 0xc], 0
mov ebx, 0
jne 0x51ec9b
mov dword [esi + 0x10], ebx
mov ecx, dword [eax + 0x60]
mov edi, dword [eax + 0x64]
mov eax, edi
shr eax, 8
mov dword [esi + 0x1c], eax
mov dword [esi + 0x18], ecx
shld edi, ecx, 0x18
mov dword [esi + 0x20], 0
mov eax, dword [esi + 0x2c]
mov edx, dword [eax + 0x20]
mov ebx, dword [esi + 0x24]
mov ecx, dword [ebx + 4]
mov ebx, dword [ebx + 8]
mov dword [esi + 0x28], ecx
sub ebx, ecx
sar ebx, 4
cmp ebx, edx
jbe 0x51f18f
cmp byte [esi + 0x20], 0
jne 0x51f1dd
mov ebx, edx
mov ecx, dword [esi + 0x1c]
shld ecx, edi, 8
shl edi, 8
movzx edx, byte [esi + 0x18]
or edx, edi
mov dword [esi + 0x1c], ebx
shl ebx, 4
mov edi, eax
shr edi, 0xe
shr eax, 0x13
mov eax, dword [eax*4 + 0x64c804]
bt eax, edi
mov edi, dword [esi + 0x28]
lea eax, [edi + ebx]
mov dword [esi + 0x20], eax
mov eax, dword [edi + ebx + 4]
mov dword [esi + 0x18], eax
mov ebx, dword [edi + ebx + 8]
mov dword [esi + 0xec], ecx
mov dword [esi + 0xe8], edx
mov eax, dword [esi + 0xc]
mov dword [esi + 0xf0], eax
mov eax, dword [esi + 0x10]
mov dword [esi + 0xf4], eax
mov eax, dword [esi + 0x14]
mov dword [esi + 0xf8], eax
jb 0x51ec8a
mov edi, dword [esi + 0x2c]
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov dword [esi + 0x100], edi
lea eax, [esi + 0x70]
mov ecx, dword [esi + 0x20]
lea edx, [esi + 0xe8]
push edx
push eax
call fcn.005078a0
mov eax, dword [esi + 0x100]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
mov edi, dword [esi + 0x1c]
jae 0x51ec0a
push eax
call fcn.004f0f10
add esp, 4
cmp dword [esi + 0x18], ebx
jne 0x51ec73
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
sar edx, 2
cmp edx, edi
jbe 0x51f18f
inc dword [ecx + edi*4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
sar edx, 2
cmp edx, edi
jbe 0x51f18f
cmp dword [ecx + edi*4], 1
jne 0x51ec73
mov ecx, dword [eax + 0x14]
mov edx, ecx
bts edx, edi
mov dword [eax + 0x14], edx
test ecx, ecx
jne 0x51ec73
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x51ec73
mov eax, dword [ecx + 0x40]
add ecx, 0x40
mov edx, eax
and edx, 0xfffffffd
lock cmpxchg dword [ecx], edx
jne 0x51ec60
test al, 4
jne 0x51f1b5
mov ecx, dword [esi + 0x4b8]
xor ecx, ebp
call fcn.00568175
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
mov edi, dword [esi + 0x2c]
push edi
call fcn.004f0de0
add esp, 4
jmp 0x51ebc9
cmp dword [eax + 0x28], 0
jne 0x51eced
mov ecx, dword [eax + 0x20]
mov ebx, dword [eax + 0x24]
mov dword [esi + 0xc], ecx
add ecx, 1
mov dword [esi + 0x10], ebx
adc ebx, 0x80000000
cmp ecx, 2
sbb ebx, 0
jb 0x51f340
add edi, dword [esi + 0xc]
adc edx, dword [esi + 0x10]
seto bl
mov byte [esi + 0x10], bl
mov ecx, edx
sar ecx, 0x1f
test bl, bl
lea ebx, [ecx - 0x80000000]
cmove ecx, edi
mov dword [esi + 0xc], ecx
cmp byte [esi + 0x10], 0
cmove ebx, edx
jmp 0x51eb07
mov dword [esi + 0xc], edi
mov ebx, edx
jmp 0x51eb07
mov eax, dword [ebx]
mov edx, dword [eax]
mov edi, dword [eax + 0x10]
inc edx
xor ecx, ecx
cmp edx, edi
cmovne ecx, edx
cmp edi, ecx
jbe 0x51f381
imul ecx, ecx, 0x70
add ecx, dword [eax + 0xc]
lea eax, [esi + 0xe8]
push eax
call fcn.00533580
cmp byte [ebx + 0x48], 0
je 0x51f384
mov edi, dword [esi + 0xe8]
mov eax, dword [esi + 0xec]
mov ecx, dword [ebx + 0x34]
mov edx, eax
xor edx, ecx
mov ebx, dword [ebx + 0x30]
mov dword [esi + 0x24], edi
xor edi, ebx
or edi, edx
je 0x51f123
cmp dword [esi + 0x24], ebx
sbb eax, ecx
mov eax, dword [esi + 0x2c]
mov edi, ecx
jae 0x51ec73
mov ecx, dword [eax + 0x18]
mov dword [esi + 0x24], ecx
mov dword [esi + 0x1c], 0xffffff
mov dword [esi + 0x18], 0
cmp dword [eax + 8], 0
jne 0x51f3aa
mov cl, 1
mov dword [esi + 0x20], ecx
xor edi, edi
dec edi
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
jmp 0x51eb29
lea ecx, [esi + 0xe8]
lea eax, [esi + 0x70]
push eax
call fcn.004f56b0
jmp 0x51e64f
mov eax, dword [esi + 0xe8]
mov edx, 8
test al, 1
mov ebx, dword [esi + 0x24]
je 0x51edbd
mov edx, dword [esi + 0xf4]
mov ecx, eax
shr ecx, 1
cmp ecx, edx
je 0x51ed91
lea edx, [esi + 0xf0]
test al, 1
je 0x51edd5
mov edx, dword [esi + 0xf0]
imul eax, ecx, 0x70
add eax, edx
je 0x51f1ce
movaps xmm0, xmmword [esi + 0x70]
movups xmmword [eax], xmm0
lea edx, [esi + 0x80]
movups xmm0, xmmword [edx]
movups xmm1, xmmword [edx + 0x10]
movups xmmword [eax + 0x10], xmm0
movups xmmword [eax + 0x20], xmm1
movups xmm0, xmmword [edx + 0x20]
movups xmmword [eax + 0x30], xmm0
movups xmm0, xmmword [edx + 0x29]
movups xmmword [eax + 0x39], xmm0
mov ecx, dword [esi + 0xc0]
mov dword [eax + 0x50], ecx
mov edi, 0
mov dword [esi + 0xc0], edi
mov cl, byte [edx + 0x4a]
mov byte [eax + 0x5a], cl
movzx ecx, word [edx + 0x48]
mov word [eax + 0x58], cx
mov ecx, dword [esi + 0xcc]
mov dword [eax + 0x5c], ecx
mov dword [esi + 0xcc], edi
movq xmm0, qword [esi + 0xd0]
movq qword [eax + 0x60], xmm0
mov ecx, dword [esi + 0xd8]
mov dword [eax + 0x68], ecx
mov dword [esi + 0xd8], edi
mov ecx, dword [esi + 0xdc]
mov dword [eax + 0x6c], ecx
add dword [esi + 0xe8], 2
jmp 0x51e64f
mov ecx, dword [ebx]
mov eax, dword [ebx + 0xc]
cmp dword [ecx + 8], 0x5b9470
test eax, eax
je 0x51ee87
lock dec dword [eax]
je 0x51f17e
mov eax, dword [ebx + 8]
test eax, eax
je 0x51ee97
lock dec dword [eax]
je 0x51f03d
push ebx
call fcn.00564ea0
add esp, 4
jmp 0x51e63e
mov ecx, dword [edi]
mov eax, dword [edi + 0xc]
cmp dword [ecx + 8], 0x5b9470
test eax, eax
je 0x51eebe
lock dec dword [eax]
je 0x51f170
mov ebx, dword [edi + 8]
test ebx, ebx
je 0x51eeca
lock dec dword [ebx]
je 0x51eedb
push edi
call fcn.00564ea0
add esp, 4
mov ebx, dword [esi + 0x24]
jmp 0x51e66b
mov eax, dword [ebx + 0x10]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x51f4cb
mov dword [ebx + 0x10], 0
lea ecx, [ebx + 4]
call fcn.00407270
push ebx
call fcn.00564ea0
add esp, 4
jmp 0x51eeca
mov ebx, dword [esi + 0x2c]
mov eax, dword [ebx + 8]
lea ecx, [esi + 0x68]
mov dword [ecx], eax
push ecx
call fcn.004ef3c0
add esp, 4
mov edi, dword [ebx + 4]
mov eax, dword [edi + 0x10]
mov ecx, eax
shr ecx, 1
add eax, ecx
add eax, 2
mov dword [esi + 0x34], eax
push 0x18
call fcn.00564ea5
add esp, 4
mov ebx, eax
xor eax, eax
mov dword [ebx], eax
mov dword [ebx + 4], eax
imul eax, dword [esi + 0x34], 0x70
mov dword [esi + 0x48], eax
push eax
call fcn.0056682e
add esp, 4
mov ecx, eax
mov dword [esi + 0x44], eax
push dword [esi + 0x48]
xor eax, eax
push eax
push ecx
call fcn.00569910
add esp, 0xc
mov eax, dword [esi + 0x44]
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], eax
mov eax, dword [esi + 0x34]
mov dword [ebx + 0x10], eax
xor ecx, ecx
mov dword [ebx + 0x14], ecx
cmp eax, 0x2492492
jae 0x51f1ac
mov eax, dword [edi + 0x14]
mov dword [edi + 0x14], ebx
test eax, eax
jne 0x51f393
mov ecx, dword [esi + 0x2c]
mov eax, dword [ecx + 4]
mov ebx, dword [eax + 0x14]
mov dword [ecx + 4], ebx
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 0x10]
inc eax
xor edi, edi
jmp 0x51e582
push 0x18
call fcn.00564ea5
add esp, 4
mov ebx, eax
xor eax, eax
mov dword [ebx], eax
mov dword [ebx + 4], eax
mov eax, 0x1c0
push eax
call fcn.0056682e
add esp, 4
mov edi, eax
mov eax, 0x1c0
push eax
xor eax, eax
push eax
push edi
call fcn.00569910
add esp, 0xc
mov dword [ebx + 8], edi
mov dword [ebx + 0xc], edi
mov dword [ebx + 0x10], 4
mov dword [esi + 0x34], 0
xor eax, eax
mov dword [ebx + 0x14], eax
mov eax, dword [esi + 0x2c]
mov dword [eax], ebx
mov dword [eax + 4], ebx
xor eax, eax
inc eax
mov ecx, 4
jmp 0x51e56d
push dword [esi + 0xf0]
call fcn.00564ea0
add esp, 4
jmp 0x51e86b
xor eax, eax
inc eax
mov ecx, dword [esi + 0xf0]
mov dword [esi + 0x40], ecx
jmp 0x51e85b
mov dword [esi + 0x1c], eax
mov eax, dword [eax + 0x10]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x51f4d9
mov eax, dword [esi + 0x1c]
mov dword [eax + 0x10], 0
lea ecx, [eax + 4]
call fcn.00407270
push dword [esi + 0x1c]
call fcn.00564ea0
add esp, 4
jmp 0x51ee97
mov eax, dword [esi + 0x24]
cmp byte [eax + 0xa4], 0
je 0x51e935
mov ecx, dword [esi + 0x24]
call fcn.0043f3c0
mov byte [esi + 0x10], al
mov eax, dword [ebx]
mov ecx, dword [eax + 8]
mov dword [esi + 0xc], ecx
call dword [0x63e63c]
sub esp, 0x2c
movaps xmm0, xmmword [esi + 0x470]
movaps xmm1, xmmword [esi + 0x480]
movups xmmword [esp + 0x18], xmm1
movups xmmword [esp + 8], xmm0
movzx eax, byte [esi + 0x10]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
lea edi, [esi + 0x70]
mov dword [esp], edi
mov ecx, ebx
call dword [esi + 0xc]
movdqu xmm0, xmmword [edi]
movups xmm1, xmmword [edi + 0x10]
movaps xmmword [esi + 0x480], xmm1
movdqa xmmword [esi + 0x470], xmm0
mov eax, dword [esi + 0x478]
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x47c]
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x480]
mov eax, dword [esi + 0x484]
mov dword [esi + 0x14], eax
mov al, byte [esi + 0x488]
mov dword [esi + 0x10], eax
jmp 0x51e935
mov dword [esi + 0x10], ebx
mov dword [esi + 0xc], ecx
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax + 0x38]
mov eax, dword [eax + 0x3c]
mov edx, dword [esi + 0xf4]
mov ebx, edx
mov dword [esi + 0x24], eax
xor ebx, eax
mov eax, dword [esi + 0xf0]
mov edi, eax
xor edi, ecx
or edi, ebx
jne 0x51f4e7
mov eax, dword [esi + 0xf8]
mov ecx, dword [esi + 0x2c]
cmp eax, dword [ecx + 0x40]
mov eax, ecx
mov edi, dword [esi + 0xc]
mov ebx, dword [esi + 0x10]
jl 0x51ed5d
jmp 0x51ec73
push eax
call fcn.00564ea0
add esp, 4
jmp 0x51eebe
push eax
call fcn.00564ea0
add esp, 4
jmp 0x51ee87
int3
push str....._third_partylibc_srcinclude_vector:1411:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x624173
call fcn.00591ed0
mov eax, dword [esi + 0x24]
dec dword [eax + 0x78]
jmp 0x51e423
int3
int3
int3
int3
call fcn.005cefc0
jmp 0x51ec73
push str....._third_partylibc_srcinclude_vector:618:_assertion__empty___failed:_front___called_on_an_empty_vector_n
push 0x624173
call fcn.00591ed0
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
push 0x624173
call fcn.00591ed0
push str....._third_partylibc_srcincludeoptional:806:_assertion_this__has_value___failed:_optional_operator_called_on_a_disengaged_value_n
push 0x624173
call fcn.00591ed0
lea ecx, [esi + 0xe8]
call fcn.004f4e10
mov ebx, dword [esi + 0x2c]
jmp 0x51ea8e
mov eax, dword [esi + 0x70]
mov ecx, dword [esi + 0x74]
mov dword [ebx], eax
mov dword [ebx + 4], ecx
jmp 0x51e3b5
mov edx, dword [edi + 0x24]
mov ebx, dword [edi + 0x20]
mov dword [esi + 0x10], ebx
add ebx, 1
mov dword [esi + 0xc], ebx
mov ebx, edx
adc ebx, 0x80000000
cmp dword [esi + 0xc], 2
sbb ebx, 0
mov ebx, dword [edi + 0x18]
mov dword [esi + 0xc], ebx
mov ebx, dword [edi + 0x1c]
jae 0x51f25f
mov edi, dword [esi + 0xc]
xor edi, dword [esi + 0x10]
xor ebx, edx
or ebx, edi
je 0x51f1af
mov edi, 0x80000000
xor ebx, ebx
inc ebx
shr edx, 0x1f
not edx
add edx, ebx
adc edi, 0xffffffff
jmp 0x51e3c5
mov edi, dword [esi + 0xc]
sub edi, dword [esi + 0x10]
mov dword [esi + 0xc], edi
sbb ebx, edx
seto byte [esi + 0x10]
mov edx, ebx
sar edx, 0x1f
cmp byte [esi + 0x10], 0
lea edi, [edx - 0x80000000]
cmove edx, dword [esi + 0xc]
cmp byte [esi + 0x10], 0
cmove edi, ebx
jmp 0x51e3c5
mov edx, dword [ebx + 8]
mov bl, byte [edx + 0x35]
xor edx, edx
cmp bl, cl
setae dl
mov dword [esi + 0xc], edx
jmp 0x51e8d0
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:66:_assertion___loc___nullptr_failed:_null_pointer_given_to_destroy_at_n
push 0x624173
call fcn.00591ed0
mov ecx, dword [0x6496b8]
mov dword [esi + 0xc], ecx
mov eax, dword [0x6496bc]
mov dword [esi + 0x10], eax
push eax
push ecx
mov dword [esi + 0x1c], ebx
push ebx
push edx
mov dword [esi + 0x14], edx
call fcn.00588630
mov dword [esi + 0x20], edx
mov ebx, eax
mov edx, dword [esi + 0xc]
mul edx
mov dword [esi + 0x28], eax
mov eax, ebx
mov ecx, ebx
imul ecx, dword [esi + 0x10]
add edx, ecx
mov ecx, dword [esi + 0x20]
imul ebx, ecx, 0xf4240
mov dword [esi + 0x18], ebx
imul ecx, dword [esi + 0xc]
add ecx, edx
mov edx, ecx
mov ebx, dword [esi + 0x14]
sub ebx, dword [esi + 0x28]
mov ecx, dword [esi + 0x1c]
sbb ecx, edx
mov edx, 0xf4240
mul edx
mov dword [esi + 0x1c], eax
add edx, dword [esi + 0x18]
mov dword [esi + 0x14], edx
mov eax, ebx
mov edx, 0xf4240
mul edx
imul ecx, ecx, 0xf4240
add edx, ecx
push dword [esi + 0x10]
push dword [esi + 0xc]
push edx
push eax
call fcn.00588630
add eax, dword [esi + 0x1c]
adc edx, dword [esi + 0x14]
jmp 0x51e722
xor ecx, ecx
inc ecx
mov ebx, edi
add ebx, ecx
mov ecx, edx
adc ecx, 0x80000000
mov dword [esi + 0x1c], ecx
mov dword [esi + 0x18], 0
xor ecx, ecx
inc ecx
cmp ecx, ebx
mov ecx, dword [esi + 0x18]
sbb ecx, dword [esi + 0x1c]
jae 0x51f36e
mov ebx, dword [esi + 0x10]
jmp 0x51eb07
xor edi, dword [esi + 0xc]
mov ebx, dword [esi + 0x10]
xor edx, ebx
or edx, edi
je 0x51eb07
int3
int3
push str....._third_partylibc_srcincludeoptional:791:_assertion_this__has_value___failed:_optional_operator___called_on_a_disengaged_value_n
push 0x624173
call fcn.00591ed0
mov edi, eax
mov ecx, eax
call fcn.00516eb0
push edi
call fcn.00564ea0
add esp, 4
jmp 0x51ef9c
mov dword [esi + 0x10], ebx
mov dword [esi + 0xc], edi
mov edi, dword [eax]
mov ecx, dword [edi]
mov ebx, dword [edi + 0x10]
inc ecx
cmp ecx, ebx
mov edx, 0
cmovne edx, ecx
cmp ebx, edx
jbe 0x51f541
mov eax, edx
mov edx, dword [edi + 0xc]
mov dword [esi + 0x14], edx
imul edx, eax, 0x70
mov eax, dword [esi + 0x14]
add eax, edx
mov dword [esi + 0x28], eax
mov eax, dword [esi + 0x14]
mov eax, dword [eax + edx + 0x44]
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x14]
mov eax, dword [eax + edx + 0x18]
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x14]
mov eax, dword [eax + edx + 0x1c]
mov dword [esi + 0x30], 0
mov edx, dword [esi + 0x18]
mov dword [esi + 0x14], eax
or edx, eax
mov dword [esi + 0x20], 0
jne 0x51f448
mov edx, dword [esi + 0x28]
mov eax, dword [edx + 0x60]
mov edx, dword [edx + 0x64]
mov dword [esi + 0x18], edx
xor edx, dword [esi + 0xc]
mov dword [esi + 0x14], edx
mov dword [esi + 0x28], eax
xor eax, dword [esi + 0x10]
or eax, dword [esi + 0x14]
je 0x51f4f4
mov eax, dword [esi + 0x28]
cmp eax, dword [esi + 0x10]
mov eax, dword [esi + 0x18]
sbb eax, dword [esi + 0xc]
jb 0x51eaca
jmp 0x51f521
mov eax, dword [esi + 0x28]
cmp dword [eax + 0x28], 0
jne 0x51f4ba
mov eax, dword [esi + 0x28]
mov edx, dword [eax + 0x20]
mov eax, dword [eax + 0x24]
mov dword [esi + 0x20], eax
mov dword [esi + 0x30], edx
mov eax, edx
add eax, 1
mov edx, dword [esi + 0x20]
adc edx, 0x80000000
cmp eax, 2
sbb edx, 0
jb 0x51f558
mov eax, dword [esi + 0x18]
add eax, dword [esi + 0x30]
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x14]
adc eax, dword [esi + 0x20]
mov dword [esi + 0x14], eax
seto byte [esi + 0x34]
sar eax, 0x1f
cmp byte [esi + 0x34], 0
lea edx, [eax - 0x80000000]
mov dword [esi + 0x20], edx
cmove eax, dword [esi + 0x18]
mov dword [esi + 0x30], eax
cmp byte [esi + 0x34], 0
mov eax, dword [esi + 0x20]
cmove eax, dword [esi + 0x14]
mov dword [esi + 0x20], eax
jmp 0x51f410
mov eax, dword [esi + 0x18]
mov dword [esi + 0x30], eax
mov eax, dword [esi + 0x14]
mov dword [esi + 0x20], eax
jmp 0x51f410
push eax
call fcn.004f0f10
add esp, 4
jmp 0x51eef8
push eax
call fcn.004f0f10
add esp, 4
jmp 0x51f05d
cmp eax, ecx
sbb edx, dword [esi + 0x24]
mov eax, dword [esi + 0x2c]
jmp 0x51f15f
mov edx, dword [esi + 0x2c]
mov eax, dword [edx + 0x38]
mov dword [esi + 0xc], eax
mov edx, dword [edx + 0x3c]
mov eax, dword [esi + 0x20]
mov dword [esi + 0x10], edx
xor eax, edx
mov edx, dword [esi + 0x30]
xor edx, dword [esi + 0xc]
or edx, eax
jne 0x51f544
mov eax, dword [esi + 0x2c]
mov edx, dword [esi + 0x3c]
cmp edx, dword [eax + 0x40]
jl 0x51eaca
xor edi, edi
dec edi
mov dword [esi + 0x18], 0
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
mov eax, dword [esi + 0x2c]
mov cl, 1
mov dword [esi + 0x20], ecx
jmp 0x51eb29
int3
mov edx, dword [esi + 0xc]
cmp dword [esi + 0x30], edx
mov eax, dword [esi + 0x10]
sbb dword [esi + 0x20], eax
jl 0x51eaca
jmp 0x51f521
xor eax, eax
inc eax
mov edx, dword [esi + 0x18]
add edx, eax
mov dword [esi + 0x34], edx
mov eax, dword [esi + 0x14]
adc eax, 0x80000000
mov dword [esi + 0x38], 0
xor edx, edx
inc edx
cmp edx, dword [esi + 0x34]
sbb dword [esi + 0x38], eax
jb 0x51f410
mov eax, dword [esi + 0x18]
xor eax, dword [esi + 0x30]
mov edx, dword [esi + 0x14]
xor edx, dword [esi + 0x20]
or edx, eax
je 0x51f410
int3