Function at 0x10021660
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1a8
mov dword [esp], edx
mov ebp, ecx
mov ebx, dword [esp + 0x1cc]
mov esi, dword [esp + 0x1c8]
cmp ebx, 0x10
sete cl
mov eax, esi
or eax, dword [esp + 0x1c4]
js 0x100216e2
mov eax, dword [ebp]
mov eax, dword [eax + 8]
mov dword [esp + 0x68], eax
test esi, esi
je 0x100216ae
mov eax, 0x7fffffff
xor edx, edx
div esi
cmp eax, dword [esp + 0x1c4]
jl 0x100216e2
xor eax, eax
mov al, cl
inc eax
mov dword [esp + 0x40], eax
mov edi, eax
imul edi, dword [esp + 0x1c0]
mov ecx, esi
imul ecx, dword [esp + 0x1c4]
mov eax, edi
or eax, ecx
js 0x100216e2
test edi, edi
je 0x10021703
mov eax, 0x7fffffff
xor edx, edx
div edi
cmp eax, ecx
jge 0x10021703
mov dword [ebp + 0xc], 0
mov edi, 0x10533e56
mov dword [0x1058e718], edi
xor ecx, ecx
mov eax, ecx
add esp, 0x1a8
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x24], edi
imul ecx, edi
push ecx
call fcn.1037f2d2
add esp, 4
mov dword [ebp + 0xc], eax
test eax, eax
je 0x100216e9
mov edi, 0x10534bff
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x1c4]
or eax, ecx
js 0x100216ee
test ecx, ecx
je 0x10021741
mov eax, 0x7fffffff
xor edx, edx
div ecx
cmp eax, dword [esp + 0x68]
jl 0x100216ee
mov edx, dword [esp + 0x68]
imul edx, ecx
mov eax, edx
or eax, ebx
js 0x100216ee
test ebx, ebx
je 0x10021778
mov eax, 0x7fffffff
mov dword [esp + 0x7c], edx
xor edx, edx
div ebx
mov edx, dword [esp + 0x7c]
cmp eax, edx
jl 0x100216ee
mov eax, edx
imul eax, ebx
cmp eax, 0x7ffffff8
jle 0x1002177a
jmp 0x100216ee
xor eax, eax
add eax, 7
shr eax, 3
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x94]
inc eax
imul eax, esi
mov edi, 0x105333b3
cmp eax, dword [esp + 0x1bc]
ja 0x100216ee
mov edi, dword [esp + 0x1c0]
imul ecx, edi
test esi, esi
je 0x10024207
mov dword [esp + 0x7c], edx
mov edx, ecx
sub edx, dword [esp + 0x94]
cmp ebx, 8
setl ah
mov esi, 0
mov dword [esp + 0xa0], edx
cmovl esi, edx
mov dword [esp + 0x20], esi
mov edx, dword [esp + 0x68]
cmp edx, edi
sete byte [esp + 0x10]
mov esi, dword [esp]
mov al, byte [esi]
mov edi, 0x105338a6
cmp al, 4
ja 0x100216ee
mov esi, dword [esp + 0x40]
imul edx, esi
mov dword [esp + 4], edx
mov edx, ecx
mov dword [esp + 0x90], ecx
imul esi, ecx
mov dword [esp + 0x40], esi
mov ecx, esi
neg ecx
mov dword [esp + 0x120], ecx
or ah, byte [esp + 0x10]
mov byte [esp + 0x2b], ah
mov edx, dword [esp + 0x20]
mov ecx, edx
sub ecx, esi
mov dword [esp + 0x44], ecx
mov ecx, edx
xor edi, edi
mov esi, dword [esp + 0x24]
sub ecx, esi
mov dword [esp + 0x88], ecx
mov edx, dword [esp + 0x1c4]
not edx
imul edx, esi
mov ecx, dword [esp + 0x20]
add edx, ecx
mov dword [esp + 0xb8], edx
mov edx, dword [esp + 0x1c4]
and edx, 7
mov dword [esp + 0x10c], edx
mov edx, dword [esp + 0x1c4]
and edx, 0xfffffff8
mov dword [esp + 0x108], edx
lea edx, [ecx + 0x10]
mov dword [esp + 0x84], edx
sub edx, esi
mov dword [esp + 0x9c], edx
lea edx, [esi*8]
sub edx, esi
inc edx
mov dword [esp + 0x104], edx
lea edx, [esi + esi]
mov dword [esp + 0x100], edx
lea edx, [edx + edx*2]
or edx, 1
mov dword [esp + 0xfc], edx
mov ecx, dword [esp + 0x20]
inc ecx
mov edx, ecx
mov dword [esp + 0x8c], ecx
sub ecx, dword [esp + 0x40]
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x40]
mov dword [esp + 0xd8], ecx
mov ecx, dword [esp + 0x20]
lea edx, [ecx + 3]
mov ecx, edx
mov dword [esp + 0xe0], edx
sub edx, dword [esp + 0x40]
mov dword [esp + 0xdc], edx
pxor xmm6, xmm6
movdqa xmm7, xmmword [0x10398600]
mov ecx, dword [esp + 0x1c4]
lea edx, [ecx - 1]
mov dword [esp + 0x2c], edx
lea ecx, [esi + esi*4 + 1]
mov dword [esp + 0xf8], ecx
lea ecx, [esi*4 + 1]
mov dword [esp + 0xf4], ecx
lea ecx, [esi + esi*2 + 1]
mov dword [esp + 0xf0], ecx
lea ecx, [esi + esi + 1]
mov dword [esp + 0xec], ecx
lea ecx, [esi + 1]
mov dword [esp + 0xe8], ecx
xor esi, esi
mov ecx, dword [esp + 0x1c4]
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0x80], ebp
cmp ebx, 8
mov edx, 1
cmovl ecx, edx
mov edx, dword [esp + 0xa4]
cmovl edx, dword [esp + 0x94]
mov dword [esp + 0xa4], edx
mov edx, dword [ebp + 0xc]
mov dword [esp + 8], edx
mov dword [esp + 0x1c], edi
mov ebx, dword [esp + 0x20]
add edi, ebx
add edi, edx
test esi, esi
mov dword [esp + 0xc4], esi
jne 0x100219b7
movzx eax, al
movzx eax, byte [eax + 0x103980f0]
mov edx, dword [esp]
lea ebp, [edx + 1]
mov edx, dword [esp + 0x120]
add edx, edi
mov dword [esp + 0x10], edx
movzx esi, al
test ecx, ecx
jle 0x10021a16
xor ebx, ebx
jmp 0x100219ed
movzx edx, byte [ebp + ebx]
mov byte [edi + ebx], dl
inc ebx
cmp ecx, ebx
je 0x10021a16
cmp al, 6
ja case.default.0x100219f1
jmp dword [esi*4 + 0x10398814]
mov edx, dword [esp + 0x10]
movzx edx, byte [edx + ebx]
add dl, byte [ebp + ebx]
jmp 0x100219e5
mov edx, dword [esp + 0x10]
movzx edx, byte [edx + ebx]
shr dl, 1
add dl, byte [ebp + ebx]
jmp 0x100219e5
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x1cc]
cmp ecx, 8
jne 0x10021a3b
mov ecx, dword [esp + 0x68]
mov ebx, dword [esp + 0x1c0]
cmp ecx, ebx
je 0x10021a5b
mov byte [edi + ecx], 0xff
jmp 0x10021a5b
cmp ecx, 0x10
mov ecx, dword [esp + 0x1c0]
mov ebx, dword [esp + 0x24]
jne 0x10021a5f
cmp dword [esp + 0x68], ecx
mov ecx, dword [esp + 4]
je 0x10021a5b
mov word [edi + ecx], 0xffff
add ebp, ecx
jmp 0x10021a6a
mov ebp, dword [esp]
add ebp, 2
mov ebx, 1
movzx ecx, byte [esp + 0x2b]
add edi, ebx
add dword [esp + 0x10], ebx
test cl, cl
mov dword [esp + 0x18], ebp
je 0x10021abc
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 0xa4]
dec ecx
imul ecx, dword [esp + 4]
mov dword [esp], ecx
cmp al, 6
mov ebp, dword [esp + 8]
ja case.default.0x10021a9d
jmp dword [esi*4 + 0x1039884c]
push dword [esp]
push dword [esp + 0x1c]
push dword [esp + 0x14]
call fcn.10368490
add esp, 0xc
jmp case.default.0x10021a9d
cmp al, 6
mov ecx, dword [esp + 4]
ja case.default.0x10021ac8
jmp dword [esi*4 + 0x10398830]
mov ebp, dword [esp + 0x2c]
test ebp, ebp
je 0x10024138
add ebx, dword [esp + 0x20]
add ebx, dword [esp + 0x1c]
add ebx, dword [esp + 8]
mov dword [esp + 0x14], ebx
mov eax, ecx
and eax, 0xffffffe0
mov dword [esp + 8], eax
mov eax, ecx
and eax, 0xfffffff8
mov dword [esp + 0x48], eax
mov eax, ecx
and eax, 3
mov dword [esp + 0x30], eax
xor esi, esi
mov eax, dword [esp + 0x18]
mov dword [esp], eax
jmp 0x10021b2a
mov byte [ebx + ecx], 0xff
add ebp, ecx
mov dword [esp], ebp
add ebx, edi
inc esi
mov ebp, dword [esp + 0x10]
dec ebp
mov edi, ebx
je 0x10023f9a
mov dword [esp + 0x10], ebp
test ecx, ecx
mov ebx, edi
mov edi, dword [esp + 0x24]
mov ebp, dword [esp]
jle 0x10021b11
mov dword [esp + 0xc], ebx
xor edx, edx
cmp ecx, 8
jb 0x10021bdc
mov eax, ecx
imul eax, esi
add eax, dword [esp + 0x18]
mov ecx, edi
imul ecx, esi
add ecx, dword [esp + 0x14]
sub ecx, eax
cmp ecx, 0x20
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp]
jb 0x10021bdc
xor eax, eax
cmp ecx, 0x20
jb 0x10021bb1
xor eax, eax
mov edx, dword [esp + 8]
nop dword [eax + eax]
movdqu xmm0, xmmword [ebp + eax]
movdqu xmm1, xmmword [ebp + eax + 0x10]
movdqu xmmword [ebx + eax], xmm0
movdqu xmmword [ebx + eax + 0x10], xmm1
add eax, 0x20
cmp edx, eax
jne 0x10021b80
cmp ecx, edx
je 0x10021b11
mov edx, dword [esp + 8]
mov eax, edx
test cl, 0x18
je 0x10021bdc
mov edx, dword [esp + 0x48]
nop word cs:[eax + eax]
movq xmm0, qword [ebp + eax]
movq qword [ebx + eax], xmm0
add eax, 8
cmp edx, eax
jne 0x10021bc0
mov eax, edx
cmp ecx, edx
je 0x10021b11
mov eax, edx
not eax
add eax, ecx
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x10021c0e
mov edi, dword [esp + 0xc]
mov ebp, dword [esp]
nop word cs:[eax + eax]
movzx ebx, byte [ebp + edx]
mov byte [edi + edx], bl
inc edx
dec ecx
jne 0x10021c00
jmp 0x10021c15
mov edi, dword [esp + 0xc]
mov ebp, dword [esp]
cmp eax, 3
mov ebx, edi
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 4]
jb 0x10021b11
nop dword [eax + eax]
movzx eax, byte [ebp + edx]
mov byte [ebx + edx], al
movzx eax, byte [ebp + edx + 1]
mov byte [ebx + edx + 1], al
movzx eax, byte [ebp + edx + 2]
mov byte [ebx + edx + 2], al
movzx eax, byte [ebp + edx + 3]
mov byte [ebx + edx + 3], al
add edx, 4
cmp ecx, edx
jne 0x10021c30
jmp 0x10021b11
cmp dword [esp], 0
jle case.default.0x10021a9d
xor eax, eax
cmp dword [esp], 8
jb 0x10021d6e
mov ecx, dword [esp + 0x20]
add ecx, ebx
add ecx, dword [esp + 0x1c]
add ecx, ebp
sub ecx, dword [esp + 0x18]
cmp ecx, 0x20
jb 0x10021d6e
jb 0x10021d6e
cmp dword [esp + 4], 0x20
jb 0x10021d6e
xor esi, esi
mov eax, 0
cmp dword [esp], 0x20
mov dword [esp + 0x14], ebx
jb 0x10021d19
mov eax, dword [esp]
and eax, 0xffffffe0
mov ecx, dword [esp + 0x84]
lea edx, [ecx + ebp]
mov ecx, dword [esp + 0x1c]
add ecx, ebx
mov edi, ecx
sub edi, dword [esp + 4]
add edi, edx
add edx, ecx
xor ecx, ecx
mov ebx, dword [esp + 0x18]
movdqu xmm0, xmmword [ebx + ecx]
movdqu xmm1, xmmword [ebx + ecx + 0x10]
movdqu xmm2, xmmword [edi + ecx - 0x10]
paddb xmm2, xmm0
movdqu xmm0, xmmword [edi + ecx]
paddb xmm0, xmm1
movdqu xmmword [edx + ecx - 0x10], xmm2
movdqu xmmword [edx + ecx], xmm0
add ecx, 0x20
cmp eax, ecx
jne 0x10021cd6
cmp dword [esp], eax
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
test byte [esp], 0x18
je 0x10021d6e
mov edx, ebx
mov ebx, eax
mov eax, dword [esp]
and eax, 0xfffffff8
mov ecx, dword [esp + 0x20]
add ecx, ebp
add edx, ebx
add edx, dword [esp + 0x1c]
mov edi, edx
sub edi, dword [esp + 4]
add edi, ecx
add edx, ecx
mov ecx, eax
sub ecx, ebx
mov ebp, dword [esp + 0x18]
add ebx, ebp
movq xmm0, qword [ebx + esi]
movq xmm1, qword [edi + esi]
paddb xmm1, xmm0
movq qword [edx + esi], xmm1
add esi, 8
cmp ecx, esi
jne 0x10021d43
cmp dword [esp], eax
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
mov ecx, eax
or ecx, 1
test byte [esp], 1
je 0x10021d93
mov edx, eax
sub edx, dword [esp + 4]
mov edi, dword [esp + 0xc]
movzx edx, byte [edi + edx]
mov esi, dword [esp + 0x18]
add dl, byte [esi + eax]
mov byte [edi + eax], dl
mov eax, ecx
cmp dword [esp], ecx
je case.default.0x10021a9d
add ebp, dword [esp + 0x8c]
add ebx, dword [esp + 0x1c]
lea ecx, [ebx + ebp]
sub ebx, dword [esp + 4]
add ebx, ebp
mov edx, dword [esp + 0x18]
inc edx
mov esi, dword [esp]
mov edi, ebx
movzx ebx, byte [ebx + eax - 1]
add bl, byte [edx + eax - 1]
mov byte [ecx + eax - 1], bl
movzx ebx, byte [edi + eax]
add bl, byte [edx + eax]
mov byte [ecx + eax], bl
mov ebx, edi
add esi, 0xfffffffe
add ecx, 2
add ebx, 2
add edx, 2
cmp eax, esi
jne 0x10021db8
jmp case.default.0x10021a9d
cmp dword [esp], 0
jle case.default.0x10021a9d
xor eax, eax
cmp dword [esp], 8
jb 0x10021f07
mov ecx, dword [esp + 0x20]
add ecx, ebx
mov edi, dword [esp + 0x1c]
add ecx, edi
add ecx, ebp
mov edx, ecx
mov esi, dword [esp + 0x44]
add esi, ebx
add esi, edi
add esi, ebp
sub ecx, esi
sub edx, dword [esp + 0x18]
cmp edx, 0x20
jb 0x10021f07
jb 0x10021f07
cmp ecx, 0x20
jb 0x10021f07
xor ecx, ecx
mov eax, 0
cmp dword [esp], 0x20
mov dword [esp + 0x14], ebx
jb 0x10021eb3
mov eax, dword [esp]
and eax, 0xffffffe0
mov edx, dword [esp + 0xd8]
add edx, ebp
mov esi, dword [esp + 0x1c]
lea edi, [ebx + esi]
add edx, edi
mov esi, dword [esp + 0x84]
add esi, ebp
add esi, edi
xor edi, edi
mov ebx, dword [esp + 0x18]
movdqu xmm0, xmmword [ebx + edi]
movdqu xmm1, xmmword [ebx + edi + 0x10]
movdqu xmm2, xmmword [edx + edi - 0x10]
paddb xmm2, xmm0
movdqu xmm0, xmmword [edx + edi]
paddb xmm0, xmm1
movdqu xmmword [esi + edi - 0x10], xmm2
movdqu xmmword [esi + edi], xmm0
add edi, 0x20
cmp eax, edi
jne 0x10021e70
cmp dword [esp], eax
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
test byte [esp], 0x18
je 0x10021f07
mov edi, eax
mov eax, dword [esp]
and eax, 0xfffffff8
mov edx, dword [esp + 0x44]
add edx, ebp
lea esi, [ebx + edi]
add esi, dword [esp + 0x1c]
add edx, esi
mov ebx, dword [esp + 0x20]
add ebx, ebp
add esi, ebx
mov ebx, eax
sub ebx, edi
mov ebp, dword [esp + 0x18]
add edi, ebp
movq xmm0, qword [edi + ecx]
movq xmm1, qword [edx + ecx]
paddb xmm1, xmm0
movq qword [esi + ecx], xmm1
add ecx, 8
cmp ebx, ecx
jne 0x10021edc
cmp dword [esp], eax
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
mov ecx, eax
not ecx
mov edx, dword [esp]
add ecx, edx
and edx, 3
je 0x10021f5e
mov dword [esp + 0x10], ecx
mov esi, eax
neg esi
mov ecx, dword [esp + 0x20]
lea edi, [ecx + ebp]
mov dword [esp + 0x14], ebx
add ebx, eax
add ebx, dword [esp + 0x1c]
add edi, ebx
mov ecx, dword [esp + 0x44]
add ebp, ecx
add ebx, ebp
add eax, dword [esp + 0x18]
xor ebp, ebp
movzx ecx, byte [ebx + ebp]
add cl, byte [eax + ebp]
mov byte [edi + ebp], cl
inc ebp
dec esi
cmp edx, ebp
jne 0x10021f3e
neg esi
mov eax, esi
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
cmp ecx, 3
jb case.default.0x10021a9d
mov ecx, dword [esp + 0xe0]
add ecx, ebp
add ebx, dword [esp + 0x1c]
add ecx, ebx
add ebp, dword [esp + 0xdc]
add ebp, ebx
mov edx, dword [esp + 0x18]
lea esi, [edx + 3]
mov edi, dword [esp]
movzx edx, byte [ebp + eax - 3]
add dl, byte [esi + eax - 3]
mov byte [ecx + eax - 3], dl
movzx edx, byte [ebp + eax - 2]
add dl, byte [esi + eax - 2]
mov byte [ecx + eax - 2], dl
movzx edx, byte [ebp + eax - 1]
add dl, byte [esi + eax - 1]
mov byte [ecx + eax - 1], dl
movzx edx, byte [ebp + eax]
add dl, byte [esi + eax]
mov byte [ecx + eax], dl
add edi, 0xfffffffc
add ecx, 4
add ebp, 4
add esi, 4
cmp eax, edi
jne 0x10021f89
jmp case.default.0x10021a9d
cmp dword [esp], 0
jle case.default.0x10021a9d
xor ecx, ecx
cmp dword [esp], 8
jb 0x10024146
mov eax, dword [esp + 0x20]
add eax, ebx
mov edi, dword [esp + 0x1c]
add eax, edi
add eax, ebp
mov edx, eax
mov ecx, dword [esp + 0x44]
lea esi, [ecx + ebx]
add esi, edi
add esi, ebp
mov ecx, dword [esp + 4]
sub ecx, esi
add ecx, eax
sub eax, esi
sub edx, dword [esp + 0x18]
cmp edx, 0x10
jb 0x10024144
jb 0x10024144
cmp ecx, 0x10
mov ecx, 0
jb 0x10024146
cmp eax, 0x10
jb 0x10024146
cmp dword [esp + 4], 0x10
jb 0x10024146
xor ecx, ecx
cmp dword [esp], 0x10
jb 0x100224b4
mov ecx, dword [esp]
and ecx, 0xfffffff0
mov eax, dword [esp + 0x20]
lea edx, [eax + ebp]
mov eax, dword [esp + 0x1c]
lea esi, [ebx + eax]
sub esi, dword [esp + 4]
add edx, esi
mov dword [esp + 0x98], edx
mov eax, dword [esp + 0x44]
add eax, ebp
add esi, eax
xor eax, eax
mov edi, dword [esp + 0x10]
movdqu xmm5, xmmword [esi + eax]
movdqa xmm6, xmm5
movdqu xmmword [esp + 0x198], xmm5
pxor xmm7, xmm7
punpckhbw xmm6, xmm7
movdqu xmmword [esp + 0xa8], xmm6
punpckhwd xmm6, xmm7
movdqu xmmword [esp + 0x148], xmm6
movdqu xmm2, xmmword [edi + eax]
movdqu xmmword [esp + 0x128], xmm2
punpckhbw xmm2, xmm7
movdqu xmmword [esp + 0x6c], xmm2
punpckhwd xmm2, xmm7
movdqu xmmword [esp + 0x138], xmm2
mov edx, dword [esp + 0x98]
movdqu xmm3, xmmword [edx + eax]
movdqa xmm1, xmm3
movdqu xmmword [esp + 0x158], xmm3
punpckhbw xmm1, xmm7
movdqa xmm4, xmm1
punpckhwd xmm1, xmm7
movdqa xmm0, xmm1
psubd xmm2, xmm6
paddd xmm0, xmm2
movdqu xmmword [esp + 0x30], xmm0
movdqa xmm0, xmm2
psrad xmm0, 0x1f
pxor xmm2, xmm0
psubd xmm2, xmm0
movdqu xmmword [esp + 0x188], xmm2
movdqu xmm2, xmmword [esp + 0xa8]
punpcklwd xmm2, xmm7
movdqu xmmword [esp + 0xa8], xmm2
movdqu xmm1, xmmword [esp + 0x6c]
punpcklwd xmm1, xmm7
movdqu xmmword [esp + 0x6c], xmm1
punpcklwd xmm4, xmm7
psubd xmm1, xmm2
paddd xmm4, xmm1
movdqu xmmword [esp + 0x48], xmm4
movdqa xmm0, xmm1
psrad xmm0, 0x1f
pxor xmm1, xmm0
psubd xmm1, xmm0
movdqu xmmword [esp + 0x178], xmm1
punpcklbw xmm5, xmm7
movdqa xmm6, xmm5
punpckhwd xmm6, xmm7
movdqu xmmword [esp + 0x168], xmm6
movdqu xmm4, xmmword [esp + 0x128]
punpcklbw xmm4, xmm7
movdqa xmm2, xmm4
punpckhwd xmm2, xmm7
punpcklbw xmm3, xmm7
movdqa xmm0, xmm3
punpckhwd xmm3, xmm7
movdqa xmm1, xmm2
psubd xmm1, xmm6
paddd xmm3, xmm1
movdqa xmm6, xmm1
psrad xmm6, 0x1f
pxor xmm1, xmm6
psubd xmm1, xmm6
punpcklwd xmm5, xmm7
punpcklwd xmm4, xmm7
punpcklwd xmm0, xmm7
movdqa xmm6, xmm4
psubd xmm6, xmm5
paddd xmm0, xmm6
movdqu xmmword [esp + 0xc8], xmm0
movdqa xmm7, xmm6
psrad xmm7, 0x1f
pxor xmm6, xmm7
psubd xmm6, xmm7
movdqa xmm7, xmm0
psubd xmm7, xmm4
movdqa xmm0, xmm3
psubd xmm0, xmm2
movdqu xmmword [esp + 0x58], xmm0
movdqu xmm4, xmmword [esp + 0x48]
movdqu xmm0, xmmword [esp + 0x6c]
psubd xmm4, xmm0
movdqu xmm0, xmmword [esp + 0x30]
movdqu xmm2, xmmword [esp + 0x138]
psubd xmm0, xmm2
movdqa xmm2, xmm0
psrad xmm2, 0x1f
pxor xmm0, xmm2
psubd xmm0, xmm2
movdqu xmmword [esp + 0x6c], xmm0
movdqa xmm2, xmm4
psrad xmm2, 0x1f
pxor xmm4, xmm2
psubd xmm4, xmm2
movdqu xmmword [esp + 0x138], xmm4
movdqu xmm0, xmmword [esp + 0x58]
movdqa xmm2, xmm0
psrad xmm2, 0x1f
pxor xmm0, xmm2
psubd xmm0, xmm2
movdqu xmmword [esp + 0x58], xmm0
movdqa xmm2, xmm7
psrad xmm2, 0x1f
pxor xmm7, xmm2
psubd xmm7, xmm2
movdqu xmm4, xmmword [esp + 0xc8]
psubd xmm4, xmm5
movdqu xmm0, xmmword [esp + 0x168]
psubd xmm3, xmm0
movdqu xmm0, xmmword [esp + 0x48]
movdqu xmm2, xmmword [esp + 0xa8]
psubd xmm0, xmm2
movdqu xmm5, xmmword [esp + 0x30]
movdqu xmm2, xmmword [esp + 0x148]
psubd xmm5, xmm2
movdqa xmm2, xmm5
psrad xmm2, 0x1f
pxor xmm5, xmm2
psubd xmm5, xmm2
movdqu xmmword [esp + 0x30], xmm5
movdqa xmm2, xmm0
psrad xmm2, 0x1f
pxor xmm0, xmm2
psubd xmm0, xmm2
movdqu xmmword [esp + 0x48], xmm0
movdqa xmm2, xmm3
psrad xmm2, 0x1f
pxor xmm3, xmm2
psubd xmm3, xmm2
movdqa xmm2, xmm4
psrad xmm2, 0x1f
pxor xmm4, xmm2
psubd xmm4, xmm2
movdqa xmm5, xmmword [0x103985f0]
pxor xmm6, xmm5
pxor xmm7, xmm5
movdqa xmm2, xmm6
pcmpgtd xmm2, xmm7
pxor xmm4, xmm5
movdqu xmmword [esp + 0xc8], xmm4
pcmpgtd xmm6, xmm4
por xmm6, xmm2
pxor xmm1, xmm5
movdqu xmm0, xmmword [esp + 0x58]
pxor xmm0, xmm5
movdqu xmmword [esp + 0x58], xmm0
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm0
pxor xmm3, xmm5
pcmpgtd xmm1, xmm3
por xmm1, xmm2
packssdw xmm6, xmm1
movdqu xmm1, xmmword [esp + 0x178]
pxor xmm1, xmm5
movdqu xmm4, xmmword [esp + 0x138]
pxor xmm4, xmm5
movdqa xmm0, xmm1
pcmpgtd xmm0, xmm4
movdqa xmm5, xmm4
movdqu xmm2, xmmword [esp + 0x48]
pxor xmm2, xmmword [0x103985f0]
movdqu xmmword [esp + 0x48], xmm2
pcmpgtd xmm1, xmm2
por xmm1, xmm0
movdqa xmm4, xmm1
movdqu xmm2, xmmword [esp + 0x188]
movdqa xmm1, xmmword [0x103985f0]
pxor xmm2, xmm1
movdqu xmm0, xmmword [esp + 0x6c]
pxor xmm0, xmm1
movdqu xmmword [esp + 0x6c], xmm0
movdqa xmm1, xmm2
pcmpgtd xmm1, xmm0
movdqu xmm0, xmmword [esp + 0x30]
pxor xmm0, xmmword [0x103985f0]
movdqu xmmword [esp + 0x30], xmm0
pcmpgtd xmm2, xmm0
por xmm2, xmm1
packssdw xmm4, xmm2
packsswb xmm6, xmm4
movdqu xmm0, xmmword [esp + 0x6c]
movdqu xmm1, xmmword [esp + 0x30]
pcmpgtd xmm0, xmm1
movdqu xmm1, xmmword [esp + 0x48]
pcmpgtd xmm5, xmm1
packssdw xmm5, xmm0
movdqu xmm0, xmmword [esp + 0x58]
pcmpgtd xmm0, xmm3
movdqu xmm1, xmmword [esp + 0xc8]
pcmpgtd xmm7, xmm1
packssdw xmm7, xmm0
packsswb xmm7, xmm5
movdqu xmm0, xmmword [esp + 0x198]
pand xmm0, xmm7
movdqu xmm1, xmmword [esp + 0x128]
pandn xmm7, xmm1
por xmm7, xmm0
pand xmm7, xmm6
movdqu xmm0, xmmword [esp + 0x158]
pandn xmm6, xmm0
por xmm6, xmm7
mov edx, dword [esp + 0x18]
movdqu xmm0, xmmword [edx + eax]
paddb xmm6, xmm0
mov edx, dword [esp + 0xc]
movdqu xmmword [edx + eax], xmm6
add eax, 0x10
cmp ecx, eax
jne 0x1002207b
cmp dword [esp], ecx
je case.default.0x10021a9d
test byte [esp], 8
je 0x10024146
mov dword [esp + 0x6c], ecx
mov edx, dword [esp]
and edx, 0xfffffff8
mov eax, dword [esp + 0x20]
lea esi, [eax + ebp]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
lea edi, [ebx + eax]
sub edi, dword [esp + 4]
add esi, edi
mov eax, dword [esp + 0x44]
add eax, ebp
add edi, eax
mov dword [esp + 0x158], edx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x48], edi
mov ecx, dword [esp + 0x6c]
movq xmm1, qword [edi + ecx]
movdqu xmmword [esp + 0x58], xmm1
pxor xmm6, xmm6
punpcklbw xmm1, xmm6
movdqa xmm0, xmm1
punpckhwd xmm0, xmm6
movdqa xmm3, xmm0
movdqu xmmword [esp + 0x128], xmm0
movq xmm0, qword [ebx + ecx]
movdqu xmmword [esp + 0xa8], xmm0
punpcklbw xmm0, xmm6
movdqa xmm2, xmm0
punpckhwd xmm2, xmm6
mov edi, esi
movq xmm4, qword [esi + ecx]
movdqu xmmword [esp + 0xc8], xmm4
punpcklbw xmm4, xmm6
movdqa xmm5, xmm4
punpckhwd xmm4, xmm6
movdqa xmm7, xmm2
psubd xmm7, xmm3
paddd xmm4, xmm7
movdqa xmm3, xmm7
psrad xmm3, 0x1f
pxor xmm7, xmm3
psubd xmm7, xmm3
punpcklwd xmm1, xmm6
punpcklwd xmm0, xmm6
punpcklwd xmm5, xmm6
movdqa xmm3, xmm0
psubd xmm3, xmm1
paddd xmm5, xmm3
movdqa xmm6, xmm3
psrad xmm6, 0x1f
pxor xmm3, xmm6
psubd xmm3, xmm6
movdqa xmm6, xmm5
psubd xmm6, xmm0
movdqa xmm0, xmm4
psubd xmm0, xmm2
movdqa xmm2, xmm0
psrad xmm2, 0x1f
pxor xmm0, xmm2
psubd xmm0, xmm2
movdqa xmm2, xmm6
psrad xmm2, 0x1f
pxor xmm6, xmm2
psubd xmm6, xmm2
psubd xmm5, xmm1
movdqu xmm1, xmmword [esp + 0x128]
psubd xmm4, xmm1
movdqa xmm1, xmm4
psrad xmm1, 0x1f
pxor xmm4, xmm1
psubd xmm4, xmm1
movdqa xmm1, xmm5
psrad xmm1, 0x1f
pxor xmm5, xmm1
psubd xmm5, xmm1
movdqa xmm2, xmmword [0x103985f0]
pxor xmm3, xmm2
pxor xmm6, xmm2
movdqa xmm1, xmm3
pcmpgtd xmm1, xmm6
pxor xmm5, xmm2
pcmpgtd xmm3, xmm5
por xmm3, xmm1
pxor xmm7, xmm2
pxor xmm0, xmm2
movdqa xmm1, xmm7
pcmpgtd xmm1, xmm0
pxor xmm4, xmm2
pcmpgtd xmm7, xmm4
por xmm7, xmm1
packssdw xmm3, xmm7
pcmpgtd xmm0, xmm4
pcmpgtd xmm6, xmm5
packssdw xmm6, xmm0
packsswb xmm6, xmm6
movdqu xmm0, xmmword [esp + 0x58]
pand xmm0, xmm6
movdqu xmm1, xmmword [esp + 0xa8]
pandn xmm6, xmm1
por xmm6, xmm0
packsswb xmm3, xmm3
pand xmm6, xmm3
movdqu xmm0, xmmword [esp + 0xc8]
pandn xmm3, xmm0
por xmm3, xmm6
movq xmm0, qword [eax + ecx]
paddb xmm3, xmm0
movq qword [edx + ecx], xmm3
add eax, 8
add edi, 8
mov esi, edi
mov edi, dword [esp + 0x48]
add edi, 8
add ebx, 8
add edx, 8
mov ecx, eax
mov eax, ebx
mov ebx, edx
mov edx, dword [esp + 0x30]
add edx, 0xfffffff8
mov dword [esp + 0x30], edx
cmp dword [esp + 0x6c], edx
mov edx, ebx
mov ebx, eax
mov eax, ecx
jne 0x100224f5
mov eax, dword [esp + 0x158]
mov ecx, eax
cmp dword [esp], eax
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
jmp 0x10024146
cmp dword [esp], 0
jle case.default.0x10021a9d
mov dword [esp + 0x30], 0
cmp dword [esp], 8
jb 0x10022889
mov ecx, dword [esp + 0x20]
add ecx, ebx
mov edi, dword [esp + 0x1c]
add ecx, edi
add ecx, ebp
mov edx, ecx
mov esi, dword [esp + 0x44]
add esi, ebx
add esi, edi
add esi, ebp
sub ecx, esi
sub edx, dword [esp + 0x18]
cmp edx, 0x10
jb 0x10022889
jb 0x10022889
cmp ecx, 0x10
jb 0x10022889
cmp dword [esp + 4], 0x10
jb 0x10022889
mov dword [esp + 0x30], 0
cmp dword [esp], 0x10
jb 0x100227f3
mov eax, dword [esp]
and eax, 0xfffffff0
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x20]
add ecx, ebp
mov edx, dword [esp + 0x1c]
lea esi, [ebx + edx]
sub esi, dword [esp + 4]
add esi, ecx
xor edx, edx
pxor xmm5, xmm5
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
movdqu xmm0, xmmword [ecx + edx]
movdqu xmm2, xmmword [eax + edx]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm5
punpcklbw xmm2, xmm5
movdqu xmm1, xmmword [esi + edx]
movdqa xmm4, xmm1
punpckhbw xmm4, xmm5
paddw xmm4, xmm3
punpcklbw xmm1, xmm5
paddw xmm1, xmm2
psrlw xmm4, 1
psrlw xmm1, 1
packuswb xmm1, xmm4
paddb xmm1, xmm0
movdqu xmmword [edi + edx], xmm1
add edx, 0x10
cmp dword [esp + 0x30], edx
jne 0x1002278d
mov eax, dword [esp + 0x30]
cmp dword [esp], eax
je case.default.0x10021a9d
test byte [esp], 8
je 0x10022889
mov esi, dword [esp]
and esi, 0xfffffff8
mov ecx, dword [esp + 0x20]
add ecx, ebp
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
lea eax, [ebx + edx]
sub eax, dword [esp + 4]
add eax, ecx
mov dword [esp + 0x58], esi
mov dword [esp + 0x48], esi
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
pxor xmm3, xmm3
mov ecx, dword [esp + 0x30]
movq xmm0, qword [edi + ecx]
movq xmm1, qword [esi + ecx]
punpcklbw xmm1, xmm3
movq xmm2, qword [eax + ecx]
punpcklbw xmm2, xmm3
paddw xmm2, xmm1
psrlw xmm2, 1
packuswb xmm2, xmm2
paddb xmm2, xmm0
movq qword [ebx + ecx], xmm2
add edi, 8
add esi, 8
add eax, 8
add ebx, 8
mov edx, dword [esp + 0x48]
add edx, 0xfffffff8
mov dword [esp + 0x48], edx
cmp ecx, edx
jne 0x1002282c
mov eax, dword [esp + 0x58]
mov dword [esp + 0x30], eax
cmp dword [esp], eax
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
mov ecx, dword [esp + 0x30]
mov edx, ecx
or edx, 1
test byte [esp], 1
je 0x100228c0
mov eax, dword [esp + 0x10]
movzx esi, byte [eax + ecx]
mov eax, ecx
sub ecx, dword [esp + 4]
mov edi, dword [esp + 0xc]
movzx ecx, byte [edi + ecx]
add ecx, esi
shr ecx, 1
mov esi, dword [esp + 0x18]
add cl, byte [esi + eax]
mov byte [edi + eax], cl
mov dword [esp + 0x30], edx
cmp dword [esp], edx
je case.default.0x10021a9d
mov ecx, dword [esp + 0x8c]
lea edx, [ecx + ebp]
add ebx, dword [esp + 0x1c]
lea ecx, [edx + ebx]
mov esi, ebx
sub esi, dword [esp + 4]
add esi, edx
add ebp, dword [esp + 0xe4]
add ebp, ebx
mov edx, dword [esp + 0x18]
lea edi, [edx + 1]
mov ebx, dword [esp]
mov eax, dword [esp + 0x30]
movzx edx, byte [ebp + eax - 1]
mov dword [esp + 0x10], edx
movzx edx, byte [esi + eax - 1]
add edx, dword [esp + 0x10]
shr edx, 1
add dl, byte [edi + eax - 1]
mov byte [ecx + eax - 1], dl
movzx edx, byte [ebp + eax]
mov dword [esp + 0x10], edx
movzx edx, byte [esi + eax]
add edx, dword [esp + 0x10]
shr edx, 1
add dl, byte [edi + eax]
mov byte [ecx + eax], dl
add ebx, 0xfffffffe
add ecx, 2
add esi, 2
add ebp, 2
add edi, 2
cmp eax, ebx
jne 0x100228f5
jmp case.default.0x10021a9d
cmp dword [esp], 0
jle case.default.0x10021a9d
xor eax, eax
cmp dword [esp], 8
jb 0x10022a84
mov ecx, dword [esp + 0x20]
add ecx, ebx
add ecx, dword [esp + 0x1c]
add ecx, ebp
sub ecx, dword [esp + 0x18]
cmp ecx, 0x20
jb 0x10022a84
jb 0x10022a84
cmp dword [esp + 4], 0x20
jb 0x10022a84
xor esi, esi
mov eax, 0
cmp dword [esp], 0x20
mov dword [esp + 0x14], ebx
jb 0x10022a1e
mov eax, dword [esp]
and eax, 0xffffffe0
mov ecx, dword [esp + 0x84]
lea edx, [ecx + ebp]
mov ecx, dword [esp + 0x1c]
add ecx, ebx
mov edi, ecx
sub edi, dword [esp + 4]
add edi, edx
add edx, ecx
xor ebx, ebx
movdqa xmm4, xmmword [0x10398600]
mov ecx, dword [esp + 0x18]
movdqu xmm0, xmmword [ecx + ebx]
movdqu xmm1, xmmword [ecx + ebx + 0x10]
movdqu xmm2, xmmword [edi + ebx - 0x10]
movdqu xmm3, xmmword [edi + ebx]
psrlw xmm2, 1
pand xmm2, xmm4
paddb xmm2, xmm0
psrlw xmm3, 1
pand xmm3, xmm4
paddb xmm3, xmm1
movdqu xmmword [edx + ebx - 0x10], xmm2
movdqu xmmword [edx + ebx], xmm3
add ebx, 0x20
cmp eax, ebx
jne 0x100229c9
cmp dword [esp], eax
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
test byte [esp], 0x18
je 0x10022a84
mov edx, ebx
mov ebx, eax
mov eax, dword [esp]
and eax, 0xfffffff8
mov ecx, dword [esp + 0x20]
add ecx, ebp
add edx, ebx
add edx, dword [esp + 0x1c]
mov edi, edx
sub edi, dword [esp + 4]
add edi, ecx
add edx, ecx
mov ecx, eax
sub ecx, ebx
mov ebp, dword [esp + 0x18]
add ebx, ebp
movdqa xmm2, xmmword [0x10398600]
movq xmm0, qword [ebx + esi]
movq xmm1, qword [edi + esi]
psrlw xmm1, 1
pand xmm1, xmm2
paddb xmm1, xmm0
movq qword [edx + esi], xmm1
add esi, 8
cmp ecx, esi
jne 0x10022a50
cmp dword [esp], eax
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
mov edx, eax
or edx, 1
test byte [esp], 1
je 0x10022aab
mov ecx, eax
sub ecx, dword [esp + 4]
mov edi, dword [esp + 0xc]
movzx ecx, byte [edi + ecx]
shr cl, 1
mov esi, dword [esp + 0x18]
add cl, byte [esi + eax]
mov byte [edi + eax], cl
mov eax, edx
cmp dword [esp], edx
je case.default.0x10021a9d
add ebp, dword [esp + 0x8c]
add ebx, dword [esp + 0x1c]
lea ecx, [ebx + ebp]
sub ebx, dword [esp + 4]
add ebx, ebp
mov edx, dword [esp + 0x18]
inc edx
mov esi, dword [esp]
mov edi, ebx
movzx ebx, byte [ebx + eax - 1]
shr bl, 1
add bl, byte [edx + eax - 1]
mov byte [ecx + eax - 1], bl
movzx ebx, byte [edi + eax]
shr bl, 1
add bl, byte [edx + eax]
mov byte [ecx + eax], bl
mov ebx, edi
add esi, 0xfffffffe
add ecx, 2
add ebx, 2
add edx, 2
cmp eax, esi
jne 0x10022ad0
jmp case.default.0x10021a9d
cmp dword [esp], 0
jle case.default.0x10021a9d
xor eax, eax
cmp dword [esp], 8
jb 0x10022c0f
mov ecx, dword [esp + 0x20]
add ecx, ebx
add ecx, dword [esp + 0x1c]
add ecx, ebp
sub ecx, dword [esp + 0x18]
cmp ecx, 0x20
jb 0x10022c0f
jb 0x10022c0f
cmp dword [esp + 4], 0x20
jb 0x10022c0f
xor esi, esi
mov eax, 0
cmp dword [esp], 0x20
mov dword [esp + 0x14], ebx
jb 0x10022bbe
mov eax, dword [esp]
and eax, 0xffffffe0
mov ecx, dword [esp + 0x84]
lea edx, [ecx + ebp]
mov ecx, dword [esp + 0x1c]
add ecx, ebx
mov edi, ecx
sub edi, dword [esp + 4]
add edi, edx
add edx, ecx
xor ecx, ecx
mov ebx, dword [esp + 0x18]
movdqu xmm0, xmmword [ebx + ecx]
movdqu xmm1, xmmword [ebx + ecx + 0x10]
movdqu xmm2, xmmword [edi + ecx - 0x10]
paddb xmm2, xmm0
movdqu xmm0, xmmword [edi + ecx]
paddb xmm0, xmm1
movdqu xmmword [edx + ecx - 0x10], xmm2
movdqu xmmword [edx + ecx], xmm0
add ecx, 0x20
cmp eax, ecx
jne 0x10022b7b
cmp dword [esp], eax
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
test byte [esp], 0x18
je 0x10022c0f
mov edx, ebx
mov ebx, eax
mov eax, dword [esp]
and eax, 0xfffffff8
mov ecx, dword [esp + 0x20]
add ecx, ebp
add edx, ebx
add edx, dword [esp + 0x1c]
mov edi, edx
sub edi, dword [esp + 4]
add edi, ecx
add edx, ecx
mov ecx, eax
sub ecx, ebx
mov ebp, dword [esp + 0x18]
add ebx, ebp
movq xmm0, qword [ebx + esi]
movq xmm1, qword [edi + esi]
paddb xmm1, xmm0
movq qword [edx + esi], xmm1
add esi, 8
cmp ecx, esi
jne 0x10022be8
cmp dword [esp], eax
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x14]
je case.default.0x10021a9d
mov ecx, eax
or ecx, 1
test byte [esp], 1
je 0x10022c34
mov edx, eax
sub edx, dword [esp + 4]
mov edi, dword [esp + 0xc]
movzx edx, byte [edi + edx]
mov esi, dword [esp + 0x18]
add dl, byte [esi + eax]
mov byte [edi + eax], dl
mov eax, ecx
cmp dword [esp], ecx
je case.default.0x10021a9d
add ebp, dword [esp + 0x8c]
add ebx, dword [esp + 0x1c]
lea ecx, [ebx + ebp]
sub ebx, dword [esp + 4]
add ebx, ebp
mov edx, dword [esp + 0x18]
inc edx
mov esi, dword [esp]
mov edi, ebx
movzx ebx, byte [ebx + eax - 1]
add bl, byte [edx + eax - 1]
mov byte [ecx + eax - 1], bl
movzx ebx, byte [edi + eax]
add bl, byte [edx + eax]
mov byte [ecx + eax], bl
mov ebx, edi
add esi, 0xfffffffe
add ecx, 2
add ebx, 2
add edx, 2
cmp eax, esi
jne 0x10022c55
mov eax, dword [esp + 0x18]
add eax, dword [esp]
mov dword [esp], eax
mov ebp, dword [esp + 0x80]
mov esi, dword [esp + 0x1c8]
mov ebx, dword [esp + 0x1cc]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 4]
pxor xmm6, xmm6
movdqa xmm7, xmmword [0x10398600]
jmp 0x1002410e
mov eax, dword [esp + 0x2c]
test eax, eax
je case.default.0x10021ac8
add ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
lea edx, [ebx + eax]
mov eax, dword [esp + 8]
add edx, eax
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x88]
lea esi, [ebx + edx]
add esi, eax
mov dword [esp + 0x14], esi
mov esi, ecx
and esi, 0xffffffe0
mov dword [esp + 0x58], esi
mov esi, ecx
and esi, 0xfffffff8
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0xc], edi
mov edi, ebp
lea ebp, [eax + esi]
add ebp, ebx
add eax, edx
add eax, ebx
mov dword [esp + 8], eax
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x2c]
mov dword [esp], edi
mov ebx, dword [esp + 0xc]
jmp 0x10022d50
mov byte [ebx + ecx], 0xff
add esi, ecx
mov dword [esp], esi
mov eax, dword [esp + 0x24]
add ebx, eax
inc dword [esp + 0x30]
add ebp, eax
add edi, eax
mov dword [esp + 8], edi
mov eax, dword [esp + 0x10]
dec eax
je 0x10023f9a
mov dword [esp + 0x10], eax
test ecx, ecx
mov edi, dword [esp + 8]
mov esi, dword [esp]
jle 0x10022d2a
mov dword [esp + 0xc], ebx
xor eax, eax
cmp ecx, 8
jae 0x10022dd7
mov edx, ecx
mov ecx, eax
or ecx, 1
test dl, 1
je 0x10022d8f
mov edx, eax
sub edx, dword [esp + 0x24]
mov ebx, dword [esp + 0xc]
movzx edx, byte [ebx + edx]
mov esi, dword [esp]
add dl, byte [esi + eax]
mov byte [ebx + eax], dl
mov eax, ecx
mov edx, dword [esp + 4]
cmp edx, ecx
mov ecx, edx
mov ebx, dword [esp + 0xc]
mov edi, dword [esp + 8]
mov esi, dword [esp]
je 0x10022d2a
nop word cs:[eax + eax]
movzx ecx, byte [edi + eax]
add cl, byte [esi + eax]
mov byte [ebx + eax], cl
movzx ecx, byte [edi + eax + 1]
add cl, byte [esi + eax + 1]
mov byte [ebx + eax + 1], cl
mov ecx, dword [esp + 4]
add eax, 2
cmp ecx, eax
jne 0x10022db0
jmp 0x10022d2a
mov edx, dword [esp + 0x24]
imul edx, dword [esp + 0x30]
mov esi, dword [esp + 0x48]
lea ebx, [esi + edx]
mov edi, ecx
imul edi, dword [esp + 0x30]
add edi, dword [esp + 0x18]
mov ecx, ebx
sub ecx, edi
add edx, dword [esp + 0x14]
sub ebx, edx
cmp ecx, 0x20
jb 0x10022ea9
jb 0x10022ea9
cmp ebx, 0x20
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov edi, dword [esp + 8]
mov esi, dword [esp]
jb 0x10022d6a
xor edx, edx
cmp ecx, 0x20
jb 0x10022e7c
xor eax, eax
mov edx, dword [esp + 0x58]
movdqu xmm0, xmmword [esi + eax]
movdqu xmm1, xmmword [esi + eax + 0x10]
movdqu xmm2, xmmword [ebp + eax - 0x10]
paddb xmm2, xmm0
movdqu xmm0, xmmword [ebp + eax]
paddb xmm0, xmm1
movdqu xmmword [ebx + eax], xmm2
movdqu xmmword [ebx + eax + 0x10], xmm0
add eax, 0x20
cmp edx, eax
jne 0x10022e30
cmp ecx, edx
mov edi, dword [esp + 8]
je 0x10022d2a
mov eax, dword [esp + 0x58]
mov edx, eax
test cl, 0x18
je 0x10022d6a
mov eax, dword [esp + 0x6c]
movq xmm0, qword [esi + edx]
movq xmm1, qword [edi + edx]
paddb xmm1, xmm0
movq qword [ebx + edx], xmm1
add edx, 8
cmp eax, edx
jne 0x10022e80
mov edx, eax
cmp ecx, eax
je 0x10022d2a
jmp 0x10022d6a
mov ecx, dword [esp + 4]
jmp 0x10022d6a
mov eax, dword [esp + 0x2c]
test eax, eax
je case.default.0x10021ac8
mov eax, dword [esp + 0x20]
add eax, ebx
mov edx, dword [esp + 0x1c]
add eax, edx
mov esi, dword [esp + 8]
add eax, esi
mov dword [esp + 0x58], eax
add ebx, dword [esp + 0x44]
add ebx, edx
add ebx, esi
mov dword [esp + 0x14], ebx
mov eax, ecx
and eax, 0xffffffe0
mov dword [esp + 0x6c], eax
mov eax, ecx
and eax, 0xfffffff8
mov dword [esp + 0xa8], eax
mov eax, ecx
and eax, 3
mov dword [esp + 0x30], eax
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x2c]
mov dword [esp], ebp
jmp 0x10022f35
mov byte [esi + ecx], 0xff
add ebp, ecx
mov dword [esp], ebp
mov eax, dword [esp + 0x24]
add esi, eax
add ebx, eax
mov dword [esp + 0x10], ebx
inc dword [esp + 0x48]
mov eax, dword [esp + 8]
dec eax
mov edi, esi
je 0x10023f9a
mov dword [esp + 8], eax
test ecx, ecx
mov esi, edi
mov edi, dword [esp + 0x18]
mov ebp, dword [esp]
mov ebx, dword [esp + 0x10]
jle 0x10022f0f
mov dword [esp + 0xc], esi
xor eax, eax
cmp ecx, 8
jae 0x10022ff2
mov edx, eax
not edx
add edx, ecx
cmp dword [esp + 0x30], 0
je 0x10022f9b
mov ecx, dword [esp + 0xc]
add ecx, eax
mov esi, ebp
mov edi, dword [esp + 0x10]
lea ebp, [edi + eax]
add esi, eax
xor edi, edi
nop dword [eax]
movzx ebx, byte [ebp + edi]
add bl, byte [esi + edi]
mov byte [ecx + edi], bl
inc edi
cmp dword [esp + 0x30], edi
jne 0x10022f80
add eax, edi
mov ecx, dword [esp + 4]
mov ebp, dword [esp]
cmp edx, 3
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
jb 0x10022f0f
nop dword [eax]
movzx ecx, byte [ebx + eax]
add cl, byte [ebp + eax]
mov byte [esi + eax], cl
movzx ecx, byte [ebx + eax + 1]
add cl, byte [ebp + eax + 1]
mov byte [esi + eax + 1], cl
movzx ecx, byte [ebx + eax + 2]
add cl, byte [ebp + eax + 2]
mov byte [esi + eax + 2], cl
movzx ecx, byte [ebx + eax + 3]
add cl, byte [ebp + eax + 3]
mov byte [esi + eax + 3], cl
mov ecx, dword [esp + 4]
add eax, 4
cmp ecx, eax
jne 0x10022fb0
jmp 0x10022f0f
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x48]
imul edx, ebx
mov esi, ecx
mov ecx, dword [esp + 0x58]
add ecx, edx
imul esi, ebx
add esi, edi
mov edi, ecx
sub edi, esi
add edx, dword [esp + 0x14]
sub ecx, edx
cmp edi, 0x20
jb 0x100230ca
jb 0x100230ca
cmp ecx, 0x20
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
jb 0x10022f59
xor edx, edx
cmp ecx, 0x20
jb 0x1002308d
xor eax, eax
mov edx, dword [esp + 0x6c]
movdqu xmm0, xmmword [ebp + eax]
movdqu xmm1, xmmword [ebp + eax + 0x10]
movdqu xmm2, xmmword [ebx + eax]
paddb xmm2, xmm0
movdqu xmm0, xmmword [ebx + eax + 0x10]
paddb xmm0, xmm1
movdqu xmmword [esi + eax], xmm2
movdqu xmmword [esi + eax + 0x10], xmm0
add eax, 0x20
cmp edx, eax
jne 0x10023045
cmp ecx, edx
je 0x10022f0f
mov eax, dword [esp + 0x6c]
mov edx, eax
test cl, 0x18
je 0x10022f59
mov eax, dword [esp + 0xa8]
nop word cs:[eax + eax]
movq xmm0, qword [ebp + edx]
movq xmm1, qword [ebx + edx]
paddb xmm1, xmm0
movq qword [esi + edx], xmm1
add edx, 8
cmp eax, edx
jne 0x100230a0
mov edx, eax
cmp ecx, eax
je 0x10022f0f
jmp 0x10022f59
mov ecx, dword [esp + 4]
jmp 0x10022f59
mov eax, dword [esp + 0x2c]
test eax, eax
je case.default.0x10021ac8
add ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
lea edx, [ebx + eax]
mov eax, ebx
mov ebx, dword [esp + 8]
add edx, ebx
mov dword [esp + 0x11c], edx
mov edx, dword [esp + 0xb8]
add edx, eax
add edx, ebx
mov dword [esp + 0x118], edx
mov edx, dword [esp + 0x44]
add edx, eax
add edx, ebx
mov dword [esp + 0x114], edx
mov edx, dword [esp + 0x88]
lea esi, [eax + edx]
add esi, ebx
mov dword [esp + 0x110], esi
mov esi, ecx
and esi, 0xfffffff0
mov dword [esp + 0xbc], esi
add edx, ebx
add edx, eax
add ebx, dword [esp + 0xb8]
add ebx, eax
mov dword [esp + 8], ebx
mov eax, ecx
and eax, 0xfffffff8
mov dword [esp + 0x98], eax
mov dword [esp + 0xc0], 0
mov eax, dword [esp + 0x2c]
mov dword [esp], ebp
mov ebp, edx
jmp 0x1002319c
mov byte [edi + ecx], 0xff
add esi, ecx
mov dword [esp], esi
mov eax, dword [esp + 0x24]
add edi, eax
add dword [esp + 0x10], eax
inc dword [esp + 0xc0]
add ebp, eax
add edx, eax
mov dword [esp + 8], edx
mov eax, dword [esp + 0x124]
dec eax
je 0x10023f9a
mov dword [esp + 0x124], eax
test ecx, ecx
mov edx, dword [esp + 8]
mov esi, dword [esp]
jle 0x1002316c
xor ebx, ebx
cmp ecx, 8
mov dword [esp + 0xc], edi
mov dword [esp + 0x14], ebp
jb 0x100238b0
mov edx, ecx
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0xc0]
imul ecx, esi
mov eax, dword [esp + 0x11c]
add eax, ecx
imul edx, esi
add edx, dword [esp + 0x18]
mov esi, dword [esp + 0x118]
lea edi, [esi + ecx]
mov esi, dword [esp + 0x114]
add esi, ecx
mov dword [esp + 0x30], esi
mov esi, eax
sub esi, edx
mov ebp, eax
sub ebp, edi
mov edx, eax
sub edx, dword [esp + 0x30]
add ecx, dword [esp + 0x110]
sub eax, ecx
cmp esi, 0x10
jb 0x10023870
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0xc]
jb 0x10023870
cmp ebp, 0x10
jb 0x10023870
cmp edx, 0x10
mov edx, dword [esp + 8]
mov esi, dword [esp]
mov ebp, dword [esp + 0x14]
jb 0x100238b0
cmp eax, 0x10
jb 0x100238b0
xor eax, eax
cmp ecx, 0x10
jae 0x1002341e
nop word [eax + eax]
movq xmm1, qword [edx + eax]
movdqu xmmword [esp + 0x30], xmm1
punpcklbw xmm1, xmm6
movdqa xmm0, xmm1
punpckhwd xmm0, xmm6
movdqa xmm3, xmm0
movdqu xmmword [esp + 0x6c], xmm0
mov ebx, dword [esp + 0x10]
movq xmm0, qword [ebx + eax]
movdqu xmmword [esp + 0x48], xmm0
punpcklbw xmm0, xmm6
movdqa xmm2, xmm0
punpckhwd xmm2, xmm6
movq xmm4, qword [ebp + eax]
movdqu xmmword [esp + 0x58], xmm4
punpcklbw xmm4, xmm6
movdqa xmm5, xmm4
punpckhwd xmm4, xmm6
movdqa xmm7, xmm2
psubd xmm7, xmm3
paddd xmm4, xmm7
movdqa xmm3, xmm7
psrad xmm3, 0x1f
pxor xmm7, xmm3
psubd xmm7, xmm3
punpcklwd xmm1, xmm6
punpcklwd xmm0, xmm6
punpcklwd xmm5, xmm6
movdqa xmm3, xmm0
psubd xmm3, xmm1
paddd xmm5, xmm3
movdqa xmm6, xmm3
psrad xmm6, 0x1f
pxor xmm3, xmm6
psubd xmm3, xmm6
movdqa xmm6, xmm5
psubd xmm6, xmm0
movdqa xmm0, xmm4
psubd xmm0, xmm2
movdqa xmm2, xmm0
psrad xmm2, 0x1f
pxor xmm0, xmm2
psubd xmm0, xmm2
movdqa xmm2, xmm6
psrad xmm2, 0x1f
pxor xmm6, xmm2
psubd xmm6, xmm2
psubd xmm5, xmm1
movdqu xmm1, xmmword [esp + 0x6c]
psubd xmm4, xmm1
movdqa xmm1, xmm4
psrad xmm1, 0x1f
pxor xmm4, xmm1
psubd xmm4, xmm1
movdqa xmm1, xmm5
psrad xmm1, 0x1f
pxor xmm5, xmm1
psubd xmm5, xmm1
movdqa xmm2, xmmword [0x103985f0]
pxor xmm3, xmm2
pxor xmm6, xmm2
movdqa xmm1, xmm3
pcmpgtd xmm1, xmm6
pxor xmm5, xmm2
pcmpgtd xmm3, xmm5
por xmm3, xmm1
pxor xmm7, xmm2
pxor xmm0, xmm2
movdqa xmm1, xmm7
pcmpgtd xmm1, xmm0
pxor xmm4, xmm2
pcmpgtd xmm7, xmm4
por xmm7, xmm1
packssdw xmm3, xmm7
pcmpgtd xmm0, xmm4
pcmpgtd xmm6, xmm5
packssdw xmm6, xmm0
packsswb xmm6, xmm6
movdqu xmm0, xmmword [esp + 0x30]
pand xmm0, xmm6
movdqu xmm1, xmmword [esp + 0x48]
pandn xmm6, xmm1
por xmm6, xmm0
packsswb xmm3, xmm3
pand xmm6, xmm3
movdqu xmm0, xmmword [esp + 0x58]
pandn xmm3, xmm0
por xmm3, xmm6
pxor xmm6, xmm6
movq xmm0, qword [esi + eax]
paddb xmm3, xmm0
movq qword [edi + eax], xmm3
add eax, 8
cmp dword [esp + 0x98], eax
jne 0x10023260
mov eax, dword [esp + 0x98]
mov ebx, eax
cmp ecx, eax
movdqa xmm7, xmmword [0x10398600]
jne 0x100238b0
jmp 0x1002316c
xor eax, eax
mov ebp, dword [esp + 0xbc]
movdqu xmm0, xmmword [edx + eax]
movdqu xmmword [esp + 0x128], xmm0
movdqa xmm1, xmm0
punpckhbw xmm1, xmm6
movdqa xmm4, xmm1
pxor xmm7, xmm7
movdqa xmm6, xmm1
punpckhwd xmm4, xmm7
movdqu xmmword [esp + 0x178], xmm4
mov ebx, dword [esp + 0x10]
movdqu xmm2, xmmword [ebx + eax]
movdqu xmmword [esp + 0xc8], xmm2
punpckhbw xmm2, xmm7
movdqu xmmword [esp + 0x6c], xmm2
punpckhwd xmm2, xmm7
movdqu xmmword [esp + 0x148], xmm2
mov ebx, dword [esp + 0x14]
movdqu xmm3, xmmword [ebx + eax]
movdqa xmm1, xmm3
movdqu xmmword [esp + 0x158], xmm3
punpckhbw xmm1, xmm7
movdqa xmm5, xmm1
punpckhwd xmm1, xmm7
movdqa xmm0, xmm1
psubd xmm2, xmm4
paddd xmm0, xmm2
movdqu xmmword [esp + 0x30], xmm0
movdqa xmm0, xmm2
psrad xmm0, 0x1f
pxor xmm2, xmm0
psubd xmm2, xmm0
movdqu xmmword [esp + 0x198], xmm2
punpcklwd xmm6, xmm7
movdqu xmmword [esp + 0x138], xmm6
movdqu xmm1, xmmword [esp + 0x6c]
punpcklwd xmm1, xmm7
movdqu xmmword [esp + 0x6c], xmm1
punpcklwd xmm5, xmm7
psubd xmm1, xmm6
paddd xmm5, xmm1
movdqu xmmword [esp + 0x48], xmm5
movdqa xmm0, xmm1
psrad xmm0, 0x1f
pxor xmm1, xmm0
psubd xmm1, xmm0
movdqu xmmword [esp + 0x188], xmm1
movdqu xmm5, xmmword [esp + 0x128]
punpcklbw xmm5, xmm7
movdqa xmm6, xmm5
punpckhwd xmm6, xmm7
movdqu xmmword [esp + 0x168], xmm6
movdqu xmm4, xmmword [esp + 0xc8]
punpcklbw xmm4, xmm7
movdqa xmm2, xmm4
punpckhwd xmm2, xmm7
punpcklbw xmm3, xmm7
movdqa xmm0, xmm3
punpckhwd xmm3, xmm7
movdqa xmm1, xmm2
psubd xmm1, xmm6
paddd xmm3, xmm1
movdqa xmm6, xmm1
psrad xmm6, 0x1f
pxor xmm1, xmm6
psubd xmm1, xmm6
punpcklwd xmm5, xmm7
punpcklwd xmm4, xmm7
punpcklwd xmm0, xmm7
movdqa xmm6, xmm4
psubd xmm6, xmm5
paddd xmm0, xmm6
movdqu xmmword [esp + 0xa8], xmm0
movdqa xmm7, xmm6
psrad xmm7, 0x1f
pxor xmm6, xmm7
psubd xmm6, xmm7
movdqa xmm7, xmm0
psubd xmm7, xmm4
movdqa xmm0, xmm3
psubd xmm0, xmm2
movdqu xmmword [esp + 0x58], xmm0
movdqu xmm4, xmmword [esp + 0x48]
movdqu xmm0, xmmword [esp + 0x6c]
psubd xmm4, xmm0
movdqu xmm2, xmmword [esp + 0x30]
movdqu xmm0, xmmword [esp + 0x148]
psubd xmm2, xmm0
movdqa xmm0, xmm2
psrad xmm2, 0x1f
pxor xmm0, xmm2
psubd xmm0, xmm2
movdqu xmmword [esp + 0x6c], xmm0
movdqa xmm2, xmm4
psrad xmm2, 0x1f
pxor xmm4, xmm2
psubd xmm4, xmm2
movdqu xmmword [esp + 0x148], xmm4
movdqu xmm0, xmmword [esp + 0x58]
movdqa xmm2, xmm0
psrad xmm2, 0x1f
pxor xmm0, xmm2
psubd xmm0, xmm2
movdqu xmmword [esp + 0x58], xmm0
movdqa xmm2, xmm7
psrad xmm2, 0x1f
pxor xmm7, xmm2
psubd xmm7, xmm2
movdqu xmm4, xmmword [esp + 0xa8]
psubd xmm4, xmm5
movdqu xmm0, xmmword [esp + 0x168]
psubd xmm3, xmm0
movdqu xmm0, xmmword [esp + 0x48]
movdqu xmm2, xmmword [esp + 0x138]
psubd xmm0, xmm2
movdqu xmm2, xmmword [esp + 0x30]
movdqu xmm5, xmmword [esp + 0x178]
psubd xmm2, xmm5
movdqa xmm5, xmm2
psrad xmm5, 0x1f
pxor xmm2, xmm5
psubd xmm2, xmm5
movdqu xmmword [esp + 0x30], xmm2
movdqa xmm2, xmm0
psrad xmm2, 0x1f
pxor xmm0, xmm2
psubd xmm0, xmm2
movdqu xmmword [esp + 0x48], xmm0
movdqa xmm2, xmm3
psrad xmm2, 0x1f
pxor xmm3, xmm2
psubd xmm3, xmm2
movdqa xmm5, xmm4
psrad xmm5, 0x1f
pxor xmm4, xmm5
psubd xmm4, xmm5
movdqa xmm5, xmmword [0x103985f0]
pxor xmm6, xmm5
pxor xmm7, xmm5
movdqa xmm2, xmm6
pcmpgtd xmm2, xmm7
pxor xmm4, xmm5
movdqu xmmword [esp + 0xa8], xmm4
pcmpgtd xmm6, xmm4
por xmm6, xmm2
pxor xmm1, xmm5
movdqu xmm0, xmmword [esp + 0x58]
pxor xmm0, xmm5
movdqu xmmword [esp + 0x58], xmm0
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm0
pxor xmm3, xmm5
pcmpgtd xmm1, xmm3
por xmm1, xmm2
packssdw xmm6, xmm1
movdqu xmm1, xmmword [esp + 0x188]
pxor xmm1, xmm5
movdqu xmm4, xmmword [esp + 0x148]
pxor xmm4, xmm5
movdqa xmm0, xmm1
pcmpgtd xmm0, xmm4
movdqa xmm5, xmm4
movdqu xmm2, xmmword [esp + 0x48]
pxor xmm2, xmmword [0x103985f0]
movdqu xmmword [esp + 0x48], xmm2
pcmpgtd xmm1, xmm2
por xmm1, xmm0
movdqa xmm4, xmm1
movdqu xmm2, xmmword [esp + 0x198]
movdqa xmm1, xmmword [0x103985f0]
pxor xmm2, xmm1
movdqu xmm0, xmmword [esp + 0x6c]
pxor xmm0, xmm1
movdqu xmmword [esp + 0x6c], xmm0
movdqa xmm1, xmm2
pcmpgtd xmm1, xmm0
movdqu xmm0, xmmword [esp + 0x30]
pxor xmm0, xmmword [0x103985f0]
movdqu xmmword [esp + 0x30], xmm0
pcmpgtd xmm2, xmm0
por xmm2, xmm1
packssdw xmm4, xmm2
packsswb xmm6, xmm4
movdqu xmm0, xmmword [esp + 0x6c]
movdqu xmm1, xmmword [esp + 0x30]
pcmpgtd xmm0, xmm1
movdqu xmm1, xmmword [esp + 0x48]
pcmpgtd xmm5, xmm1
packssdw xmm5, xmm0
movdqu xmm0, xmmword [esp + 0x58]
pcmpgtd xmm0, xmm3
movdqu xmm1, xmmword [esp + 0xa8]
pcmpgtd xmm7, xmm1
packssdw xmm7, xmm0
packsswb xmm7, xmm5
movdqu xmm0, xmmword [esp + 0x128]
pand xmm0, xmm7
movdqu xmm1, xmmword [esp + 0xc8]
pandn xmm7, xmm1
por xmm7, xmm0
pand xmm7, xmm6
movdqu xmm0, xmmword [esp + 0x158]
pandn xmm6, xmm0
por xmm6, xmm7
movdqu xmm0, xmmword [esi + eax]
paddb xmm6, xmm0
movdqu xmmword [edi + eax], xmm6
pxor xmm6, xmm6
add eax, 0x10
cmp ebp, eax
jne 0x10023427
cmp ecx, ebp
movdqa xmm7, xmmword [0x10398600]
mov ebp, dword [esp + 0x14]
je 0x1002316c
mov ebx, dword [esp + 0xbc]
mov eax, ebx
test cl, 8
je 0x100238b0
jmp 0x10023260
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0x14]
jmp 0x100238b0
cmp esi, edi
cmova eax, edx
cmp esi, ecx
cmova eax, edx
mov esi, dword [esp]
mov ebx, dword [esp + 0x30]
add al, byte [esi + ebx]
mov edi, dword [esp + 0xc]
mov byte [edi + ebx], al
inc ebx
mov ecx, dword [esp + 4]
cmp ecx, ebx
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0x14]
je 0x1002316c
movzx edx, byte [edx + ebx]
mov eax, dword [esp + 0x10]
mov ecx, ebx
movzx ebx, byte [eax + ebx]
mov dword [esp + 0x30], ecx
movzx eax, byte [ebp + ecx]
mov ecx, ebx
sub ecx, edx
lea ebp, [ecx + eax]
mov esi, ecx
neg esi
cmovs esi, ecx
mov edi, ebp
mov dword [esp + 0x48], ebx
sub edi, ebx
mov ecx, edi
neg ecx
cmovs ecx, edi
sub ebp, edx
mov edi, ebp
neg edi
cmovs edi, ebp
cmp ecx, edi
ja 0x10023880
mov edx, dword [esp + 0x48]
jmp 0x10023880
mov eax, dword [esp + 0x2c]
test eax, eax
je case.default.0x10021ac8
add ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
lea edx, [ebx + eax]
mov esi, dword [esp + 8]
add edx, esi
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x44]
add edx, ebx
add edx, esi
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x88]
lea eax, [ebx + edx]
add eax, esi
mov dword [esp + 0x6c], eax
mov eax, ecx
and eax, 0xfffffff0
mov dword [esp + 0xa8], eax
mov eax, ecx
and eax, 0xfffffff8
mov dword [esp + 0xc8], eax
add esi, edx
add esi, ebx
mov dword [esp + 8], esi
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x2c]
mov dword [esp], ebp
jmp 0x10023993
mov byte [edi + ecx], 0xff
add eax, ecx
mov dword [esp], eax
mov ecx, dword [esp + 0x24]
add edi, ecx
add esi, ecx
mov dword [esp + 0x10], esi
inc dword [esp + 0x48]
add ebp, ecx
mov dword [esp + 8], ebp
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x30]
dec eax
je 0x10023f9a
mov dword [esp + 0x30], eax
test ecx, ecx
mov ebp, dword [esp + 8]
mov eax, dword [esp]
mov esi, dword [esp + 0x10]
jle 0x10023965
xor ebx, ebx
cmp ecx, 8
jae 0x10023a39
mov edx, ebx
or edx, 1
test cl, 1
je 0x100239e9
mov ebp, edi
mov eax, dword [esp + 0x10]
movzx edi, byte [eax + ebx]
mov ecx, ebx
sub ecx, dword [esp + 0x24]
movzx ecx, byte [ebp + ecx]
add ecx, edi
mov edi, ebp
mov ebp, dword [esp + 8]
shr ecx, 1
mov eax, dword [esp]
add cl, byte [eax + ebx]
mov byte [edi + ebx], cl
mov ecx, dword [esp + 4]
mov ebx, edx
cmp ecx, edx
mov eax, dword [esp]
mov esi, dword [esp + 0x10]
je 0x10023965
nop dword [eax + eax]
movzx edx, byte [esi + ebx]
movzx ecx, byte [ebp + ebx]
add ecx, edx
shr ecx, 1
add cl, byte [eax + ebx]
mov byte [edi + ebx], cl
movzx edx, byte [esi + ebx + 1]
movzx ecx, byte [ebp + ebx + 1]
add ecx, edx
shr ecx, 1
add cl, byte [eax + ebx + 1]
mov byte [edi + ebx + 1], cl
mov ecx, dword [esp + 4]
add ebx, 2
cmp ecx, ebx
jne 0x10023a00
jmp 0x10023965
mov dword [esp + 0xc], edi
mov edi, ecx
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x48]
imul ecx, edx
mov eax, dword [esp + 0x14]
lea ebp, [eax + ecx]
imul edi, edx
add edi, dword [esp + 0x18]
mov eax, dword [esp + 0x58]
add eax, ecx
mov edx, ebp
sub edx, edi
mov edi, ebp
sub edi, eax
add ecx, dword [esp + 0x6c]
sub ebp, ecx
cmp edx, 0x10
jb 0x10023b6a
jb 0x10023b6a
cmp edi, 0x10
mov ecx, dword [esp + 4]
jb 0x10023b6e
cmp ebp, 0x10
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov eax, dword [esp]
mov esi, dword [esp + 0x10]
jb 0x100239b1
xor edx, edx
cmp ecx, 0x10
jae 0x10023af4
mov ebx, dword [esp + 0xc8]
nop
movq xmm0, qword [eax + edx]
movq xmm1, qword [esi + edx]
punpcklbw xmm1, xmm6
movq xmm2, qword [ebp + edx]
punpcklbw xmm2, xmm6
paddw xmm2, xmm1
psrlw xmm2, 1
packuswb xmm2, xmm2
paddb xmm2, xmm0
movq qword [edi + edx], xmm2
add edx, 8
cmp ebx, edx
jne 0x10023ab0
mov edx, ebx
cmp ecx, ebx
je 0x10023965
jmp 0x100239b1
xor edx, edx
mov ebx, dword [esp + 0xa8]
movdqu xmm0, xmmword [eax + edx]
movdqu xmm2, xmmword [esi + edx]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm6
punpcklbw xmm2, xmm6
movdqu xmm1, xmmword [ebp + 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 [edi + edx], xmm1
add edx, 0x10
cmp ebx, edx
jne 0x10023afd
cmp ecx, ebx
je 0x10023965
mov ebx, dword [esp + 0xa8]
mov edx, ebx
test cl, 8
je 0x100239b1
jmp 0x10023aa7
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jmp 0x100239b1
mov eax, dword [esp + 0x2c]
test eax, eax
je case.default.0x10021ac8
add ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
lea edx, [ebx + eax]
mov eax, ebx
mov ebx, dword [esp + 8]
add edx, ebx
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x88]
lea esi, [eax + edx]
add esi, ebx
mov dword [esp + 0x14], esi
mov esi, ecx
and esi, 0xffffffe0
mov dword [esp + 0x58], esi
mov esi, ecx
and esi, 0xfffffff8
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0xc], edi
mov edi, ebp
lea ebp, [ebx + esi]
add ebp, eax
add ebx, edx
add ebx, eax
mov dword [esp + 8], ebx
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x2c]
mov dword [esp], edi
mov edi, dword [esp + 0xc]
jmp 0x10023c15
mov byte [edi + ecx], 0xff
add ebx, ecx
mov dword [esp], ebx
mov eax, dword [esp + 0x24]
add edi, eax
inc dword [esp + 0x30]
add ebp, eax
add esi, eax
mov dword [esp + 8], esi
mov eax, dword [esp + 0x10]
dec eax
je 0x10023f9a
mov dword [esp + 0x10], eax
test ecx, ecx
mov esi, dword [esp + 8]
mov ebx, dword [esp]
jle 0x10023bef
xor eax, eax
cmp ecx, 8
jae 0x10023c8b
mov edx, ecx
mov ecx, eax
or ecx, 1
test dl, 1
je 0x10023c4e
mov edx, eax
sub edx, dword [esp + 0x24]
movzx edx, byte [edi + edx]
shr dl, 1
mov esi, dword [esp]
add dl, byte [esi + eax]
mov byte [edi + eax], dl
mov eax, ecx
mov edx, dword [esp + 4]
cmp edx, ecx
mov ecx, edx
mov esi, dword [esp + 8]
mov ebx, dword [esp]
je 0x10023bef
nop
movzx ecx, byte [esi + eax]
shr cl, 1
add cl, byte [ebx + eax]
mov byte [edi + eax], cl
movzx ecx, byte [esi + eax + 1]
shr cl, 1
add cl, byte [ebx + eax + 1]
mov byte [edi + eax + 1], cl
mov ecx, dword [esp + 4]
add eax, 2
cmp ecx, eax
jne 0x10023c60
jmp 0x10023bef
mov dword [esp + 0xc], edi
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x30]
imul edx, ebx
mov esi, dword [esp + 0x48]
add esi, edx
mov edi, ecx
imul edi, ebx
add edi, dword [esp + 0x18]
mov ecx, esi
sub ecx, edi
add edx, dword [esp + 0x14]
sub esi, edx
cmp ecx, 0x20
jb 0x10023d82
mov edi, dword [esp + 0xc]
jb 0x10023d8f
cmp esi, 0x20
mov ecx, dword [esp + 4]
mov esi, dword [esp + 8]
mov ebx, dword [esp]
jb 0x10023c2b
xor edx, edx
cmp ecx, 0x20
jb 0x10023d45
xor eax, eax
mov edx, dword [esp + 0x58]
movdqu xmm0, xmmword [ebx + eax]
movdqu xmm1, xmmword [ebx + eax + 0x10]
movdqu xmm2, xmmword [ebp + eax - 0x10]
movdqu xmm3, xmmword [ebp + eax]
psrlw xmm2, 1
pand xmm2, xmm7
paddb xmm2, xmm0
psrlw xmm3, 1
pand xmm3, xmm7
paddb xmm3, xmm1
movdqu xmmword [edi + eax], xmm2
movdqu xmmword [edi + eax + 0x10], xmm3
add eax, 0x20
cmp edx, eax
jne 0x10023ce7
cmp ecx, edx
mov esi, dword [esp + 8]
je 0x10023bef
mov eax, dword [esp + 0x58]
mov edx, eax
test cl, 0x18
je 0x10023c2b
mov eax, dword [esp + 0x6c]
nop dword [eax]
movq xmm0, qword [ebx + edx]
movq xmm1, qword [esi + edx]
psrlw xmm1, 1
pand xmm1, xmm7
paddb xmm1, xmm0
movq qword [edi + edx], xmm1
add edx, 8
cmp eax, edx
jne 0x10023d50
mov edx, eax
cmp ecx, eax
je 0x10023bef
jmp 0x10023c2b
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0xc]
jmp 0x10023c2b
mov ecx, dword [esp + 4]
jmp 0x10023c2b
mov edx, dword [esp + 0x2c]
test edx, edx
je case.default.0x10021ac8
add ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
lea edx, [ebx + eax]
mov eax, dword [esp + 8]
add edx, eax
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x88]
lea esi, [ebx + edx]
add esi, eax
mov dword [esp + 0x14], esi
mov esi, ecx
and esi, 0xffffffe0
mov dword [esp + 0x58], esi
mov esi, ecx
and esi, 0xfffffff8
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0xc], edi
mov edi, ebp
lea ebp, [eax + esi]
add ebp, ebx
add eax, edx
add eax, ebx
mov dword [esp + 8], eax
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x2c]
mov dword [esp], edi
mov ebx, dword [esp + 0xc]
jmp 0x10023e30
mov byte [ebx + ecx], 0xff
add esi, ecx
mov dword [esp], esi
mov eax, dword [esp + 0x24]
add ebx, eax
inc dword [esp + 0x30]
add ebp, eax
add edi, eax
mov dword [esp + 8], edi
mov eax, dword [esp + 0x10]
dec eax
je 0x10023f9a
mov dword [esp + 0x10], eax
test ecx, ecx
mov edi, dword [esp + 8]
mov esi, dword [esp]
jle 0x10023e0a
mov dword [esp + 0xc], ebx
xor eax, eax
cmp ecx, 8
jb 0x10023f2a
mov edx, dword [esp + 0x24]
imul edx, dword [esp + 0x30]
mov esi, dword [esp + 0x48]
lea ebx, [esi + edx]
mov edi, ecx
imul edi, dword [esp + 0x30]
add edi, dword [esp + 0x18]
mov ecx, ebx
sub ecx, edi
add edx, dword [esp + 0x14]
sub ebx, edx
cmp ecx, 0x20
jb 0x10023f26
jb 0x10023f26
cmp ebx, 0x20
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov edi, dword [esp + 8]
mov esi, dword [esp]
jb 0x10023f2a
xor edx, edx
cmp ecx, 0x20
jb 0x10023eef
xor eax, eax
mov edx, dword [esp + 0x58]
movdqu xmm0, xmmword [esi + eax]
movdqu xmm1, xmmword [esi + eax + 0x10]
movdqu xmm2, xmmword [ebp + eax - 0x10]
paddb xmm2, xmm0
movdqu xmm0, xmmword [ebp + eax]
paddb xmm0, xmm1
movdqu xmmword [ebx + eax], xmm2
movdqu xmmword [ebx + eax + 0x10], xmm0
add eax, 0x20
cmp edx, eax
jne 0x10023ea7
cmp ecx, edx
mov edi, dword [esp + 8]
je 0x10023e0a
mov eax, dword [esp + 0x58]
mov edx, eax
test cl, 0x18
je 0x10023f2a
mov eax, dword [esp + 0x6c]
nop word cs:[eax + eax]
movq xmm0, qword [esi + edx]
movq xmm1, qword [edi + edx]
paddb xmm1, xmm0
movq qword [ebx + edx], xmm1
add edx, 8
cmp eax, edx
jne 0x10023f00
mov edx, eax
cmp ecx, eax
je 0x10023e0a
jmp 0x10023f2a
mov ecx, dword [esp + 4]
mov edx, ecx
mov ecx, eax
or ecx, 1
test dl, 1
je 0x10023f4f
mov edx, eax
sub edx, dword [esp + 0x24]
mov ebx, dword [esp + 0xc]
movzx edx, byte [ebx + edx]
mov esi, dword [esp]
add dl, byte [esi + eax]
mov byte [ebx + eax], dl
mov eax, ecx
mov edx, dword [esp + 4]
cmp edx, ecx
mov ecx, edx
mov ebx, dword [esp + 0xc]
mov edi, dword [esp + 8]
mov esi, dword [esp]
je 0x10023e0a
nop dword [eax + eax]
movzx ecx, byte [edi + eax]
add cl, byte [esi + eax]
mov byte [ebx + eax], cl
movzx ecx, byte [edi + eax + 1]
add cl, byte [esi + eax + 1]
mov byte [ebx + eax + 1], cl
mov ecx, dword [esp + 4]
add eax, 2
cmp ecx, eax
jne 0x10023f70
jmp 0x10023e0a
mov dword [esp], ebp
mov ebx, dword [esp + 0x1cc]
cmp ebx, 0x10
jne 0x10023fd2
mov eax, dword [esp + 0x1c4]
test eax, eax
mov ebp, dword [esp + 0x80]
mov esi, dword [esp + 0x1c8]
je 0x10023fe9
mov esi, dword [esp + 0x1c]
add esi, dword [ebp + 0xc]
cmp eax, 8
jae 0x10024002
mov edx, esi
jmp 0x100240ca
mov ebp, dword [esp + 0x80]
mov esi, dword [esp + 0x1c8]
mov eax, dword [esp + 0x40]
jmp 0x1002410e
mov edx, dword [esp + 0xc4]
inc edx
cmp edx, esi
mov eax, dword [esp + 0x40]
jne 0x1002411e
jmp 0x1002421c
mov eax, dword [esp + 0x104]
add eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xfc]
lea eax, [eax + ecx]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xf8]
lea eax, [eax + ecx]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xf4]
lea eax, [eax + ecx]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xf0]
lea eax, [eax + ecx]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xec]
add eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xe8]
add eax, ecx
mov dword [esp + 0x58], eax
mov ebx, ecx
mov ecx, dword [esp + 0x108]
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x100]
mov byte [esi + ebx + 1], 0xff
mov edx, esi
add esi, edi
mov eax, dword [esp + 0x58]
mov byte [edx + eax], 0xff
add esi, edi
mov eax, dword [esp + 0x14]
mov byte [edx + eax], 0xff
add esi, edi
mov eax, dword [esp + 0x48]
mov byte [edx + eax], 0xff
add esi, edi
mov eax, dword [esp + 0xc]
mov byte [edx + eax], 0xff
mov eax, dword [esp + 8]
mov byte [edx + eax], 0xff
mov eax, dword [esp + 0x30]
mov byte [edx + eax], 0xff
mov eax, dword [esp + 0x10]
mov byte [edx + eax], 0xff
lea edx, [edi + ebp]
add edx, edi
add edx, esi
mov esi, edx
add ecx, 0xfffffff8
jne 0x10024075
mov ecx, dword [esp + 0x10c]
test ecx, ecx
mov esi, dword [esp + 0x1c8]
mov ebx, dword [esp + 0x1cc]
je 0x100240ff
mov eax, dword [esp + 4]
add eax, edx
inc eax
mov ebp, dword [esp + 0x80]
mov edx, dword [esp + 0x24]
mov byte [eax], 0xff
add eax, edx
dec ecx
jne 0x100240f5
jmp 0x10024106
mov ebp, dword [esp + 0x80]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xc4]
inc edx
cmp edx, esi
je 0x10024281
mov edi, edx
imul edi, eax
mov eax, dword [esp]
movzx eax, byte [eax]
cmp al, 5
mov esi, edx
jb 0x1002196e
jmp 0x10024277
mov eax, dword [esp + 0x18]
mov dword [esp], eax
jmp 0x10023f9a
xor ecx, ecx
mov eax, dword [esp + 0x20]
lea edx, [eax + ebp]
add ebx, dword [esp + 0x1c]
sub ebx, dword [esp + 4]
add edx, ebx
add ebp, dword [esp + 0x44]
add ebp, ebx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x30], eax
mov eax, dword [esp]
mov dword [esp + 0x48], eax
mov dword [esp + 0x6c], ecx
jmp 0x100241b7
cmp eax, ebp
cmova edx, edi
cmp eax, ecx
cmova edx, edi
mov ecx, dword [esp + 0x6c]
mov esi, dword [esp + 0x30]
add dl, byte [esi + ecx]
mov eax, dword [esp + 0xc]
mov byte [eax + ecx], dl
mov edi, dword [esp + 0x48]
dec edi
inc eax
mov dword [esp + 0xc], eax
inc dword [esp + 0x10]
mov edx, dword [esp + 0x14]
inc edx
mov ebp, dword [esp + 8]
inc ebp
inc esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x48], edi
cmp ecx, edi
je case.default.0x10021a9d
mov dword [esp + 8], ebp
movzx edi, byte [ebp + ecx]
mov eax, dword [esp + 0x10]
movzx ebx, byte [eax + ecx]
mov dword [esp + 0x14], edx
movzx edx, byte [edx + ecx]
mov ecx, ebx
sub ecx, edi
lea esi, [ecx + edx]
mov eax, ecx
neg eax
cmovs eax, ecx
mov ebp, esi
mov dword [esp + 0x58], ebx
sub ebp, ebx
mov ecx, ebp
neg ecx
cmovs ecx, ebp
sub esi, edi
mov ebp, esi
neg ebp
cmovs ebp, esi
cmp ecx, ebp
ja 0x10024172
mov edi, dword [esp + 0x58]
jmp 0x10024172
mov dword [esp + 0x90], ecx
mov ecx, 1
cmp ebx, 0x10
jne 0x100216f6
mov edi, dword [esp + 0x90]
imul edi, esi
mov ecx, 1
test edi, edi
je 0x100216f6
mov eax, dword [ebp + 0xc]
mov edx, edi
and edx, 3
cmp edi, 4
jb 0x1002425e
and edi, 0xfffffffc
rol word [eax], 8
rol word [eax + 2], 8
rol word [eax + 4], 8
rol word [eax + 6], 8
add eax, 8
add edi, 0xfffffffc
jne 0x10024243
test edx, edx
je 0x100216f6
xor esi, esi
rol word [eax + esi*2], 8
inc esi
cmp edx, esi
jne 0x10024268
jmp 0x100216f6
mov edi, 0x105338a6
jmp 0x100216ee
cmp ebx, 8
jge 0x1002420e
mov ecx, 1
test esi, esi
je 0x100216f6
mov edx, dword [esp + 0x94]
neg edx
mov eax, dword [esp + 0x1c4]
lea esi, [eax - 1]
mov dword [esp + 0x48], esi
lea esi, [eax + eax]
add esi, 0xfffffffe
mov dword [esp + 0x14], esi
lea esi, [eax + eax - 1]
mov dword [esp + 0x58], esi
lea esi, [eax - 2]
mov dword [esp + 0x24], esi
lea eax, [eax + eax*2]
dec eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x40]
xor esi, esi
add dword [esp + 0x90], edx
mov dword [esp + 8], 0xffffffff
xor edx, edx
jmp 0x1002430b
mov edx, dword [esp + 0x10]
inc edx
mov eax, dword [esp + 0x40]
add esi, eax
add dword [esp + 0x30], eax
add dword [esp + 8], eax
cmp edx, dword [esp + 0x1c8]
mov ebx, dword [esp + 0x1cc]
je 0x100216f6
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x10], edx
imul edx, eax
mov dword [esp + 0xc], edx
lea ebp, [edi + edx]
mov byte [esp + 4], 1
cmp dword [esp + 0x1d0], 0
mov edx, dword [esp + 0x7c]
jne 0x1002433a
movzx eax, byte [ebx + 0x10398074]
mov byte [esp + 4], al
mov eax, dword [esp + 0x90]
mov dword [esp], ebp
add ebp, eax
cmp ebx, 4
je 0x100244e5
cmp ebx, 2
je 0x1002454c
cmp ebx, 1
jne 0x100245f9
mov edx, dword [esp + 0x7c]
mov eax, edx
cmp edx, 8
jl 0x1002441b
mov eax, dword [esp + 0xa0]
lea ebp, [edi + eax]
mov eax, edx
movzx edx, byte [esp + 4]
mov ebx, eax
movzx eax, byte [ebp + esi]
sar al, 7
and al, dl
mov byte [edi + esi], al
movzx eax, byte [ebp + esi]
add al, al
sar al, 7
and al, dl
mov byte [edi + esi + 1], al
movzx eax, byte [ebp + esi]
shl al, 2
sar al, 7
and al, dl
mov byte [edi + esi + 2], al
movzx eax, byte [ebp + esi]
shl al, 3
sar al, 7
and al, dl
mov byte [edi + esi + 3], al
movzx eax, byte [ebp + esi]
shl al, 4
sar al, 7
and al, dl
mov byte [edi + esi + 4], al
movzx eax, byte [ebp + esi]
shl al, 5
sar al, 7
and al, dl
mov byte [edi + esi + 5], al
movzx eax, byte [ebp + esi]
shl al, 6
sar al, 7
and al, dl
mov byte [edi + esi + 6], al
movzx eax, byte [ebp + esi]
and al, 1
neg al
and al, dl
mov byte [edi + esi + 7], al
lea eax, [ebx - 8]
inc ebp
add edi, 8
cmp ebx, 0xf
ja 0x10024381
add ebp, esi
add edi, esi
mov dword [esp], edi
test eax, eax
jle 0x100245f9
movzx edx, byte [ebp]
sar dl, 7
and dl, byte [esp + 4]
mov edi, dword [esp]
mov byte [edi], dl
cmp eax, 1
je 0x100245f9
movzx edx, byte [ebp]
add dl, dl
sar dl, 7
and dl, byte [esp + 4]
mov edi, dword [esp]
mov byte [edi + 1], dl
cmp eax, 3
jb 0x100245f9
movzx edx, byte [ebp]
shl dl, 2
sar dl, 7
and dl, byte [esp + 4]
mov edi, dword [esp]
mov byte [edi + 2], dl
cmp eax, 3
je 0x100245f9
movzx edx, byte [ebp]
shl dl, 3
sar dl, 7
and dl, byte [esp + 4]
mov edi, dword [esp]
mov byte [edi + 3], dl
cmp eax, 5
jb 0x100245f9
movzx edx, byte [ebp]
shl dl, 4
sar dl, 7
and dl, byte [esp + 4]
mov edi, dword [esp]
mov byte [edi + 4], dl
cmp eax, 5
je 0x100245f9
movzx edx, byte [ebp]
shl dl, 5
sar dl, 7
and dl, byte [esp + 4]
mov edi, dword [esp]
mov byte [edi + 5], dl
cmp eax, 7
jb 0x100245f9
movzx eax, byte [ebp]
shl al, 6
sar al, 7
and al, byte [esp + 4]
mov edx, dword [esp]
mov byte [edx + 6], al
jmp 0x100245f9
mov eax, edx
cmp edx, 2
jl 0x1002452e
mov eax, dword [esp + 0xa0]
lea ebp, [edi + eax]
mov eax, dword [esp + 0x7c]
movzx ebx, byte [esp + 4]
mov edx, eax
movzx eax, byte [ebp + esi]
shr al, 4
mul bl
mov byte [edi + esi], al
movzx eax, byte [ebp + esi]
and al, 0xf
mul bl
mov byte [edi + esi + 1], al
lea eax, [edx - 2]
inc ebp
add edi, 2
cmp edx, 3
ja 0x100244ff
add ebp, esi
add edi, esi
mov dword [esp], edi
cmp eax, 1
jne 0x100245f9
movzx eax, byte [ebp]
shr al, 4
mul byte [esp + 4]
mov edx, dword [esp]
mov byte [edx], al
jmp 0x100245f9
mov ebx, edx
cmp edx, 4
jl 0x100245b5
mov eax, dword [esp + 0xa0]
lea ebp, [edi + eax]
mov ebx, dword [esp + 0x7c]
movzx edx, byte [esp + 4]
movzx eax, byte [ebp + esi]
shr al, 6
mul dl
mov byte [edi + esi], al
movzx eax, byte [ebp + esi]
shr al, 4
and al, 3
mul dl
mov byte [edi + esi + 1], al
movzx eax, byte [ebp + esi]
shr al, 2
and al, 3
mul dl
mov byte [edi + esi + 2], al
movzx eax, byte [ebp + esi]
and al, 3
mul dl
mov byte [edi + esi + 3], al
mov eax, ebx
add ebx, 0xfffffffc
inc ebp
add edi, 4
cmp eax, 7
ja 0x10024566
add ebp, esi
add edi, esi
mov dword [esp], edi
test ebx, ebx
jle 0x100245f9
movzx eax, byte [ebp]
shr al, 6
mul byte [esp + 4]
mov edx, dword [esp]
mov byte [edx], al
cmp ebx, 1
je 0x100245f9
movzx eax, byte [ebp]
shr al, 4
and al, 3
mul byte [esp + 4]
mov edx, dword [esp]
mov byte [edx + 1], al
cmp ebx, 3
jb 0x100245f9
movzx eax, byte [ebp]
shr al, 2
and al, 3
mul byte [esp + 4]
mov edx, dword [esp]
mov byte [edx + 2], al
mov eax, dword [esp + 0x1c0]
cmp dword [esp + 0x68], eax
mov ebp, dword [esp + 0x80]
je 0x100242e4
mov eax, dword [ebp + 0xc]
cmp dword [esp + 0x68], 1
jne 0x10024690
cmp dword [esp + 0x48], 0
js 0x100242e4
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x1c4]
test bl, 1
je 0x10024657
mov ebx, dword [esp + 0xc]
add ebx, eax
mov edx, dword [esp + 0x58]
mov byte [ebx + edx], 0xff
mov edx, dword [esp + 0x48]
movzx edx, byte [ebx + edx]
mov edi, dword [esp + 0x14]
mov byte [ebx + edi], dl
mov edx, dword [esp + 0x24]
cmp dword [esp + 0x2c], 0
je 0x100242e4
add edx, 2
add eax, esi
mov byte [eax + edx*2 - 3], 0xff
movzx ebx, byte [eax + edx - 2]
mov byte [eax + edx*2 - 4], bl
mov byte [eax + edx*2 - 5], 0xff
movzx ebx, byte [eax + edx - 3]
mov byte [eax + edx*2 - 6], bl
add edx, 0xfffffffe
cmp edx, 1
jg 0x10024667
jmp 0x100242e4
cmp dword [esp + 0x48], 0
js 0x100242e4
mov edx, dword [esp + 0x30]
add edx, eax
add eax, dword [esp + 8]
mov edi, dword [esp + 0x1c4]
mov byte [eax + edi*4], 0xff
movzx ebx, byte [edx]
mov byte [eax + edi*4 - 1], bl
movzx ebx, byte [edx - 1]
mov byte [eax + edi*4 - 2], bl
movzx ebx, byte [edx - 2]
mov byte [eax + edi*4 - 3], bl
dec edi
add edx, 0xfffffffd
test edi, edi
jg 0x100246ac
jmp 0x100242e4