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

Disassembly:
sub esp, 0x10c
mov eax, dword [0x5dcef0]
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 + 0x3c], 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 + 0x1c], ebx
mov dword [esp + 0x28], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x48], ebp
mov dword [esp + 0x5c], eax
je 0x512bd6
push dword [esp + 0x130]
lea eax, [esi + 0x682c]
mov dword [esi + 0x750c], 1
mov esi, eax
mov dword [esp + 0xcc], eax
lea edi, [esp + 0x110]
push ecx
lea eax, [esp + 0xe8]
movsd dword es:[edi], dword [esi]
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.0050a6d6
add esp, 0xc
cmp eax, 0xffffff88
jbe 0x510efa
push 0xffffffffffffffec
pop edi
jmp 0x512c37
mov ebx, dword [esp + 0x4c]
lea eax, [esp + 0xe0]
push dword [ebx]
push eax
lea eax, [esp + 0xfc]
push eax
call fcn.00513b0e
push dword [ebx + 8]
lea eax, [esp + 0xf0]
push eax
lea eax, [esp + 0x110]
push eax
call fcn.00513b0e
push dword [ebx + 4]
lea eax, [esp + 0xfc]
push eax
lea eax, [esp + 0x124]
push eax
call fcn.00513b0e
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 + 0x19], dl
mov edx, dword [esp + 0x104]
mov dword [esp + 0x68], ebp
mov dword [esp + 0x7c], ebp
mov ebp, dword [ebx + edi*8 + 4]
mov bl, byte [esi + edx*8 + 2]
mov byte [esp + 0x1b], bl
mov bl, byte [ecx + eax*8 + 2]
mov byte [esp + 0x1a], bl
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x78], ebp
mov ebp, dword [ecx + eax*8 + 4]
movzx esi, word [ebx + edi*8]
mov dword [esp + 0x20], 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 + 0x50], ebx
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x10], eax
mov al, byte [esp + 0x1a]
mov dword [esp + 0x2c], edx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0x64], edi
cmp al, 1
jbe 0x51116d
cmp dword [esp + 0x138], 0
je 0x5110bd
cmp al, 0x19
jb 0x5110bd
movzx eax, al
sub eax, 5
push eax
lea eax, [esp + 0xe4]
push eax
call fcn.0050e0de
mov edi, dword [esp + 0xec]
mov esi, eax
shl esi, 5
pop ecx
add esi, ebp
pop ecx
cmp edi, 0x20
ja 0x5110a6
mov ecx, dword [esp + 0xe8]
cmp ecx, dword [esp + 0xf0]
jb 0x51105f
lea eax, [esp + 0xe0]
push eax
call fcn.0050a7f9
jmp 0x5110a5
cmp ecx, dword [esp + 0xec]
je 0x5110a6
mov edx, edi
mov eax, ecx
shr edx, 3
sub eax, edx
cmp eax, dword [esp + 0xec]
jae 0x511083
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.0050e0de
pop ecx
add esi, eax
jmp 0x51113d
movzx eax, al
push eax
lea eax, [esp + 0xe4]
push eax
call fcn.0050e0de
cmp dword [esp + 0xec], 0x20
pop ecx
pop ecx
lea esi, [eax + ebp]
ja 0x51113e
mov ebp, dword [esp + 0xe8]
cmp ebp, dword [esp + 0xf0]
jb 0x5110fc
lea eax, [esp + 0xe0]
push eax
call fcn.0050a7f9
jmp 0x51113d
mov edx, dword [esp + 0xec]
cmp ebp, edx
je 0x51114c
mov ecx, dword [esp + 0xe4]
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, edx
jae 0x51111d
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 dword [esp + 0x114], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x51120f
xor ebx, ebx
cmp dword [esp + 0x24], ebx
sete bl
test al, al
jne 0x5111ac
mov esi, dword [esp + ebx*4 + 0x10c]
mov ebx, dword [esp + 0x24]
mov eax, ebx
mov ebp, dword [esp + 0xe8]
neg eax
mov edx, dword [esp + 0xec]
sbb eax, eax
and eax, 4
mov eax, dword [esp + eax + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x511213
lea eax, [esp + 0xe0]
push 1
push eax
call fcn.0050e0de
mov edx, dword [esp + 0x114]
pop ecx
pop ecx
lea ecx, [ebx + eax]
add ecx, ebp
lea esi, [edx - 1]
cmp ecx, 3
je 0x5111d8
mov esi, dword [esp + ecx*4 + 0x10c]
mov ebp, dword [esp + 0xe8]
xor eax, eax
test esi, esi
sete al
add esi, eax
mov eax, dword [esp + 0x114]
cmp ecx, 1
cmovne eax, dword [esp + 0x110]
mov dword [esp + 0x110], edx
mov edx, dword [esp + 0xec]
mov dword [esp + 0x114], eax
mov ebx, dword [esp + 0x24]
mov al, byte [esp + 0x1b]
mov dword [esp + 0x10c], esi
mov dword [esp + 0x80], esi
movzx esi, al
test al, al
je 0x511254
lea eax, [esp + 0xe0]
push esi
push eax
call fcn.0050e0de
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 + 0x7c], ecx
movzx edi, byte [esp + 0x19]
lea eax, [esi + edi]
cmp eax, 0x14
jb 0x5112cc
cmp dword [esp + 0xe4], 0x20
ja 0x5112cc
cmp ebp, dword [esp + 0xf0]
jb 0x511283
lea eax, [esp + 0xe0]
push eax
call fcn.0050a7f9
jmp 0x5112bd
cmp ebp, edx
je 0x5112cc
mov ecx, dword [esp + 0xe4]
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, edx
jae 0x51129d
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
cmp byte [esp + 0x19], 0
jbe 0x5112fb
lea eax, [esp + 0xe0]
push edi
push eax
call fcn.0050e0de
mov ebp, dword [esp + 0xf0]
add ebx, eax
mov edx, dword [esp + 0xf4]
pop ecx
pop ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x78], ebx
cmp dword [esp + 0xe4], 0x20
ja 0x51135f
cmp ebp, dword [esp + 0xf0]
jb 0x51131d
lea eax, [esp + 0xe0]
push eax
call fcn.0050a7f9
jmp 0x511357
cmp ebp, edx
je 0x51135f
mov ecx, dword [esp + 0xe4]
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, edx
jae 0x511337
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 + 0x20]
neg ecx
and ecx, 0x1f
movzx eax, ax
mov edx, edi
shr edx, cl
and edx, dword [ebx*4 + 0x5bd4e0]
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 + 0x5bd4e0]
mov eax, dword [esp + 0x14]
movzx eax, ax
add edi, eax
mov dword [esp + 0x104], edi
cmp ebx, 0x20
ja 0x51142f
cmp ebp, dword [esp + 0xf0]
jb 0x5113e0
lea eax, [esp + 0xe0]
push eax
call fcn.0050a7f9
jmp 0x511420
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x51142f
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x5113fc
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]
lea esi, [esp + 0x78]
mov edx, dword [esp + 0xe0]
lea edi, [esp + 0x30]
add ebx, eax
movsd dword es:[edi], dword [esi]
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bd4e0]
mov eax, dword [esp + 0x50]
movsd dword es:[edi], dword [esi]
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xfc], edx
mov edx, dword [esp + 0x28]
add eax, edx
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x4c]
cmp eax, dword [esi + 0x7604]
jmp 0x511def
lea esi, [esp + 0x30]
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 + 0x30]
lea eax, [esi + edx]
mov edx, dword [esp + 0x34]
lea ecx, [eax - 0x20]
mov dword [esp + 0x50], eax
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x1c]
lea edi, [edx + esi]
lea ebp, [esi + ecx]
mov ebx, ebp
sub ebx, dword [esp + 0x38]
cmp eax, dword [esp + 0x48]
ja 0x51169f
lea eax, [edi + ecx]
cmp eax, dword [esp + 0x20]
ja 0x51169f
mov ecx, dword [esp + 0x44]
lea eax, [edi + 0x20]
sub ecx, dword [esp + 0x1c]
cmp ecx, eax
mov ecx, dword [esp + 0x1c]
jb 0x51169f
mov eax, dword [esp + 0x28]
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
cmp esi, 0x10
jbe 0x51152f
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 0x51152b
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 0x511513
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x28], eax
mov dword [esp + 0x40], eax
mov eax, ebp
sub eax, esi
cmp ecx, eax
jbe 0x5115a0
mov eax, ebp
sub eax, dword [esp + 0x60]
cmp ecx, eax
ja 0x510ef2
mov ecx, dword [esp + 0x5c]
mov eax, ecx
sub eax, esi
add ebx, eax
lea eax, [ebx + edx]
cmp eax, ecx
ja 0x51157a
push edx
push ebx
push ebp
call fcn.005282e0
add esp, 0xc
jmp 0x5116db
mov esi, ecx
sub esi, ebx
push esi
push ebx
push ebp
call fcn.005282e0
mov edx, dword [esp + 0x40]
add esp, 0xc
mov ebx, dword [esp + 0x3c]
mov eax, edx
add ebp, esi
sub eax, esi
mov dword [esp + 0xd8], eax
jmp 0x5115a7
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
push 0x10
pop esi
mov dword [esp + 0x20], eax
cmp ecx, esi
jb 0x5115ef
lea ecx, [eax + ebp]
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp eax, esi
jle 0x5116df
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 0x5115d0
jmp 0x5116df
cmp ecx, 8
jae 0x511622
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 + 0x5bd3a0]
mov byte [ebp + 3], al
mov edx, ebx
sub ebx, dword [ecx*4 + 0x5bd3c0]
lea eax, [ebp + 4]
push 4
jmp 0x511628
mov eax, ebp
mov edx, ebx
push 8
pop ecx
push ecx
push edx
push eax
call fcn.005282e0
mov eax, dword [esp + 0x2c]
add esp, 0xc
cmp eax, 8
jbe 0x5116db
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 0x511672
sub ebx, ebp
push 8
lea eax, [ebx + ebp]
push eax
push ebp
call fcn.005282e0
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x51165a
jmp 0x5116db
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp ecx, edx
jle 0x5116db
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 0x511683
jmp 0x5116db
push dword [esp + 0x5c]
lea eax, [esp + 0x44]
push dword [esp + 0x64]
lea esi, [esp + 0x38]
push dword [esp + 0x44]
push dword [esp + 0x54]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x40]
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.00513940
mov edi, eax
add esp, 0x2c
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x34]
cmp edi, 0xffffff88
ja 0x512c37
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x134]
add ecx, edi
mov ebp, dword [esp + 0xe8]
sub esi, 1
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x134], esi
je 0x511e36
mov edx, dword [esp + 0xe4]
mov dword [esp + 0x10], edx
cmp edx, 0x20
ja 0x5117c8
cmp ebp, dword [esp + 0xf0]
jb 0x51177e
mov eax, edx
and edx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], edx
push 4
lea eax, [esp + 0x88]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282e0
mov eax, dword [esp + 0x90]
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 0x5117d3
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x5117c8
mov esi, edx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, ecx
jae 0x51179a
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 + 0x90]
push eax
mov dword [esp + 0xf0], edx
call fcn.005282e0
mov eax, dword [esp + 0x94]
jmp 0x51175c
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x14], eax
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 esi, ebx
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x7c], esi
mov esi, dword [ebx + edi*8 + 4]
mov cl, byte [ebx + edi*8 + 2]
mov dword [esp + 0x20], esi
mov dword [esp + 0x78], esi
mov esi, dword [edx + eax*8 + 4]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x108]
mov byte [esp + 0x19], 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 + 0x1b], 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 + 0x70], ebx
movzx ebx, word [edx + eax*8]
movzx eax, byte [edx + eax*8 + 3]
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x74], eax
mov al, byte [esp + 0x1b]
mov dword [esp + 0x64], ecx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0x50], edi
cmp al, 1
jbe 0x511a47
cmp dword [esp + 0x138], 0
je 0x51195f
cmp al, 0x19
jb 0x51195f
movzx eax, al
sub eax, 5
push eax
lea eax, [esp + 0xe4]
push eax
call fcn.0050e0de
mov esi, dword [esp + 0xec]
mov edi, eax
shl edi, 5
add edi, dword [esp + 0x34]
pop ecx
pop ecx
cmp esi, 0x20
ja 0x511940
mov ecx, dword [esp + 0xe8]
cmp ecx, dword [esp + 0xf0]
jb 0x5118f9
lea eax, [esp + 0xe0]
push eax
call fcn.0050a7f9
jmp 0x51193f
cmp ecx, dword [esp + 0xec]
je 0x511940
mov edx, esi
mov eax, ecx
shr edx, 3
sub eax, edx
cmp eax, dword [esp + 0xec]
jae 0x51191d
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.0050e0de
pop ecx
pop ecx
mov ecx, dword [esp + 0xe0]
add edi, eax
jmp 0x511a08
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 + 0x2c]
cmp ebx, 0x20
ja 0x511a22
cmp ebp, dword [esp + 0xf0]
jb 0x5119c5
lea eax, [esp + 0xe0]
push eax
call fcn.0050a7f9
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xe4]
pop ecx
mov dword [esp + 0x14], eax
jmp 0x511a17
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x511a22
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x5119e1
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 dword [esp + 0x114], eax
mov eax, dword [esp + 0x10c]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x110], eax
jmp 0x511ad4
mov ecx, dword [esp + 0x20]
xor edx, edx
mov esi, dword [esp + 0x14]
test ecx, ecx
sete dl
test al, al
jne 0x511a71
mov edi, dword [esp + edx*4 + 0x10c]
neg ecx
sbb eax, eax
and eax, 4
mov eax, dword [esp + eax + 0x10c]
jmp 0x511a37
mov ecx, dword [esp + 0x10]
mov eax, esi
mov ebx, dword [esp + 0x10c]
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x10]
shr eax, 0x1f
inc ecx
add edx, eax
mov dword [esp + 0x10], ecx
add edx, dword [esp + 0x2c]
lea edi, [ebx - 1]
mov dword [esp + 0xe4], ecx
cmp edx, 3
je 0x511aab
mov edi, dword [esp + edx*4 + 0x10c]
xor eax, eax
test edi, edi
sete al
add edi, eax
mov eax, dword [esp + 0x114]
cmp edx, 1
cmovne eax, dword [esp + 0x110]
mov dword [esp + 0x114], eax
mov dword [esp + 0x110], ebx
mov al, byte [esp + 0x1a]
mov dword [esp + 0x10c], edi
mov dword [esp + 0x80], edi
movzx edx, al
test al, al
je 0x511b11
mov ebx, dword [esp + 0x24]
and ecx, 0x1f
mov eax, esi
shl eax, cl
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, dword [esp + 0x10]
add ecx, edx
add ebx, eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x7c], ebx
mov bl, byte [esp + 0x19]
movzx edi, bl
lea eax, [edi + edx]
cmp eax, 0x14
jb 0x511bd8
cmp ecx, 0x20
ja 0x511bd8
cmp ebp, dword [esp + 0xf0]
jb 0x511b8e
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0xd4]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282e0
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov edx, dword [esp + 0xec]
mov dword [esp + 0x14], eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0x10], ecx
jmp 0x511be3
mov edx, dword [esp + 0xec]
cmp ebp, edx
je 0x511bdf
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x511baa
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 + 0xc4]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282e0
mov eax, dword [esp + 0xc8]
jmp 0x511b65
mov edx, dword [esp + 0xec]
mov eax, dword [esp + 0x14]
test bl, bl
je 0x511c09
mov ebx, dword [esp + 0x20]
and ecx, 0x1f
shl eax, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, dword [esp + 0x10]
add ecx, edi
add ebx, eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x78], ebx
cmp ecx, 0x20
ja 0x511ca7
cmp ebp, dword [esp + 0xf0]
jb 0x511c64
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0x9c]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282e0
mov edi, dword [esp + 0xa4]
mov ebp, dword [esp + 0xf4]
add esp, 0xc
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe0], edi
jmp 0x511cab
cmp ebp, edx
je 0x511ca7
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x511c79
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 + 0x94]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282e0
mov edi, dword [esp + 0x98]
jmp 0x511c4a
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x50]
mov edx, edi
lea esi, [ecx + eax]
mov ecx, esi
mov dword [esp + 0xe4], esi
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bd4e0]
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 + 0x5bd4e0]
mov eax, dword [esp + 0x70]
movzx eax, ax
add edx, eax
mov dword [esp + 0x104], edx
cmp ebx, 0x20
ja 0x511daa
cmp ebp, dword [esp + 0xf0]
jb 0x511d48
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ebx
push 4
lea eax, [esp + 0x94]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282e0
mov edi, dword [esp + 0x9c]
jmp 0x511d92
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x511daa
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x511d64
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 + 0x98]
mov dword [esp + 0xe8], ebx
push ebp
push eax
call fcn.005282e0
mov edi, dword [esp + 0xa0]
mov ebx, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov dword [esp + 0xe0], edi
mov eax, dword [esp + 0x74]
lea esi, [esp + 0x78]
add ebx, eax
mov edx, dword [esp + 0x28]
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr edi, cl
and edi, dword [eax*4 + 0x5bd4e0]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x4c]
movzx eax, ax
add edi, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0xfc], edi
add eax, edx
cmp eax, dword [ecx + 0x7604]
lea edi, [esp + 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [esp + 0xe4], ebx
jbe 0x511480
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x134]
test esi, esi
jle 0x512b72
mov edi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x28]
mov esi, dword [edi + 0x7604]
sub esi, ebx
je 0x511e64
mov eax, dword [esp + 0x44]
sub eax, ecx
cmp esi, eax
jbe 0x511e3f
push 0xffffffffffffffba
jmp 0x510ef4
mov ebx, dword [esp + 0xe4]
jmp 0x511e0b
push esi
push ebx
push ecx
call fcn.00513d1a
mov eax, dword [esp + 0x3c]
add esp, 0xc
mov ecx, dword [esp + 0x1c]
sub eax, esi
mov edx, dword [esp + 0x34]
add ecx, esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], ecx
jmp 0x511e68
mov eax, dword [esp + 0x30]
and dword [edi + 0x7608], 0
lea ebx, [edi + 0x760c]
lea ebp, [edi + 0x1760c]
mov dword [esp + 0x40], ebx
lea esi, [esp + 0x30]
mov dword [esp + 0x48], 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 + 0x48]
lea edi, [edx + eax]
add eax, ebx
mov ebx, ebp
sub ebx, dword [esp + 0x38]
mov dword [esp + 0x28], eax
cmp eax, esi
ja 0x51209a
mov eax, dword [esp + 0x44]
add ecx, edi
add eax, 0xffffffe0
cmp ecx, eax
ja 0x512096
mov ecx, dword [esp + 0x44]
lea eax, [edi + 0x20]
sub ecx, dword [esp + 0x1c]
cmp ecx, eax
mov ecx, dword [esp + 0x1c]
jb 0x51209a
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x30]
movups xmm0, xmmword [eax + 0x760c]
movups xmmword [ecx], xmm0
cmp esi, 0x10
jbe 0x511f2f
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 0x511f2b
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 0x511f13
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x40], eax
mov eax, ebp
sub eax, esi
cmp ecx, eax
jbe 0x511f99
mov eax, ebp
sub eax, dword [esp + 0x60]
cmp ecx, eax
ja 0x510ef2
mov ecx, dword [esp + 0x5c]
mov eax, ecx
sub eax, esi
add ebx, eax
lea eax, [ebx + edx]
cmp eax, ecx
ja 0x511f76
push edx
push ebx
push ebp
call fcn.005282e0
add esp, 0xc
jmp 0x5120cf
mov esi, ecx
sub esi, ebx
push esi
push ebx
push ebp
call fcn.005282e0
mov eax, dword [esp + 0x40]
add ebp, esi
mov ebx, dword [esp + 0x48]
add esp, 0xc
sub eax, esi
mov dword [esp + 0x58], eax
mov esi, eax
jmp 0x511fa0
mov esi, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
push 0x10
pop edx
cmp ecx, edx
jb 0x511fe4
lea eax, [esi + ebp]
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp esi, edx
jle 0x5120cf
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 0x511fc5
jmp 0x5120cf
cmp ecx, 8
jae 0x512017
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 + 0x5bd3a0]
mov byte [ebp + 3], al
mov edx, ebx
sub ebx, dword [ecx*4 + 0x5bd3c0]
lea eax, [ebp + 4]
push 4
jmp 0x51201d
mov eax, ebp
mov edx, ebx
push 8
pop ecx
push ecx
push edx
push eax
call fcn.005282e0
add esp, 0xc
cmp esi, 8
jbe 0x5120cf
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 + 0x58], ecx
cmp eax, edx
jge 0x512069
sub ebx, ebp
mov esi, ecx
push 8
lea eax, [ebx + ebp]
push eax
push ebp
call fcn.005282e0
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x512051
jmp 0x5120cf
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp esi, edx
jle 0x5120cf
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 0x51207a
jmp 0x5120cf
mov ecx, dword [esp + 0x1c]
push dword [esp + 0x5c]
lea eax, [esp + 0x44]
push dword [esp + 0x64]
push dword [esp + 0x44]
push esi
push eax
sub esp, 0xc
lea esi, [esp + 0x50]
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.0051385b
mov edi, eax
add esp, 0x28
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
cmp edi, 0xffffff88
ja 0x512c37
mov esi, dword [esp + 0x134]
add dword [esp + 0x1c], 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 0x512133
cmp ebx, 0x20
ja 0x512133
cmp ebp, dword [esp + 0xf0]
jb 0x512299
lea eax, [esp + 0xe0]
push eax
call fcn.0050a7f9
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 0x512b72
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 + 0x24], ebx
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0xf8]
mov esi, dword [ebx + edi*8 + 4]
mov cl, byte [ebx + edi*8 + 2]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], esi
mov esi, dword [edx + eax*8 + 4]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x108]
mov byte [esp + 0x19], 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 + 0x1b], bl
mov ebx, dword [esp + 0xf8]
movzx esi, word [ebx + edi*8]
mov dword [esp + 0xa8], esi
mov esi, dword [esp + 0x108]
movzx ebx, word [esi + ecx*8]
movzx ecx, byte [esi + ecx*8 + 3]
mov dword [esp + 0xb0], 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 + 0x6c], eax
mov al, byte [esp + 0x1b]
mov dword [esp + 0xac], ecx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0xa4], edi
cmp al, 1
jbe 0x512478
cmp dword [esp + 0x138], 0
je 0x512378
cmp al, 0x19
jb 0x512378
mov edx, dword [esp + 0x14]
mov ecx, edx
mov ebx, dword [esp + 0x10]
and ecx, 0x1f
movzx eax, al
mov edi, ebx
shl edi, cl
sub eax, 5
mov ecx, eax
add edx, eax
neg ecx
and ecx, 0x1f
shr edi, cl
shl edi, 5
add edi, dword [esp + 0x20]
cmp edx, 0x20
ja 0x512356
cmp ebp, dword [esp + 0xf0]
jb 0x5122f3
mov eax, edx
and edx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], edx
push 4
lea eax, [esp + 0x5c]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0x64]
jmp 0x51233a
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x512133
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x5122b9
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 0x51213a
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x512356
mov esi, edx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, ecx
jae 0x51230f
mov esi, ebp
sub esi, ecx
mov eax, esi
sub ebp, esi
shl eax, 3
sub edx, eax
mov dword [esp + 0xe8], ebp
push 4
lea eax, [esp + 0x78]
mov dword [esp + 0xe8], edx
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0x80]
mov edx, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov dword [esp + 0xe0], ebx
mov dword [esp + 0x10], ebx
mov esi, dword [esp + 0x10]
mov ecx, edx
and ecx, 0x1f
mov eax, ebx
shl eax, cl
add edx, 5
shr eax, 0x1b
add edi, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], edi
jmp 0x512453
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 + 0x20]
mov dword [esp + 0x20], edi
cmp ebx, 0x20
ja 0x512453
cmp ebp, dword [esp + 0xf0]
jb 0x5123ed
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.005282e0
mov edx, dword [esp + 0x70]
mov esi, edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0xec], edx
jmp 0x51243e
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x512453
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x512409
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.005282e0
mov eax, dword [esp + 0x74]
mov esi, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0xec], eax
mov ecx, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x110]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x512514
mov ecx, dword [esp + 0x2c]
xor edx, edx
mov esi, dword [esp + 0x10]
test ecx, ecx
sete dl
test al, al
jne 0x5124ad
mov edi, dword [esp + edx*4 + 0x10c]
neg ecx
sbb eax, eax
mov ecx, dword [esp + 0x14]
and eax, 4
mov eax, dword [esp + eax + 0x10c]
mov dword [esp + 0x110], eax
jmp 0x512510
mov ecx, dword [esp + 0x14]
mov eax, esi
mov ebx, dword [esp + 0x10c]
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x14]
shr eax, 0x1f
inc ecx
add edx, eax
mov dword [esp + 0x14], ecx
add edx, dword [esp + 0x20]
lea edi, [ebx - 1]
mov dword [esp + 0xe4], ecx
cmp edx, 3
je 0x5124e7
mov edi, dword [esp + edx*4 + 0x10c]
xor eax, eax
test edi, edi
sete al
add edi, eax
mov eax, dword [esp + 0x114]
cmp edx, 1
cmovne eax, dword [esp + 0x110]
mov dword [esp + 0x114], eax
mov dword [esp + 0x110], ebx
mov dword [esp + 0x20], edi
mov al, byte [esp + 0x1a]
mov dword [esp + 0x10c], edi
mov dword [esp + 0x38], edi
movzx edx, al
test al, al
je 0x512552
mov ebx, dword [esp + 0x24]
and ecx, 0x1f
mov eax, esi
shl eax, cl
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, dword [esp + 0x14]
add ecx, edx
add ebx, eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x34], ebx
mov bl, byte [esp + 0x19]
movzx edi, bl
lea eax, [edi + edx]
cmp eax, 0x14
jb 0x51260d
cmp ecx, 0x20
ja 0x51260d
cmp ebp, dword [esp + 0xf0]
jb 0x5125c9
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0x74]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282e0
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0xf0]
add esp, 0xc
mov ebp, dword [esp + 0xe8]
mov edx, dword [esp + 0xec]
mov dword [esp + 0x10], eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0x14], ecx
jmp 0x512618
mov edx, dword [esp + 0xec]
cmp ebp, edx
je 0x512614
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x5125e5
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 + 0x58]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282e0
mov eax, dword [esp + 0x5c]
jmp 0x5125a0
mov edx, dword [esp + 0xec]
mov eax, dword [esp + 0x10]
test bl, bl
je 0x51263e
mov ebx, dword [esp + 0x2c]
and ecx, 0x1f
shl eax, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, dword [esp + 0x14]
add ecx, edi
add ebx, eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
cmp ecx, 0x20
ja 0x5126dc
cmp ebp, dword [esp + 0xf0]
jb 0x512699
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0xa0]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0xa8]
mov ebp, dword [esp + 0xf4]
add esp, 0xc
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe0], ebx
jmp 0x5126e0
cmp ebp, edx
je 0x5126dc
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x5126ae
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 + 0xa8]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282e0
mov ebx, dword [esp + 0xac]
jmp 0x51267f
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0xa4]
mov edx, ebx
lea esi, [ecx + eax]
mov ecx, esi
mov dword [esp + 0xe4], esi
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bd4e0]
mov eax, dword [esp + 0xa8]
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0xac]
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 + 0x5bd4e0]
mov eax, dword [esp + 0xb0]
movzx eax, ax
add edx, eax
mov dword [esp + 0x104], edx
cmp edi, 0x20
ja 0x5127e4
cmp ebp, dword [esp + 0xf0]
jb 0x512789
mov eax, edi
and edi, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], edi
push 4
lea eax, [esp + 0xb8]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0xc0]
jmp 0x5127d3
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
je 0x5127e4
mov edx, edi
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x5127a5
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 + 0xbc]
mov dword [esp + 0xe8], edi
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0xc4]
mov edi, dword [esp + 0xf0]
add esp, 0xc
mov dword [esp + 0xe0], ebx
mov eax, dword [esp + 0x6c]
lea esi, [esp + 0x30]
add edi, eax
mov edx, dword [esp + 0x24]
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 + 0x5bd4e0]
mov eax, dword [esp + 0x54]
movsd dword es:[edi], dword [esi]
movzx eax, ax
add ebx, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xfc], ebx
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x1c]
lea edi, [eax + edx]
lea ebp, [eax + esi]
add eax, dword [esp + 0x28]
mov ebx, ebp
mov dword [esp + 0x6c], eax
sub ebx, dword [esp + 0x20]
cmp eax, dword [esp + 0x48]
ja 0x512a42
mov eax, dword [esp + 0x44]
lea ecx, [edi + esi]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x512a42
mov ecx, dword [esp + 0x44]
lea eax, [edi + 0x20]
sub ecx, esi
cmp ecx, eax
jb 0x512a42
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
movups xmm0, xmmword [eax]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jbe 0x5128c6
mov edx, dword [esp + 0x28]
lea eax, [ecx - 0x10]
lea ecx, [esi + 0x10]
lea esi, [ecx + eax]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x1c]
movups xmm0, xmmword [edx + 0x10]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x5128c2
mov eax, dword [esp + 0x54]
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 0x5128aa
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x28], eax
mov dword [esp + 0x40], eax
mov eax, ebp
sub eax, dword [esp + 0x3c]
cmp ecx, eax
jbe 0x512939
mov eax, ebp
sub eax, dword [esp + 0x60]
cmp ecx, eax
ja 0x510ef2
mov ecx, dword [esp + 0x5c]
mov eax, ecx
sub eax, dword [esp + 0x3c]
add ebx, eax
lea eax, [edx + ebx]
cmp eax, ecx
ja 0x512911
push edx
push ebx
push ebp
call fcn.005282e0
add esp, 0xc
jmp 0x512a7e
mov esi, ecx
sub esi, ebx
push esi
push ebx
push ebp
call fcn.005282e0
mov eax, dword [esp + 0x30]
add ebp, esi
mov ebx, dword [esp + 0x48]
add esp, 0xc
sub eax, esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0xd8], eax
jmp 0x512940
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
push 0x10
pop edx
mov dword [esp + 0x24], eax
cmp ecx, edx
jb 0x512988
lea ecx, [eax + ebp]
movups xmm0, xmmword [ebx]
movups xmmword [ebp], xmm0
cmp eax, edx
jle 0x512a7e
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, ecx
jb 0x512969
jmp 0x512a7e
cmp ecx, 8
jae 0x5129bb
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 + 0x5bd3a0]
mov byte [ebp + 3], al
mov edx, ebx
sub ebx, dword [ecx*4 + 0x5bd3c0]
lea eax, [ebp + 4]
push 4
jmp 0x5129c1
mov eax, ebp
mov edx, ebx
push 8
pop ecx
push ecx
push edx
push eax
call fcn.005282e0
mov eax, dword [esp + 0x30]
add esp, 0xc
cmp eax, 8
jbe 0x512a7e
add ebp, 8
lea ecx, [eax - 8]
add ebx, 8
mov eax, ebp
sub eax, ebx
lea edx, [ecx + ebp]
mov dword [esp + 0x54], edx
cmp eax, 0x10
jge 0x512a13
sub ebx, ebp
mov esi, edx
push 8
lea eax, [ebx + ebp]
push eax
push ebp
call fcn.005282e0
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x5129f7
mov esi, dword [esp + 0x1c]
jmp 0x512a7e
movups xmm0, xmmword [ebx]
push 0x10
pop eax
movups xmmword [ebp], xmm0
cmp ecx, eax
jle 0x512a7e
add ebp, 0x10
add ebx, eax
movups xmm0, xmmword [ebx]
add ebx, eax
movups xmmword [ebp], xmm0
add ebp, eax
movups xmm0, xmmword [ebx]
add ebx, eax
movups xmmword [ebp], xmm0
add ebp, eax
cmp ebp, edx
jb 0x512a26
jmp 0x512a7e
push dword [esp + 0x5c]
lea eax, [esp + 0x44]
push dword [esp + 0x64]
lea esi, [esp + 0x38]
push dword [esp + 0x44]
push dword [esp + 0x54]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x64]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x40]
push esi
call fcn.0051385b
mov edi, eax
add esp, 0x28
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
cmp edi, 0xffffff88
ja 0x512c37
mov ebp, dword [esp + 0xe8]
add esi, edi
sub dword [esp + 0x134], 1
mov dword [esp + 0x1c], esi
je 0x512b69
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x14], ecx
cmp ecx, 0x20
jbe 0x512ac2
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x10], eax
jmp 0x512146
cmp ebp, dword [esp + 0xf0]
jb 0x512afc
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xe4], ecx
push 4
lea eax, [esp + 0xc4]
mov dword [esp + 0xec], ebp
push ebp
push eax
call fcn.005282e0
mov eax, dword [esp + 0xcc]
jmp 0x512b44
mov edx, dword [esp + 0xec]
cmp ebp, edx
je 0x512ab2
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x512b18
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 + 0xcc]
push eax
mov dword [esp + 0xf0], ecx
call fcn.005282e0
mov eax, dword [esp + 0xd0]
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 0x512146
mov ebx, dword [esp + 0xe4]
jmp 0x512b78
jne 0x510ef2
cmp ebx, 0x20
ja 0x512bb1
cmp ebp, dword [esp + 0xf0]
jb 0x512b99
mov eax, ebx
shr eax, 3
sub ebp, eax
and ebx, 7
lea eax, [esp + 0x54]
jmp 0x512c6e
mov ecx, dword [esp + 0xec]
cmp ebp, ecx
jne 0x512c52
cmp ebx, 0x20
jb 0x510ef2
mov edi, dword [esp + 0xc8]
lea esi, [esp + 0x10c]
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
mov ebp, dword [esp + 0x48]
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 0x512c11
mov eax, edi
sub ebp, edx
sub eax, ebx
cmp ebp, eax
ja 0x511e2f
test ebx, ebx
je 0x512bfe
push ebp
push edx
push ebx
call fcn.005282e0
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 0x511e2f
test ebx, ebx
je 0x512c2e
push ebp
push edx
push ebx
call fcn.005282e0
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.00527959
add esp, 0x10c
ret
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x512c63
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.005282e0
add esp, 0xc
jmp 0x510ef2