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

Disassembly:
sub esp, 0x178
mov eax, dword [0x5dcf00]
xor eax, esp
mov dword [esp + 0x174], eax
mov ecx, dword [esp + 0x180]
mov edx, dword [esp + 0x188]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x188]
push edi
mov edi, dword [esp + 0x1a0]
mov dword [esp + 0x50], esi
cmp dword [esi + 0x7608], 1
mov dword [esp + 0xc0], ecx
jne 0x50ef05
mov eax, dword [esi + 0x7600]
jmp 0x50ef0e
mov eax, dword [esp + 0x194]
add eax, ecx
mov ebp, dword [esi + 0x7604]
mov ebx, ecx
mov ecx, dword [esi + 0x7578]
mov dword [esp + 0x30], eax
mov eax, dword [esi + 0x74b0]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x74b4]
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 0x74b8]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x48], eax
test edi, edi
je 0x510e7f
push 8
pop eax
push dword [esp + 0x19c]
cmp edi, eax
mov dword [esi + 0x750c], 1
push edx
cmovl eax, edi
add esi, 0x682c
lea edi, [esp + 0x120]
mov dword [esp + 0x4c], eax
lea eax, [esp + 0xf4]
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 0x50efa1
push 0xffffffffffffffec
pop ebx
jmp 0x510edd
mov ebx, dword [esp + 0x50]
lea eax, [esp + 0xec]
push dword [ebx]
push eax
lea eax, [esp + 0x108]
push eax
call fcn.00513bb9
push dword [ebx + 8]
lea eax, [esp + 0xfc]
push eax
lea eax, [esp + 0x11c]
push eax
call fcn.00513bb9
push dword [ebx + 4]
lea eax, [esp + 0x108]
push eax
lea eax, [esp + 0x130]
push eax
call fcn.00513bb9
mov ebp, dword [esp + 0x118]
lea eax, [esp + 0x148]
mov ebx, dword [esp + 0x114]
add esp, 0x24
mov dword [esp + 0x64], eax
xor edx, edx
mov eax, dword [esp + 0xec]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebx
mov dword [esp + 0x40], edx
cmp ebx, 0x20
jbe 0x50f02a
push 3
pop esi
jmp 0x50f0e2
cmp ebp, dword [esp + 0xfc]
jb 0x50f069
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xf0], ebx
push 4
lea eax, [esp + 0x8c]
mov dword [esp + 0xf8], ebp
push ebp
push eax
call fcn.005282a0
mov eax, dword [esp + 0x94]
add esp, 0xc
xor esi, esi
jmp 0x50f0c1
mov ecx, dword [esp + 0xf8]
cmp ebp, ecx
jne 0x50f07e
cmp ebx, 0x20
sbb esi, esi
add esi, 2
jmp 0x50f0e9
mov edx, ebx
mov eax, ebp
shr edx, 3
xor esi, esi
sub eax, edx
cmp eax, ecx
jae 0x50f092
mov edx, ebp
sub edx, ecx
inc esi
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xfc], ebp
add ebx, eax
lea eax, [esp + 0xcc]
push eax
mov dword [esp + 0xfc], ebx
call fcn.005282a0
mov eax, dword [esp + 0xd0]
add esp, 0xc
mov ebx, dword [esp + 0xf0]
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0x14], ebx
mov dword [esp + 0xec], eax
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0xf8]
cmp edx, dword [esp + 0x44]
jge 0x50f73a
cmp esi, 2
ja 0x50ef99
mov ecx, dword [esp + 0x114]
mov esi, dword [esp + 0x110]
mov edi, dword [esp + 0x100]
mov edx, dword [esp + 0x108]
mov eax, dword [esp + 0x10c]
mov ebx, dword [ecx + esi*8 + 4]
mov esi, ebx
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0x104]
mov dword [esp + 0x6c], esi
mov esi, dword [ebx + edi*8 + 4]
mov cl, byte [ebx + edi*8 + 2]
mov dword [esp + 0x60], esi
mov dword [esp + 0x68], esi
mov esi, dword [eax + edx*8 + 4]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x110]
mov byte [esp + 0x2b], cl
mov ecx, dword [esp + 0x114]
mov bl, byte [ecx + esi*8 + 2]
mov byte [esp + 0x3b], bl
mov bl, byte [eax + edx*8 + 2]
mov byte [esp + 0x3a], bl
mov ebx, dword [esp + 0x104]
movzx esi, word [ebx + edi*8]
mov dword [esp + 0x78], esi
mov esi, dword [esp + 0x110]
movzx ebx, word [ecx + esi*8]
movzx ecx, byte [ecx + esi*8 + 3]
mov dword [esp + 0x80], ebx
movzx ebx, word [eax + edx*8]
movzx eax, byte [eax + edx*8 + 3]
mov dword [esp + 0x74], ebx
mov ebx, dword [esp + 0x104]
mov dword [esp + 0x84], eax
mov al, byte [esp + 0x3a]
mov dword [esp + 0x7c], ecx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0x5c], edi
cmp al, 1
jbe 0x50f387
cmp dword [esp + 0x1a4], 0
je 0x50f29d
cmp al, 0x19
jb 0x50f29d
movzx eax, al
sub eax, 5
push eax
lea eax, [esp + 0xf0]
push eax
call fcn.0050e16c
mov esi, dword [esp + 0xf8]
mov edi, eax
shl edi, 5
add edi, dword [esp + 0x20]
pop ecx
pop ecx
cmp esi, 0x20
ja 0x50f26f
mov ecx, dword [esp + 0xf4]
cmp ecx, dword [esp + 0xfc]
jb 0x50f228
lea eax, [esp + 0xec]
push eax
call fcn.0050a828
jmp 0x50f26e
cmp ecx, dword [esp + 0xf8]
je 0x50f26f
mov edx, esi
mov eax, ecx
shr edx, 3
sub eax, edx
cmp eax, dword [esp + 0xf8]
jae 0x50f24c
mov edx, ecx
sub edx, dword [esp + 0xf8]
imul eax, edx, 0xfffffff8
sub ecx, edx
push ecx
mov dword [esp + 0xf8], ecx
add esi, eax
mov dword [esp + 0xf4], esi
call fcn.0050707e
mov dword [esp + 0xf0], eax
pop ecx
lea eax, [esp + 0xec]
push 5
push eax
call fcn.0050e16c
pop ecx
add edi, eax
mov esi, dword [esp + 0xf4]
pop ecx
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ecx
jmp 0x50f35b
movzx eax, al
push eax
lea eax, [esp + 0xf0]
push eax
call fcn.0050e16c
pop ecx
pop ecx
mov ecx, dword [esp + 0xf0]
mov edi, eax
add edi, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
cmp ecx, 0x20
ja 0x50f34c
mov ebp, dword [esp + 0xf4]
cmp ebp, dword [esp + 0xfc]
jb 0x50f2e9
lea eax, [esp + 0xec]
push eax
call fcn.0050a828
jmp 0x50f281
mov esi, dword [esp + 0xf8]
cmp ebp, esi
je 0x50f33b
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, esi
jae 0x50f305
mov edx, ebp
sub edx, esi
imul eax, edx, 0xfffffff8
sub ebp, edx
push ebp
mov dword [esp + 0xf8], ebp
add ecx, eax
mov dword [esp + 0xf4], ecx
call fcn.0050707e
mov esi, dword [esp + 0xf4]
pop ecx
mov ecx, eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0xec], ecx
jmp 0x50f35b
mov esi, dword [esp + 0xec]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x14]
jmp 0x50f362
mov esi, dword [esp + 0xec]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0xf4]
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x118]
mov dword [esp + 0x11c], eax
mov eax, dword [esp + 0x10]
jmp 0x50f421
mov ecx, dword [esp + 0x60]
xor ebx, ebx
test ecx, ecx
sete bl
test al, al
jne 0x50f3b3
mov edi, dword [esp + ebx*4 + 0x118]
mov eax, ecx
mov esi, dword [esp + 0x14]
neg eax
sbb eax, eax
and eax, 4
mov eax, dword [esp + eax + 0x118]
jmp 0x50f377
lea eax, [esp + 0xec]
push 1
push eax
call fcn.0050e16c
mov edx, dword [esp + 0x120]
pop ecx
pop ecx
lea ecx, [ebx + eax]
add ecx, dword [esp + 0x18]
lea edi, [edx - 1]
cmp ecx, 3
je 0x50f3e1
mov edi, dword [esp + ecx*4 + 0x118]
xor eax, eax
test edi, edi
sete al
add edi, eax
cmp ecx, 1
je 0x50f3fd
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x120], eax
mov esi, dword [esp + 0xf0]
mov eax, dword [esp + 0xec]
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0x11c], edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], eax
mov bl, byte [esp + 0x3b]
mov dword [esp + 0x118], edi
mov dword [esp + 0x70], edi
test bl, bl
je 0x50f45e
mov ecx, esi
movzx edx, bl
and ecx, 0x1f
add esi, edx
shl eax, cl
mov ecx, edx
neg ecx
mov dword [esp + 0x14], esi
and ecx, 0x1f
mov dword [esp + 0xf0], esi
shr eax, cl
mov ecx, dword [esp + 0x58]
add ecx, eax
mov dword [esp + 0x6c], ecx
movzx eax, byte [esp + 0x2b]
movzx ecx, bl
add ecx, eax
cmp ecx, 0x14
mov ecx, dword [esp + 0x14]
jb 0x50f511
cmp ecx, 0x20
ja 0x50f511
cmp ebp, dword [esp + 0xfc]
jb 0x50f4b4
lea eax, [esp + 0xec]
push eax
call fcn.0050a828
mov eax, dword [esp + 0xf0]
mov ebp, dword [esp + 0xf8]
pop ecx
mov ecx, dword [esp + 0xf0]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
jmp 0x50f515
mov ebx, dword [esp + 0xf8]
cmp ebp, ebx
je 0x50f50b
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ebx
jae 0x50f4d0
mov edx, ebp
sub edx, ebx
imul eax, edx, 0xfffffff8
sub ebp, edx
push ebp
mov dword [esp + 0xf8], ebp
add ecx, eax
mov dword [esp + 0xf4], ecx
call fcn.0050707e
mov ebp, dword [esp + 0xf8]
pop ecx
mov ecx, dword [esp + 0xf0]
mov dword [esp + 0x10], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0x14], ecx
jmp 0x50f515
mov eax, dword [esp + 0x10]
jmp 0x50f51c
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0xf8]
mov dl, byte [esp + 0x2b]
test dl, dl
je 0x50f545
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 + 0x60]
add edx, eax
mov dword [esp + 0x68], edx
cmp ecx, 0x20
ja 0x50f5e7
cmp ebp, dword [esp + 0xfc]
jb 0x50f5a4
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xf0], ecx
push 4
lea eax, [esp + 0xc0]
mov dword [esp + 0xf8], ebp
push ebp
push eax
call fcn.005282a0
mov edi, dword [esp + 0xc8]
mov ebp, dword [esp + 0x100]
add esp, 0xc
mov ecx, dword [esp + 0xf0]
mov dword [esp + 0x10], edi
mov dword [esp + 0xec], edi
jmp 0x50f5eb
cmp ebp, ebx
je 0x50f5e7
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ebx
jae 0x50f5b9
mov edx, ebp
sub edx, ebx
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xfc], ebp
add ecx, eax
lea eax, [esp + 0xc0]
push eax
mov dword [esp + 0xfc], ecx
call fcn.005282a0
mov edi, dword [esp + 0xc4]
jmp 0x50f586
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x5c]
mov edx, edi
lea esi, [eax + ecx]
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bcba0]
mov eax, dword [esp + 0x78]
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x100], edx
mov edx, edi
lea ecx, [esi + eax]
neg ecx
lea ebx, [eax + esi]
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bcba0]
mov eax, dword [esp + 0x80]
movzx eax, ax
add edx, eax
mov dword [esp + 0x110], edx
cmp ebx, 0x20
ja 0x50f6ea
cmp ebp, dword [esp + 0xfc]
jb 0x50f684
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xf0], ebx
push 4
lea eax, [esp + 0x90]
mov dword [esp + 0xf8], ebp
push ebp
push eax
call fcn.005282a0
mov edi, dword [esp + 0x98]
jmp 0x50f6ce
mov esi, dword [esp + 0xf8]
cmp ebp, esi
je 0x50f6ea
mov ecx, ebx
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, esi
jae 0x50f6a0
mov ecx, ebp
sub ecx, esi
mov eax, ecx
sub ebp, ecx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xf4], ebp
push 4
lea eax, [esp + 0x94]
mov dword [esp + 0xf4], ebx
push ebp
push eax
call fcn.005282a0
mov edi, dword [esp + 0x9c]
mov ebx, dword [esp + 0xfc]
add esp, 0xc
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0xec], edi
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x84]
lea esi, [esp + 0x68]
add ebx, eax
mov edx, edi
mov ecx, ebx
mov dword [esp + 0xf0], ebx
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bcba0]
mov ecx, dword [esp + 0x64]
mov edi, ecx
mov eax, dword [esp + 0x74]
movzx eax, ax
add edx, eax
movsd dword es:[edi], dword [esi]
mov dword [esp + 0x108], edx
mov edx, dword [esp + 0x40]
inc edx
add ecx, 0xc
movsd dword es:[edi], dword [esi]
mov dword [esp + 0x64], ecx
movsd dword es:[edi], dword [esi]
jmp 0x50f015
cmp ebx, 0x20
jbe 0x50f747
push 3
pop edi
jmp 0x50f7f5
cmp ebp, dword [esp + 0xfc]
jb 0x50f783
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xf0], ebx
push 4
lea eax, [esp + 0x78]
mov dword [esp + 0xf8], ebp
push ebp
push eax
call fcn.005282a0
mov eax, dword [esp + 0x80]
add esp, 0xc
xor edi, edi
jmp 0x50f7d4
cmp ebp, ecx
jne 0x50f791
cmp ebx, 0x20
sbb edi, edi
add edi, 2
jmp 0x50f7f5
mov edx, ebx
mov eax, ebp
shr edx, 3
xor edi, edi
sub eax, edx
cmp eax, ecx
jae 0x50f7a5
mov edx, ebp
sub edx, ecx
inc edi
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xfc], ebp
add ebx, eax
lea eax, [esp + 0x8c]
push eax
mov dword [esp + 0xfc], ebx
call fcn.005282a0
mov eax, dword [esp + 0x90]
add esp, 0xc
mov esi, dword [esp + 0xf0]
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0x14], esi
mov dword [esp + 0xec], eax
mov dword [esp + 0x10], eax
cmp edx, dword [esp + 0x1a0]
jge 0x51068b
cmp edi, 2
ja 0x50ef99
mov ecx, dword [esp + 0x114]
mov esi, dword [esp + 0x110]
mov edi, dword [esp + 0x100]
mov edx, dword [esp + 0x108]
mov eax, dword [esp + 0x10c]
mov ebx, dword [ecx + esi*8 + 4]
mov esi, ebx
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0x104]
mov dword [esp + 0x6c], esi
mov esi, dword [ebx + edi*8 + 4]
mov cl, byte [ebx + edi*8 + 2]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x68], esi
mov esi, dword [eax + edx*8 + 4]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x110]
mov byte [esp + 0x3a], cl
mov ecx, dword [esp + 0x114]
mov bl, byte [ecx + esi*8 + 2]
mov byte [esp + 0x2b], bl
mov bl, byte [eax + edx*8 + 2]
mov byte [esp + 0x3b], bl
mov ebx, dword [esp + 0x104]
movzx esi, word [ebx + edi*8]
mov dword [esp + 0xa4], esi
mov esi, dword [esp + 0x110]
movzx ebx, word [ecx + esi*8]
movzx ecx, byte [ecx + esi*8 + 3]
mov dword [esp + 0xac], ebx
movzx ebx, word [eax + edx*8]
movzx eax, byte [eax + edx*8 + 3]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x104]
mov dword [esp + 0x54], eax
mov al, byte [esp + 0x3b]
mov dword [esp + 0xa8], ecx
movzx edi, byte [ebx + edi*8 + 3]
mov dword [esp + 0xa0], edi
cmp al, 1
jbe 0x50facb
cmp dword [esp + 0x1a4], 0
je 0x50f9e3
cmp al, 0x19
jb 0x50f9e3
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 + 0x18]
cmp ebx, 0x20
ja 0x50f9c5
cmp ebp, dword [esp + 0xfc]
jb 0x50f95f
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xf0], ebx
push 4
lea eax, [esp + 0x84]
mov dword [esp + 0xf8], ebp
push ebp
push eax
call fcn.005282a0
mov edx, dword [esp + 0x8c]
jmp 0x50f9a9
mov esi, dword [esp + 0xf8]
cmp ebp, esi
je 0x50f9c5
mov ecx, ebx
mov eax, ebp
shr ecx, 3
sub eax, ecx
cmp eax, esi
jae 0x50f97b
mov ecx, ebp
sub ecx, esi
mov eax, ecx
sub ebp, ecx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xf4], ebp
push 4
lea eax, [esp + 0x80]
mov dword [esp + 0xf4], ebx
push ebp
push eax
call fcn.005282a0
mov edx, dword [esp + 0x88]
mov ebx, dword [esp + 0xfc]
add esp, 0xc
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0xec], 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
mov dword [esp + 0x14], ebx
add edi, eax
jmp 0x50fac5
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 0x50fac5
cmp ebp, dword [esp + 0xfc]
jb 0x50fa5f
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xf0], ebx
push 4
lea eax, [esp + 0x68]
mov dword [esp + 0xf8], ebp
push ebp
push eax
call fcn.005282a0
mov ecx, dword [esp + 0x70]
mov esi, dword [esp + 0xfc]
mov dword [esp + 0x20], esi
mov esi, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xf8], ecx
jmp 0x50fabb
mov ecx, dword [esp + 0xf8]
cmp ebp, ecx
je 0x50fac5
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x50fa7b
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub ebx, eax
mov dword [esp + 0xf4], ebp
push 4
lea eax, [esp + 0x64]
mov dword [esp + 0xf4], ebx
push ebp
push eax
call fcn.005282a0
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0xfc]
mov dword [esp + 0x20], esi
mov esi, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0xf8], eax
mov ebp, dword [esp + 0x100]
add esp, 0xc
mov ebx, dword [esp + 0x14]
jmp 0x50fb3e
mov ecx, dword [esp + 0x5c]
xor edx, edx
mov ebx, dword [esp + 0x14]
test ecx, ecx
mov esi, dword [esp + 0x10]
sete dl
test al, al
jne 0x50fafb
mov edi, dword [esp + edx*4 + 0x118]
mov eax, ecx
neg eax
sbb eax, eax
and eax, 4
mov eax, dword [esp + eax + 0x118]
jmp 0x50fb53
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 + 0xf0], ebx
lea ecx, [eax + edx]
add ecx, dword [esp + 0x18]
cmp ecx, 3
jne 0x50fb29
mov edi, dword [esp + 0x118]
dec edi
jmp 0x50fb30
mov edi, dword [esp + ecx*4 + 0x118]
xor eax, eax
test edi, edi
sete al
add edi, eax
cmp ecx, 1
je 0x50fb4c
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x118]
mov dword [esp + 0x11c], eax
mov al, byte [esp + 0x2b]
mov dword [esp + 0x118], edi
mov dword [esp + 0x70], edi
test al, al
je 0x50fb96
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 + 0x58]
add ecx, eax
mov al, byte [esp + 0x2b]
mov dword [esp + 0x6c], ecx
movzx ecx, al
movzx eax, byte [esp + 0x3a]
add ecx, eax
cmp ecx, 0x14
mov ecx, dword [esp + 0x14]
jb 0x50fc5d
cmp ecx, 0x20
ja 0x50fc5d
cmp ebp, dword [esp + 0xfc]
jb 0x50fc0d
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xf0], ecx
push 4
lea eax, [esp + 0x7c]
mov dword [esp + 0xf8], ebp
push ebp
push eax
call fcn.005282a0
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0xfc]
add esp, 0xc
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0x10], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0x14], ecx
jmp 0x50fc61
mov ebx, dword [esp + 0xf8]
cmp ebp, ebx
je 0x50fc57
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ebx
jae 0x50fc29
mov edx, ebp
sub edx, ebx
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xfc], ebp
add ecx, eax
lea eax, [esp + 0x9c]
push eax
mov dword [esp + 0xfc], ecx
call fcn.005282a0
mov eax, dword [esp + 0xa0]
jmp 0x50fbeb
mov eax, dword [esp + 0x10]
jmp 0x50fc68
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0xf8]
mov dl, byte [esp + 0x3a]
test dl, dl
je 0x50fc91
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 + 0x5c]
add edx, eax
mov dword [esp + 0x68], edx
cmp ecx, 0x20
ja 0x50fd2f
cmp ebp, dword [esp + 0xfc]
jb 0x50fcec
mov eax, ecx
and ecx, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xf0], ecx
push 4
lea eax, [esp + 0x9c]
mov dword [esp + 0xf8], ebp
push ebp
push eax
call fcn.005282a0
mov ebx, dword [esp + 0xa4]
mov ebp, dword [esp + 0x100]
add esp, 0xc
mov ecx, dword [esp + 0xf0]
mov dword [esp + 0xec], ebx
jmp 0x50fd33
cmp ebp, ebx
je 0x50fd2f
mov edx, ecx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ebx
jae 0x50fd01
mov edx, ebp
sub edx, ebx
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0xfc], ebp
add ecx, eax
lea eax, [esp + 0xa4]
push eax
mov dword [esp + 0xfc], ecx
call fcn.005282a0
mov ebx, dword [esp + 0xa8]
jmp 0x50fcd2
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0xa0]
mov edx, ebx
lea esi, [eax + ecx]
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
and edx, dword [eax*4 + 0x5bcba0]
mov eax, dword [esp + 0xa4]
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x100], 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 + 0x5bcba0]
mov eax, dword [esp + 0xac]
movzx eax, ax
add edx, eax
mov dword [esp + 0x110], edx
cmp edi, 0x20
ja 0x50fe30
cmp ebp, dword [esp + 0xfc]
jb 0x50fdd5
mov eax, edi
and edi, 7
shr eax, 3
sub ebp, eax
mov dword [esp + 0xf0], edi
push 4
lea eax, [esp + 0xb4]
mov dword [esp + 0xf8], ebp
push ebp
push eax
call fcn.005282a0
mov ebx, dword [esp + 0xbc]
jmp 0x50fe1f
mov ecx, dword [esp + 0xf8]
cmp ebp, ecx
je 0x50fe30
mov edx, edi
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x50fdf1
mov edx, ebp
sub edx, ecx
mov eax, edx
sub ebp, edx
shl eax, 3
sub edi, eax
mov dword [esp + 0xf4], ebp
push 4
lea eax, [esp + 0xb8]
mov dword [esp + 0xf4], edi
push ebp
push eax
call fcn.005282a0
mov ebx, dword [esp + 0xc0]
mov edi, dword [esp + 0xfc]
add esp, 0xc
mov dword [esp + 0xec], ebx
mov eax, dword [esp + 0x54]
add edi, eax
mov edx, dword [esp + 0x50]
mov dword [esp + 0xf0], edi
neg edi
and edi, 0x1f
mov ecx, edi
mov ebp, dword [edx + 0x7608]
shr ebx, cl
and ebx, dword [eax*4 + 0x5bcba0]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
movzx eax, ax
add ebx, eax
mov dword [esp + 0x108], ebx
cmp ebp, 2
jne 0x51012f
mov eax, dword [esp + 0x40]
lea ebx, [esp + 0x124]
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, [ecx + edi]
cmp eax, esi
jbe 0x51012f
mov ebp, dword [esp + 0x20]
sub esi, ecx
je 0x50fecd
mov eax, dword [esp + 0x30]
sub eax, ebp
cmp esi, eax
ja 0x510684
push esi
push ecx
push ebp
call fcn.00513dc5
mov edx, dword [esp + 0x5c]
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 + 0xc8]
mov esi, ebx
lea eax, [edx + 0x1760c]
mov dword [esp + 0x3c], eax
lea ecx, [edx + 0x760c]
mov dword [esp + 0x34], ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xc8]
mov esi, dword [esp + 0xcc]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xd0]
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x3c]
ja 0x510126
mov eax, dword [esp + 0x30]
lea ecx, [ebx + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x510126
mov ecx, dword [esp + 0x30]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x510126
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0xc8]
movups xmm0, xmmword [ecx + 0x760c]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x50ffae
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 0x50ffa7
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 0x50ff8f
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x34], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x510025
mov eax, edx
sub eax, dword [esp + 0x4c]
cmp ecx, eax
ja 0x50ef99
mov ecx, dword [esp + 0x48]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
jbe 0x5104bb
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282a0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xcc], esi
mov esi, dword [esp + 0xcc]
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x18], edx
mov dword [esp + 0xcc], esi
cmp ecx, 0x10
jb 0x51005f
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x51062b
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 0x510042
jmp 0x51062b
cmp ecx, 8
jae 0x5100a2
mov al, byte [edi]
mov esi, dword [ecx*4 + 0x5bca80]
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 + 0x5bca60]
push 4
mov byte [edx + 3], al
lea eax, [edx + 4]
push edi
push eax
call fcn.005282a0
add esp, 0xc
sub edi, esi
mov esi, dword [esp + 0xcc]
jmp 0x5100ab
push edi
push edx
call fcn.0050e6b0
pop ecx
pop ecx
cmp esi, 8
jbe 0x51062b
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 0x5100f1
sub edi, esi
mov ebp, edx
lea eax, [esi + edi]
push eax
push esi
call fcn.0050e6b0
add esi, 8
pop ecx
pop ecx
cmp esi, ebp
jb 0x5100d5
mov ebp, dword [esp + 0x20]
jmp 0x51062b
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x51062b
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 0x510109
jmp 0x51062b
mov esi, dword [esp + 0x1c]
jmp 0x5105f7
mov eax, dword [esp + 0x40]
lea edx, [esp + 0x124]
and eax, 7
imul eax, eax, 0xc
add edx, eax
cmp ebp, 2
mov ebp, dword [esp + 0x20]
mov esi, edx
mov dword [esp + 0x58], edx
jne 0x5103c0
mov eax, dword [edx]
lea edi, [esp + 0xd4]
movsd dword es:[edi], dword [esi]
add eax, 0xffffffe0
add eax, ecx
mov dword [esp + 0x5c], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xd4]
mov esi, dword [esp + 0xd8]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xdc]
mov dword [esp + 0x54], eax
cmp eax, dword [esp + 0x3c]
ja 0x510389
lea eax, [ebx + ebp]
cmp eax, dword [esp + 0x5c]
ja 0x510389
mov ecx, dword [esp + 0x30]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x510389
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0xd4]
movups xmm0, xmmword [ecx]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x510218
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 0x510211
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 0x5101f9
mov esi, dword [esp + 0xd8]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x510293
mov eax, edx
sub eax, dword [esp + 0x4c]
cmp ecx, eax
ja 0x50ef99
mov ecx, dword [esp + 0x48]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
jbe 0x5104bb
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282a0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xd8], esi
mov esi, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0x18], edx
mov dword [esp + 0xd8], esi
cmp ecx, 0x10
jb 0x5102cd
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x51062b
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 0x5102b0
jmp 0x51062b
cmp ecx, 8
jae 0x5102ff
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 + 0x5bca60]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bca80]
add edx, 4
push 4
jmp 0x510303
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282a0
add esp, 0xc
cmp esi, 8
jbe 0x51062b
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 0x510354
sub edi, esi
mov ebp, edx
push 8
lea eax, [edi + esi]
push eax
push esi
call fcn.005282a0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x510339
jmp 0x5100e8
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x51062b
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 0x51036c
jmp 0x51062b
push dword [esp + 0x48]
mov esi, dword [esp + 0x5c]
lea eax, [esp + 0x38]
push dword [esp + 0x50]
push dword [esp + 0x2c]
push dword [esp + 0x48]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x7c]
movsd dword es:[edi], dword [esi]
push dword [esp + 0x54]
push ebp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.005139eb
add esp, 0x2c
jmp 0x510621
lea edi, [esp + 0xe0]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xe0]
mov esi, dword [esp + 0xe4]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xe8]
mov dword [esp + 0x54], eax
cmp eax, dword [esp + 0x3c]
ja 0x5105f3
mov eax, dword [esp + 0x30]
lea ecx, [ebx + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x5105f3
mov ecx, dword [esp + 0x30]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x5105f3
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0xe0]
movups xmm0, xmmword [ecx]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x51047d
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 0x510476
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 0x51045e
mov esi, dword [esp + 0xe4]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0xe8]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x510504
mov eax, edx
sub eax, dword [esp + 0x4c]
cmp ecx, eax
ja 0x50ef99
mov ecx, dword [esp + 0x48]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
ja 0x5104cb
push esi
push edi
push edx
call fcn.005282a0
add esp, 0xc
jmp 0x51062b
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282a0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xe4], esi
mov esi, dword [esp + 0xe4]
mov ecx, dword [esp + 0xe8]
mov dword [esp + 0x18], edx
mov dword [esp + 0xe4], esi
cmp ecx, 0x10
jb 0x51053e
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x51062b
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 0x510521
jmp 0x51062b
cmp ecx, 8
jae 0x510570
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 + 0x5bca60]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bca80]
add edx, 4
push 4
jmp 0x510574
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282a0
add esp, 0xc
cmp esi, 8
jbe 0x51062b
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 0x5105c5
sub edi, esi
mov ebp, edx
push 8
lea eax, [edi + esi]
push eax
push esi
call fcn.005282a0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x5105aa
jmp 0x5100e8
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x51062b
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 0x5105d9
jmp 0x51062b
mov esi, dword [esp + 0x58]
push dword [esp + 0x48]
lea eax, [esp + 0x38]
push dword [esp + 0x50]
push dword [esp + 0x2c]
push dword [esp + 0x48]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x50]
movsd dword es:[edi], dword [esi]
push ebp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.00513906
add esp, 0x28
mov ebx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
cmp ebx, 0xffffff88
ja 0x510edd
mov edx, dword [esp + 0x40]
lea edi, [esp + 0x124]
mov ecx, dword [esp + 0xf8]
lea esi, [esp + 0x68]
mov eax, edx
add ebp, ebx
mov ebx, dword [esp + 0xf0]
and eax, 7
imul eax, eax, 0xc
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0x14], ebx
add edi, eax
mov eax, dword [esp + 0xec]
inc edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x40], edx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jmp 0x50f73a
push 0xffffffffffffffba
jmp 0x50ef9b
sub edx, dword [esp + 0x44]
jmp 0x510e4a
mov ebp, dword [esp + 0x20]
lea ebx, [esp + 0x124]
and edx, 7
imul eax, edx, 0xc
mov edx, dword [esp + 0x50]
add ebx, eax
cmp dword [edx + 0x7608], 2
mov dword [esp + 0x14], ebx
jne 0x510bc1
mov edi, dword [ebx]
mov ecx, dword [esp + 0x2c]
mov esi, dword [edx + 0x7604]
lea eax, [edi + ecx]
cmp eax, esi
jbe 0x510952
sub esi, ecx
je 0x5106fa
mov eax, dword [esp + 0x30]
sub eax, ebp
cmp esi, eax
ja 0x510684
push esi
push ecx
push ebp
call fcn.00513dc5
mov edx, dword [esp + 0x5c]
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 + 0xe0]
mov esi, ebx
lea eax, [edx + 0x1760c]
mov dword [esp + 0x3c], eax
lea ecx, [edx + 0x760c]
mov dword [esp + 0x34], ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xe0]
mov esi, dword [esp + 0xe4]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xe8]
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x3c]
ja 0x510dfe
mov eax, dword [esp + 0x30]
lea ecx, [ebx + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x510dfe
mov ecx, dword [esp + 0x30]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x510dfe
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0xe0]
movups xmm0, xmmword [ecx + 0x760c]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x5107e1
add ecx, 0x761c
add eax, 0xfffffff0
mov dword [esp + 0x44], ecx
lea ecx, [ebp + 0x10]
lea esi, [ecx + eax]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x44]
movups xmm0, xmmword [esi]
mov esi, dword [esp + 0xe4]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x5107e1
mov eax, dword [esp + 0x44]
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 0x5107c7
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xe8]
mov dword [esp + 0x34], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x510858
mov eax, edx
sub eax, dword [esp + 0x4c]
cmp ecx, eax
ja 0x50ef99
mov ecx, dword [esp + 0x48]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
jbe 0x510cc6
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282a0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xe4], esi
mov esi, dword [esp + 0xe4]
mov ecx, dword [esp + 0xe8]
mov dword [esp + 0x18], edx
mov dword [esp + 0xe4], esi
cmp ecx, 0x10
jb 0x510892
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x510e36
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 0x510875
jmp 0x510e36
cmp ecx, 8
jae 0x5108c4
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 + 0x5bca60]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bca80]
add edx, 4
push 4
jmp 0x5108c8
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282a0
add esp, 0xc
cmp esi, 8
jbe 0x510e36
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 0x51091d
sub edi, esi
mov ebp, edx
push 8
lea eax, [esi + edi]
push eax
push esi
call fcn.005282a0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x5108fe
mov ebp, dword [esp + 0x20]
jmp 0x510e36
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x510e36
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 0x510935
jmp 0x510e36
mov esi, ebx
lea edi, [esp + 0xd4]
add eax, 0xffffffe0
mov dword [esp + 0x44], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xd4]
mov esi, dword [esp + 0xd8]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, ecx
mov edi, edx
sub edi, dword [esp + 0xdc]
mov dword [esp + 0x54], eax
cmp eax, dword [esp + 0x3c]
ja 0x510b8a
lea eax, [ebx + ebp]
cmp eax, dword [esp + 0x44]
ja 0x510b8a
mov ecx, dword [esp + 0x30]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x510b8a
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0xd4]
movups xmm0, xmmword [ecx]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x510a19
add ecx, 0x10
add eax, 0xfffffff0
mov dword [esp + 0x44], ecx
lea ecx, [ebp + 0x10]
lea esi, [ecx + eax]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x44]
movups xmm0, xmmword [esi]
mov esi, dword [esp + 0xd8]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x510a19
mov eax, dword [esp + 0x44]
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 0x5109ff
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x510a94
mov eax, edx
sub eax, dword [esp + 0x4c]
cmp ecx, eax
ja 0x50ef99
mov ecx, dword [esp + 0x48]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
jbe 0x510cc6
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282a0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xd8], esi
mov esi, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0x18], edx
mov dword [esp + 0xd8], esi
cmp ecx, 0x10
jb 0x510ace
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x510e36
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 0x510ab1
jmp 0x510e36
cmp ecx, 8
jae 0x510b00
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 + 0x5bca60]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bca80]
add edx, 4
push 4
jmp 0x510b04
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282a0
add esp, 0xc
cmp esi, 8
jbe 0x510e36
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 0x510b55
sub edi, esi
mov ebp, edx
push 8
lea eax, [edi + esi]
push eax
push esi
call fcn.005282a0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x510b3a
jmp 0x510914
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x510e36
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 0x510b6d
jmp 0x510e36
push dword [esp + 0x48]
mov esi, dword [esp + 0x18]
lea eax, [esp + 0x38]
push dword [esp + 0x50]
push dword [esp + 0x2c]
push dword [esp + 0x48]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x64]
movsd dword es:[edi], dword [esi]
push dword [esp + 0x54]
push ebp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.005139eb
add esp, 0x2c
jmp 0x510e2c
mov esi, ebx
lea edi, [esp + 0xc8]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xc8]
mov esi, dword [esp + 0xcc]
lea edx, [eax + ebp]
lea ebx, [esi + eax]
mov dword [esp + 0x18], edx
add eax, dword [esp + 0x2c]
mov edi, edx
sub edi, dword [esp + 0xd0]
mov dword [esp + 0x54], eax
cmp eax, dword [esp + 0x3c]
ja 0x510dfe
mov eax, dword [esp + 0x30]
lea ecx, [ebx + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x510dfe
mov ecx, dword [esp + 0x30]
lea eax, [ebx + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x510dfe
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0xc8]
movups xmm0, xmmword [ecx]
movups xmmword [ebp], xmm0
cmp eax, 0x10
jbe 0x510c88
add ecx, 0x10
add eax, 0xfffffff0
mov dword [esp + 0x44], ecx
lea ecx, [ebp + 0x10]
lea esi, [ecx + eax]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x44]
movups xmm0, xmmword [esi]
mov esi, dword [esp + 0xcc]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x510c88
mov eax, dword [esp + 0x44]
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 0x510c6e
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], eax
mov eax, edx
sub eax, dword [esp + 0x24]
cmp ecx, eax
jbe 0x510d0f
mov eax, edx
sub eax, dword [esp + 0x4c]
cmp ecx, eax
ja 0x50ef99
mov ecx, dword [esp + 0x48]
mov eax, ecx
sub eax, dword [esp + 0x24]
add edi, eax
lea eax, [edi + esi]
cmp eax, ecx
ja 0x510cd6
push esi
push edi
push edx
call fcn.005282a0
add esp, 0xc
jmp 0x510e36
mov esi, ecx
sub esi, edi
push esi
push edi
push edx
call fcn.005282a0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x24]
add edx, esi
sub dword [esp + 0xcc], esi
mov esi, dword [esp + 0xcc]
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x18], edx
mov dword [esp + 0xcc], esi
cmp ecx, 0x10
jb 0x510d49
movups xmm0, xmmword [edi]
push 0x10
pop ecx
lea eax, [esi + edx]
movups xmmword [edx], xmm0
cmp esi, ecx
jle 0x510e36
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 0x510d2c
jmp 0x510e36
cmp ecx, 8
jae 0x510d7b
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 + 0x5bca60]
mov byte [edx + 3], al
mov eax, edi
sub edi, dword [ecx*4 + 0x5bca80]
add edx, 4
push 4
jmp 0x510d7f
mov eax, edi
push 8
pop ecx
push ecx
push eax
push edx
call fcn.005282a0
add esp, 0xc
cmp esi, 8
jbe 0x510e36
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 0x510dd0
sub edi, esi
mov ebp, edx
push 8
lea eax, [edi + esi]
push eax
push esi
call fcn.005282a0
add esi, 8
add esp, 0xc
cmp esi, ebp
jb 0x510db5
jmp 0x510914
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
cmp ecx, 0x10
jle 0x510e36
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 0x510de4
jmp 0x510e36
push dword [esp + 0x48]
mov esi, dword [esp + 0x18]
lea eax, [esp + 0x38]
push dword [esp + 0x50]
push dword [esp + 0x2c]
push dword [esp + 0x48]
push eax
sub esp, 0xc
mov edi, esp
push dword [esp + 0x50]
movsd dword es:[edi], dword [esi]
push ebp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.00513906
add esp, 0x28
mov ebx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
cmp ebx, 0xffffff88
ja 0x510edd
mov edx, dword [esp + 0x40]
add ebp, ebx
mov dword [esp + 0x20], ebp
inc edx
mov dword [esp + 0x40], edx
cmp edx, dword [esp + 0x1a0]
jl 0x510694
mov edi, dword [esp + 0x50]
lea esi, [esp + 0x118]
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x3c]
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 + 0x50]
cmp dword [esi + 0x7608], 2
jne 0x510eb5
mov eax, dword [esp + 0x30]
sub ebp, ecx
sub eax, ebx
cmp ebp, eax
ja 0x510684
test ebx, ebx
je 0x510ea9
push ebp
push ecx
push ebx
call fcn.005282a0
add esp, 0xc
add ebx, ebp
lea ecx, [esi + 0x760c]
lea ebp, [esi + 0x1760c]
mov eax, dword [esp + 0x30]
sub ebp, ecx
sub eax, ebx
cmp ebp, eax
ja 0x510684
test ebx, ebx
je 0x510ed6
push ebp
push ecx
push ebx
call fcn.005282a0
add esp, 0xc
add ebx, ebp
sub ebx, dword [esp + 0xc0]
mov ecx, dword [esp + 0x184]
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00527919
add esp, 0x178
ret