Function at 0x4951f0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x240
mov dword [esp + 0xa4], edx
cmp dword [esp + 0x258], 0
je 0x497fc2
mov eax, dword [esp + 0x254]
mov edi, dword [esp + 0x25c]
lea ebx, [edi + 7]
mov ebp, ebx
shr ebp, 3
mov esi, eax
shr esi, 3
imul esi, edi
and eax, 7
imul eax, edi
add eax, 7
shr eax, 3
lea edi, [eax + esi]
add eax, esi
inc eax
mov dword [esp + 0x10], ebx
cmp ebx, 0x10
mov ebx, edi
mov edi, eax
setae al
lea esi, [ebp + 1]
cmp esi, ebx
setb ah
and ah, al
mov byte [esp + 0x7b], ah
mov eax, ebx
sub eax, ebp
mov dword [esp + 0x18], eax
cmp ebx, 6
mov edx, 5
cmovae edx, ebx
lea eax, [edx - 4]
mov dword [esp + 0x12c], eax
and eax, 0xfffffffe
mov dword [esp + 0x17c], eax
mov eax, 2
sub eax, ebp
mov dword [esp + 0xd4], eax
mov eax, 3
sub eax, ebp
mov dword [esp + 0x120], eax
mov esi, edx
and esi, 0xfffffffe
mov dword [esp + 0xd0], esi
or edx, 1
mov dword [esp + 0x128], edx
mov eax, ebp
not eax
add eax, esi
mov dword [esp + 0x11c], eax
mov eax, esi
sub eax, ebp
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0x12c]
shr eax, 1
inc eax
mov esi, ebp
and esi, 0xffffffe0
mov dword [esp + 0x3c], esi
mov esi, ebp
and esi, 0xfffffff8
mov dword [esp + 0x9c], esi
mov esi, ebp
and esi, 3
mov dword [esp + 0xc4], esi
mov dword [esp + 0x174], eax
and eax, 0xfffffff8
mov edx, dword [esp + 0x18]
mov esi, edx
and esi, 0xffffffe0
mov dword [esp + 0x64], esi
mov esi, edx
and esi, 0xfffffff8
mov dword [esp + 0x98], esi
and edx, 0xfffffff0
mov dword [esp + 0xd8], edx
mov esi, ebx
and esi, 0xffffffe0
mov dword [esp + 0x7c], esi
mov esi, ebx
and esi, 0xfffffff8
mov dword [esp + 0xdc], esi
mov dword [esp + 0x14], ebx
mov esi, ebx
and esi, 3
mov dword [esp + 0xe0], esi
mov esi, ebp
neg esi
mov dword [esp + 0xc0], esi
mov esi, ecx
sub esi, ebp
mov dword [esp + 0x38], esi
mov ebx, dword [esp + 0xa4]
add dword [esp + 0x128], ebx
movdqa xmm5, xmmword [0x5eb4f0]
movdqa xmm3, xmmword [0x5eb4a0]
lea esi, [ebp + 2]
mov dword [esp + 0x180], esi
lea esi, [ebp + 3]
mov dword [esp + 0x130], esi
lea edx, [ebx + 1]
mov dword [esp + 0x150], edx
lea edx, [ebp + ecx]
mov dword [esp + 0x14c], edx
lea esi, [ebp + ebx + 1]
mov dword [esp + 0x194], esi
mov esi, dword [esp + 0xd0]
lea esi, [esi - 1]
mov dword [esp + 0x114], esi
lea esi, [eax + eax + 3]
mov dword [esp + 0x170], esi
mov dword [esp + 0x124], eax
lea eax, [eax + eax + 2]
mov dword [esp + 0x16c], eax
mov edx, ebp
mov eax, dword [esp + 0x64]
lea eax, [ebp + eax]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x98]
lea eax, [ebp + eax]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xd8]
lea eax, [ebp + eax]
mov dword [esp + 0x178], eax
lea eax, [ebx + 0x11]
lea esi, [ecx + 0x10]
mov dword [esp + 0x34], esi
lea esi, [ebx + 0x12]
mov ebp, dword [esp + 0xd4]
lea ebp, [ecx + ebp]
mov dword [esp + 0x148], ebp
lea ebp, [ebx + 4]
mov dword [esp + 0x20], ebp
lea ebp, [ecx + edx + 3]
mov dword [esp + 0x154], ebp
lea ebp, [edx + ebx + 4]
mov dword [esp + 0xa8], ebp
lea ebp, [edx + ebx + 0x11]
mov dword [esp + 0xc8], ebp
mov dword [esp], edx
lea ebp, [ebx + edx]
inc ebp
mov dword [esp + 0x80], ebp
lea ebx, [ecx + 1]
xor ebp, ebp
mov edx, dword [esp + 0x14c]
mov dword [esp + 0xa0], edx
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x150]
mov dword [esp + 4], edx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x144], ecx
mov dword [esp + 0x198], edi
jmp 0x49551a
mov ecx, ebx
mov ebp, dword [esp + 0x19c]
inc ebp
mov edi, dword [esp + 0x198]
mov eax, dword [esp + 0x40]
add eax, edi
add dword [esp + 0x34], ebx
add esi, edi
mov dword [esp + 4], esi
add dword [esp + 8], ebx
mov esi, dword [esp + 0x158]
add esi, edi
add dword [esp + 0x148], ebx
add dword [esp + 0x38], ebx
add dword [esp + 0x20], edi
add dword [esp + 0x154], ebx
add dword [esp + 0xa8], edi
add dword [esp + 0xc8], edi
add dword [esp + 0x80], edi
add dword [esp + 0xa0], ebx
mov ebx, dword [esp + 0x68]
add ebx, ecx
cmp ebp, dword [esp + 0x258]
mov ecx, dword [esp + 0x144]
je 0x497fc2
mov dword [esp + 0x158], esi
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc], eax
mov eax, edi
imul eax, ebp
mov esi, dword [esp + 0xa4]
movzx esi, byte [esi + eax]
cmp esi, 4
ja case.default.0x49558d
mov dword [esp + 0x68], ebx
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x19c], ebp
imul ebx, ebp
add ecx, ebx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x150]
lea ebp, [ecx + eax]
mov ecx, dword [esp + 0x14c]
add ecx, ebx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x194]
lea edi, [ecx + eax]
mov ecx, dword [esp + 0xa4]
add ecx, eax
inc ecx
jmp dword [esi*4 + 0x5eb714]
mov ebx, dword [esp + 0x14]
test ebx, ebx
mov esi, dword [esp + 4]
je 0x4954a0
xor eax, eax
cmp ebx, 8
jb 0x49562b
mov ecx, dword [esp + 0x1c]
sub ecx, ebp
cmp ecx, 0x20
jb 0x49562b
xor ecx, ecx
cmp ebx, 0x20
jb 0x495604
xor eax, eax
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
nop
movdqu xmm0, xmmword [edx + eax - 0x10]
movdqu xmm1, xmmword [edx + eax]
movdqu xmmword [esi + eax - 0x10], xmm0
movdqu xmmword [esi + eax], xmm1
add eax, 0x20
cmp ecx, eax
jne 0x4955d0
cmp ebx, ecx
mov esi, dword [esp + 4]
je 0x4954a0
mov eax, dword [esp + 0x7c]
mov ecx, eax
test bl, 0x18
je 0x49562b
mov edx, dword [esp + 0xdc]
mov eax, dword [esp + 8]
nop
movq xmm0, qword [esi + ecx]
movq qword [eax + ecx], xmm0
add ecx, 8
cmp edx, ecx
jne 0x495610
mov eax, edx
cmp ebx, edx
je 0x4954a0
mov ecx, eax
not ecx
add ecx, ebx
test bl, 3
je 0x49565b
mov edx, dword [esp + 0xe0]
mov edi, dword [esp + 8]
nop word cs:[eax + eax]
movzx ebx, byte [esi + eax]
mov byte [edi + eax], bl
inc eax
dec edx
jne 0x495650
cmp ecx, 3
mov ebx, dword [esp + 0x14]
jb 0x4954a0
nop dword [eax + eax]
mov edi, dword [esp + 0x20]
movzx ecx, byte [edi + eax - 3]
mov edx, dword [esp + 8]
mov byte [edx + eax], cl
movzx ecx, byte [edi + eax - 2]
mov byte [edx + eax + 1], cl
movzx ecx, byte [edi + eax - 1]
mov byte [edx + eax + 2], cl
movzx ecx, byte [edi + eax]
mov byte [edx + eax + 3], cl
add eax, 4
cmp ebx, eax
jne 0x495670
jmp 0x4954a0
mov dword [esp + 0x44], edi
mov dword [esp + 0x54], ecx
cmp dword [esp + 0x10], 8
mov edx, dword [esp]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 8]
mov esi, dword [esp + 4]
mov dword [esp + 8], edi
mov dword [esp + 0x20], ebx
jb 0x496079
xor eax, eax
cmp dword [esp + 0x10], 0x40
jb 0x49577f
mov ecx, dword [esp + 0x1c]
sub ecx, ebp
cmp ecx, 0x20
jb 0x49577f
xor ecx, ecx
cmp dword [esp + 0x10], 0x100
jb 0x49574a
xor eax, eax
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x34]
nop word cs:[eax + eax]
movdqu xmm0, xmmword [esi + eax - 0x10]
movdqu xmm1, xmmword [esi + eax]
movdqu xmmword [edi + eax - 0x10], xmm0
movdqu xmmword [edi + eax], xmm1
add eax, 0x20
cmp ecx, eax
jne 0x495710
cmp edx, ecx
mov esi, dword [esp + 4]
mov edi, dword [esp + 8]
je 0x496079
mov eax, dword [esp + 0x3c]
mov ecx, eax
test byte [esp + 0x10], 0xc0
je 0x49577f
mov ebp, edx
mov edx, esi
mov esi, dword [esp + 0x9c]
nop word cs:[eax + eax]
movq xmm0, qword [edx + ecx]
movq qword [edi + ecx], xmm0
add ecx, 8
cmp esi, ecx
jne 0x495760
mov eax, esi
cmp ebp, esi
mov esi, edx
mov edx, ebp
je 0x496079
mov ecx, edx
mov edx, eax
not edx
add edx, ecx
mov ebp, ecx
test cl, 3
je 0x496033
mov esi, dword [esp + 0xc4]
mov ecx, dword [esp + 4]
nop dword [eax]
movzx ebx, byte [ecx + eax]
mov byte [edi + eax], bl
inc eax
dec esi
jne 0x4957a0
jmp 0x496037
cmp dword [esp + 0xc], 0
je 0x495ab4
mov ebx, dword [esp + 0x14]
test ebx, ebx
mov esi, dword [esp + 4]
je 0x4954a0
xor eax, eax
cmp ebx, 8
jb 0x4958a4
mov edi, esi
mov ecx, dword [esp + 0x1c]
mov edx, ecx
sub edx, ebp
sub ecx, dword [esp + 0xc]
cmp edx, 0x20
jb 0x4958a4
jb 0x4958a4
cmp ecx, 0x20
mov edi, dword [esp + 0xc]
jb 0x4958a4
xor ecx, ecx
cmp ebx, 0x20
jb 0x495867
xor eax, eax
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
nop word cs:[eax + eax]
movdqu xmm0, xmmword [edx + eax - 0x10]
movdqu xmm1, xmmword [edx + eax]
movdqu xmm2, xmmword [edi + eax]
paddb xmm2, xmm0
movdqu xmm0, xmmword [edi + eax + 0x10]
paddb xmm0, xmm1
movdqu xmmword [esi + eax - 0x10], xmm2
movdqu xmmword [esi + eax], xmm0
add eax, 0x20
cmp ecx, eax
jne 0x495820
cmp ebx, ecx
mov esi, dword [esp + 4]
je 0x4954a0
mov eax, dword [esp + 0x7c]
mov ecx, eax
test bl, 0x18
je 0x4958a4
mov edx, dword [esp + 0xdc]
mov eax, dword [esp + 8]
nop word cs:[eax + eax]
movq xmm0, qword [esi + ecx]
movq xmm1, qword [edi + ecx]
paddb xmm1, xmm0
movq qword [eax + ecx], xmm1
add ecx, 8
cmp edx, ecx
jne 0x495880
mov eax, edx
cmp ebx, edx
je 0x4954a0
mov ebp, eax
not ebp
add ebp, ebx
mov edx, dword [esp + 0xe0]
test edx, edx
je 0x4961f7
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 8]
nop word cs:[eax + eax]
movzx ebx, byte [edi + eax]
add bl, byte [esi + eax]
mov byte [ecx + eax], bl
inc eax
dec edx
jne 0x4958d0
jmp 0x4961fb
mov ebx, edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x15c], ebp
mov dword [esp + 0x54], ecx
mov edx, dword [esp + 0xc]
test edx, edx
mov edi, dword [esp + 8]
je 0x495bc6
cmp dword [esp + 0x10], 8
mov esi, dword [esp + 4]
mov ebp, dword [esp]
jb 0x495982
xor eax, eax
cmp dword [esp + 0x10], 0x40
jae 0x495e6e
mov ecx, eax
or ecx, 1
test byte [esp + 0x10], 8
je 0x495949
mov edx, dword [esp + 0xc]
movzx ebx, byte [edx + eax]
shr bl, 1
mov edx, dword [esp + 0x54]
add bl, byte [edx + eax]
mov edx, dword [esp + 0x1c]
mov byte [edx + eax], bl
mov ebx, dword [esp + 0x68]
mov eax, ecx
mov ebp, dword [esp]
cmp ebp, ecx
mov esi, dword [esp + 4]
mov edx, dword [esp + 0xc]
je 0x495982
nop dword [eax + eax]
movzx ecx, byte [edx + eax]
shr cl, 1
add cl, byte [esi + eax]
mov byte [ebx + eax - 1], cl
movzx ecx, byte [edx + eax + 1]
shr cl, 1
add cl, byte [esi + eax + 1]
mov byte [ebx + eax], cl
add eax, 2
cmp ebp, eax
jne 0x495960
mov ebx, dword [esp + 0x14]
cmp ebp, ebx
mov eax, dword [esp + 0x24]
jae 0x4954a0
mov ecx, dword [esp]
cmp dword [esp + 0x18], 8
jae 0x495f75
mov edx, ebx
sub edx, ecx
lea eax, [ecx + 1]
test dl, 1
je 0x4959d7
mov edx, ecx
sub edx, dword [esp]
mov ebp, dword [esp + 0x1c]
movzx esi, byte [ebp + edx]
mov edx, dword [esp + 0xc]
movzx edx, byte [edx + ecx]
add edx, esi
mov esi, dword [esp + 4]
shr edx, 1
mov edi, dword [esp + 0x54]
add dl, byte [edi + ecx]
mov byte [ebp + ecx], dl
mov ecx, eax
cmp ebx, eax
mov edi, dword [esp + 0xc]
je 0x4954a0
nop word cs:[eax + eax]
mov ebp, dword [esp + 0x38]
movzx edx, byte [ebp + ecx]
movzx eax, byte [edi + ecx]
add eax, edx
shr eax, 1
add al, byte [esi + ecx]
mov ebx, dword [esp + 0x68]
mov byte [ebx + ecx - 1], al
movzx edx, byte [ebp + ecx + 1]
movzx eax, byte [edi + ecx + 1]
add eax, edx
shr eax, 1
add al, byte [esi + ecx + 1]
mov byte [ebx + ecx], al
mov ebx, dword [esp + 0x14]
add ecx, 2
cmp ebx, ecx
jne 0x4959f0
jmp 0x4954a0
mov dword [esp + 0x84], ebx
mov dword [esp + 0x44], edi
cmp dword [esp + 0xc], 0
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 8]
mov dword [esp + 0x20], ebx
je 0x495c95
mov dword [esp + 0x15c], ebp
xor ebp, ebp
cmp dword [esp + 0x10], 8
jb 0x4976df
mov dword [esp + 0x54], ecx
xor ecx, ecx
cmp dword [esp + 0x10], 0x40
jae 0x495d90
mov esi, dword [esp]
mov edx, ecx
not edx
add edx, esi
mov dword [esp + 0x24], edx
mov esi, dword [esp + 0xc4]
test esi, esi
je 0x49625d
mov edi, dword [esp + 4]
mov ebp, dword [esp + 0xc]
mov ebx, dword [esp + 8]
movzx edx, byte [ebp + ecx]
add dl, byte [edi + ecx]
mov byte [ebx + ecx], dl
inc ecx
dec esi
jne 0x495aa0
jmp 0x496269
mov ebx, dword [esp + 0x14]
test ebx, ebx
mov esi, dword [esp + 4]
je 0x4954a0
xor eax, eax
cmp ebx, 8
jb 0x495b4b
mov ecx, dword [esp + 0x1c]
sub ecx, ebp
cmp ecx, 0x20
jb 0x495b4b
xor ecx, ecx
cmp ebx, 0x20
jb 0x495b24
xor eax, eax
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
nop
movdqu xmm0, xmmword [edx + eax - 0x10]
movdqu xmm1, xmmword [edx + eax]
movdqu xmmword [esi + eax - 0x10], xmm0
movdqu xmmword [esi + eax], xmm1
add eax, 0x20
cmp ecx, eax
jne 0x495af0
cmp ebx, ecx
mov esi, dword [esp + 4]
je 0x4954a0
mov eax, dword [esp + 0x7c]
mov ecx, eax
test bl, 0x18
je 0x495b4b
mov edx, dword [esp + 0xdc]
mov eax, dword [esp + 8]
nop
movq xmm0, qword [esi + ecx]
movq qword [eax + ecx], xmm0
add ecx, 8
cmp edx, ecx
jne 0x495b30
mov eax, edx
cmp ebx, edx
je 0x4954a0
mov ecx, eax
not ecx
add ecx, ebx
test bl, 3
je 0x495b7b
mov edx, dword [esp + 0xe0]
mov edi, dword [esp + 8]
nop word cs:[eax + eax]
movzx ebx, byte [esi + eax]
mov byte [edi + eax], bl
inc eax
dec edx
jne 0x495b70
cmp ecx, 3
mov ebx, dword [esp + 0x14]
jb 0x4954a0
nop dword [eax + eax]
mov edi, dword [esp + 0x20]
movzx ecx, byte [edi + eax - 3]
mov edx, dword [esp + 8]
mov byte [edx + eax], cl
movzx ecx, byte [edi + eax - 2]
mov byte [edx + eax + 1], cl
movzx ecx, byte [edi + eax - 1]
mov byte [edx + eax + 2], cl
movzx ecx, byte [edi + eax]
mov byte [edx + eax + 3], cl
add eax, 4
cmp ebx, eax
jne 0x495b90
jmp 0x4954a0
cmp dword [esp + 0x10], 8
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0x20]
mov ebp, dword [esp]
mov dword [esp + 0x20], edx
jb 0x4968fb
xor eax, eax
cmp dword [esp + 0x10], 0x40
jb 0x496887
mov ecx, dword [esp + 0x1c]
sub ecx, dword [esp + 0x15c]
cmp ecx, 0x20
mov ebp, dword [esp]
jb 0x49688a
xor ecx, ecx
cmp dword [esp + 0x10], 0x100
jb 0x495c5d
xor eax, eax
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x34]
nop
movdqu xmm0, xmmword [ecx + eax - 0x10]
movdqu xmm1, xmmword [ecx + eax]
movdqu xmmword [edi + eax - 0x10], xmm0
movdqu xmmword [edi + eax], xmm1
add eax, 0x20
cmp esi, eax
jne 0x495c20
mov eax, dword [esp]
mov ebp, eax
cmp eax, esi
mov edi, dword [esp + 8]
je 0x4968fb
mov ecx, esi
mov eax, esi
test byte [esp + 0x10], 0xc0
je 0x49688a
mov esi, dword [esp + 0x9c]
mov eax, dword [esp + 4]
nop dword [eax + eax]
movq xmm0, qword [eax + ecx]
movq qword [edi + ecx], xmm0
add ecx, 8
cmp esi, ecx
jne 0x495c70
mov eax, esi
mov ecx, dword [esp]
mov ebp, ecx
cmp ecx, esi
jne 0x49688a
jmp 0x4968fb
mov dword [esp + 0x54], ecx
cmp dword [esp + 0x10], 8
mov edx, dword [esp]
mov esi, dword [esp + 4]
jb 0x496709
xor eax, eax
cmp dword [esp + 0x10], 0x40
jb 0x495d5f
mov ecx, dword [esp + 0x1c]
sub ecx, ebp
cmp ecx, 0x20
jb 0x495d5f
xor ecx, ecx
cmp dword [esp + 0x10], 0x100
jb 0x495d2a
xor eax, eax
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x34]
nop word cs:[eax + eax]
movdqu xmm0, xmmword [esi + eax - 0x10]
movdqu xmm1, xmmword [esi + eax]
movdqu xmmword [edi + eax - 0x10], xmm0
movdqu xmmword [edi + eax], xmm1
add eax, 0x20
cmp ecx, eax
jne 0x495cf0
cmp edx, ecx
mov esi, dword [esp + 4]
mov edi, dword [esp + 8]
je 0x496709
mov eax, dword [esp + 0x3c]
mov ecx, eax
test byte [esp + 0x10], 0xc0
je 0x495d5f
mov ebp, edx
mov edx, esi
mov esi, dword [esp + 0x9c]
nop word cs:[eax + eax]
movq xmm0, qword [edx + ecx]
movq qword [edi + ecx], xmm0
add ecx, 8
cmp esi, ecx
jne 0x495d40
mov eax, esi
cmp ebp, esi
mov esi, edx
mov edx, ebp
je 0x496709
mov ecx, edx
mov edx, eax
not edx
add edx, ecx
mov ebp, ecx
test cl, 3
je 0x4966c4
mov esi, dword [esp + 0xc4]
mov ecx, dword [esp + 4]
nop dword [eax]
movzx ebx, byte [ecx + eax]
mov byte [edi + eax], bl
inc eax
dec esi
jne 0x495d80
jmp 0x4966c8
mov edx, dword [esp + 0x1c]
mov esi, edx
sub esi, dword [esp + 0x15c]
sub edx, dword [esp + 0xc]
cmp esi, 0x20
mov ebp, dword [esp + 0x34]
jb 0x495a78
jb 0x495a78
cmp edx, 0x20
mov esi, dword [esp]
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
jb 0x495a7b
xor edx, edx
cmp dword [esp + 0x10], 0x100
jb 0x495e31
xor ecx, ecx
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
nop
movdqu xmm0, xmmword [esi + ecx - 0x10]
movdqu xmm1, xmmword [esi + ecx]
movdqu xmm2, xmmword [edi + ecx]
paddb xmm2, xmm0
movdqu xmm0, xmmword [edi + ecx + 0x10]
paddb xmm0, xmm1
movdqu xmmword [ebp + ecx - 0x10], xmm2
movdqu xmmword [ebp + ecx], xmm0
add ecx, 0x20
cmp edx, ecx
jne 0x495de0
mov esi, dword [esp]
cmp esi, edx
mov ebx, dword [esp + 8]
je 0x4962b9
mov ecx, dword [esp + 0x3c]
mov edx, ecx
test byte [esp + 0x10], 0xc0
je 0x495a7b
mov esi, dword [esp + 0x9c]
mov ecx, dword [esp + 4]
nop dword [eax]
movq xmm0, qword [ecx + edx]
movq xmm1, qword [edi + edx]
paddb xmm1, xmm0
movq qword [ebx + edx], xmm1
add edx, 8
cmp esi, edx
jne 0x495e40
mov ecx, esi
mov edx, esi
mov esi, dword [esp]
cmp esi, edx
jne 0x495a7b
jmp 0x4962b9
mov ecx, dword [esp + 0x1c]
mov esi, ecx
sub esi, dword [esp + 0x15c]
sub ecx, dword [esp + 0xc]
cmp esi, 0x20
jb 0x49591f
jb 0x49591f
cmp ecx, 0x20
mov esi, dword [esp + 4]
mov edx, dword [esp + 0xc]
jb 0x49591f
xor ecx, ecx
cmp dword [esp + 0x10], 0x100
jb 0x495f2a
movdqa xmm4, xmm3
xor eax, eax
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x3c]
nop dword [eax]
movdqu xmm0, xmmword [ecx + eax - 0x10]
movdqu xmm1, xmmword [ecx + eax]
movdqu xmm2, xmmword [edx + eax]
movdqu xmm3, xmmword [edx + eax + 0x10]
psrlw xmm2, 1
pand xmm2, xmm5
paddb xmm2, xmm0
psrlw xmm3, 1
pand xmm3, xmm5
paddb xmm3, xmm1
movdqu xmmword [edi + eax - 0x10], xmm2
movdqu xmmword [edi + eax], xmm3
add eax, 0x20
cmp esi, eax
jne 0x495ec0
mov ebp, dword [esp]
cmp ebp, esi
movdqa xmm3, xmm4
mov esi, dword [esp + 4]
mov edi, dword [esp + 8]
je 0x495982
mov eax, dword [esp + 0x3c]
mov ecx, eax
test byte [esp + 0x10], 0xc0
je 0x49591f
mov eax, dword [esp + 0x9c]
nop word cs:[eax + eax]
movq xmm0, qword [esi + ecx]
movq xmm1, qword [edx + ecx]
psrlw xmm1, 1
pand xmm1, xmm5
paddb xmm1, xmm0
movq qword [edi + ecx], xmm1
add ecx, 8
cmp eax, ecx
jne 0x495f40
mov ecx, eax
mov ebp, dword [esp]
cmp ebp, eax
jne 0x49591f
jmp 0x495982
mov esi, eax
sub esi, dword [esp + 0x44]
mov ecx, dword [esp]
lea edi, [ecx + edx]
sub eax, edi
cmp esi, 0x10
mov esi, dword [esp + 4]
jb 0x4959a0
mov ecx, dword [esp]
jb 0x4959a0
mov ecx, dword [esp]
cmp dword [esp + 0x10], 0x80
jb 0x4959a0
mov ecx, dword [esp]
cmp eax, 0x10
jb 0x4959a0
xor edx, edx
cmp dword [esp + 0x18], 0x10
jae 0x496ab0
mov esi, dword [esp + 0x98]
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 8]
mov ebp, dword [esp + 0xa0]
nop dword [eax]
movq xmm0, qword [ecx + edx]
movq xmm1, qword [eax + edx]
pxor xmm6, xmm6
punpcklbw xmm1, xmm6
movq xmm2, qword [edi + edx]
punpcklbw xmm2, xmm6
paddw xmm2, xmm1
psrlw xmm2, 1
packuswb xmm2, xmm2
paddb xmm2, xmm0
movq qword [ebp + edx], xmm2
add edx, 8
cmp esi, edx
jne 0x495fe0
mov ecx, dword [esp + 0xbc]
cmp dword [esp + 0x18], esi
mov esi, dword [esp + 4]
je 0x4954a0
jmp 0x4959a0
mov ecx, dword [esp + 4]
cmp edx, 3
mov esi, ecx
mov ebx, dword [esp + 0x20]
mov edx, ebp
jb 0x496079
nop word cs:[eax + eax]
movzx ecx, byte [ebx + eax - 3]
mov byte [edi + eax], cl
movzx ecx, byte [ebx + eax - 2]
mov byte [edi + eax + 1], cl
movzx ecx, byte [ebx + eax - 1]
mov byte [edi + eax + 2], cl
movzx ecx, byte [ebx + eax]
mov byte [edi + eax + 3], cl
add eax, 4
cmp edx, eax
jne 0x496050
mov ebx, dword [esp + 0x14]
cmp edx, ebx
jae 0x4954a0
mov eax, dword [esp]
cmp dword [esp + 0x18], 8
jae 0x4960fd
mov edx, ebx
sub edx, eax
lea ebp, [eax + 1]
test dl, 1
je 0x4960b4
mov edx, eax
sub edx, dword [esp]
mov ecx, dword [esp + 0x1c]
movzx edx, byte [ecx + edx]
mov edi, dword [esp + 0x54]
add dl, byte [edi + eax]
mov byte [ecx + eax], dl
mov eax, ebp
cmp ebx, ebp
je 0x4954a0
mov ecx, ebx
sub ecx, eax
mov edx, dword [esp + 0x68]
add edx, eax
inc eax
nop word [eax + eax]
mov edi, dword [esp + 0x38]
movzx ebx, byte [edi + eax - 1]
add bl, byte [esi + eax - 1]
mov byte [edx - 1], bl
movzx ebx, byte [edi + eax]
add bl, byte [esi + eax]
mov byte [edx], bl
mov ebx, dword [esp + 0x14]
add edx, 2
add eax, 2
add ecx, 0xfffffffe
jne 0x4960d0
jmp 0x4954a0
mov ecx, dword [esp + 0x24]
sub ecx, dword [esp + 0x44]
mov eax, dword [esp]
cmp ecx, 0x20
jb 0x49608f
mov eax, dword [esp]
jb 0x49608f
mov eax, dword [esp]
cmp dword [esp + 0x10], 0x100
jb 0x49608f
xor ecx, ecx
cmp dword [esp + 0x18], 0x20
jb 0x4961a5
mov eax, dword [esp]
mov esi, dword [esp + 0x34]
add eax, esi
xor ecx, ecx
mov edx, dword [esp + 0x64]
mov ebp, dword [esp + 0xc8]
nop word cs:[eax + eax]
movdqu xmm0, xmmword [ebp + ecx - 0x10]
movdqu xmm1, xmmword [ebp + ecx]
movdqu xmm2, xmmword [esi + ecx - 0x10]
paddb xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx]
paddb xmm0, xmm1
movdqu xmmword [eax + ecx - 0x10], xmm2
movdqu xmmword [eax + ecx], xmm0
add ecx, 0x20
cmp edx, ecx
jne 0x496150
cmp dword [esp + 0x18], edx
mov esi, dword [esp + 4]
je 0x4954a0
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0xcc]
test byte [esp + 0x18], 0x18
je 0x49608f
mov eax, dword [esp + 8]
add eax, ecx
mov edx, dword [esp + 0x98]
mov esi, dword [esp + 0x80]
mov ebp, dword [esp + 0xa0]
movq xmm0, qword [esi + ecx]
movq xmm1, qword [eax]
paddb xmm1, xmm0
movq qword [ebp + ecx], xmm1
add ecx, 8
add eax, 8
cmp edx, ecx
jne 0x4961c0
mov eax, dword [esp + 0xbc]
cmp dword [esp + 0x18], edx
mov esi, dword [esp + 4]
je 0x4954a0
jmp 0x49608f
mov edi, dword [esp + 0xc]
cmp ebp, 3
mov ebx, dword [esp + 0x14]
mov dword [esp + 4], esi
jb 0x4954a0
nop dword [eax]
movzx ecx, byte [edi + eax]
mov ebp, ebx
mov ebx, dword [esp + 0x20]
add cl, byte [ebx + eax - 3]
mov edx, dword [esp + 8]
mov byte [edx + eax], cl
movzx ecx, byte [edi + eax + 1]
add cl, byte [ebx + eax - 2]
mov byte [edx + eax + 1], cl
movzx ecx, byte [edi + eax + 2]
add cl, byte [ebx + eax - 1]
mov byte [edx + eax + 2], cl
movzx ecx, byte [edi + eax + 3]
add cl, byte [ebx + eax]
mov ebx, ebp
mov esi, dword [esp + 4]
mov byte [edx + eax + 3], cl
add eax, 4
cmp ebp, eax
jne 0x496210
jmp 0x4954a0
mov edi, dword [esp + 4]
mov ebp, dword [esp + 0xc]
mov ebx, dword [esp + 8]
cmp dword [esp + 0x24], 3
mov esi, dword [esp]
jb 0x4962b9
nop word cs:[eax + eax]
movzx edx, byte [ebp + ecx]
add dl, byte [edi + ecx]
mov byte [ebx + ecx], dl
movzx edx, byte [ebp + ecx + 1]
add dl, byte [edi + ecx + 1]
mov byte [ebx + ecx + 1], dl
movzx edx, byte [ebp + ecx + 2]
add dl, byte [edi + ecx + 2]
mov byte [ebx + ecx + 2], dl
movzx edx, byte [ebp + ecx + 3]
add dl, byte [edi + ecx + 3]
mov byte [ebx + ecx + 3], dl
add ecx, 4
cmp esi, ecx
jne 0x496280
cmp dword [esp + 0x10], 0x20
jb 0x496516
mov ebp, dword [esp]
mov eax, dword [esp + 0x130]
cmp eax, dword [esp + 0x14]
mov edi, dword [esp + 8]
jae 0x4976df
mov eax, dword [esp + 0x130]
mov ecx, dword [esp + 0xc]
add eax, ecx
mov dword [esp + 0x54], eax
xor ebp, ebp
nop
mov dword [esp + 0x24], ebp
movzx esi, byte [edi + ebp]
mov eax, dword [esp + 0x54]
movzx edi, byte [eax + ebp - 3]
mov dword [esp + 0x84], edi
mov eax, dword [esp + 0xc]
movzx ebp, byte [eax + ebp]
mov ecx, edi
sub ecx, ebp
mov eax, ecx
neg eax
cmovs eax, ecx
mov ecx, esi
sub ecx, ebp
mov edx, ecx
neg edx
cmovs edx, ecx
lea ebx, [edi + esi]
sub ebx, ebp
sub ebx, ebp
mov ecx, ebx
neg ecx
cmovs ecx, ebx
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x24]
movzx edi, byte [edi + ebx + 1]
cmp edx, eax
cmovae edx, eax
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x54]
movzx eax, byte [ebx + eax - 2]
mov dword [esp + 0x44], eax
mov ebx, esi
cmovb ebx, dword [esp + 0x84]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0xc]
movzx esi, byte [esi + eax + 1]
cmp ecx, edx
cmovb ebx, ebp
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xa8]
add bl, byte [ecx + eax - 3]
mov dword [esp + 0x84], ebx
mov eax, dword [esp + 0x44]
mov ecx, eax
mov ebx, esi
mov dword [esp + 0xac], esi
sub ecx, esi
mov edx, ecx
neg edx
cmovs edx, ecx
mov ecx, edi
sub ecx, esi
mov esi, ecx
neg esi
cmovs esi, ecx
add eax, edi
sub eax, ebx
sub eax, ebx
mov ecx, eax
neg ecx
cmovs ecx, eax
cmp esi, edx
cmovae esi, edx
cmovb edi, dword [esp + 0x44]
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x24]
movzx ebx, byte [eax + edx + 2]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x54]
movzx ebp, byte [edx + eax - 1]
cmp ecx, esi
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
movzx esi, byte [ecx + eax + 2]
mov ecx, edi
cmovb ecx, dword [esp + 0xac]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0xa8]
add cl, byte [edx + eax - 2]
mov dword [esp + 0x44], ecx
mov eax, ebp
sub eax, esi
mov edx, eax
neg edx
cmovs edx, eax
mov eax, ebx
sub eax, esi
mov edi, eax
neg edi
cmovs edi, eax
lea eax, [ebx + ebp]
sub eax, esi
sub eax, esi
mov ecx, eax
neg ecx
cmovs ecx, eax
cmp edi, edx
cmovae edi, edx
cmovb ebx, ebp
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x54]
movzx ebp, byte [edx + eax]
cmp ecx, edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
movzx edi, byte [ecx + eax + 3]
cmovb ebx, esi
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0xa8]
add bl, byte [edx + eax - 1]
mov dword [esp + 0xac], ebx
mov eax, ebp
sub eax, edi
mov esi, eax
neg esi
cmovs esi, eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x24]
movzx edx, byte [eax + ecx + 3]
mov ecx, edx
sub ecx, edi
mov eax, ecx
neg eax
cmovs eax, ecx
lea ecx, [edx + ebp]
mov ebx, ebp
sub ecx, edi
sub ecx, edi
mov ebp, ecx
neg ebp
cmovs ebp, ecx
cmp eax, esi
cmovae eax, esi
cmovb edx, ebx
cmp ebp, eax
mov eax, dword [esp + 8]
cmovb edx, edi
mov edi, eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xa8]
add dl, byte [ecx + eax]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x154]
mov ebx, dword [esp + 0x84]
mov byte [ecx + eax - 3], bl
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x44]
mov byte [ecx + eax - 2], bl
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0xac]
mov byte [ecx + eax - 1], bl
mov eax, dword [esp + 0x24]
mov byte [ecx + eax], dl
mov ebp, dword [esp + 0x24]
mov eax, dword [esp]
add eax, ebp
add eax, 7
add ebp, 4
cmp eax, dword [esp + 0x14]
jb 0x4962f0
add ebp, dword [esp]
jmp 0x4976df
mov ebp, dword [esp]
cmp ebp, 3
jne 0x496699
mov ebp, 3
mov eax, dword [esp + 0x180]
cmp eax, dword [esp + 0x14]
jae 0x4976df
mov eax, dword [esp + 0x1c]
movzx ebx, byte [eax]
mov edx, 3
jmp 0x49663b
movzx ebp, byte [ecx + edx - 2]
mov ecx, dword [esp + 0xc]
movzx eax, byte [ecx + edx + 1]
movzx edi, byte [ecx + edx - 2]
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
add cl, byte [esi + edx - 3]
mov dword [esp + 0x24], ecx
mov ebx, eax
sub ebx, edi
mov ecx, ebx
neg ecx
cmovs ecx, ebx
mov esi, ebp
mov dword [esp + 0x54], ebp
mov ebx, ebp
sub ebx, edi
mov ebp, ebx
neg ebp
cmovs ebp, ebx
lea ebx, [eax + esi]
sub ebx, edi
sub ebx, edi
mov esi, ebx
neg esi
cmovs esi, ebx
cmp ebp, ecx
cmovae ebp, ecx
mov ecx, dword [esp + 0x54]
cmovb ecx, eax
mov eax, dword [esp + 0xc]
movzx ebx, byte [eax + edx + 2]
mov dword [esp + 0x44], ebx
cmp esi, ebp
movzx esi, byte [eax + edx - 1]
cmovb ecx, edi
mov eax, dword [esp + 0x20]
add cl, byte [eax + edx - 2]
mov dword [esp + 0x54], ecx
mov ecx, ebx
sub ecx, esi
mov edi, ecx
neg edi
cmovs edi, ecx
mov eax, dword [esp + 8]
movzx ecx, byte [eax + edx - 1]
mov eax, ecx
sub eax, esi
mov ebp, eax
neg ebp
cmovs ebp, eax
lea eax, [ebx + ecx]
sub eax, esi
sub eax, esi
mov ebx, eax
neg ebx
cmovs ebx, eax
cmp ebp, edi
cmovae ebp, edi
cmovb ecx, dword [esp + 0x44]
cmp ebx, ebp
mov edi, dword [esp + 8]
cmovb ecx, esi
mov eax, dword [esp + 0x20]
add cl, byte [eax + edx - 1]
mov eax, dword [esp + 0x24]
mov byte [edi + edx], al
mov ebx, dword [esp + 0x54]
mov byte [edi + edx + 1], bl
mov byte [edi + edx + 2], cl
mov ebx, eax
lea ebp, [edx + 3]
add edx, 5
cmp edx, dword [esp + 0x14]
mov edx, ebp
jae 0x4976df
mov ecx, dword [esp + 0xc]
movzx ebp, byte [ecx + edx]
movzx eax, byte [ecx + edx - 3]
mov esi, ebp
sub esi, eax
mov ecx, esi
neg ecx
cmovs ecx, esi
movzx esi, bl
mov ebx, esi
sub ebx, eax
mov edi, ebx
neg edi
cmovs edi, ebx
mov dword [esp + 0x54], ebp
add ebp, esi
mov dword [esp + 0x24], eax
sub ebp, eax
sub ebp, eax
mov ebx, ebp
neg ebx
cmovs ebx, ebp
cmp edi, ecx
jb 0x496680
mov edi, ecx
mov dword [esp + 0x54], esi
cmp ebx, edi
mov ecx, dword [esp + 8]
jb 0x496550
mov eax, dword [esp + 0x54]
mov dword [esp + 0x24], eax
jmp 0x496550
cmp byte [esp + 0x7b], 0
je 0x4976df
mov ebx, 2
cmp dword [esp + 0x12c], 0x5e
jae 0x496b52
mov dword [esp + 0x44], 3
jmp 0x4975aa
mov ecx, dword [esp + 4]
cmp edx, 3
mov esi, ecx
mov ebx, dword [esp + 0x20]
mov edx, ebp
jb 0x496709
nop word cs:[eax + eax]
movzx ecx, byte [ebx + eax - 3]
mov byte [edi + eax], cl
movzx ecx, byte [ebx + eax - 2]
mov byte [edi + eax + 1], cl
movzx ecx, byte [ebx + eax - 1]
mov byte [edi + eax + 2], cl
movzx ecx, byte [ebx + eax]
mov byte [edi + eax + 3], cl
add eax, 4
cmp edx, eax
jne 0x4966e0
mov ebx, dword [esp + 0x14]
cmp edx, ebx
jae 0x4954a0
mov eax, dword [esp]
cmp dword [esp + 0x18], 8
jae 0x49678d
mov edx, ebx
sub edx, eax
lea ebp, [eax + 1]
test dl, 1
je 0x496744
mov edx, eax
sub edx, dword [esp]
mov ecx, dword [esp + 0x1c]
movzx edx, byte [ecx + edx]
mov edi, dword [esp + 0x54]
add dl, byte [edi + eax]
mov byte [ecx + eax], dl
mov eax, ebp
cmp ebx, ebp
je 0x4954a0
mov ecx, ebx
sub ecx, eax
mov edx, dword [esp + 0x68]
add edx, eax
inc eax
nop word [eax + eax]
mov edi, dword [esp + 0x38]
movzx ebx, byte [edi + eax - 1]
add bl, byte [esi + eax - 1]
mov byte [edx - 1], bl
movzx ebx, byte [edi + eax]
add bl, byte [esi + eax]
mov byte [edx], bl
mov ebx, dword [esp + 0x14]
add edx, 2
add eax, 2
add ecx, 0xfffffffe
jne 0x496760
jmp 0x4954a0
mov ecx, dword [esp + 0x24]
sub ecx, dword [esp + 0x44]
mov eax, dword [esp]
cmp ecx, 0x20
jb 0x49671f
mov eax, dword [esp]
jb 0x49671f
mov eax, dword [esp]
cmp dword [esp + 0x10], 0x100
jb 0x49671f
xor ecx, ecx
cmp dword [esp + 0x18], 0x20
jb 0x496835
mov eax, dword [esp]
mov esi, dword [esp + 0x34]
add eax, esi
xor ecx, ecx
mov edx, dword [esp + 0x64]
mov ebp, dword [esp + 0xc8]
nop word cs:[eax + eax]
movdqu xmm0, xmmword [ebp + ecx - 0x10]
movdqu xmm1, xmmword [ebp + ecx]
movdqu xmm2, xmmword [esi + ecx - 0x10]
paddb xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx]
paddb xmm0, xmm1
movdqu xmmword [eax + ecx - 0x10], xmm2
movdqu xmmword [eax + ecx], xmm0
add ecx, 0x20
cmp edx, ecx
jne 0x4967e0
cmp dword [esp + 0x18], edx
mov esi, dword [esp + 4]
je 0x4954a0
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0xcc]
test byte [esp + 0x18], 0x18
je 0x49671f
mov eax, dword [esp + 8]
add eax, ecx
mov edx, dword [esp + 0x98]
mov esi, dword [esp + 0x80]
mov ebp, dword [esp + 0xa0]
movq xmm0, qword [esi + ecx]
movq xmm1, qword [eax]
paddb xmm1, xmm0
movq qword [ebp + ecx], xmm1
add ecx, 8
add eax, 8
cmp edx, ecx
jne 0x496850
mov eax, dword [esp + 0xbc]
cmp dword [esp + 0x18], edx
mov esi, dword [esp + 4]
je 0x4954a0
jmp 0x49671f
mov ebp, dword [esp]
mov ecx, eax
not ecx
mov edx, ebp
add ecx, ebp
test dl, 3
je 0x4968bb
mov esi, dword [esp + 0xc4]
mov edx, dword [esp + 4]
nop word cs:[eax + eax]
movzx ebx, byte [edx + eax]
mov byte [edi + eax], bl
inc eax
dec esi
jne 0x4968b0
cmp ecx, 3
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
mov ebp, dword [esp]
jb 0x4968fb
nop dword [eax + eax]
movzx ecx, byte [edx + eax - 3]
mov byte [edi + eax], cl
movzx ecx, byte [edx + eax - 2]
mov byte [edi + eax + 1], cl
movzx ecx, byte [edx + eax - 1]
mov byte [edi + eax + 2], cl
movzx ecx, byte [edx + eax]
mov byte [edi + eax + 3], cl
add eax, 4
mov ecx, ebp
cmp ebp, eax
jne 0x4968d0
cmp ebp, ebx
mov esi, dword [esp + 4]
jae 0x4954a0
mov eax, dword [esp]
cmp dword [esp + 0x18], 8
jae 0x496981
mov edx, ebx
sub edx, eax
lea ebp, [eax + 1]
test dl, 1
je 0x496938
mov edx, eax
sub edx, dword [esp]
mov ecx, dword [esp + 0x1c]
movzx edx, byte [ecx + edx]
shr dl, 1
mov edi, dword [esp + 0x54]
add dl, byte [edi + eax]
mov byte [ecx + eax], dl
mov eax, ebp
cmp ebx, ebp
je 0x4954a0
mov ecx, ebx
sub ecx, eax
mov edx, dword [esp + 0x68]
add edx, eax
inc eax
nop dword [eax + eax]
mov edi, dword [esp + 0x38]
movzx ebx, byte [edi + eax - 1]
shr bl, 1
add bl, byte [esi + eax - 1]
mov byte [edx - 1], bl
movzx ebx, byte [edi + eax]
shr bl, 1
add bl, byte [esi + eax]
mov byte [edx], bl
mov ebx, dword [esp + 0x14]
add edx, 2
add eax, 2
add ecx, 0xfffffffe
jne 0x496950
jmp 0x4954a0
mov ecx, dword [esp + 0x24]
sub ecx, dword [esp + 0x44]
mov eax, dword [esp]
cmp ecx, 0x20
jb 0x496911
mov eax, dword [esp]
jb 0x496911
mov eax, dword [esp]
cmp dword [esp + 0x10], 0x100
jb 0x496911
xor ecx, ecx
cmp dword [esp + 0x18], 0x20
jb 0x496a4a
movdqa xmm4, xmm3
mov eax, dword [esp]
mov esi, dword [esp + 0x34]
add eax, esi
xor ecx, ecx
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0xc8]
nop word cs:[eax + eax]
movdqu xmm0, xmmword [edx + ecx - 0x10]
movdqu xmm1, xmmword [edx + ecx]
movdqu xmm2, xmmword [esi + ecx - 0x10]
movdqu xmm3, xmmword [esi + ecx]
psrlw xmm2, 1
pand xmm2, xmm5
paddb xmm2, xmm0
psrlw xmm3, 1
pand xmm3, xmm5
paddb xmm3, xmm1
movdqu xmmword [eax + ecx - 0x10], xmm2
movdqu xmmword [eax + ecx], xmm3
add ecx, 0x20
cmp edi, ecx
jne 0x4969e0
cmp dword [esp + 0x18], edi
movdqa xmm3, xmm4
mov esi, dword [esp + 4]
je 0x4954a0
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0xcc]
test byte [esp + 0x18], 0x18
je 0x496911
mov eax, dword [esp + 8]
add eax, ecx
mov edx, dword [esp + 0x98]
mov esi, dword [esp + 0x80]
mov ebp, dword [esp + 0xa0]
nop word cs:[eax + eax]
movq xmm0, qword [esi + ecx]
movq xmm1, qword [eax]
psrlw xmm1, 1
pand xmm1, xmm5
paddb xmm1, xmm0
movq qword [ebp + ecx], xmm1
add ecx, 8
add eax, 8
cmp edx, ecx
jne 0x496a70
mov eax, dword [esp + 0xbc]
cmp dword [esp + 0x18], edx
mov esi, dword [esp + 4]
je 0x4954a0
jmp 0x496911
movdqa xmm7, xmm3
mov ecx, dword [esp]
mov eax, dword [esp + 8]
add ecx, eax
xor edx, edx
mov esi, dword [esp + 0xd8]
mov ebp, dword [esp + 0x80]
nop dword [eax]
movdqu xmm0, xmmword [ebp + edx]
movdqu xmm2, xmmword [eax + edx]
movdqa xmm3, xmm2
pxor xmm6, xmm6
punpckhbw xmm3, xmm6
punpcklbw xmm2, xmm6
movdqu xmm1, xmmword [edi + edx]
movdqa xmm4, xmm1
punpckhbw xmm4, xmm6
paddw xmm4, xmm3
punpcklbw xmm1, xmm6
paddw xmm1, xmm2
psrlw xmm4, 1
psrlw xmm1, 1
packuswb xmm1, xmm4
paddb xmm1, xmm0
movdqu xmmword [ecx + edx], xmm1
add edx, 0x10
cmp esi, edx
jne 0x496ad0
cmp dword [esp + 0x18], esi
movdqa xmm3, xmm7
mov esi, dword [esp + 4]
je 0x4954a0
mov edx, dword [esp + 0xd8]
mov ecx, dword [esp + 0x178]
test byte [esp + 0x18], 8
je 0x4959a0
jmp 0x495fc3
mov edx, dword [esp + 0x144]
mov edi, dword [esp + 0x84]
lea esi, [edi + edx]
add esi, 2
mov ebp, dword [esp + 0x17c]
lea ecx, [esi + ebp]
cmp ecx, esi
jb 0x4966b7
mov dword [esp + 0x1a0], esi
mov dword [esp + 0x44], 3
lea ecx, [edi + edx]
add ecx, 3
lea edx, [ecx + ebp]
cmp edx, ecx
jb 0x4975aa
mov edi, dword [esp + 0xa4]
lea esi, [edi + eax]
add esi, 3
lea edx, [esi + ebp]
mov dword [esp + 0x24], esi
cmp edx, esi
jb 0x4975aa
lea esi, [edi + eax]
add esi, 4
lea edx, [esi + ebp]
mov dword [esp + 0x84], esi
cmp edx, esi
jb 0x4975aa
mov edx, dword [esp + 0xd4]
mov esi, dword [esp + 0x1c]
lea edi, [esi + edx]
lea edx, [edi + ebp]
cmp edx, edi
jb 0x4975aa
mov edx, dword [esp + 0x120]
lea ebx, [esi + edx]
lea edx, [ebx + ebp]
mov dword [esp + 0xac], ebx
cmp edx, ebx
mov ebx, 2
jb 0x4975aa
mov dword [esp + 0xf4], edi
mov dword [esp + 0x104], ecx
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 2]
lea edi, [ecx + ebp]
add edi, 2
cmp edi, edx
jb 0x4975aa
lea esi, [ecx + 3]
lea edi, [ecx + ebp]
add edi, 3
mov dword [esp + 0x134], esi
cmp edi, esi
jb 0x4975aa
mov edi, dword [esp + 0xd4]
lea ebx, [ecx + edi]
lea edi, [ebx + ebp]
mov dword [esp + 0x1f0], ebx
cmp edi, ebx
jb 0x4975a5
mov edi, dword [esp + 0x120]
lea esi, [ecx + edi]
lea edi, [esi + ebp]
cmp edi, esi
jb 0x4975a5
mov edi, dword [esp + 0xa4]
mov ebx, dword [esp + 0xd0]
add edi, ebx
add edi, eax
mov dword [esp + 0x184], edi
add eax, dword [esp + 0x128]
mov edi, dword [esp + 0x1c]
lea ebp, [edi + ebx]
mov dword [esp + 0x200], ebp
mov dword [esp + 0x210], esi
mov esi, dword [esp + 0x1a0]
cmp esi, ebp
setb byte [esp + 0x230]
mov ebp, edi
mov edi, dword [esp + 0x114]
lea ebx, [edi + ebp]
mov edi, ebp
cmp dword [esp + 0x104], ebx
setb byte [esp + 0x220]
cmp esi, dword [esp + 0x184]
setb byte [esp + 0xe8]
cmp dword [esp + 0x24], ebx
setb byte [esp + 0xe4]
cmp esi, eax
setb byte [esp + 0x94]
cmp dword [esp + 0x84], ebx
setb byte [esp + 0x7a]
mov ebp, dword [esp + 0x11c]
add ebp, edi
mov dword [esp + 0x1d0], ebp
cmp esi, ebp
setb byte [esp + 0x79]
cmp dword [esp + 0xf4], ebx
setb byte [esp + 0x78]
mov ebp, dword [esp + 0x118]
add ebp, edi
mov dword [esp + 0xec], ebp
cmp esi, ebp
setb byte [esp + 0x77]
cmp dword [esp + 0xac], ebx
setb byte [esp + 0x76]
mov ebp, dword [esp + 0x114]
add ebp, ecx
mov dword [esp + 0x1c0], ebp
cmp esi, ebp
setb byte [esp + 0x75]
cmp edx, ebx
mov ebp, dword [esp + 0xd0]
lea ebp, [ecx + ebp]
mov dword [esp + 0x1e0], ebp
setb byte [esp + 0x74]
cmp esi, ebp
setb byte [esp + 0x73]
cmp dword [esp + 0x134], ebx
mov ebp, dword [esp + 0x11c]
lea ebp, [ecx + ebp]
mov dword [esp + 0x1b0], ebp
setb byte [esp + 0x72]
cmp esi, ebp
setb byte [esp + 0x71]
mov ebp, dword [esp + 0x1f0]
cmp ebp, ebx
mov edi, dword [esp + 0x118]
lea ecx, [ecx + edi]
mov dword [esp + 0xf0], ecx
setb byte [esp + 0x70]
cmp esi, ecx
setb byte [esp + 0x1a0]
mov esi, dword [esp + 0x210]
cmp esi, ebx
setb byte [esp + 0x6f]
mov edi, dword [esp + 0x104]
cmp edi, dword [esp + 0x184]
setb byte [esp + 0x184]
mov ecx, dword [esp + 0x200]
cmp dword [esp + 0x24], ecx
setb byte [esp + 0x24]
cmp edi, eax
setb al
cmp dword [esp + 0x84], ecx
setb byte [esp + 0x84]
cmp edi, dword [esp + 0x1d0]
setb ah
cmp dword [esp + 0xf4], ecx
setb byte [esp + 0xf4]
cmp edi, dword [esp + 0xec]
setb byte [esp + 0x1d0]
cmp dword [esp + 0xac], ecx
setb byte [esp + 0xac]
cmp edi, dword [esp + 0x1c0]
setb bl
cmp edx, ecx
setb byte [esp + 0x1c0]
cmp edi, dword [esp + 0x1e0]
setb bh
cmp dword [esp + 0x134], ecx
setb byte [esp + 0x134]
cmp edi, dword [esp + 0x1b0]
setb byte [esp + 0x1e0]
cmp ebp, ecx
mov ebp, ecx
setb byte [esp + 0x1b0]
cmp edi, dword [esp + 0xf0]
setb cl
cmp esi, ebp
setb byte [esp + 0x104]
mov ch, byte [esp + 0x220]
test byte [esp + 0x230], ch
jne 0x4975a5
mov ch, byte [esp + 0xe4]
and byte [esp + 0xe8], ch
jne 0x4975a5
mov ch, byte [esp + 0x7a]
and byte [esp + 0x94], ch
jne 0x4975a5
mov ch, byte [esp + 0x78]
and byte [esp + 0x79], ch
jne 0x4975a5
mov ch, byte [esp + 0x76]
and byte [esp + 0x77], ch
jne 0x4975a5
mov ch, byte [esp + 0x74]
and byte [esp + 0x75], ch
jne 0x4975a5
mov ch, byte [esp + 0x72]
and byte [esp + 0x73], ch
jne 0x4975a5
mov ch, byte [esp + 0x70]
and byte [esp + 0x71], ch
jne 0x4975a5
mov ch, byte [esp + 0x6f]
and byte [esp + 0x1a0], ch
jne 0x4975a5
mov ch, byte [esp + 0x24]
and byte [esp + 0x184], ch
jne 0x4975a5
and al, byte [esp + 0x84]
jne 0x4975a5
and ah, byte [esp + 0xf4]
jne 0x4975a5
movzx eax, byte [esp + 0xac]
and byte [esp + 0x1d0], al
jne 0x4975a5
and bl, byte [esp + 0x1c0]
jne 0x4975a5
and bh, byte [esp + 0x134]
jne 0x4975a5
movzx eax, byte [esp + 0x1b0]
and byte [esp + 0x1e0], al
mov ebx, 2
jne 0x4975aa
and cl, byte [esp + 0x104]
jne 0x4975aa
xor eax, eax
mov ebp, dword [esp + 0x158]
nop word cs:[eax + eax]
movzx ecx, byte [edx + eax*2]
movzx esi, byte [edx + eax*2 + 4]
movzx edi, byte [edx + eax*2 + 6]
shl edi, 8
or edi, esi
movzx esi, byte [edx + eax*2 + 2]
shl esi, 8
or esi, ecx
movzx ebx, byte [edx + eax*2 + 8]
movd xmm5, esi
pinsrw xmm5, edi, 1
movzx edi, byte [edx + eax*2 + 0xc]
movzx ecx, byte [edx + eax*2 + 0xa]
shl ecx, 8
or ecx, ebx
pinsrw xmm5, ecx, 2
movzx esi, byte [edx + eax*2 + 0xe]
shl esi, 8
or esi, edi
pinsrw xmm5, esi, 3
movdqu xmmword [esp + 0xac], xmm5
mov edi, dword [esp + 0x1f0]
movdqu xmm4, xmmword [edi + eax*2]
movdqa xmm1, xmm4
movdqu xmmword [esp + 0x104], xmm4
movdqa xmm7, xmmword [0x5ea7a0]
pand xmm1, xmm7
packuswb xmm1, xmm1
movdqa xmm0, xmm1
movdqu xmmword [esp + 0x84], xmm1
pxor xmm6, xmm6
punpcklbw xmm5, xmm6
movd xmm2, ecx
pinsrw xmm2, esi, 1
punpcklwd xmm5, xmm6
punpcklbw xmm2, xmm6
punpcklwd xmm2, xmm6
punpcklbw xmm0, xmm6
punpcklwd xmm0, xmm6
movdqa xmm1, xmm5
psubd xmm1, xmm0
movdqa xmm3, xmm1
psrad xmm3, 0x1f
pxor xmm1, xmm3
psubd xmm1, xmm3
movdqu xmmword [esp + 0x44], xmm1
movdqa xmm3, xmm4
punpckhwd xmm3, xmm3
pand xmm3, xmmword [0x5ea7b0]
movdqa xmm1, xmm2
psubd xmm1, xmm3
movdqa xmm4, xmm1
psrad xmm4, 0x1f
pxor xmm1, xmm4
psubd xmm1, xmm4
movdqu xmmword [esp + 0x134], xmm1
mov ecx, dword [esp + 0x148]
movdqu xmm4, xmmword [ecx + eax*2]
movdqu xmmword [esp + 0x24], xmm4
pand xmm4, xmm7
packuswb xmm4, xmm4
movdqu xmmword [esp + 0xf4], xmm4
punpcklbw xmm4, xmm6
punpcklwd xmm4, xmm6
paddd xmm5, xmm4
psubd xmm4, xmm0
movdqa xmm6, xmm4
psrad xmm6, 0x1f
pxor xmm4, xmm6
psubd xmm4, xmm6
movdqu xmm6, xmmword [esp + 0x24]
punpckhwd xmm6, xmm6
pand xmm6, xmmword [0x5ea7b0]
paddd xmm2, xmm6
psubd xmm6, xmm3
movdqa xmm7, xmm6
psrad xmm7, 0x1f
pxor xmm6, xmm7
psubd xmm6, xmm7
paddd xmm0, xmm0
psubd xmm5, xmm0
paddd xmm3, xmm3
psubd xmm2, xmm3
movdqa xmm0, xmm5
psrad xmm0, 0x1f
pxor xmm5, xmm0
psubd xmm5, xmm0
movdqa xmm0, xmm2
psrad xmm0, 0x1f
pxor xmm2, xmm0
psubd xmm2, xmm0
movdqa xmm0, xmm1
movdqa xmm7, xmmword [0x5eb4a0]
pxor xmm0, xmm7
movdqa xmm3, xmm6
pxor xmm3, xmm7
movdqa xmm1, xmm7
pcmpgtd xmm0, xmm3
movdqu xmm7, xmmword [esp + 0x44]
pxor xmm7, xmm1
movdqa xmm3, xmm4
pxor xmm3, xmm1
pcmpgtd xmm7, xmm3
pand xmm4, xmm7
movdqa xmm3, xmm7
movdqu xmm1, xmmword [esp + 0x44]
pandn xmm7, xmm1
por xmm7, xmm4
packssdw xmm3, xmm0
pand xmm6, xmm0
movdqu xmm1, xmmword [esp + 0x134]
pandn xmm0, xmm1
por xmm0, xmm6
packsswb xmm3, xmm3
movdqu xmm4, xmmword [esp + 0xac]
pand xmm4, xmm3
movdqu xmm1, xmmword [esp + 0xf4]
pandn xmm3, xmm1
por xmm3, xmm4
movzx ecx, byte [ebp + eax*2 - 0xf]
movzx esi, byte [ebp + eax*2 - 0xb]
movzx edi, byte [ebp + eax*2 - 9]
shl edi, 8
or edi, esi
movzx esi, byte [ebp + eax*2 - 0xd]
shl esi, 8
or esi, ecx
movzx ecx, byte [ebp + eax*2 - 7]
movdqa xmm4, xmmword [0x5eb4a0]
pxor xmm0, xmm4
pxor xmm2, xmm4
movdqa xmm1, xmm4
pcmpgtd xmm0, xmm2
movd xmm2, esi
pinsrw xmm2, edi, 1
movzx esi, byte [ebp + eax*2 - 3]
movzx edi, byte [ebp + eax*2 - 5]
shl edi, 8
or edi, ecx
pinsrw xmm2, edi, 2
movzx ecx, byte [ebp + eax*2 - 1]
shl ecx, 8
or ecx, esi
pinsrw xmm2, ecx, 3
movzx ecx, byte [edx + eax*2 + 1]
movzx esi, byte [edx + eax*2 + 5]
movzx edi, byte [edx + eax*2 + 7]
shl edi, 8
or edi, esi
movzx esi, byte [edx + eax*2 + 3]
shl esi, 8
or esi, ecx
movzx ebx, byte [edx + eax*2 + 9]
movd xmm4, esi
pinsrw xmm4, edi, 1
movzx ecx, byte [edx + eax*2 + 0xb]
shl ecx, 8
or ecx, ebx
pinsrw xmm4, ecx, 2
movzx edi, byte [edx + eax*2 + 0xd]
movzx esi, byte [edx + eax*2 + 0xf]
shl esi, 8
or esi, edi
pinsrw xmm4, esi, 3
movdqu xmmword [esp + 0xf4], xmm4
pxor xmm7, xmm1
pxor xmm5, xmm1
pcmpgtd xmm7, xmm5
packssdw xmm7, xmm0
movdqu xmm6, xmmword [esp + 0x104]
movdqa xmm1, xmm6
psrlw xmm1, 8
packsswb xmm7, xmm7
movdqu xmm0, xmmword [esp + 0x84]
pand xmm0, xmm7
pandn xmm7, xmm3
movdqu xmmword [esp + 0xac], xmm1
por xmm7, xmm0
paddb xmm7, xmm2
movdqa xmm3, xmm4
punpcklbw xmm3, xmmword [0x4f87a0]
punpcklwd xmm3, xmmword [0x4f87a0]
punpcklwd xmm1, xmmword [0x4f87a0]
movdqa xmm2, xmm3
psubd xmm2, xmm1
movdqa xmm0, xmm2
psrad xmm0, 0x1f
pxor xmm2, xmm0
psubd xmm2, xmm0
movdqu xmmword [esp + 0x44], xmm2
movd xmm4, ecx
pinsrw xmm4, esi, 1
punpcklbw xmm4, xmmword [0x4f87a0]
punpcklwd xmm4, xmmword [0x4f87a0]
psrlq xmm6, 8
punpckhbw xmm6, xmm6
pand xmm6, xmmword [0x5ea7b0]
movdqa xmm2, xmm4
psubd xmm2, xmm6
movdqa xmm0, xmm2
psrad xmm0, 0x1f
pxor xmm2, xmm0
psubd xmm2, xmm0
movdqu xmmword [esp + 0x84], xmm2
movdqu xmm2, xmmword [esp + 0x24]
movdqa xmm5, xmm2
psrlw xmm5, 8
movdqu xmmword [esp + 0x104], xmm5
punpcklwd xmm5, xmmword [0x4f87a0]
paddd xmm3, xmm5
psubd xmm5, xmm1
movdqa xmm0, xmm5
psrad xmm0, 0x1f
pxor xmm5, xmm0
psubd xmm5, xmm0
psrlq xmm2, 8
punpckhbw xmm2, xmm2
pand xmm2, xmmword [0x5ea7b0]
paddd xmm4, xmm2
psubd xmm2, xmm6
movdqa xmm0, xmm2
psrad xmm0, 0x1f
pxor xmm2, xmm0
psubd xmm2, xmm0
paddd xmm1, xmm1
psubd xmm3, xmm1
paddd xmm6, xmm6
psubd xmm4, xmm6
movdqa xmm0, xmm3
psrad xmm0, 0x1f
pxor xmm3, xmm0
psubd xmm3, xmm0
movdqu xmmword [esp + 0x24], xmm3
movdqa xmm0, xmm4
psrad xmm0, 0x1f
pxor xmm4, xmm0
psubd xmm4, xmm0
movdqu xmm6, xmmword [esp + 0x84]
movdqa xmm1, xmmword [0x5eb4a0]
pxor xmm6, xmm1
movdqa xmm0, xmm2
pxor xmm0, xmm1
movdqa xmm3, xmm1
pcmpgtd xmm6, xmm0
movdqu xmm1, xmmword [esp + 0x44]
pxor xmm1, xmm3
movdqa xmm0, xmm5
pxor xmm0, xmm3
pcmpgtd xmm1, xmm0
pand xmm5, xmm1
movdqa xmm0, xmm1
movdqu xmm3, xmmword [esp + 0x44]
pandn xmm1, xmm3
por xmm1, xmm5
packssdw xmm0, xmm6
pand xmm2, xmm6
movdqu xmm3, xmmword [esp + 0x84]
pandn xmm6, xmm3
por xmm6, xmm2
movdqu xmm5, xmmword [esp + 0x104]
packuswb xmm5, xmm5
packsswb xmm0, xmm0
movdqu xmm2, xmmword [esp + 0xf4]
pand xmm2, xmm0
pandn xmm0, xmm5
por xmm0, xmm2
movdqa xmm2, xmmword [0x5eb4a0]
pxor xmm6, xmm2
pxor xmm4, xmm2
pcmpgtd xmm6, xmm4
pxor xmm1, xmm2
movdqu xmm3, xmmword [esp + 0x24]
pxor xmm3, xmm2
pcmpgtd xmm1, xmm3
packssdw xmm1, xmm6
movdqu xmm2, xmmword [esp + 0xac]
packuswb xmm2, xmm2
packsswb xmm1, xmm1
pand xmm2, xmm1
pandn xmm1, xmm0
movzx ecx, byte [ebp + eax*2 - 0xe]
movzx esi, byte [ebp + eax*2 - 0xa]
movzx edi, byte [ebp + eax*2 - 8]
shl edi, 8
or edi, esi
movzx esi, byte [ebp + eax*2 - 0xc]
shl esi, 8
or esi, ecx
por xmm1, xmm2
movd xmm0, esi
movzx ecx, byte [ebp + eax*2 - 6]
pinsrw xmm0, edi, 1
movzx esi, byte [ebp + eax*2 - 4]
shl esi, 8
or esi, ecx
movzx ecx, byte [ebp + eax*2 - 2]
pinsrw xmm0, esi, 2
movzx esi, byte [ebp + eax*2]
shl esi, 8
or esi, ecx
pinsrw xmm0, esi, 3
paddb xmm1, xmm0
punpcklbw xmm7, xmm1
mov ecx, dword [esp + 8]
movdqu xmmword [ecx + eax*2 + 2], xmm7
add eax, 8
cmp dword [esp + 0x124], eax
jne 0x496fd0
mov eax, dword [esp + 0x170]
mov dword [esp + 0x44], eax
mov ebp, dword [esp + 0x16c]
mov ebx, ebp
mov eax, dword [esp + 0x124]
cmp dword [esp + 0x174], eax
movdqa xmm5, xmmword [0x5eb4f0]
movdqa xmm3, xmmword [0x5eb4a0]
jne 0x4975aa
jmp 0x4976df
mov ebx, 2
lea ebp, [ebx + 1]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc]
add eax, ecx
mov dword [esp + 0x84], eax
mov ecx, dword [esp + 0x44]
nop word cs:[eax + eax]
mov dword [esp + 0xac], ebx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x24], ebp
mov eax, dword [esp + 0x38]
movzx ecx, byte [eax + ebp - 1]
mov eax, dword [esp + 0xc]
movzx esi, byte [eax + ebp - 1]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x84]
movzx edx, byte [edx + eax - 1]
mov ebx, esi
sub ebx, edx
mov edi, ebx
neg edi
cmovs edi, ebx
mov ebp, ecx
sub ebp, edx
mov ebx, ebp
neg ebx
cmovs ebx, ebp
lea ebp, [esi + ecx]
sub ebp, edx
sub ebp, edx
mov eax, ebp
neg eax
cmovs eax, ebp
cmp ebx, edi
cmovae ebx, edi
cmovb ecx, esi
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0xc]
movzx edi, byte [edi + esi]
cmp eax, ebx
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x84]
movzx esi, byte [esi + eax]
cmovb ecx, edx
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 4]
add cl, byte [edx + eax - 1]
mov eax, edi
mov dword [esp + 0x104], edi
sub eax, esi
mov ebx, eax
neg ebx
cmovs ebx, eax
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x38]
movzx edx, byte [edx + eax]
mov eax, edx
sub eax, esi
mov ebp, eax
neg ebp
cmovs ebp, eax
lea eax, [edi + edx]
sub eax, esi
sub eax, esi
mov edi, eax
neg edi
cmovs edi, eax
cmp ebp, ebx
cmovae ebp, ebx
cmovb edx, dword [esp + 0x104]
cmp edi, ebp
mov edi, dword [esp + 8]
cmovb edx, esi
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x44]
add dl, byte [eax + esi]
mov eax, dword [esp + 0x24]
mov byte [edi + eax - 1], cl
mov eax, dword [esp + 0x1c]
mov byte [eax + esi], dl
mov ebp, dword [esp + 0x24]
mov ecx, dword [esp + 0xac]
lea ebx, [ecx + 2]
add ecx, 3
add ebp, 2
cmp ebp, dword [esp + 0x14]
jb 0x4975d0
dec ebp
mov ebx, dword [esp + 0x14]
cmp ebp, ebx
mov esi, dword [esp + 4]
mov ecx, dword [esp + 0x15c]
je 0x4954a0
mov eax, ebx
sub eax, ebp
cmp eax, 8
jb 0x497f3a
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x1c]
add eax, ebp
add ecx, ebp
mov edx, eax
sub edx, ecx
mov esi, ebp
sub esi, dword [esp]
mov edi, dword [esp + 0xc]
add esi, edi
mov ecx, eax
sub ecx, esi
mov dword [esp + 0x24], ebp
add ebp, edi
sub eax, ebp
cmp edx, 0x10
jb 0x497f36
mov esi, dword [esp + 4]
jb 0x497f36
cmp ecx, 0x10
mov edx, dword [esp + 0x24]
jb 0x497cbe
cmp eax, 0x10
jb 0x497cbe
cmp dword [esp + 0x10], 0x80
jb 0x497cbe
mov dword [esp + 0xf4], 0
mov eax, dword [esp + 0x94]
cmp eax, 0x10
jb 0x497cc5
mov ecx, eax
and ecx, 0xfffffff0
lea eax, [esi + edx]
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0x38]
add eax, edx
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0xc0]
add eax, ebp
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 8]
add eax, edx
mov dword [esp + 0xe4], eax
xor eax, eax
nop word [eax + eax]
mov edi, dword [esp + 0xe8]
movdqu xmm0, xmmword [edi + eax]
movdqu xmm2, xmmword [ebp + eax]
movdqa xmm1, xmm2
movdqa xmm4, xmm2
movdqu xmmword [esp + 0x220], xmm2
pxor xmm6, xmm6
punpcklbw xmm1, xmm6
movdqa xmm2, xmm1
punpcklwd xmm2, xmm6
movdqa xmm3, xmm2
movdqu xmmword [esp + 0x44], xmm2
punpckhwd xmm1, xmm6
movdqa xmm5, xmm1
movdqu xmmword [esp + 0x84], xmm1
movdqa xmm2, xmm0
movdqa xmm1, xmm0
movdqu xmmword [esp + 0x230], xmm0
punpcklbw xmm2, xmm6
movdqa xmm0, xmm2
punpcklwd xmm0, xmm6
movdqu xmmword [esp + 0x1a0], xmm0
punpckhwd xmm2, xmm6
movdqa xmm7, xmm2
movdqa xmm2, xmm3
psubd xmm2, xmm0
movdqa xmm0, xmm2
psrad xmm0, 0x1f
pxor xmm2, xmm0
psubd xmm2, xmm0
movdqu xmmword [esp + 0x15c], xmm2
movdqa xmm2, xmm5
psubd xmm2, xmm7
movdqu xmmword [esp + 0x1b0], xmm7
movdqa xmm0, xmm2
psrad xmm0, 0x1f
pxor xmm2, xmm0
psubd xmm2, xmm0
movdqu xmmword [esp + 0x104], xmm2
punpckhbw xmm4, xmm6
movdqa xmm2, xmm4
punpcklwd xmm2, xmm6
movdqu xmmword [esp + 0xac], xmm2
movdqa xmm0, xmm1
punpckhbw xmm0, xmm6
movdqa xmm1, xmm0
punpcklwd xmm1, xmm6
movdqu xmmword [esp + 0x1d0], xmm1
psubd xmm2, xmm1
movdqa xmm1, xmm2
psrad xmm1, 0x1f
pxor xmm2, xmm1
psubd xmm2, xmm1
movdqu xmmword [esp + 0x134], xmm2
punpckhwd xmm4, xmm6
movdqu xmmword [esp + 0x54], xmm4
punpckhwd xmm0, xmm6
movdqa xmm2, xmm4
psubd xmm2, xmm0
movdqa xmm1, xmm2
psrad xmm1, 0x1f
pxor xmm2, xmm1
psubd xmm2, xmm1
movdqu xmmword [esp + 0xf4], xmm2
mov edi, dword [esp + 0xf0]
movdqu xmm2, xmmword [edi + eax]
movdqa xmm4, xmm2
movdqu xmmword [esp + 0x210], xmm2
punpcklbw xmm4, xmm6
movdqa xmm1, xmm4
punpcklwd xmm1, xmm6
movdqa xmm3, xmm1
movdqu xmmword [esp + 0x1e0], xmm1
movdqu xmm1, xmmword [esp + 0x1a0]
psubd xmm3, xmm1
movdqa xmm1, xmm3
psrad xmm1, 0x1f
pxor xmm3, xmm1
psubd xmm3, xmm1
movdqu xmmword [esp + 0x200], xmm3
punpckhwd xmm4, xmm6
movdqa xmm5, xmm4
psubd xmm5, xmm7
movdqa xmm1, xmm5
psrad xmm1, 0x1f
pxor xmm5, xmm1
psubd xmm5, xmm1
movdqu xmmword [esp + 0x184], xmm5
punpckhbw xmm2, xmm6
movdqa xmm1, xmm2
punpcklwd xmm1, xmm6
movdqu xmmword [esp + 0x1c0], xmm1
movdqa xmm6, xmm1
movdqu xmm5, xmmword [esp + 0x1d0]
psubd xmm6, xmm5
movdqa xmm7, xmm6
psrad xmm7, 0x1f
pxor xmm6, xmm7
psubd xmm6, xmm7
punpckhwd xmm2, xmmword [0x4f87a0]
movdqa xmm1, xmm2
psubd xmm1, xmm0
movdqa xmm7, xmm1
psrad xmm7, 0x1f
pxor xmm1, xmm7
psubd xmm1, xmm7
movdqu xmmword [esp + 0x1f0], xmm1
movdqu xmm1, xmmword [esp + 0x1a0]
paddd xmm1, xmm1
movdqu xmm3, xmmword [esp + 0x44]
psubd xmm3, xmm1
movdqu xmm1, xmmword [esp + 0x1b0]
paddd xmm1, xmm1
movdqu xmm7, xmmword [esp + 0x84]
psubd xmm7, xmm1
movdqa xmm1, xmm5
paddd xmm1, xmm5
movdqu xmm5, xmmword [esp + 0xac]
psubd xmm5, xmm1
paddd xmm0, xmm0
movdqu xmm1, xmmword [esp + 0x54]
psubd xmm1, xmm0
paddd xmm1, xmm2
movdqu xmmword [esp + 0x54], xmm1
movdqu xmm0, xmmword [esp + 0x1c0]
paddd xmm5, xmm0
paddd xmm7, xmm4
movdqa xmm2, xmm7
movdqu xmm0, xmmword [esp + 0x1e0]
paddd xmm3, xmm0
movdqa xmm0, xmm3
psrad xmm0, 0x1f
pxor xmm3, xmm0
psubd xmm3, xmm0
movdqu xmmword [esp + 0x44], xmm3
movdqa xmm1, xmm7
movdqa xmm0, xmm7
psrad xmm0, 0x1f
pxor xmm1, xmm0
psubd xmm1, xmm0
movdqu xmmword [esp + 0x84], xmm1
movdqa xmm0, xmm5
psrad xmm0, 0x1f
pxor xmm5, xmm0
psubd xmm5, xmm0
movdqu xmmword [esp + 0xac], xmm5
movdqu xmm1, xmmword [esp + 0x54]
movdqa xmm0, xmm1
psrad xmm0, 0x1f
pxor xmm1, xmm0
psubd xmm1, xmm0
movdqu xmmword [esp + 0x54], xmm1
movdqu xmm0, xmmword [esp + 0x1f0]
movdqa xmm7, xmmword [0x5eb4a0]
pxor xmm0, xmm7
movdqu xmm1, xmmword [esp + 0xf4]
pxor xmm1, xmm7
pcmpgtd xmm1, xmm0
movdqa xmm0, xmm6
pxor xmm0, xmm7
movdqu xmm5, xmmword [esp + 0x134]
pxor xmm5, xmm7
pcmpgtd xmm5, xmm0
movdqu xmm0, xmmword [esp + 0x184]
pxor xmm0, xmm7
movdqu xmm2, xmmword [esp + 0x104]
pxor xmm2, xmm7
pcmpgtd xmm2, xmm0
movdqu xmm3, xmmword [esp + 0x200]
movdqa xmm4, xmm3
pxor xmm4, xmm7
movdqu xmm0, xmmword [esp + 0x15c]
pxor xmm0, xmm7
pcmpgtd xmm0, xmm4
movdqa xmm7, xmm5
packssdw xmm7, xmm1
movdqa xmm4, xmm0
packssdw xmm4, xmm2
packsswb xmm4, xmm7
pand xmm3, xmm0
movdqu xmm7, xmmword [esp + 0x15c]
pandn xmm0, xmm7
por xmm0, xmm3
movdqu xmm3, xmmword [esp + 0x184]
pand xmm3, xmm2
movdqu xmm7, xmmword [esp + 0x104]
pandn xmm2, xmm7
por xmm2, xmm3
pand xmm6, xmm5
movdqu xmm7, xmmword [esp + 0x134]
pandn xmm5, xmm7
por xmm5, xmm6
movdqu xmm3, xmmword [esp + 0x1f0]
pand xmm3, xmm1
movdqu xmm7, xmmword [esp + 0xf4]
pandn xmm1, xmm7
por xmm1, xmm3
movdqu xmm7, xmmword [esp + 0x220]
pand xmm7, xmm4
movdqu xmm6, xmmword [esp + 0x210]
pandn xmm4, xmm6
por xmm4, xmm7
movdqa xmm6, xmmword [0x5eb4a0]
pxor xmm1, xmm6
movdqu xmm3, xmmword [esp + 0x54]
pxor xmm3, xmm6
pcmpgtd xmm1, xmm3
pxor xmm5, xmm6
movdqu xmm3, xmmword [esp + 0xac]
pxor xmm3, xmm6
pcmpgtd xmm5, xmm3
packssdw xmm5, xmm1
pxor xmm2, xmm6
movdqu xmm1, xmmword [esp + 0x84]
pxor xmm1, xmm6
pcmpgtd xmm2, xmm1
pxor xmm0, xmm6
movdqu xmm1, xmmword [esp + 0x44]
pxor xmm1, xmm6
pcmpgtd xmm0, xmm1
packssdw xmm0, xmm2
packsswb xmm0, xmm5
movdqu xmm1, xmmword [esp + 0x230]
pand xmm1, xmm0
pandn xmm0, xmm4
por xmm0, xmm1
mov edi, dword [esp + 0xec]
movdqu xmm1, xmmword [edi + eax]
paddb xmm0, xmm1
mov edi, dword [esp + 0xe4]
movdqu xmmword [edi + eax], xmm0
add eax, 0x10
cmp ecx, eax
jne 0x4977c0
mov eax, dword [esp + 0x94]
mov dword [esp + 0xf4], ecx
cmp eax, ecx
movdqa xmm5, xmmword [0x5eb4f0]
movdqa xmm3, xmmword [0x5eb4a0]
je 0x4954a0
test al, 8
jne 0x497cc5
add edx, dword [esp + 0xf4]
mov ebp, edx
jmp 0x497f3a
mov ebp, edx
jmp 0x497f3a
mov ecx, eax
and ecx, 0xfffffff8
lea eax, [edx + ecx]
mov dword [esp + 0x54], eax
lea ebx, [esi + edx]
mov eax, dword [esp + 0x38]
lea edi, [eax + edx]
mov eax, dword [esp + 0xc0]
lea esi, [eax + ebp]
add edx, dword [esp + 8]
mov dword [esp + 0x134], ecx
mov eax, dword [esp + 0xf4]
nop word [eax + eax]
movq xmm6, qword [esi + eax]
movdqu xmmword [esp + 0x44], xmm6
movq xmm5, qword [ebp + eax]
movdqu xmmword [esp + 0x84], xmm5
pxor xmm1, xmm1
punpcklbw xmm5, xmm1
movdqa xmm4, xmm5
punpcklwd xmm4, xmm1
punpckhwd xmm5, xmm1
pxor xmm2, xmm2
punpcklbw xmm6, xmm2
movdqa xmm3, xmm6
punpcklwd xmm3, xmm2
punpckhwd xmm6, xmm2
movdqa xmm1, xmm4
psubd xmm1, xmm3
movdqa xmm0, xmm1
psrad xmm0, 0x1f
pxor xmm1, xmm0
psubd xmm1, xmm0
movdqu xmmword [esp + 0x15c], xmm1
movdqa xmm1, xmm5
psubd xmm1, xmm6
movdqa xmm0, xmm1
psrad xmm0, 0x1f
pxor xmm1, xmm0
psubd xmm1, xmm0
movdqu xmmword [esp + 0x24], xmm1
movq xmm0, qword [edi + eax]
movdqu xmmword [esp + 0xac], xmm0
punpcklbw xmm0, xmm2
movdqa xmm7, xmm0
punpcklwd xmm7, xmm2
movdqu xmmword [esp + 0x104], xmm7
psubd xmm7, xmm3
movdqa xmm1, xmm7
psrad xmm1, 0x1f
pxor xmm7, xmm1
psubd xmm7, xmm1
punpckhwd xmm0, xmm2
movdqa xmm2, xmm0
psubd xmm2, xmm6
movdqa xmm1, xmm2
psrad xmm1, 0x1f
pxor xmm2, xmm1
psubd xmm2, xmm1
paddd xmm3, xmm3
psubd xmm4, xmm3
paddd xmm6, xmm6
psubd xmm5, xmm6
paddd xmm5, xmm0
movdqu xmm0, xmmword [esp + 0x104]
paddd xmm4, xmm0
movdqa xmm0, xmm4
psrad xmm0, 0x1f
pxor xmm4, xmm0
psubd xmm4, xmm0
movdqa xmm0, xmm5
psrad xmm0, 0x1f
pxor xmm5, xmm0
psubd xmm5, xmm0
movdqa xmm0, xmm2
movdqa xmm1, xmmword [0x5eb4a0]
pxor xmm0, xmm1
movdqu xmm3, xmmword [esp + 0x24]
pxor xmm3, xmm1
pcmpgtd xmm3, xmm0
movdqa xmm0, xmm7
pxor xmm0, xmm1
movdqu xmm1, xmmword [esp + 0x15c]
movdqa xmm6, xmm1
pxor xmm6, xmmword [0x5eb4a0]
pcmpgtd xmm6, xmm0
pand xmm7, xmm6
movdqa xmm0, xmm6
pandn xmm6, xmm1
por xmm6, xmm7
packssdw xmm0, xmm3
pand xmm2, xmm3
movdqu xmm7, xmmword [esp + 0x24]
pandn xmm3, xmm7
por xmm3, xmm2
packsswb xmm0, xmm0
movdqu xmm2, xmmword [esp + 0x84]
pand xmm2, xmm0
movdqu xmm7, xmmword [esp + 0xac]
pandn xmm0, xmm7
por xmm0, xmm2
movdqa xmm1, xmmword [0x5eb4a0]
pxor xmm3, xmm1
pxor xmm5, xmm1
pcmpgtd xmm3, xmm5
pxor xmm6, xmm1
pxor xmm4, xmm1
pcmpgtd xmm6, xmm4
packssdw xmm6, xmm3
packsswb xmm6, xmm6
movdqu xmm1, xmmword [esp + 0x44]
pand xmm1, xmm6
pandn xmm6, xmm0
por xmm6, xmm1
movq xmm0, qword [ebx + eax]
paddb xmm6, xmm0
movq qword [edx + eax], xmm6
add ecx, 0xfffffff8
add ebx, 8
add edi, 8
add esi, 8
add ebp, 8
add edx, 8
cmp eax, ecx
jne 0x497d00
mov eax, dword [esp + 0x134]
cmp dword [esp + 0x94], eax
mov ebx, dword [esp + 0x14]
movdqa xmm5, xmmword [0x5eb4f0]
movdqa xmm3, xmmword [0x5eb4a0]
mov esi, dword [esp + 4]
mov ebp, dword [esp + 0x54]
je 0x4954a0
jmp 0x497f3a
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc]
add eax, ecx
mov dword [esp + 0x24], eax
nop dword [eax + eax]
mov dword [esp + 0x54], ebp
mov eax, dword [esp + 0x24]
movzx esi, byte [eax + ebp]
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + ebp]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x54]
movzx edx, byte [ecx + edx]
mov ebp, eax
sub ebp, esi
mov ebx, ebp
neg ebx
cmovs ebx, ebp
mov ecx, edx
sub ecx, esi
mov ebp, ecx
neg ebp
cmovs ebp, ecx
mov edi, eax
sub edi, esi
sub edi, esi
add edi, edx
mov ecx, edi
neg ecx
cmovs ecx, edi
cmp ebp, ebx
cmovae ebp, ebx
mov ebx, dword [esp + 0x14]
cmovb edx, eax
cmp ecx, ebp
mov ebp, dword [esp + 0x54]
cmovb edx, esi
mov esi, dword [esp + 4]
add dl, byte [esi + ebp]
mov eax, dword [esp + 8]
mov byte [eax + ebp], dl
inc ebp
cmp ebx, ebp
jne 0x497f50
jmp 0x4954a0
xor eax, eax
add esp, 0x240
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 0x24
jmp 0x497fc4