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

Disassembly:
sub esp, 0x10c
mov eax, dword [0x5dcf00]
xor eax, esp
mov dword [esp + 0x108], eax
mov edx, dword [esp + 0x114]
mov ecx, dword [esp + 0x11c]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x11c]
mov ebx, edx
push edi
mov edi, dword [esp + 0x128]
add edi, edx
mov dword [esp + 0xcc], edx
cmp dword [esp + 0x134], 0
mov eax, dword [esi + 0x74b0]
mov edx, dword [esi + 0x7578]
mov ebp, dword [esi + 0x7604]
mov dword [esp + 0x48], eax
mov eax, dword [esi + 0x74b4]
mov dword [esp + 0x60], eax
mov eax, dword [esi + 0x74b8]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x44], edi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x50], ebp
mov dword [esp + 0x5c], eax
je 0x512c7e
push dword [esp + 0x130]
mov dword [esi + 0x750c], 1
lea edi, [esp + 0x110]
add esi, 0x682c
lea eax, [esp + 0xe4]
push ecx
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.0050a70e
add esp, 0xc
cmp eax, 0xffffff88
jbe 0x510fc6
push 0xffffffffffffffec
pop edi
jmp 0x512cdf
mov ebx, dword [esp + 0x4c]
lea eax, [esp + 0xe0]
push dword [ebx]
push eax
lea eax, [esp + 0xfc]
push eax
call fcn.00513bb9
push dword [ebx + 8]
lea eax, [esp + 0xf0]
push eax
lea eax, [esp + 0x110]
push eax
call fcn.00513bb9
push dword [ebx + 4]
lea eax, [esp + 0xfc]
push eax
lea eax, [esp + 0x124]
push eax
call fcn.00513bb9
mov ebx, dword [esp + 0x11c]
add esp, 0x24
mov edi, dword [esp + 0xf4]
mov esi, dword [esp + 0x108]
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x100]
mov eax, dword [esp + 0xfc]
mov ebp, dword [esi + edx*8 + 4]
mov dl, byte [ebx + edi*8 + 2]
mov byte [esp + 0x23], dl
mov edx, dword [esp + 0x104]
mov dword [esp + 0x68], ebp
mov dword [esp + 0x80], ebp
mov ebp, dword [ebx + edi*8 + 4]
mov bl, byte [esi + edx*8 + 2]
mov byte [esp + 0x1a], bl
mov bl, byte [ecx + eax*8 + 2]
mov byte [esp + 0x1b], bl
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x7c], ebp
mov ebp, dword [ecx + eax*8 + 4]
movzx esi, word [ebx + edi*8]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x108]
movzx ebx, word [esi + edx*8]
movzx edx, byte [esi + edx*8 + 3]
mov dword [esp + 0x14], ebx
movzx ebx, word [ecx + eax*8]
movzx eax, byte [ecx + eax*8 + 3]
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x10], eax
mov al, byte [esp + 0x1b]
mov dword [esp + 0x2c], edx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0x64], edi
cmp al, 1
jbe 0x511240
cmp dword [esp + 0x138], 0
je 0x51118c
cmp al, 0x19
jb 0x51118c
movzx eax, al
sub eax, 5
push eax
lea eax, [esp + 0xe4]
push eax
call fcn.0050e16c
mov edi, dword [esp + 0xec]
mov esi, eax
shl esi, 5
pop ecx
add esi, ebp
pop ecx
cmp edi, 0x20
ja 0x511175
mov ecx, dword [esp + 0xe8]
cmp ecx, dword [esp + 0xf0]
jb 0x51112e
lea eax, [esp + 0xe0]
push eax
call fcn.0050a828
jmp 0x511174
cmp ecx, dword [esp + 0xec]
je 0x511175
mov edx, edi
mov eax, ecx
shr edx, 3
sub eax, edx
cmp eax, dword [esp + 0xec]
jae 0x511152
mov edx, ecx
sub edx, dword [esp + 0xec]
imul eax, edx, 0xfffffff8
sub ecx, edx
push ecx
mov dword [esp + 0xec], ecx
add edi, eax
mov dword [esp + 0xe8], edi
call fcn.0050707e
mov dword [esp + 0xe4], eax
pop ecx
lea eax, [esp + 0xe0]
push 5
push eax
call fcn.0050e16c
pop ecx
add esi, eax
jmp 0x51120c
movzx eax, al
push eax
lea eax, [esp + 0xe4]
push eax
call fcn.0050e16c
cmp dword [esp + 0xec], 0x20
pop ecx
pop ecx
lea esi, [eax + ebp]
ja 0x51120d
mov ebp, dword [esp + 0xe8]
cmp ebp, dword [esp + 0xf0]
jb 0x5111cb
lea eax, [esp + 0xe0]
push eax
call fcn.0050a828
jmp 0x51120c
mov edx, dword [esp + 0xec]
cmp ebp, edx
je 0x51121b
mov ecx, dword [esp + 0xe4]
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, edx
jae 0x5111ec
mov ecx, ebp
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub ebp, ecx
push ebp
mov dword [esp + 0xec], ebp
add dword [esp + 0xe8], eax
call fcn.0050707e
mov dword [esp + 0xe4], eax
pop ecx
mov edx, dword [esp + 0xec]
mov ebp, dword [esp + 0xe8]
mov eax, dword [esp + 0x110]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x5112cc
mov edi, dword [esp + 0x1c]
xor ebx, ebx
test edi, edi
sete bl
test al, al
jne 0x51126f
mov esi, dword [esp + ebx*4 + 0x10c]
mov eax, edi
neg eax
sbb eax, eax
and eax, 4
mov eax, dword [esp + eax + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x5112be
lea eax, [esp + 0xe0]
push 1
push eax
call fcn.0050e16c
mov edx, dword [esp + 0x114]
pop ecx
pop ecx
lea ecx, [ebx + eax]
add ecx, ebp
lea esi, [edx - 1]
cmp ecx, 3
je 0x51129b
mov esi, dword [esp + ecx*4 + 0x10c]
xor eax, eax
test esi, esi
sete al
add esi, eax
cmp ecx, 1
je 0x5112b7
mov eax, dword [esp + 0x110]
mov dword [esp + 0x114], eax
mov dword [esp + 0x110], edx
mov edx, dword [esp + 0xec]
mov ebp, dword [esp + 0xe8]
mov bl, byte [esp + 0x1a]
mov dword [esp + 0x10c], esi
mov dword [esp + 0x84], esi
test bl, bl
je 0x511310
movzx eax, bl
push eax
lea eax, [esp + 0xe4]
push eax
call fcn.0050e16c
mov ebp, dword [esp + 0xf0]
mov edx, dword [esp + 0xf4]
pop ecx
pop ecx
mov ecx, dword [esp + 0x68]
add ecx, eax
mov dword [esp + 0x80], ecx
movzx ecx, bl
mov bl, byte [esp + 0x23]
movzx eax, bl
add ecx, eax
cmp ecx, 0x14
jb 0x51138c
cmp dword [esp + 0xe4], 0x20
ja 0x51138c
cmp ebp, dword [esp + 0xf0]
jb 0x511343
lea eax, [esp + 0xe0]
push eax
call fcn.0050a828
jmp 0x51137d
cmp ebp, edx
je 0x51138c
mov ecx, dword [esp + 0xe4]
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, edx
jae 0x51135d
mov ecx, ebp
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub ebp, ecx
push ebp
mov dword [esp + 0xec], ebp
add dword [esp + 0xe8], eax
call fcn.0050707e
mov dword [esp + 0xe4], eax
mov edx, dword [esp + 0xf0]
mov ebp, dword [esp + 0xec]
pop ecx
test bl, bl
je 0x5113bb
movzx eax, bl
push eax
lea eax, [esp + 0xe4]
push eax
call fcn.0050e16c
mov ebp, dword [esp + 0xf0]
add edi, eax
mov edx, dword [esp + 0xf4]
pop ecx
pop ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x7c], edi
cmp dword [esp + 0xe4], 0x20
ja 0x51141f
cmp ebp, dword [esp + 0xf0]
jb 0x5113dd
lea eax, [esp + 0xe0]
push eax
call fcn.0050a828
jmp 0x511417
cmp ebp, edx
je 0x51141f
mov ecx, dword [esp + 0xe4]
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, edx
jae 0x5113f7
mov ecx, ebp
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub ebp, ecx
push ebp
mov dword [esp + 0xec], ebp
add dword [esp + 0xe8], eax
call fcn.0050707e
mov dword [esp + 0xe4], eax
mov ebp, dword [esp + 0xec]
pop ecx
mov esi, dword [esp + 0xe4]
mov ebx, dword [esp + 0x64]
add esi, ebx
mov edi, dword [esp + 0xe0]
mov ecx, esi
mov eax, dword [esp + 0x30]
neg ecx
and ecx, 0x1f
movzx eax, ax
mov edx, edi
shr edx, cl
and edx, dword [ebx*4 + 0x5bcae0]
add edx, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xf4], edx
lea ebx, [esi + eax]
mov ecx, ebx
mov dword [esp + 0xe4], ebx
neg ecx
and ecx, 0x1f
shr edi, cl
and edi, dword [eax*4 + 0x5bcae0]
mov eax, dword [esp + 0x14]
movzx eax, ax
add edi, eax
mov dword [esp + 0x104], edi
cmp ebx, 0x20
ja 0x5114ef
cmp ebp, dword [esp + 0xf0]
jb 0x5114a0
lea eax, [esp + 0xe0]
push eax
call fcn.0050a828
jmp 0x5114e0
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x5114ef
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x5114bc
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xe8], ebp
push ebp
mov dword [esp + 0xe8], ebx
call fcn.0050707e
mov dword [esp + 0xe4], eax
mov ebx, dword [esp + 0xe8]
mov ebp, dword [esp + 0xec]
pop ecx
mov eax, dword [esp + 0x10]
add ebx, eax
mov edx, dword [esp + 0xe0]
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bcae0]
mov eax, dword [esp + 0x58]
movzx eax, ax
add edx, eax
mov dword [esp + 0xfc], edx
jmp 0x511e7f
mov edx, dword [esp + 0x38]
lea esi, [esp + 0x34]
lea edi, [esp + 0xd4]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x34]
lea eax, [esi + ecx]
lea ecx, [eax - 0x20]
mov dword [esp + 0x58], eax
mov dword [esp + 0x1c], ecx
lea edi, [edx + esi]
mov ecx, dword [esp + 0x24]
lea ebp, [esi + ecx]
mov ebx, ebp
sub ebx, dword [esp + 0x3c]
cmp eax, dword [esp + 0x50]
ja 0x511740
lea eax, [edi + ecx]
cmp eax, dword [esp + 0x1c]
ja 0x511740
mov ecx, dword [esp + 0x44]
lea eax, [edi + 0x20]
sub ecx, dword [esp + 0x24]
cmp ecx, eax
mov ecx, dword [esp + 0x24]
jb 0x511740
mov eax, dword [esp + 0x28]
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
cmp esi, 0x10
jbe 0x5115d0
mov edx, dword [esp + 0x28]
lea eax, [esi - 0x10]
add edx, 0x10
add ecx, 0x10
lea esi, [ecx + eax]
movups xmm0, xmmword [edx]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x5115cc
push 0x10
pop eax
add ecx, eax
add edx, eax
movups xmm0, xmmword [edx]
add edx, eax
movups xmmword [ecx], xmm0
add ecx, eax
movups xmm0, xmmword [edx]
add edx, eax
movups xmmword [ecx], xmm0
add ecx, eax
cmp ecx, esi
jb 0x5115b4
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x58]
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x40], eax
mov eax, ebp
sub eax, esi
cmp ecx, eax
jbe 0x511641
mov eax, ebp
sub eax, dword [esp + 0x60]
cmp ecx, eax
ja 0x510fbe
mov ecx, dword [esp + 0x5c]
mov eax, ecx
sub eax, esi
add ebx, eax
lea eax, [ebx + edx]
cmp eax, ecx
ja 0x51161b
push edx
push ebx
push ebp
call fcn.005282a0
add esp, 0xc
jmp 0x51177c
mov esi, ecx
sub esi, ebx
push esi
push ebx
push ebp
call fcn.005282a0
mov edx, dword [esp + 0x44]
add esp, 0xc
mov ebx, dword [esp + 0x48]
mov eax, edx
add ebp, esi
sub eax, esi
mov dword [esp + 0xd8], eax
jmp 0x511648
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
push 0x10
pop esi
mov dword [esp + 0x1c], eax
cmp ecx, esi
jb 0x511690
lea ecx, [eax + ebp]
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp eax, esi
jle 0x511780
add ebp, 0x10
add ebx, esi
movups xmm0, xmmword [ebx]
add ebx, esi
movups xmmword [ebp], xmm0
add ebp, esi
movups xmm0, xmmword [ebx]
add ebx, esi
movups xmmword [ebp], xmm0
add ebp, esi
cmp ebp, ecx
jb 0x511671
jmp 0x511780
cmp ecx, 8
jae 0x5116c3
mov al, byte [ebx]
mov byte [ebp], al
mov al, byte [ebx + 1]
mov byte [ebp + 1], al
mov al, byte [ebx + 2]
mov byte [ebp + 2], al
mov al, byte [ebx + 3]
add ebx, dword [ecx*4 + 0x5bc9a0]
mov byte [ebp + 3], al
mov edx, ebx
sub ebx, dword [ecx*4 + 0x5bc9c0]
lea eax, [ebp + 4]
push 4
jmp 0x5116c9
mov eax, ebp
mov edx, ebx
push 8
pop ecx
push ecx
push edx
push eax
call fcn.005282a0
mov eax, dword [esp + 0x28]
add esp, 0xc
cmp eax, 8
jbe 0x51177c
add ebp, 8
lea ecx, [eax - 8]
add ebx, 8
mov eax, ebp
push 0x10
sub eax, ebx
pop edx
lea esi, [ecx + ebp]
cmp eax, edx
jge 0x511713
sub ebx, ebp
push 8
lea eax, [ebx + ebp]
push eax
push ebp
call fcn.005282a0
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x5116fb
jmp 0x51177c
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp ecx, edx
jle 0x51177c
add ebp, 0x10
add ebx, 0x10
movups xmm0, xmmword [ebx]
add ebx, edx
movups xmmword [ebp], xmm0
add ebp, edx
movups xmm0, xmmword [ebx]
add ebx, edx
movups xmmword [ebp], xmm0
add ebp, edx
cmp ebp, esi
jb 0x511724
jmp 0x51177c
push dword [esp + 0x5c]
lea eax, [esp + 0x44]
push dword [esp + 0x64]
lea esi, [esp + 0x3c]
push dword [esp + 0x50]
push dword [esp + 0x5c]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x3c]
movsd dword es:[edi], dword [esi]
push dword [esp + 0x68]
push ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.005139eb
mov edi, eax
add esp, 0x2c
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x38]
cmp edi, 0xffffff88
ja 0x512cdf
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x134]
add ecx, edi
mov ebp, dword [esp + 0xe8]
sub esi, 1
mov dword [esp + 0x24], ecx
mov dword [esp + 0x134], esi
je 0x511ee5
mov edx, dword [esp + 0xe4]
mov dword [esp + 0x10], edx
cmp edx, 0x20
ja 0x511869
cmp ebp, dword [esp + 0xf0]
jb 0x51181f
mov eax, edx
and edx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], edx
push 4
lea eax, [esp + 0x8c]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov eax, dword [esp + 0x94]
mov ebp, dword [esp + 0xf4]
add esp, 0xc
mov dword [esp + 0x14], eax
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x10], eax
jmp 0x511874
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x511869
mov esi, edx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, ecx
jae 0x51183b
mov esi, ebp
sub esi, ecx
imul eax, esi, 0xfffffff8
sub ebp, esi
push 4
push ebp
mov dword [esp + 0xf0], ebp
add edx, eax
lea eax, [esp + 0x94]
push eax
mov dword [esp + 0xf0], edx
call fcn.005282a0
mov eax, dword [esp + 0x98]
jmp 0x5117fd
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x108]
mov ecx, dword [esp + 0x104]
mov edi, dword [esp + 0xf4]
mov edx, dword [esp + 0x100]
mov eax, dword [esp + 0xfc]
mov ebx, dword [esi + ecx*8 + 4]
mov esi, ebx
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x80], esi
mov esi, dword [edx + eax*8 + 4]
mov dword [esp + 0x30], esi
mov ecx, dword [ebx + edi*8 + 4]
mov esi, dword [esp + 0x108]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x7c], ecx
mov cl, byte [ebx + edi*8 + 2]
mov byte [esp + 0x1b], cl
mov ecx, dword [esp + 0x104]
mov bl, byte [esi + ecx*8 + 2]
mov byte [esp + 0x1a], bl
mov bl, byte [edx + eax*8 + 2]
mov byte [esp + 0x23], bl
mov ebx, dword [esp + 0xf8]
movzx esi, word [ebx + edi*8]
mov dword [esp + 0x68], esi
mov esi, dword [esp + 0x108]
movzx ebx, word [esi + ecx*8]
movzx ecx, byte [esi + ecx*8 + 3]
mov dword [esp + 0x74], ebx
movzx ebx, word [edx + eax*8]
movzx eax, byte [edx + eax*8 + 3]
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x78], eax
mov al, byte [esp + 0x23]
mov dword [esp + 0x64], ecx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0x58], edi
cmp al, 1
jbe 0x511aeb
cmp dword [esp + 0x138], 0
je 0x511a03
cmp al, 0x19
jb 0x511a03
movzx eax, al
sub eax, 5
push eax
lea eax, [esp + 0xe4]
push eax
call fcn.0050e16c
mov esi, dword [esp + 0xec]
mov edi, eax
shl edi, 5
add edi, dword [esp + 0x38]
pop ecx
pop ecx
cmp esi, 0x20
ja 0x5119e4
mov ecx, dword [esp + 0xe8]
cmp ecx, dword [esp + 0xf0]
jb 0x51199d
lea eax, [esp + 0xe0]
push eax
call fcn.0050a828
jmp 0x5119e3
cmp ecx, dword [esp + 0xec]
je 0x5119e4
mov edx, esi
mov eax, ecx
shr edx, 3
sub eax, edx
cmp eax, dword [esp + 0xec]
jae 0x5119c1
mov edx, ecx
sub edx, dword [esp + 0xec]
imul eax, edx, 0xfffffff8
sub ecx, edx
push ecx
mov dword [esp + 0xec], ecx
add esi, eax
mov dword [esp + 0xe8], esi
call fcn.0050707e
mov dword [esp + 0xe4], eax
pop ecx
lea eax, [esp + 0xe0]
push 5
push eax
call fcn.0050e16c
pop ecx
pop ecx
mov ecx, dword [esp + 0xe0]
add edi, eax
jmp 0x511aac
mov ebx, dword [esp + 0x10]
mov ecx, ebx
mov esi, dword [esp + 0x14]
and ecx, 0x1f
movzx eax, al
mov edi, esi
shl edi, cl
add ebx, eax
mov ecx, eax
mov dword [esp + 0x10], ebx
neg ecx
mov dword [esp + 0xe4], ebx
and ecx, 0x1f
shr edi, cl
add edi, dword [esp + 0x30]
cmp ebx, 0x20
ja 0x511ac6
cmp ebp, dword [esp + 0xf0]
jb 0x511a69
lea eax, [esp + 0xe0]
push eax
call fcn.0050a828
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xe4]
pop ecx
mov dword [esp + 0x14], eax
jmp 0x511abb
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x511ac6
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x511a85
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xe8], ebp
push ebp
mov dword [esp + 0xe8], ebx
call fcn.0050707e
pop ecx
mov ecx, eax
mov dword [esp + 0xe0], ecx
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 0xe8]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x110]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x511b7a
mov ecx, dword [esp + 0x1c]
xor edx, edx
mov ebx, dword [esp + 0x10]
test ecx, ecx
mov esi, dword [esp + 0x14]
sete dl
test al, al
jne 0x511b22
mov edi, dword [esp + edx*4 + 0x10c]
mov eax, ecx
neg eax
sbb eax, eax
and eax, 4
mov eax, dword [esp + eax + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x511b7a
mov ecx, ebx
mov eax, esi
and ecx, 0x1f
shl eax, cl
shr eax, 0x1f
inc ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xe4], ebx
lea ecx, [eax + edx]
mov edx, dword [esp + 0x10c]
add ecx, dword [esp + 0x30]
lea edi, [edx - 1]
cmp ecx, 3
je 0x511b57
mov edi, dword [esp + ecx*4 + 0x10c]
xor eax, eax
test edi, edi
sete al
add edi, eax
cmp ecx, 1
je 0x511b73
mov eax, dword [esp + 0x110]
mov dword [esp + 0x114], eax
mov dword [esp + 0x110], edx
mov al, byte [esp + 0x1a]
mov dword [esp + 0x10c], edi
mov dword [esp + 0x84], edi
test al, al
je 0x511bbc
movzx edx, al
mov ecx, ebx
and ecx, 0x1f
mov eax, esi
shl eax, cl
add ebx, edx
mov ecx, edx
mov dword [esp + 0x10], ebx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, dword [esp + 0x2c]
add ecx, eax
mov al, byte [esp + 0x1a]
mov dword [esp + 0x80], ecx
movzx ecx, al
movzx eax, byte [esp + 0x1b]
add ecx, eax
cmp ecx, 0x14
mov ecx, dword [esp + 0x10]
jb 0x511c87
cmp ecx, 0x20
ja 0x511c87
cmp ebp, dword [esp + 0xf0]
jb 0x511c3d
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0x94]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov ebx, dword [esp + 0xec]
mov dword [esp + 0x14], eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0x10], ecx
jmp 0x511c92
mov ebx, dword [esp + 0xec]
cmp ebp, ebx
je 0x511c8e
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ebx
jae 0x511c59
mov edx, ebp
sub edx, ebx
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xf0], ebp
add ecx, eax
lea eax, [esp + 0xd8]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282a0
mov eax, dword [esp + 0xdc]
jmp 0x511c14
mov ebx, dword [esp + 0xec]
mov eax, dword [esp + 0x14]
mov dl, byte [esp + 0x1b]
test dl, dl
je 0x511cbf
and ecx, 0x1f
movzx edx, dl
shl eax, cl
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, dword [esp + 0x10]
add ecx, edx
mov edx, dword [esp + 0x1c]
add edx, eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x7c], edx
cmp ecx, 0x20
ja 0x511d5d
cmp ebp, dword [esp + 0xf0]
jb 0x511d1a
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0xa4]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov edi, dword [esp + 0xac]
mov ebp, dword [esp + 0xf4]
add esp, 0xc
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe0], edi
jmp 0x511d61
cmp ebp, ebx
je 0x511d5d
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ebx
jae 0x511d2f
mov edx, ebp
sub edx, ebx
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xf0], ebp
add ecx, eax
lea eax, [esp + 0x9c]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282a0
mov edi, dword [esp + 0xa0]
jmp 0x511d00
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x58]
mov edx, edi
lea esi, [ecx + eax]
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bcae0]
mov eax, dword [esp + 0x68]
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0xf4], edx
mov edx, edi
lea ecx, [esi + eax]
neg ecx
lea ebx, [esi + eax]
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bcae0]
mov eax, dword [esp + 0x74]
movzx eax, ax
add edx, eax
mov dword [esp + 0x104], edx
cmp ebx, 0x20
ja 0x511e59
cmp ebp, dword [esp + 0xf0]
jb 0x511df7
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ebx
push 4
lea eax, [esp + 0x9c]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov edi, dword [esp + 0xa4]
jmp 0x511e41
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x511e59
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x511e13
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xe8], ebp
push 4
lea eax, [esp + 0xa0]
mov dword [esp + 0xe8], ebx
push ebp
push eax
call fcn.005282a0
mov edi, dword [esp + 0xa8]
mov ebx, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov dword [esp + 0xe0], edi
mov eax, dword [esp + 0x78]
add ebx, eax
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr edi, cl
and edi, dword [eax*4 + 0x5bcae0]
mov eax, dword [esp + 0x54]
movzx eax, ax
add edi, eax
mov dword [esp + 0xfc], edi
mov edx, dword [esp + 0x4c]
lea edi, [esp + 0x34]
mov eax, dword [esp + 0x1c]
lea esi, [esp + 0x7c]
mov ecx, dword [esp + 0x28]
add eax, ecx
movsd dword es:[edi], dword [esi]
mov dword [esp + 0xe4], ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
cmp eax, dword [edx + 0x7604]
jbe 0x511521
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x134]
test esi, esi
jle 0x512c17
mov edi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x28]
mov esi, dword [edi + 0x7604]
sub esi, ebx
je 0x511f13
mov eax, dword [esp + 0x44]
sub eax, ecx
cmp esi, eax
jbe 0x511eee
push 0xffffffffffffffba
jmp 0x510fc0
mov ebx, dword [esp + 0xe4]
jmp 0x511eba
push esi
push ebx
push ecx
call fcn.00513dc5
mov eax, dword [esp + 0x40]
add esp, 0xc
mov ecx, dword [esp + 0x24]
sub eax, esi
mov edx, dword [esp + 0x38]
add ecx, esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x24], ecx
jmp 0x511f17
mov eax, dword [esp + 0x34]
and dword [edi + 0x7608], 0
lea ebx, [edi + 0x760c]
lea ebp, [edi + 0x1760c]
mov dword [esp + 0x40], ebx
lea esi, [esp + 0x34]
mov dword [esp + 0x50], ebp
lea edi, [esp + 0xd4]
movsd dword es:[edi], dword [esi]
lea ebp, [eax + ecx]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x50]
lea edi, [edx + eax]
add eax, ebx
mov ebx, ebp
sub ebx, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
cmp eax, esi
ja 0x512149
mov eax, dword [esp + 0x44]
add ecx, edi
add eax, 0xffffffe0
cmp ecx, eax
ja 0x512145
mov ecx, dword [esp + 0x44]
lea eax, [edi + 0x20]
sub ecx, dword [esp + 0x24]
cmp ecx, eax
mov ecx, dword [esp + 0x24]
jb 0x512149
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x34]
movups xmm0, xmmword [eax + 0x760c]
movups xmmword [ecx], xmm0
cmp esi, 0x10
jbe 0x511fde
mov edx, dword [esp + 0x4c]
lea eax, [esi - 0x10]
add edx, 0x761c
add ecx, 0x10
lea esi, [ecx + eax]
movups xmm0, xmmword [edx]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x511fda
push 0x10
pop eax
add ecx, eax
add edx, eax
movups xmm0, xmmword [edx]
add edx, eax
movups xmmword [ecx], xmm0
add ecx, eax
movups xmm0, xmmword [edx]
add edx, eax
movups xmmword [ecx], xmm0
add ecx, eax
cmp ecx, esi
jb 0x511fc2
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x40], eax
mov eax, ebp
sub eax, esi
cmp ecx, eax
jbe 0x512048
mov eax, ebp
sub eax, dword [esp + 0x60]
cmp ecx, eax
ja 0x510fbe
mov ecx, dword [esp + 0x5c]
mov eax, ecx
sub eax, esi
add ebx, eax
lea eax, [ebx + edx]
cmp eax, ecx
ja 0x512025
push edx
push ebx
push ebp
call fcn.005282a0
add esp, 0xc
jmp 0x51217e
mov esi, ecx
sub esi, ebx
push esi
push ebx
push ebp
call fcn.005282a0
mov eax, dword [esp + 0x44]
add ebp, esi
mov ebx, dword [esp + 0x54]
add esp, 0xc
sub eax, esi
mov dword [esp + 0x54], eax
mov esi, eax
jmp 0x51204f
mov esi, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
push 0x10
pop edx
cmp ecx, edx
jb 0x512093
lea eax, [esi + ebp]
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp esi, edx
jle 0x51217e
add ebp, 0x10
add ebx, edx
movups xmm0, xmmword [ebx]
add ebx, edx
movups xmmword [ebp], xmm0
add ebp, edx
movups xmm0, xmmword [ebx]
add ebx, edx
movups xmmword [ebp], xmm0
add ebp, edx
cmp ebp, eax
jb 0x512074
jmp 0x51217e
cmp ecx, 8
jae 0x5120c6
mov al, byte [ebx]
mov byte [ebp], al
mov al, byte [ebx + 1]
mov byte [ebp + 1], al
mov al, byte [ebx + 2]
mov byte [ebp + 2], al
mov al, byte [ebx + 3]
add ebx, dword [ecx*4 + 0x5bc9a0]
mov byte [ebp + 3], al
mov edx, ebx
sub ebx, dword [ecx*4 + 0x5bc9c0]
lea eax, [ebp + 4]
push 4
jmp 0x5120cc
mov eax, ebp
mov edx, ebx
push 8
pop ecx
push ecx
push edx
push eax
call fcn.005282a0
add esp, 0xc
cmp esi, 8
jbe 0x51217e
add ebp, 8
add esi, 0xfffffff8
add ebx, 8
mov eax, ebp
push 0x10
sub eax, ebx
pop edx
lea ecx, [esi + ebp]
mov dword [esp + 0x54], ecx
cmp eax, edx
jge 0x512118
sub ebx, ebp
mov esi, ecx
push 8
lea eax, [ebx + ebp]
push eax
push ebp
call fcn.005282a0
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x512100
jmp 0x51217e
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp esi, edx
jle 0x51217e
add ebp, 0x10
add ebx, 0x10
movups xmm0, xmmword [ebx]
add ebx, edx
movups xmmword [ebp], xmm0
add ebp, edx
movups xmm0, xmmword [ebx]
add ebx, edx
movups xmmword [ebp], xmm0
add ebp, edx
cmp ebp, ecx
jb 0x512129
jmp 0x51217e
mov ecx, dword [esp + 0x24]
push dword [esp + 0x5c]
lea eax, [esp + 0x44]
push dword [esp + 0x64]
push dword [esp + 0x50]
push esi
push eax
sub esp, 0xc
lea esi, [esp + 0x54]
mov edi, esp
push dword [esp + 0x64]
movsd dword es:[edi], dword [esi]
push ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.00513906
mov edi, eax
add esp, 0x28
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
cmp edi, 0xffffff88
ja 0x512cdf
mov esi, dword [esp + 0x134]
add dword [esp + 0x24], edi
sub esi, 1
mov ebx, dword [esp + 0xe4]
mov ebp, dword [esp + 0xe8]
mov dword [esp + 0x134], esi
mov dword [esp + 0x14], ebx
je 0x5121e2
cmp ebx, 0x20
ja 0x5121e2
cmp ebp, dword [esp + 0xf0]
jb 0x512348
lea eax, [esp + 0xe0]
push eax
call fcn.0050a828
mov ebx, dword [esp + 0xe8]
mov ebp, dword [esp + 0xec]
pop ecx
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x10], eax
test esi, esi
jle 0x512c17
mov ecx, dword [esp + 0x104]
mov esi, dword [esp + 0x108]
mov edi, dword [esp + 0xf4]
mov edx, dword [esp + 0x100]
mov eax, dword [esp + 0xfc]
mov ebx, dword [esi + ecx*8 + 4]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0xf8]
mov esi, dword [ebx + edi*8 + 4]
mov cl, byte [ebx + edi*8 + 2]
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], esi
mov esi, dword [edx + eax*8 + 4]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x108]
mov byte [esp + 0x1a], cl
mov ecx, dword [esp + 0x104]
mov bl, byte [esi + ecx*8 + 2]
mov byte [esp + 0x1b], bl
mov bl, byte [edx + eax*8 + 2]
mov byte [esp + 0x23], bl
mov ebx, dword [esp + 0xf8]
movzx esi, word [ebx + edi*8]
mov dword [esp + 0xb0], esi
mov esi, dword [esp + 0x108]
movzx ebx, word [esi + ecx*8]
movzx ecx, byte [esi + ecx*8 + 3]
mov dword [esp + 0xb8], ebx
movzx ebx, word [edx + eax*8]
movzx eax, byte [edx + eax*8 + 3]
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x6c], eax
mov al, byte [esp + 0x23]
mov dword [esp + 0xb4], ecx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0xac], edi
cmp al, 1
jbe 0x512527
cmp dword [esp + 0x138], 0
je 0x512427
cmp al, 0x19
jb 0x512427
mov ebx, dword [esp + 0x14]
mov ecx, ebx
mov edx, dword [esp + 0x10]
and ecx, 0x1f
movzx eax, al
mov edi, edx
shl edi, cl
sub eax, 5
mov ecx, eax
add ebx, eax
neg ecx
and ecx, 0x1f
shr edi, cl
shl edi, 5
add edi, dword [esp + 0x1c]
cmp ebx, 0x20
ja 0x512405
cmp ebp, dword [esp + 0xf0]
jb 0x5123a2
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ebx
push 4
lea eax, [esp + 0x58]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov edx, dword [esp + 0x60]
jmp 0x5123e9
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x5121e2
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x512368
mov edx, ebp
sub edx, ecx
imul eax, edx, 0xfffffff8
sub ebp, edx
push ebp
mov dword [esp + 0xec], ebp
add ebx, eax
mov dword [esp + 0xe8], ebx
call fcn.0050707e
mov ebx, dword [esp + 0xe8]
mov ebp, dword [esp + 0xec]
pop ecx
mov dword [esp + 0xe0], eax
mov dword [esp + 0x14], ebx
jmp 0x5121e9
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x512405
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x5123be
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xe8], ebp
push 4
lea eax, [esp + 0x7c]
mov dword [esp + 0xe8], ebx
push ebp
push eax
call fcn.005282a0
mov edx, dword [esp + 0x84]
mov ebx, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov dword [esp + 0xe0], edx
mov dword [esp + 0x10], edx
mov esi, dword [esp + 0x10]
mov ecx, ebx
and ecx, 0x1f
mov eax, edx
shl eax, cl
add ebx, 5
shr eax, 0x1b
add edi, eax
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1c], edi
jmp 0x512502
mov ebx, dword [esp + 0x14]
mov ecx, ebx
mov esi, dword [esp + 0x10]
and ecx, 0x1f
movzx edx, al
mov edi, esi
shl edi, cl
add ebx, edx
mov ecx, edx
mov dword [esp + 0x14], ebx
neg ecx
and ecx, 0x1f
shr edi, cl
add edi, dword [esp + 0x1c]
mov dword [esp + 0x1c], edi
cmp ebx, 0x20
ja 0x512502
cmp ebp, dword [esp + 0xf0]
jb 0x51249c
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ebx
push 4
lea eax, [esp + 0x68]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov ecx, dword [esp + 0x70]
mov esi, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xec], ecx
jmp 0x5124ed
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x512502
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x5124b8
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xe8], ebp
push 4
lea eax, [esp + 0x6c]
mov dword [esp + 0xe8], ebx
push ebp
push eax
call fcn.005282a0
mov eax, dword [esp + 0x74]
mov esi, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x110]
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x5125be
mov ecx, dword [esp + 0x30]
xor edx, edx
mov ebx, dword [esp + 0x14]
test ecx, ecx
mov esi, dword [esp + 0x10]
sete dl
test al, al
jne 0x512562
mov edi, dword [esp + edx*4 + 0x10c]
mov eax, ecx
neg eax
mov dword [esp + 0x1c], edi
sbb eax, eax
and eax, 4
mov eax, dword [esp + eax + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x5125be
mov ecx, ebx
mov eax, esi
and ecx, 0x1f
shl eax, cl
shr eax, 0x1f
inc ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0xe4], ebx
lea ecx, [eax + edx]
mov edx, dword [esp + 0x10c]
add ecx, dword [esp + 0x1c]
lea edi, [edx - 1]
cmp ecx, 3
je 0x512597
mov edi, dword [esp + ecx*4 + 0x10c]
xor eax, eax
test edi, edi
sete al
add edi, eax
mov dword [esp + 0x1c], edi
cmp ecx, 1
je 0x5125b7
mov eax, dword [esp + 0x110]
mov dword [esp + 0x114], eax
mov dword [esp + 0x110], edx
mov al, byte [esp + 0x1b]
mov dword [esp + 0x10c], edi
mov dword [esp + 0x3c], edi
test al, al
je 0x5125fe
movzx edx, al
mov ecx, ebx
and ecx, 0x1f
mov eax, esi
shl eax, cl
add ebx, edx
mov ecx, edx
mov dword [esp + 0x14], ebx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, dword [esp + 0x2c]
add ecx, eax
mov al, byte [esp + 0x1b]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x38], ecx
movzx ecx, al
movzx eax, byte [esp + 0x1a]
add ecx, eax
cmp ecx, 0x14
mov ecx, dword [esp + 0x14]
jb 0x5126c0
cmp ecx, 0x20
ja 0x5126c0
cmp ebp, dword [esp + 0xf0]
jb 0x51267c
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0x78]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov ebx, dword [esp + 0xec]
mov dword [esp + 0x10], eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0x14], ecx
jmp 0x5126cb
mov ebx, dword [esp + 0xec]
cmp ebp, ebx
je 0x5126c7
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ebx
jae 0x512698
mov edx, ebp
sub edx, ebx
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xf0], ebp
add ecx, eax
lea eax, [esp + 0x60]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282a0
mov eax, dword [esp + 0x64]
jmp 0x512653
mov ebx, dword [esp + 0xec]
mov eax, dword [esp + 0x10]
mov dl, byte [esp + 0x1a]
test dl, dl
je 0x5126f8
and ecx, 0x1f
movzx edx, dl
shl eax, cl
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, dword [esp + 0x14]
add ecx, edx
mov edx, dword [esp + 0x30]
add edx, eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], edx
cmp ecx, 0x20
ja 0x512796
cmp ebp, dword [esp + 0xf0]
jb 0x512753
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0xa8]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov ebx, dword [esp + 0xb0]
mov ebp, dword [esp + 0xf4]
add esp, 0xc
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe0], ebx
jmp 0x51279a
cmp ebp, ebx
je 0x512796
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ebx
jae 0x512768
mov edx, ebp
sub edx, ebx
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xf0], ebp
add ecx, eax
lea eax, [esp + 0xb0]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282a0
mov ebx, dword [esp + 0xb4]
jmp 0x512739
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0xac]
mov edx, ebx
lea esi, [ecx + eax]
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bcae0]
mov eax, dword [esp + 0xb0]
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0xf4], edx
mov edx, ebx
lea ecx, [esi + eax]
neg ecx
lea edi, [esi + eax]
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bcae0]
mov eax, dword [esp + 0xb8]
movzx eax, ax
add edx, eax
mov dword [esp + 0x104], edx
cmp edi, 0x20
ja 0x512897
cmp ebp, dword [esp + 0xf0]
jb 0x51283c
mov eax, edi
and edi, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], edi
push 4
lea eax, [esp + 0xc0]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov ebx, dword [esp + 0xc8]
jmp 0x512886
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x512897
mov edx, edi
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x512858
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub edi, eax
mov dword [esp + 0xe8], ebp
push 4
lea eax, [esp + 0xc4]
mov dword [esp + 0xe8], edi
push ebp
push eax
call fcn.005282a0
mov ebx, dword [esp + 0xcc]
mov edi, dword [esp + 0xf0]
add esp, 0xc
mov dword [esp + 0xe0], ebx
mov eax, dword [esp + 0x6c]
lea esi, [esp + 0x34]
mov edx, dword [esp + 0x24]
add edi, eax
mov dword [esp + 0xe4], edi
neg edi
and edi, 0x1f
mov ecx, edi
lea edi, [esp + 0xd4]
movsd dword es:[edi], dword [esi]
shr ebx, cl
and ebx, dword [eax*4 + 0x5bcae0]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x70]
movsd dword es:[edi], dword [esi]
movzx eax, ax
add ebx, eax
lea ebp, [ecx + edx]
mov eax, dword [esp + 0x28]
movsd dword es:[edi], dword [esi]
add eax, ecx
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
add edi, ecx
mov dword [esp + 0xfc], ebx
mov ebx, ebp
sub ebx, esi
mov dword [esp + 0x6c], eax
cmp eax, dword [esp + 0x50]
ja 0x512aed
mov eax, dword [esp + 0x44]
lea ecx, [edi + edx]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x512aed
mov ecx, dword [esp + 0x44]
lea eax, [edi + 0x20]
sub ecx, edx
cmp ecx, eax
jb 0x512aed
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
movups xmm0, xmmword [eax]
movups xmmword [edx], xmm0
cmp ecx, 0x10
jbe 0x51297c
mov edx, dword [esp + 0x28]
lea eax, [ecx - 0x10]
mov ecx, dword [esp + 0x24]
add ecx, 0x10
movups xmm0, xmmword [edx + 0x10]
lea esi, [ecx + eax]
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x1c]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x51297c
mov eax, dword [esp + 0x70]
add ecx, 0x10
add edx, 0x20
movups xmm0, xmmword [edx]
lea edx, [edx + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [edx - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x512964
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x28], eax
mov dword [esp + 0x40], eax
mov eax, ebp
sub eax, ecx
cmp esi, eax
jbe 0x5129eb
mov eax, ebp
sub eax, dword [esp + 0x60]
cmp esi, eax
ja 0x510fbe
mov edx, dword [esp + 0x5c]
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x2c]
add ebx, eax
lea eax, [ecx + ebx]
cmp eax, edx
ja 0x5129c7
push ecx
push ebx
push ebp
call fcn.005282a0
add esp, 0xc
jmp 0x512b25
mov esi, edx
sub esi, ebx
push esi
push ebx
push ebp
call fcn.005282a0
mov edx, dword [esp + 0x38]
add esp, 0xc
mov ebx, dword [esp + 0x48]
add ebp, esi
sub edx, esi
mov dword [esp + 0xd8], edx
jmp 0x5129f2
mov edx, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0x2c], edx
cmp ecx, 0x10
jb 0x512a3b
movups xmm0, xmmword [ebx]
push 0x10
pop ecx
lea eax, [edx + ebp]
movups xmmword [ebp], xmm0
cmp edx, ecx
jle 0x512b25
add ebp, 0x10
add ebx, ecx
movups xmm0, xmmword [ebx]
add ebx, ecx
movups xmmword [ebp], xmm0
add ebp, ecx
movups xmm0, xmmword [ebx]
add ebx, ecx
movups xmmword [ebp], xmm0
add ebp, ecx
cmp ebp, eax
jb 0x512a1c
jmp 0x512b25
cmp ecx, 8
jae 0x512a6e
mov al, byte [ebx]
mov byte [ebp], al
mov al, byte [ebx + 1]
mov byte [ebp + 1], al
mov al, byte [ebx + 2]
mov byte [ebp + 2], al
mov al, byte [ebx + 3]
add ebx, dword [ecx*4 + 0x5bc9a0]
mov byte [ebp + 3], al
mov edx, ebx
sub ebx, dword [ecx*4 + 0x5bc9c0]
lea eax, [ebp + 4]
push 4
jmp 0x512a74
mov eax, ebp
mov edx, ebx
push 8
pop ecx
push ecx
push edx
push eax
call fcn.005282a0
mov eax, dword [esp + 0x38]
add esp, 0xc
cmp eax, 8
jbe 0x512b25
add ebp, 8
lea ecx, [eax - 8]
add ebx, 8
mov eax, ebp
sub eax, ebx
lea esi, [ecx + ebp]
cmp eax, 0x10
jge 0x512abc
sub ebx, ebp
push 8
lea eax, [ebx + ebp]
push eax
push ebp
call fcn.005282a0
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x512aa4
jmp 0x512b25
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp ecx, 0x10
jle 0x512b25
push 0x10
add ebp, 0x10
add ebx, 0x10
pop ecx
movups xmm0, xmmword [ebx]
add ebx, ecx
movups xmmword [ebp], xmm0
add ebp, ecx
movups xmm0, xmmword [ebx]
add ebx, ecx
movups xmmword [ebp], xmm0
add ebp, ecx
cmp ebp, esi
jb 0x512ad1
jmp 0x512b25
push dword [esp + 0x5c]
lea eax, [esp + 0x44]
push dword [esp + 0x64]
lea esi, [esp + 0x3c]
push dword [esp + 0x50]
push dword [esp + 0x5c]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x64]
movsd dword es:[edi], dword [esi]
push edx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.00513906
mov edi, eax
add esp, 0x28
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
cmp edi, 0xffffff88
ja 0x512cdf
add dword [esp + 0x24], edi
sub dword [esp + 0x134], 1
mov ebp, dword [esp + 0xe8]
je 0x512c0e
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x14], ecx
cmp ecx, 0x20
jbe 0x512b67
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x10], eax
jmp 0x5121f5
cmp ebp, dword [esp + 0xf0]
jb 0x512ba1
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0xc8]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282a0
mov eax, dword [esp + 0xd0]
jmp 0x512be9
mov edx, dword [esp + 0xec]
cmp ebp, edx
je 0x512b57
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x512bbd
mov esi, ebp
sub esi, edx
imul eax, esi, 0xfffffff8
sub ebp, esi
push 4
push ebp
mov dword [esp + 0xf0], ebp
add ecx, eax
lea eax, [esp + 0xd0]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282a0
mov eax, dword [esp + 0xd4]
mov ebp, dword [esp + 0xf4]
add esp, 0xc
mov dword [esp + 0x10], eax
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x14], eax
jmp 0x5121f5
mov ebx, dword [esp + 0xe4]
jmp 0x512c1d
jne 0x510fbe
cmp ebx, 0x20
ja 0x512c56
cmp ebp, dword [esp + 0xf0]
jb 0x512c3e
mov eax, ebx
shr eax, 3
sub ebp, eax
and ebx, 7
lea eax, [esp + 0x70]
jmp 0x512d16
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
jne 0x512cfa
cmp ebx, 0x20
jb 0x510fbe
mov edi, dword [esp + 0x4c]
lea esi, [esp + 0x10c]
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov ebp, dword [esp + 0x50]
lea edi, [edi + 0x682c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x44]
cmp dword [esi + 0x7608], 2
jne 0x512cb9
mov eax, edi
sub ebp, edx
sub eax, ebx
cmp ebp, eax
ja 0x511ede
test ebx, ebx
je 0x512ca6
push ebp
push edx
push ebx
call fcn.005282a0
add esp, 0xc
add ebx, ebp
and dword [esi + 0x7608], 0
lea edx, [esi + 0x760c]
lea ebp, [esi + 0x1760c]
sub ebp, edx
sub edi, ebx
cmp ebp, edi
ja 0x511ede
test ebx, ebx
je 0x512cd6
push ebp
push edx
push ebx
call fcn.005282a0
add esp, 0xc
add ebx, ebp
mov edi, ebx
sub edi, dword [esp + 0xcc]
mov ecx, dword [esp + 0x118]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00527919
add esp, 0x10c
ret
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x512d0b
mov edx, ebp
sub edx, ecx
imul eax, edx, 0xfffffff8
sub ebp, edx
add ebx, eax
lea eax, [esp + 0x6c]
push 4
push ebp
push eax
mov dword [esp + 0xf4], ebp
mov dword [esp + 0xf0], ebx
call fcn.005282a0
add esp, 0xc
jmp 0x510fbe