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

Disassembly:
sub esp, 0x174
mov eax, dword [0x5dcef0]
xor eax, esp
mov dword [esp + 0x170], eax
mov ecx, dword [esp + 0x17c]
mov edx, dword [esp + 0x184]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x184]
push edi
mov edi, dword [esp + 0x19c]
mov dword [esp + 0x4c], esi
cmp dword [esi + 0x7608], 1
mov dword [esp + 0xbc], ecx
jne 0x50ee4a
mov eax, dword [esi + 0x7600]
jmp 0x50ee53
mov eax, dword [esp + 0x190]
add eax, ecx
mov ebp, dword [esi + 0x7604]
mov ebx, ecx
mov ecx, dword [esi + 0x7578]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x74b0]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x74b4]
mov dword [esp + 0x44], eax
mov eax, dword [esi + 0x74b8]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x38], ebp
mov dword [esp + 0x40], eax
test edi, edi
je 0x510daa
push 8
pop eax
push dword [esp + 0x198]
cmp edi, eax
mov dword [esi + 0x750c], 1
push edx
cmovl eax, edi
add esi, 0x682c
lea edi, [esp + 0x11c]
mov dword [esp + 0x44], eax
lea eax, [esp + 0xf0]
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.0050a6d6
add esp, 0xc
cmp eax, 0xffffff88
jbe 0x50eee6
push 0xffffffffffffffec
pop ebx
jmp 0x510e08
mov ebx, dword [esp + 0x4c]
lea eax, [esp + 0xe8]
push dword [ebx]
push eax
lea eax, [esp + 0x104]
push eax
call fcn.00513b0e
push dword [ebx + 8]
lea eax, [esp + 0xf8]
push eax
lea eax, [esp + 0x118]
push eax
call fcn.00513b0e
push dword [ebx + 4]
lea eax, [esp + 0x104]
push eax
lea eax, [esp + 0x12c]
push eax
call fcn.00513b0e
mov ebp, dword [esp + 0x114]
lea eax, [esp + 0x144]
mov ebx, dword [esp + 0x110]
add esp, 0x24
mov dword [esp + 0x60], eax
xor edi, edi
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebx
mov dword [esp + 0x48], edi
cmp ebx, 0x20
jbe 0x50ef6f
push 3
pop esi
jmp 0x50f023
cmp ebp, dword [esp + 0xf8]
jb 0x50efae
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xec], ebx
push 4
lea eax, [esp + 0x88]
mov dword [esp + 0xf4], ebp
push ebp
push eax
call fcn.005282e0
mov eax, dword [esp + 0x90]
add esp, 0xc
xor esi, esi
jmp 0x50f006
mov ecx, dword [esp + 0xf4]
cmp ebp, ecx
jne 0x50efc3
cmp ebx, 0x20
sbb esi, esi
add esi, 2
jmp 0x50f02a
mov edx, ebx
mov eax, ebp
shr edx, 3
xor esi, esi
sub eax, edx
cmp eax, ecx
jae 0x50efd7
mov edx, ebp
sub edx, ecx
inc esi
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xf8], ebp
add ebx, eax
lea eax, [esp + 0xc8]
push eax
mov dword [esp + 0xf8], ebx
call fcn.005282e0
mov eax, dword [esp + 0xcc]
add esp, 0xc
mov ebx, dword [esp + 0xec]
mov ebp, dword [esp + 0xf0]
mov dword [esp + 0x14], ebx
mov dword [esp + 0xe8], eax
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0xf4]
cmp edi, dword [esp + 0x3c]
jge 0x50f66b
cmp esi, 2
ja 0x50eede
mov ecx, dword [esp + 0x110]
mov esi, dword [esp + 0x10c]
mov edi, dword [esp + 0xfc]
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
mov ebx, dword [ecx + esi*8 + 4]
mov esi, ebx
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x100]
mov dword [esp + 0x68], esi
mov esi, dword [ebx + edi*8 + 4]
mov cl, byte [ebx + edi*8 + 2]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x64], esi
mov esi, dword [eax + edx*8 + 4]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x10c]
mov byte [esp + 0x36], cl
mov ecx, dword [esp + 0x110]
mov bl, byte [ecx + esi*8 + 2]
mov byte [esp + 0x35], bl
mov bl, byte [eax + edx*8 + 2]
mov byte [esp + 0x37], bl
mov ebx, dword [esp + 0x100]
movzx esi, word [ebx + edi*8]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x10c]
movzx ebx, word [ecx + esi*8]
movzx ecx, byte [ecx + esi*8 + 3]
mov dword [esp + 0x7c], ebx
movzx ebx, word [eax + edx*8]
movzx eax, byte [eax + edx*8 + 3]
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0x100]
mov dword [esp + 0x80], eax
mov al, byte [esp + 0x37]
mov dword [esp + 0x78], ecx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0x58], edi
cmp al, 1
jbe 0x50f2bd
cmp dword [esp + 0x1a0], 0
je 0x50f1db
cmp al, 0x19
jb 0x50f1db
movzx eax, al
sub eax, 5
push eax
lea eax, [esp + 0xec]
push eax
call fcn.0050e0de
mov esi, dword [esp + 0xf4]
mov edi, eax
shl edi, 5
add edi, dword [esp + 0x20]
pop ecx
pop ecx
cmp esi, 0x20
ja 0x50f1ad
mov ecx, dword [esp + 0xf0]
cmp ecx, dword [esp + 0xf8]
jb 0x50f166
lea eax, [esp + 0xe8]
push eax
call fcn.0050a7f9
jmp 0x50f1ac
cmp ecx, dword [esp + 0xf4]
je 0x50f1ad
mov edx, esi
mov eax, ecx
shr edx, 3
sub eax, edx
cmp eax, dword [esp + 0xf4]
jae 0x50f18a
mov edx, ecx
sub edx, dword [esp + 0xf4]
imul eax, edx, 0xfffffff8
sub ecx, edx
push ecx
mov dword [esp + 0xf4], ecx
add esi, eax
mov dword [esp + 0xf0], esi
call fcn.0050707e
mov dword [esp + 0xec], eax
pop ecx
lea eax, [esp + 0xe8]
push 5
push eax
call fcn.0050e0de
pop ecx
add edi, eax
pop ecx
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0xe8]
mov dword [esp + 0x10], ecx
jmp 0x50f28d
movzx eax, al
push eax
lea eax, [esp + 0xec]
push eax
call fcn.0050e0de
pop ecx
pop ecx
mov ecx, dword [esp + 0xec]
mov edi, eax
add edi, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
cmp ecx, 0x20
ja 0x50f282
mov ebp, dword [esp + 0xf0]
cmp ebp, dword [esp + 0xf8]
jb 0x50f223
lea eax, [esp + 0xe8]
push eax
call fcn.0050a7f9
jmp 0x50f1bf
mov esi, dword [esp + 0xf4]
cmp ebp, esi
je 0x50f275
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, esi
jae 0x50f23f
mov edx, ebp
sub edx, esi
imul eax, edx, 0xfffffff8
sub ebp, edx
push ebp
mov dword [esp + 0xf4], ebp
add ecx, eax
mov dword [esp + 0xf0], ecx
call fcn.0050707e
pop ecx
mov ecx, dword [esp + 0xec]
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xe8], edx
mov dword [esp + 0x14], ecx
jmp 0x50f28d
mov esi, dword [esp + 0xe8]
mov dword [esp + 0x10], esi
jmp 0x50f294
mov esi, dword [esp + 0xe8]
mov dword [esp + 0x10], esi
mov ebp, dword [esp + 0xf0]
mov eax, dword [esp + 0x118]
mov dword [esp + 0x11c], eax
mov eax, dword [esp + 0x114]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0x10]
jmp 0x50f357
mov ecx, dword [esp + 0x5c]
xor ebx, ebx
test ecx, ecx
sete bl
test al, al
jne 0x50f2e3
mov edi, dword [esp + ebx*4 + 0x114]
neg ecx
sbb eax, eax
and eax, 4
mov eax, dword [esp + eax + 0x114]
jmp 0x50f2a9
lea eax, [esp + 0xe8]
push 1
push eax
call fcn.0050e0de
mov edx, dword [esp + 0x11c]
pop ecx
pop ecx
lea ecx, [ebx + eax]
add ecx, dword [esp + 0x18]
lea edi, [edx - 1]
cmp ecx, 3
je 0x50f311
mov edi, dword [esp + ecx*4 + 0x114]
mov ebp, dword [esp + 0xf0]
xor eax, eax
test edi, edi
sete al
add edi, eax
mov eax, dword [esp + 0x11c]
cmp ecx, 1
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x14], ecx
cmovne eax, dword [esp + 0x118]
mov dword [esp + 0x11c], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x118], edx
mov dword [esp + 0x10], eax
mov dl, byte [esp + 0x35]
test dl, dl
mov dword [esp + 0x114], edi
mov dword [esp + 0x6c], edi
movzx edx, dl
je 0x50f396
mov ebx, dword [esp + 0x54]
and ecx, 0x1f
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 + 0xec], ecx
mov dword [esp + 0x68], ebx
mov bl, byte [esp + 0x36]
movzx edi, bl
lea eax, [edx + edi]
cmp eax, 0x14
jb 0x50f445
cmp ecx, 0x20
ja 0x50f445
cmp ebp, dword [esp + 0xf8]
jb 0x50f3e8
lea eax, [esp + 0xe8]
push eax
call fcn.0050a7f9
mov eax, dword [esp + 0xec]
mov ebp, dword [esp + 0xf4]
pop ecx
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
jmp 0x50f449
mov edx, dword [esp + 0xf4]
cmp ebp, edx
je 0x50f43f
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x50f404
mov esi, ebp
sub esi, edx
imul eax, esi, 0xfffffff8
sub ebp, esi
push ebp
mov dword [esp + 0xf4], ebp
add ecx, eax
mov dword [esp + 0xf0], ecx
call fcn.0050707e
mov ebp, dword [esp + 0xf4]
pop ecx
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x10], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0x14], ecx
jmp 0x50f449
mov eax, dword [esp + 0x10]
jmp 0x50f450
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xf4]
test bl, bl
je 0x50f472
mov ebx, dword [esp + 0x5c]
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 + 0x64], ebx
cmp ecx, 0x20
ja 0x50f514
cmp ebp, dword [esp + 0xf8]
jb 0x50f4d1
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xec], ecx
push 4
lea eax, [esp + 0xbc]
mov dword [esp + 0xf4], ebp
push ebp
push eax
call fcn.005282e0
mov edi, dword [esp + 0xc4]
mov ebp, dword [esp + 0xfc]
add esp, 0xc
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x10], edi
mov dword [esp + 0xe8], edi
jmp 0x50f518
cmp ebp, edx
je 0x50f514
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x50f4e6
mov esi, ebp
sub esi, edx
imul eax, esi, 0xfffffff8
sub ebp, esi
push 4
push ebp
mov dword [esp + 0xf8], ebp
add ecx, eax
lea eax, [esp + 0xbc]
push eax
mov dword [esp + 0xf8], ecx
call fcn.005282e0
mov edi, dword [esp + 0xc0]
jmp 0x50f4b3
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x58]
mov edx, edi
lea esi, [eax + ecx]
mov ecx, esi
mov dword [esp + 0xec], esi
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bd4e0]
mov eax, dword [esp + 0x74]
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0xfc], 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 + 0x7c]
movzx eax, ax
add edx, eax
mov dword [esp + 0x10c], edx
cmp ebx, 0x20
ja 0x50f61b
cmp ebp, dword [esp + 0xf8]
jb 0x50f5b5
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xec], ebx
push 4
lea eax, [esp + 0x8c]
mov dword [esp + 0xf4], ebp
push ebp
push eax
call fcn.005282e0
mov edi, dword [esp + 0x94]
jmp 0x50f5ff
mov esi, dword [esp + 0xf4]
cmp ebp, esi
je 0x50f61b
mov ecx, ebx
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, esi
jae 0x50f5d1
mov ecx, ebp
sub ecx, esi
mov eax, ecx
sub ebp, ecx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xf0], ebp
push 4
lea eax, [esp + 0x90]
mov dword [esp + 0xf0], ebx
push ebp
push eax
call fcn.005282e0
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0xf8]
add esp, 0xc
mov ebp, dword [esp + 0xf0]
mov dword [esp + 0xe8], edi
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x80]
lea esi, [esp + 0x64]
add ebx, eax
mov edx, edi
mov ecx, ebx
mov dword [esp + 0xec], ebx
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x60]
mov edi, ecx
and edx, dword [eax*4 + 0x5bd4e0]
mov eax, dword [esp + 0x70]
movzx eax, ax
movsd dword es:[edi], dword [esi]
add edx, eax
mov dword [esp + 0x104], edx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x48]
inc edi
add ecx, 0xc
mov dword [esp + 0x60], ecx
jmp 0x50ef5a
cmp ebx, 0x20
jbe 0x50f678
push 3
pop esi
jmp 0x50f71f
cmp ebp, dword [esp + 0xf8]
jb 0x50f6b1
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xec], ebx
push 4
lea eax, [esp + 0x74]
mov dword [esp + 0xf4], ebp
push ebp
push eax
call fcn.005282e0
mov ecx, dword [esp + 0x7c]
add esp, 0xc
xor esi, esi
jmp 0x50f702
cmp ebp, ecx
jne 0x50f6bf
cmp ebx, 0x20
sbb esi, esi
add esi, 2
jmp 0x50f71f
mov edx, ebx
mov eax, ebp
shr edx, 3
xor esi, esi
sub eax, edx
cmp eax, ecx
jae 0x50f6d3
mov edx, ebp
sub edx, ecx
inc esi
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xf8], ebp
add ebx, eax
lea eax, [esp + 0x88]
push eax
mov dword [esp + 0xf8], ebx
call fcn.005282e0
mov ecx, dword [esp + 0x8c]
add esp, 0xc
mov eax, dword [esp + 0xec]
mov ebp, dword [esp + 0xf0]
mov dword [esp + 0x14], eax
mov dword [esp + 0xe8], ecx
mov dword [esp + 0x10], ecx
cmp edi, dword [esp + 0x19c]
jge 0x5105b6
cmp esi, 2
ja 0x50eede
mov ecx, dword [esp + 0x110]
mov esi, dword [esp + 0x10c]
mov edi, dword [esp + 0xfc]
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
mov ebx, dword [ecx + esi*8 + 4]
mov esi, ebx
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x100]
mov dword [esp + 0x68], esi
mov esi, dword [ebx + edi*8 + 4]
mov cl, byte [ebx + edi*8 + 2]
mov dword [esp + 0x58], esi
mov dword [esp + 0x64], esi
mov esi, dword [eax + edx*8 + 4]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x10c]
mov byte [esp + 0x37], cl
mov ecx, dword [esp + 0x110]
mov bl, byte [ecx + esi*8 + 2]
mov byte [esp + 0x35], bl
mov bl, byte [eax + edx*8 + 2]
mov byte [esp + 0x36], bl
mov ebx, dword [esp + 0x100]
movzx esi, word [ebx + edi*8]
mov dword [esp + 0xa0], esi
mov esi, dword [esp + 0x10c]
movzx ebx, word [ecx + esi*8]
movzx ecx, byte [ecx + esi*8 + 3]
mov dword [esp + 0xa8], ebx
movzx ebx, word [eax + edx*8]
movzx eax, byte [eax + edx*8 + 3]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x100]
mov dword [esp + 0x50], eax
mov al, byte [esp + 0x36]
mov dword [esp + 0xa4], ecx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0x9c], edi
cmp al, 1
jbe 0x50f9f1
cmp dword [esp + 0x1a0], 0
je 0x50f90a
cmp al, 0x19
jb 0x50f90a
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 + 0x18]
cmp edx, 0x20
ja 0x50f8ec
cmp ebp, dword [esp + 0xf8]
jb 0x50f889
mov eax, edx
and edx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xec], edx
push 4
lea eax, [esp + 0x80]
mov dword [esp + 0xf4], ebp
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0x88]
jmp 0x50f8d0
mov esi, dword [esp + 0xf4]
cmp ebp, esi
je 0x50f8ec
mov ecx, edx
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, esi
jae 0x50f8a5
mov ecx, ebp
sub ecx, esi
mov eax, ecx
sub ebp, ecx
shl eax, 3
sub edx, eax
mov dword [esp + 0xf0], ebp
push 4
lea eax, [esp + 0x7c]
mov dword [esp + 0xf0], edx
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0x84]
mov edx, dword [esp + 0xf8]
add esp, 0xc
mov ebp, dword [esp + 0xf0]
mov dword [esp + 0xe8], 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
mov dword [esp + 0x14], edx
add edi, eax
jmp 0x50f9e1
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 + 0x18]
cmp ebx, 0x20
ja 0x50f9e1
cmp ebp, dword [esp + 0xf8]
jb 0x50f97b
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xec], ebx
push 4
lea eax, [esp + 0x64]
mov dword [esp + 0xf4], ebp
push ebp
push eax
call fcn.005282e0
mov ecx, dword [esp + 0x6c]
mov esi, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xf4], ecx
jmp 0x50f9cc
mov ecx, dword [esp + 0xf4]
cmp ebp, ecx
je 0x50f9e1
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x50f997
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xf0], ebp
push 4
lea eax, [esp + 0x60]
mov dword [esp + 0xf0], ebx
push ebp
push eax
call fcn.005282e0
mov eax, dword [esp + 0x68]
mov esi, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0xf8]
add esp, 0xc
mov ebp, dword [esp + 0xf0]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x118]
mov ecx, dword [esp + 0x14]
jmp 0x50fa74
mov ecx, dword [esp + 0x58]
xor edx, edx
mov esi, dword [esp + 0x10]
test ecx, ecx
sete dl
test al, al
jne 0x50fa1f
mov edi, dword [esp + edx*4 + 0x114]
neg ecx
sbb eax, eax
mov ecx, dword [esp + 0x14]
and eax, 4
mov eax, dword [esp + eax + 0x114]
jmp 0x50fa82
mov ecx, dword [esp + 0x14]
mov eax, esi
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 + 0x18]
mov dword [esp + 0xec], ecx
cmp edx, 3
jne 0x50fa52
mov edi, dword [esp + 0x114]
dec edi
jmp 0x50fa59
mov edi, dword [esp + edx*4 + 0x114]
xor eax, eax
test edi, edi
sete al
add edi, eax
mov eax, dword [esp + 0x11c]
cmp edx, 1
cmovne eax, dword [esp + 0x118]
mov dword [esp + 0x11c], eax
mov eax, dword [esp + 0x114]
mov dword [esp + 0x118], eax
mov al, byte [esp + 0x35]
mov dword [esp + 0x114], edi
mov dword [esp + 0x6c], edi
movzx edx, al
test al, al
je 0x50fac3
mov ebx, dword [esp + 0x54]
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 + 0x68], ebx
mov bl, byte [esp + 0x37]
movzx edi, bl
lea eax, [edx + edi]
cmp eax, 0x14
jb 0x50fb86
cmp ecx, 0x20
ja 0x50fb86
cmp ebp, dword [esp + 0xf8]
jb 0x50fb36
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xec], ecx
push 4
lea eax, [esp + 0x78]
mov dword [esp + 0xf4], ebp
push ebp
push eax
call fcn.005282e0
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0xf8]
add esp, 0xc
mov ebp, dword [esp + 0xf0]
mov dword [esp + 0x10], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0x14], ecx
jmp 0x50fb8a
mov edx, dword [esp + 0xf4]
cmp ebp, edx
je 0x50fb80
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x50fb52
mov esi, ebp
sub esi, edx
imul eax, esi, 0xfffffff8
sub ebp, esi
push 4
push ebp
mov dword [esp + 0xf8], ebp
add ecx, eax
lea eax, [esp + 0x98]
push eax
mov dword [esp + 0xf8], ecx
call fcn.005282e0
mov eax, dword [esp + 0x9c]
jmp 0x50fb14
mov eax, dword [esp + 0x10]
jmp 0x50fb91
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xf4]
test bl, bl
je 0x50fbb3
mov ebx, dword [esp + 0x58]
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 + 0x64], ebx
cmp ecx, 0x20
ja 0x50fc51
cmp ebp, dword [esp + 0xf8]
jb 0x50fc0e
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xec], ecx
push 4
lea eax, [esp + 0x98]
mov dword [esp + 0xf4], ebp
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0xa0]
mov ebp, dword [esp + 0xfc]
add esp, 0xc
mov ecx, dword [esp + 0xec]
mov dword [esp + 0xe8], ebx
jmp 0x50fc55
cmp ebp, edx
je 0x50fc51
mov esi, ecx
mov eax, ebp
shr esi, 3
sub eax, esi
cmp eax, edx
jae 0x50fc23
mov esi, ebp
sub esi, edx
imul eax, esi, 0xfffffff8
sub ebp, esi
push 4
push ebp
mov dword [esp + 0xf8], ebp
add ecx, eax
lea eax, [esp + 0xa0]
push eax
mov dword [esp + 0xf8], ecx
call fcn.005282e0
mov ebx, dword [esp + 0xa4]
jmp 0x50fbf4
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x9c]
mov edx, ebx
lea esi, [eax + ecx]
mov ecx, esi
mov dword [esp + 0xec], esi
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bd4e0]
mov eax, dword [esp + 0xa0]
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xfc], edx
mov edx, ebx
lea ecx, [eax + esi]
neg ecx
lea edi, [eax + esi]
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bd4e0]
mov eax, dword [esp + 0xa8]
movzx eax, ax
add edx, eax
mov dword [esp + 0x10c], edx
cmp edi, 0x20
ja 0x50fd59
cmp ebp, dword [esp + 0xf8]
jb 0x50fcfe
mov eax, edi
and edi, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xec], edi
push 4
lea eax, [esp + 0xb0]
mov dword [esp + 0xf4], ebp
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0xb8]
jmp 0x50fd48
mov ecx, dword [esp + 0xf4]
cmp ebp, ecx
je 0x50fd59
mov edx, edi
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x50fd1a
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub edi, eax
mov dword [esp + 0xf0], ebp
push 4
lea eax, [esp + 0xb4]
mov dword [esp + 0xf0], edi
push ebp
push eax
call fcn.005282e0
mov ebx, dword [esp + 0xbc]
mov edi, dword [esp + 0xf8]
add esp, 0xc
mov dword [esp + 0xe8], ebx
mov eax, dword [esp + 0x50]
add edi, eax
mov edx, dword [esp + 0x4c]
mov dword [esp + 0xec], edi
neg edi
and edi, 0x1f
mov ecx, edi
mov ebp, dword [edx + 0x7608]
shr ebx, cl
and ebx, dword [eax*4 + 0x5bd4e0]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
movzx eax, ax
add ebx, eax
mov dword [esp + 0x104], ebx
cmp ebp, 2
jne 0x510058
mov eax, dword [esp + 0x48]
lea ebx, [esp + 0x120]
mov esi, dword [edx + 0x7604]
and eax, 7
imul eax, eax, 0xc
add ebx, eax
mov dword [esp + 0x1c], ebx
mov edi, dword [ebx]
lea eax, [edi + ecx]
cmp eax, esi
jbe 0x510058
mov ebp, dword [esp + 0x20]
sub esi, ecx
je 0x50fdf6
mov eax, dword [esp + 0x2c]
sub eax, ebp
cmp esi, eax
ja 0x5105af
push esi
push ecx
push ebp
call fcn.00513d1a
mov edx, dword [esp + 0x58]
sub edi, esi
add esp, 0xc
mov dword [ebx], edi
add ebp, esi
mov dword [esp + 0x20], ebp
and dword [edx + 0x7608], 0
lea edi, [esp + 0xc4]
mov esi, ebx
lea eax, [edx + 0x1760c]
mov dword [esp + 0x38], eax
lea ecx, [edx + 0x760c]
mov dword [esp + 0x30], ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xc4]
mov esi, dword [esp + 0xc8]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xcc]
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x38]
ja 0x51004f
mov eax, dword [esp + 0x2c]
lea ecx, [ebx + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x51004f
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x51004f
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0xc4]
movups xmm0, xmmword [ecx + 0x760c]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x50fed7
add eax, 0xfffffff0
lea esi, [ecx + 0x761c]
lea ecx, [ebp + 0x10]
movups xmm0, xmmword [esi]
lea ebp, [ecx + eax]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x20]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x50fed0
mov eax, dword [esp + 0x1c]
add ecx, 0x10
add esi, 0x10
movups xmm0, xmmword [esi]
lea esi, [esi + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [esi - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x50feb8
mov esi, dword [esp + 0xc8]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x30], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x50ff4e
mov eax, edx
sub eax, dword [esp + 0x44]
cmp ecx, eax
ja 0x50eede
mov ecx, dword [esp + 0x40]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
jbe 0x5103e4
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282e0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xc8], esi
mov esi, dword [esp + 0xc8]
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x18], edx
mov dword [esp + 0xc8], esi
cmp ecx, 0x10
jb 0x50ff88
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x510554
add edx, ecx
add edi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
cmp edx, eax
jb 0x50ff6b
jmp 0x510554
cmp ecx, 8
jae 0x50ffcb
mov al, byte [edi]
mov esi, dword [ecx*4 + 0x5bd3c0]
mov byte [edx], al
mov al, byte [edi + 1]
mov byte [edx + 1], al
mov al, byte [edi + 2]
mov byte [edx + 2], al
mov al, byte [edi + 3]
add edi, dword [ecx*4 + 0x5bd3a0]
push 4
mov byte [edx + 3], al
lea eax, [edx + 4]
push edi
push eax
call fcn.005282e0
add esp, 0xc
sub edi, esi
mov esi, dword [esp + 0xc8]
jmp 0x50ffd4
push edi
push edx
call fcn.0050e5f7
pop ecx
pop ecx
cmp esi, 8
jbe 0x510554
lea ecx, [esi - 8]
add edi, 8
mov esi, dword [esp + 0x18]
add esi, 8
mov eax, esi
sub eax, edi
lea edx, [esi + ecx]
mov dword [esp + 0x1c], edx
cmp eax, 0x10
jge 0x51001a
sub edi, esi
mov ebp, edx
lea eax, [esi + edi]
push eax
push esi
call fcn.0050e5f7
add esi, 8
pop ecx
pop ecx
cmp esi, ebp
jb 0x50fffe
mov ebp, dword [esp + 0x20]
jmp 0x510554
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x510554
push 0x10
add esi, 0x10
add edi, 0x10
pop ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
cmp esi, edx
jb 0x510032
jmp 0x510554
mov esi, dword [esp + 0x1c]
jmp 0x510520
mov eax, dword [esp + 0x48]
lea edx, [esp + 0x120]
and eax, 7
imul eax, eax, 0xc
add edx, eax
cmp ebp, 2
mov ebp, dword [esp + 0x20]
mov esi, edx
mov dword [esp + 0x54], edx
jne 0x5102e9
mov eax, dword [edx]
lea edi, [esp + 0xd0]
movsd dword es:[edi], dword [esi]
add eax, 0xffffffe0
add eax, ecx
mov dword [esp + 0x58], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xd0]
mov esi, dword [esp + 0xd4]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xd8]
mov dword [esp + 0x50], eax
cmp eax, dword [esp + 0x38]
ja 0x5102b2
lea eax, [ebx + ebp]
cmp eax, dword [esp + 0x58]
ja 0x5102b2
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x5102b2
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0xd0]
movups xmm0, xmmword [ecx]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x510141
add eax, 0xfffffff0
lea esi, [ecx + 0x10]
lea ecx, [ebp + 0x10]
movups xmm0, xmmword [esi]
lea ebp, [ecx + eax]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x20]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x51013a
mov eax, dword [esp + 0x1c]
add ecx, 0x10
add esi, 0x10
movups xmm0, xmmword [esi]
lea esi, [esi + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [esi - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x510122
mov esi, dword [esp + 0xd4]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x5101bc
mov eax, edx
sub eax, dword [esp + 0x44]
cmp ecx, eax
ja 0x50eede
mov ecx, dword [esp + 0x40]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
jbe 0x5103e4
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282e0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xd4], esi
mov esi, dword [esp + 0xd4]
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x18], edx
mov dword [esp + 0xd4], esi
cmp ecx, 0x10
jb 0x5101f6
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x510554
add edx, ecx
add edi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
cmp edx, eax
jb 0x5101d9
jmp 0x510554
cmp ecx, 8
jae 0x510228
mov al, byte [edi]
mov byte [edx], al
mov al, byte [edi + 1]
mov byte [edx + 1], al
mov al, byte [edi + 2]
mov byte [edx + 2], al
mov al, byte [edi + 3]
add edi, dword [ecx*4 + 0x5bd3a0]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bd3c0]
add edx, 4
push 4
jmp 0x51022c
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282e0
add esp, 0xc
cmp esi, 8
jbe 0x510554
lea ecx, [esi - 8]
add edi, 8
mov esi, dword [esp + 0x18]
add esi, 8
mov eax, esi
sub eax, edi
lea edx, [esi + ecx]
mov dword [esp + 0x1c], edx
cmp eax, 0x10
jge 0x51027d
sub edi, esi
mov ebp, edx
push 8
lea eax, [edi + esi]
push eax
push esi
call fcn.005282e0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x510262
jmp 0x510011
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x510554
push 0x10
add esi, 0x10
add edi, 0x10
pop ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
cmp esi, edx
jb 0x510295
jmp 0x510554
push dword [esp + 0x40]
mov esi, dword [esp + 0x58]
lea eax, [esp + 0x34]
push dword [esp + 0x48]
push dword [esp + 0x2c]
push dword [esp + 0x44]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x78]
movsd dword es:[edi], dword [esi]
push dword [esp + 0x50]
push ebp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.00513940
add esp, 0x2c
jmp 0x51054a
lea edi, [esp + 0xdc]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xdc]
mov esi, dword [esp + 0xe0]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xe4]
mov dword [esp + 0x50], eax
cmp eax, dword [esp + 0x38]
ja 0x51051c
mov eax, dword [esp + 0x2c]
lea ecx, [ebx + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x51051c
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x51051c
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0xdc]
movups xmm0, xmmword [ecx]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x5103a6
add eax, 0xfffffff0
lea esi, [ecx + 0x10]
lea ecx, [ebp + 0x10]
movups xmm0, xmmword [esi]
lea ebp, [ecx + eax]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x20]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x51039f
mov eax, dword [esp + 0x1c]
add ecx, 0x10
add esi, 0x10
movups xmm0, xmmword [esi]
lea esi, [esi + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [esi - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x510387
mov esi, dword [esp + 0xe0]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x51042d
mov eax, edx
sub eax, dword [esp + 0x44]
cmp ecx, eax
ja 0x50eede
mov ecx, dword [esp + 0x40]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
ja 0x5103f4
push esi
push edi
push edx
call fcn.005282e0
add esp, 0xc
jmp 0x510554
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282e0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xe0], esi
mov esi, dword [esp + 0xe0]
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x18], edx
mov dword [esp + 0xe0], esi
cmp ecx, 0x10
jb 0x510467
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x510554
add edx, ecx
add edi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
cmp edx, eax
jb 0x51044a
jmp 0x510554
cmp ecx, 8
jae 0x510499
mov al, byte [edi]
mov byte [edx], al
mov al, byte [edi + 1]
mov byte [edx + 1], al
mov al, byte [edi + 2]
mov byte [edx + 2], al
mov al, byte [edi + 3]
add edi, dword [ecx*4 + 0x5bd3a0]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bd3c0]
add edx, 4
push 4
jmp 0x51049d
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282e0
add esp, 0xc
cmp esi, 8
jbe 0x510554
lea ecx, [esi - 8]
add edi, 8
mov esi, dword [esp + 0x18]
add esi, 8
mov eax, esi
sub eax, edi
lea edx, [esi + ecx]
mov dword [esp + 0x1c], edx
cmp eax, 0x10
jge 0x5104ee
sub edi, esi
mov ebp, edx
push 8
lea eax, [edi + esi]
push eax
push esi
call fcn.005282e0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x5104d3
jmp 0x510011
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x510554
push 0x10
add esi, 0x10
add edi, 0x10
pop ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
cmp esi, edx
jb 0x510502
jmp 0x510554
mov esi, dword [esp + 0x54]
push dword [esp + 0x40]
lea eax, [esp + 0x34]
push dword [esp + 0x48]
push dword [esp + 0x2c]
push dword [esp + 0x44]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x4c]
movsd dword es:[edi], dword [esi]
push ebp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.0051385b
add esp, 0x28
mov ebx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
cmp ebx, 0xffffff88
ja 0x510e08
mov eax, dword [esp + 0x48]
lea edi, [esp + 0x120]
mov ecx, dword [esp + 0xf4]
lea esi, [esp + 0x64]
and eax, 7
add ebp, ebx
mov ebx, dword [esp + 0xec]
imul eax, eax, 0xc
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0xf0]
mov dword [esp + 0x14], ebx
add edi, eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x10], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x48]
inc edi
mov dword [esp + 0x48], edi
jmp 0x50f66b
push 0xffffffffffffffba
jmp 0x50eee0
sub edi, dword [esp + 0x3c]
jmp 0x510d75
mov edx, dword [esp + 0x4c]
lea ebx, [esp + 0x120]
mov ebp, dword [esp + 0x20]
and edi, 7
imul eax, edi, 0xc
add ebx, eax
cmp dword [edx + 0x7608], 2
mov dword [esp + 0x14], ebx
jne 0x510aec
mov edi, dword [ebx]
mov ecx, dword [esp + 0x28]
mov esi, dword [edx + 0x7604]
lea eax, [edi + ecx]
cmp eax, esi
jbe 0x51087d
sub esi, ecx
je 0x510625
mov eax, dword [esp + 0x2c]
sub eax, ebp
cmp esi, eax
ja 0x5105af
push esi
push ecx
push ebp
call fcn.00513d1a
mov edx, dword [esp + 0x58]
sub edi, esi
add esp, 0xc
mov dword [ebx], edi
add ebp, esi
mov dword [esp + 0x20], ebp
and dword [edx + 0x7608], 0
lea edi, [esp + 0xdc]
mov esi, ebx
lea eax, [edx + 0x1760c]
mov dword [esp + 0x38], eax
lea ecx, [edx + 0x760c]
mov dword [esp + 0x30], ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xdc]
mov esi, dword [esp + 0xe0]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xe4]
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x38]
ja 0x510d29
mov eax, dword [esp + 0x2c]
lea ecx, [ebx + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x510d29
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x510d29
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0xdc]
movups xmm0, xmmword [ecx + 0x760c]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x51070c
add ecx, 0x761c
add eax, 0xfffffff0
mov dword [esp + 0x3c], ecx
lea ecx, [ebp + 0x10]
lea esi, [ecx + eax]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x3c]
movups xmm0, xmmword [esi]
mov esi, dword [esp + 0xe0]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x51070c
mov eax, dword [esp + 0x3c]
add ecx, 0x10
add eax, 0x10
movups xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [eax - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, dword [esp + 0x1c]
jb 0x5106f2
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x30], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x510783
mov eax, edx
sub eax, dword [esp + 0x44]
cmp ecx, eax
ja 0x50eede
mov ecx, dword [esp + 0x40]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
jbe 0x510bf1
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282e0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xe0], esi
mov esi, dword [esp + 0xe0]
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x18], edx
mov dword [esp + 0xe0], esi
cmp ecx, 0x10
jb 0x5107bd
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x510d61
add edx, ecx
add edi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
cmp edx, eax
jb 0x5107a0
jmp 0x510d61
cmp ecx, 8
jae 0x5107ef
mov al, byte [edi]
mov byte [edx], al
mov al, byte [edi + 1]
mov byte [edx + 1], al
mov al, byte [edi + 2]
mov byte [edx + 2], al
mov al, byte [edi + 3]
add edi, dword [ecx*4 + 0x5bd3a0]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bd3c0]
add edx, 4
push 4
jmp 0x5107f3
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282e0
add esp, 0xc
cmp esi, 8
jbe 0x510d61
lea ecx, [esi - 8]
add edi, 8
mov esi, dword [esp + 0x18]
add esi, 8
mov eax, esi
sub eax, edi
lea edx, [esi + ecx]
mov dword [esp + 0x1c], edx
cmp eax, 0x10
jge 0x510848
sub edi, esi
mov ebp, edx
push 8
lea eax, [edi + esi]
push eax
push esi
call fcn.005282e0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x510829
mov ebp, dword [esp + 0x20]
jmp 0x510d61
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x510d61
push 0x10
add esi, 0x10
add edi, 0x10
pop ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
cmp esi, edx
jb 0x510860
jmp 0x510d61
mov esi, ebx
lea edi, [esp + 0xd0]
add eax, 0xffffffe0
mov dword [esp + 0x3c], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xd0]
mov esi, dword [esp + 0xd4]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xd8]
mov dword [esp + 0x50], eax
cmp eax, dword [esp + 0x38]
ja 0x510ab5
lea eax, [ebx + ebp]
cmp eax, dword [esp + 0x3c]
ja 0x510ab5
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x510ab5
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0xd0]
movups xmm0, xmmword [ecx]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x510944
add ecx, 0x10
add eax, 0xfffffff0
mov dword [esp + 0x3c], ecx
lea ecx, [ebp + 0x10]
lea esi, [ecx + eax]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x3c]
movups xmm0, xmmword [esi]
mov esi, dword [esp + 0xd4]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x510944
mov eax, dword [esp + 0x3c]
add ecx, 0x10
add eax, 0x10
movups xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [eax - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, dword [esp + 0x1c]
jb 0x51092a
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x5109bf
mov eax, edx
sub eax, dword [esp + 0x44]
cmp ecx, eax
ja 0x50eede
mov ecx, dword [esp + 0x40]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
jbe 0x510bf1
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282e0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xd4], esi
mov esi, dword [esp + 0xd4]
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x18], edx
mov dword [esp + 0xd4], esi
cmp ecx, 0x10
jb 0x5109f9
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x510d61
add edx, ecx
add edi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
cmp edx, eax
jb 0x5109dc
jmp 0x510d61
cmp ecx, 8
jae 0x510a2b
mov al, byte [edi]
mov byte [edx], al
mov al, byte [edi + 1]
mov byte [edx + 1], al
mov al, byte [edi + 2]
mov byte [edx + 2], al
mov al, byte [edi + 3]
add edi, dword [ecx*4 + 0x5bd3a0]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bd3c0]
add edx, 4
push 4
jmp 0x510a2f
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282e0
add esp, 0xc
cmp esi, 8
jbe 0x510d61
lea ecx, [esi - 8]
add edi, 8
mov esi, dword [esp + 0x18]
add esi, 8
mov eax, esi
sub eax, edi
lea edx, [esi + ecx]
mov dword [esp + 0x1c], edx
cmp eax, 0x10
jge 0x510a80
sub edi, esi
mov ebp, edx
push 8
lea eax, [edi + esi]
push eax
push esi
call fcn.005282e0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x510a65
jmp 0x51083f
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x510d61
push 0x10
add esi, 0x10
add edi, 0x10
pop ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
cmp esi, edx
jb 0x510a98
jmp 0x510d61
push dword [esp + 0x40]
mov esi, dword [esp + 0x18]
lea eax, [esp + 0x34]
push dword [esp + 0x48]
push dword [esp + 0x2c]
push dword [esp + 0x44]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x5c]
movsd dword es:[edi], dword [esi]
push dword [esp + 0x50]
push ebp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.00513940
add esp, 0x2c
jmp 0x510d57
mov esi, ebx
lea edi, [esp + 0xc4]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xc4]
mov esi, dword [esp + 0xc8]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, dword [esp + 0x28]
mov edi, edx
sub edi, dword [esp + 0xcc]
mov dword [esp + 0x50], eax
cmp eax, dword [esp + 0x38]
ja 0x510d29
mov eax, dword [esp + 0x2c]
lea ecx, [ebx + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x510d29
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x510d29
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0xc4]
movups xmm0, xmmword [ecx]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x510bb3
add ecx, 0x10
add eax, 0xfffffff0
mov dword [esp + 0x3c], ecx
lea ecx, [ebp + 0x10]
lea esi, [ecx + eax]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x3c]
movups xmm0, xmmword [esi]
mov esi, dword [esp + 0xc8]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x510bb3
mov eax, dword [esp + 0x3c]
add ecx, 0x10
add eax, 0x10
movups xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [eax - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, dword [esp + 0x1c]
jb 0x510b99
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x510c3a
mov eax, edx
sub eax, dword [esp + 0x44]
cmp ecx, eax
ja 0x50eede
mov ecx, dword [esp + 0x40]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
ja 0x510c01
push esi
push edi
push edx
call fcn.005282e0
add esp, 0xc
jmp 0x510d61
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282e0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xc8], esi
mov esi, dword [esp + 0xc8]
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x18], edx
mov dword [esp + 0xc8], esi
cmp ecx, 0x10
jb 0x510c74
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x510d61
add edx, ecx
add edi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [edx], xmm0
add edx, ecx
cmp edx, eax
jb 0x510c57
jmp 0x510d61
cmp ecx, 8
jae 0x510ca6
mov al, byte [edi]
mov byte [edx], al
mov al, byte [edi + 1]
mov byte [edx + 1], al
mov al, byte [edi + 2]
mov byte [edx + 2], al
mov al, byte [edi + 3]
add edi, dword [ecx*4 + 0x5bd3a0]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bd3c0]
add edx, 4
push 4
jmp 0x510caa
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282e0
add esp, 0xc
cmp esi, 8
jbe 0x510d61
lea ecx, [esi - 8]
add edi, 8
mov esi, dword [esp + 0x18]
add esi, 8
mov eax, esi
sub eax, edi
lea edx, [esi + ecx]
mov dword [esp + 0x1c], edx
cmp eax, 0x10
jge 0x510cfb
sub edi, esi
mov ebp, edx
push 8
lea eax, [edi + esi]
push eax
push esi
call fcn.005282e0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x510ce0
jmp 0x51083f
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x510d61
push 0x10
add esi, 0x10
add edi, 0x10
pop ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
movups xmm0, xmmword [edi]
add edi, ecx
movups xmmword [esi], xmm0
add esi, ecx
cmp esi, edx
jb 0x510d0f
jmp 0x510d61
push dword [esp + 0x40]
mov esi, dword [esp + 0x18]
lea eax, [esp + 0x34]
push dword [esp + 0x48]
push dword [esp + 0x2c]
push dword [esp + 0x44]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x4c]
movsd dword es:[edi], dword [esi]
push ebp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.0051385b
add esp, 0x28
mov ebx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
cmp ebx, 0xffffff88
ja 0x510e08
mov edi, dword [esp + 0x48]
add ebp, ebx
mov dword [esp + 0x20], ebp
inc edi
mov dword [esp + 0x48], edi
cmp edi, dword [esp + 0x19c]
jl 0x5105bf
mov edi, dword [esp + 0x4c]
lea esi, [esp + 0x114]
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x38]
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]
cmp dword [esi + 0x7608], 2
jne 0x510de0
mov eax, dword [esp + 0x2c]
sub ebp, ecx
sub eax, ebx
cmp ebp, eax
ja 0x5105af
test ebx, ebx
je 0x510dd4
push ebp
push ecx
push ebx
call fcn.005282e0
add esp, 0xc
add ebx, ebp
lea ecx, [esi + 0x760c]
lea ebp, [esi + 0x1760c]
mov eax, dword [esp + 0x2c]
sub ebp, ecx
sub eax, ebx
cmp ebp, eax
ja 0x5105af
test ebx, ebx
je 0x510e01
push ebp
push ecx
push ebx
call fcn.005282e0
add esp, 0xc
add ebx, ebp
sub ebx, dword [esp + 0xbc]
mov ecx, dword [esp + 0x180]
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00527959
add esp, 0x174
ret