Function at 0x1009484c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x80
movzx eax, byte [ebp + 0x10]
push ebx
push esi
mov esi, edx
mov dword [ebp - 0x68], esi
push edi
mov edi, ecx
mov dword [ebp - 0x54], edi
cmp eax, 4
ja case.default.0x10094283
jmp dword [eax*4 + 0x10095af0]
mov ecx, dword [ebp + 0x14]
test ecx, ecx
je 0x10095ad8
sub esi, edi
mov al, byte [esi + edi]
lea edi, [edi + 1]
mov byte [edi - 1], al
sub ecx, 1
jne 0x10094297
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0xc]
sub esi, edi
test edx, edx
je 0x100942ce
mov ebx, edx
nop dword [eax]
mov al, byte [ecx + esi]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
sub ebx, 1
jne 0x100942c0
cmp edx, dword [ebp + 0x14]
je 0x10095ad8
mov ebx, edi
sub ebx, edx
nop dword [eax + eax]
lea ecx, [edx + edi]
mov al, byte [ecx + esi]
add al, byte [ebx + edx]
inc edx
mov byte [ecx], al
cmp edx, dword [ebp + 0x14]
jne 0x100942e0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x1009446b
mov ebx, dword [ebp + 0x14]
xor edx, edx
test ebx, ebx
je 0x10095ad8
cmp ebx, 8
jb 0x1009443e
lea eax, [ebx - 1]
add eax, ecx
cmp edi, eax
ja 0x10094331
lea eax, [ebx - 1]
add eax, edi
cmp eax, ecx
jae 0x1009443e
lea eax, [ebx - 1]
add eax, esi
cmp edi, eax
ja 0x10094347
lea eax, [ebx - 1]
add eax, edi
cmp eax, esi
jae 0x1009443e
cmp ebx, 0x40
jb 0x100943f3
mov eax, ebx
and eax, 0x3f
mov dword [ebp - 0x28], eax
mov eax, ebx
sub eax, dword [ebp - 0x28]
lea ebx, [edi + 0x20]
mov edi, esi
mov dword [ebp - 0x20], eax
mov esi, dword [ebp - 0x54]
lea eax, [ecx + 0x10]
sub esi, ecx
sub edi, ecx
mov dword [ebp - 0x10], esi
mov esi, dword [ebp - 0x68]
mov ecx, esi
sub ecx, dword [ebp - 0x54]
mov dword [ebp - 8], ecx
mov ecx, edi
mov dword [ebp + 0x10], edi
mov edi, dword [ebp - 0x10]
nop word [eax + eax]
vmovdqu xmm0, xmmword [edx + esi]
vpaddb xmm0, xmm0, xmmword [eax - 0x10]
vmovdqu xmmword [ebx - 0x20], xmm0
vmovdqu xmm0, xmmword [ecx + eax]
vpaddb xmm0, xmm0, xmmword [eax]
mov ecx, dword [ebp - 8]
lea eax, [eax + 0x40]
vmovdqu xmmword [edi + eax - 0x40], xmm0
lea ebx, [ebx + 0x40]
vmovdqu xmm0, xmmword [ebx + ecx - 0x40]
vpaddb xmm0, xmm0, xmmword [eax - 0x30]
mov ecx, dword [ebp + 0x10]
vmovdqu xmmword [ebx - 0x40], xmm0
vmovdqu xmm0, xmmword [edx + esi + 0x30]
vpaddb xmm0, xmm0, xmmword [eax - 0x20]
add edx, 0x40
vmovdqu xmmword [ebx - 0x30], xmm0
cmp edx, dword [ebp - 0x20]
jne 0x10094390
cmp dword [ebp - 0x28], 8
mov edi, dword [ebp - 0x54]
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0x14]
jb 0x10094436
jmp 0x10094401
mov eax, esi
sub eax, ecx
mov dword [ebp + 0x10], eax
mov eax, edi
sub eax, ecx
mov dword [ebp - 0x10], eax
mov esi, dword [ebp + 0x10]
mov eax, ebx
mov edi, dword [ebp - 0x10]
and eax, 0xfffffff8
mov dword [ebp - 8], eax
lea eax, [edx + ecx]
vmovq xmm1, qword [eax + esi]
vmovq xmm0, qword [eax]
vpaddb xmm0, xmm1, xmm0
add edx, 8
lea eax, [eax + 8]
vmovq qword [eax + edi - 8], xmm0
cmp edx, dword [ebp - 8]
jne 0x10094412
mov esi, dword [ebp - 0x68]
mov edi, dword [ebp - 0x54]
cmp edx, ebx
je 0x10095ad8
lea ebx, [edx + ecx]
sub esi, ecx
sub edi, ecx
mov ecx, dword [ebp + 0x14]
sub ecx, edx
nop word [eax + eax]
mov al, byte [ebx + esi]
lea ebx, [ebx + 1]
add al, byte [ebx - 1]
mov byte [ebx + edi - 1], al
sub ecx, 1
jne 0x10094450
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x14]
test ecx, ecx
je 0x10095ad8
sub esi, edi
nop dword [eax + eax]
mov al, byte [edi + esi]
lea edi, [edi + 1]
mov byte [edi - 1], al
sub ecx, 1
jne 0x10094480
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 8]
test edx, edx
je 0x100947fd
mov ecx, dword [ebp + 0xc]
xor ebx, ebx
mov dword [ebp - 0x30], 0
test ecx, ecx
je 0x1009479c
mov ebx, dword [ebp + 0xc]
mov eax, edx
sub eax, esi
mov dword [ebp + 0x10], ecx
mov dword [ebp - 0x24], eax
mov edx, esi
mov eax, edi
mov edi, dword [ebp - 0x24]
sub eax, esi
mov dword [ebp - 0x5c], eax
mov ecx, eax
mov al, byte [edi + edx]
lea edx, [edx + 1]
shr al, 1
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub ebx, 1
jne 0x100944d1
mov ecx, dword [ebp + 0xc]
mov ebx, ecx
mov edi, dword [ebp - 0x54]
mov edx, dword [ebp + 8]
cmp ecx, 4
jb 0x100945f9
lea eax, [ebx + 3]
cmp eax, dword [ebp + 0x14]
jae 0x100947b5
lea eax, [edx + 3]
add eax, ebx
lea ecx, [ebx + 2]
mov dword [ebp - 0x60], eax
add ecx, esi
lea eax, [edi + 2]
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x10], eax
mov eax, 1
sub eax, esi
mov esi, ebx
mov dword [ebp - 0x20], eax
mov eax, edi
sub eax, edx
lea edx, [edi + 2]
mov dword [ebp - 8], eax
mov al, byte [ecx - 1]
mov bl, byte [edx - 1]
mov bh, byte [edx]
mov byte [ebp + 0x13], al
mov al, byte [ecx]
mov edi, dword [ebp - 0x24]
mov byte [ebp - 1], al
mov al, byte [ecx + 1]
mov byte [ebp - 0x29], al
mov al, byte [edx + 1]
mov dh, byte [ecx + edi]
mov byte [ebp - 0x11], al
mov eax, dword [ebp - 0x60]
mov edi, dword [ebp - 0x54]
add dword [ebp - 0x30], 4
mov dl, byte [eax - 2]
mov al, byte [eax]
mov byte [ebp - 0xa], al
mov eax, dword [ebp - 0x10]
movzx ecx, byte [eax - 2]
mov eax, dword [ebp - 0x60]
movzx eax, byte [eax - 3]
add ecx, eax
mov eax, dword [ebp - 0x48]
shr ecx, 1
add cl, byte [eax - 2]
mov byte [esi + edi], cl
movzx ecx, dl
movzx eax, bl
add ecx, eax
movzx eax, bh
shr ecx, 1
add cl, byte [ebp + 0x13]
mov byte [esi + edi + 1], cl
add esi, 4
movzx ecx, dh
mov edx, dword [ebp - 0x5c]
add ecx, eax
mov eax, dword [ebp - 0x48]
shr ecx, 1
add cl, byte [ebp - 1]
mov byte [eax + edx], cl
movzx eax, byte [ebp - 0x11]
movzx ecx, byte [ebp - 0xa]
mov edx, dword [ebp - 8]
add ecx, eax
mov eax, dword [ebp - 0x60]
shr ecx, 1
add cl, byte [ebp - 0x29]
mov byte [eax + edx], cl
add eax, 4
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x10]
add ecx, 4
mov dword [ebp - 0x60], eax
add edx, 4
mov eax, dword [ebp - 0x20]
add eax, ecx
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x10], edx
cmp eax, dword [ebp + 0x14]
jb 0x10094531
mov ecx, dword [ebp - 0x30]
mov dword [ebp + 0x10], esi
mov esi, dword [ebp - 0x68]
mov ebx, dword [ebp + 0x10]
jmp 0x100947b7
cmp ecx, 3
jb 0x100946e9
lea eax, [ebx + 2]
cmp eax, dword [ebp + 0x14]
jae 0x100947b5
lea eax, [edi + 1]
add eax, ebx
add ebx, 2
mov dword [ebp - 0x60], eax
add ebx, esi
lea eax, [edi + 2]
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x4c], eax
mov esi, edx
mov eax, edx
mov edx, dword [ebp - 0x4c]
sub eax, edi
mov dword [ebp - 8], eax
mov eax, 1
sub eax, edi
mov edi, ecx
mov dword [ebp - 0x20], eax
nop dword [eax]
mov ecx, dword [ebp - 0x48]
mov bh, byte [ebx - 1]
mov bl, byte [edx - 1]
mov al, byte [ecx]
mov byte [ebp - 1], al
mov al, byte [edx]
mov edx, dword [ebp - 8]
mov byte [ebp + 0x13], al
mov eax, dword [ebp - 0x60]
mov dl, byte [edx + eax]
mov eax, dword [ebp - 0x24]
mov dh, byte [ecx + eax]
mov eax, dword [ebp - 0x4c]
movzx ecx, byte [edi + esi]
add edi, 3
mov esi, dword [ebp + 8]
movzx eax, byte [eax - 2]
add ecx, eax
mov eax, dword [ebp - 0x48]
shr ecx, 1
add cl, byte [eax - 2]
mov eax, dword [ebp - 0x60]
mov byte [eax - 1], cl
movzx eax, bl
movzx ecx, dl
add ecx, eax
mov eax, dword [ebp - 0x60]
shr ecx, 1
add cl, bh
mov ebx, dword [ebp - 0x48]
mov byte [eax], cl
movzx eax, byte [ebp + 0x13]
movzx ecx, dh
mov edx, dword [ebp - 0x4c]
add ecx, eax
mov eax, dword [ebp - 0x5c]
add edx, 3
shr ecx, 1
add cl, byte [ebp - 1]
mov dword [ebp - 0x4c], edx
mov byte [ebx + eax], cl
add ebx, 3
mov eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x30]
add eax, 3
mov dword [ebp - 0x60], eax
add ecx, 3
add eax, dword [ebp - 0x20]
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x30], ecx
cmp eax, dword [ebp + 0x14]
jb 0x10094640
mov esi, dword [ebp - 0x68]
mov dword [ebp + 0x10], edi
mov edi, dword [ebp - 0x54]
mov ebx, dword [ebp + 0x10]
jmp 0x100947b7
cmp ecx, 2
jb 0x100947ae
lea eax, [ebx + 1]
cmp eax, dword [ebp + 0x14]
jae 0x100947b5
mov ecx, edi
lea eax, [ebx + edi]
sub ecx, edx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x20], ecx
lea eax, [ebx + 1]
mov ecx, esi
mov ebx, esi
mov esi, dword [ebp + 0x10]
sub ecx, edi
mov dword [ebp - 8], ecx
add eax, edx
mov ecx, 1
mov dword [ebp - 0x28], eax
sub ecx, edi
sub ebx, edx
mov dword [ebp - 0x3c], ecx
xor ecx, ecx
mov dword [ebp - 0x38], ebx
mov dh, byte [ebx + eax]
add esi, 2
mov bl, byte [ecx + edi + 1]
mov dl, byte [eax]
movzx ecx, byte [ecx + edi]
movzx eax, byte [eax - 1]
mov edi, dword [ebp - 8]
add ecx, eax
mov eax, dword [ebp - 0x10]
shr ecx, 1
add cl, byte [eax + edi]
mov byte [eax], cl
mov edi, dword [ebp - 0x54]
movzx eax, bl
mov ebx, dword [ebp - 0x38]
movzx ecx, dl
add ecx, eax
mov eax, dword [ebp - 0x28]
shr ecx, 1
add cl, dh
mov edx, dword [ebp - 0x20]
mov byte [edx + eax], cl
add eax, 2
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x28], eax
add ecx, 2
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x10], eax
add eax, dword [ebp - 0x3c]
cmp eax, dword [ebp + 0x14]
mov eax, dword [ebp - 0x28]
jb 0x10094730
mov dword [ebp + 0x10], esi
mov esi, dword [ebp - 0x68]
mov ebx, dword [ebp + 0x10]
jmp 0x100947b7
mov eax, edi
sub edx, esi
sub eax, esi
xor ecx, ecx
mov dword [ebp - 0x5c], eax
mov eax, edx
mov dword [ebp - 0x24], eax
jmp 0x100947ba
mov eax, dword [ebp - 0x24]
xor ecx, ecx
jmp 0x100947ba
xor ecx, ecx
mov eax, dword [ebp - 0x24]
cmp ebx, dword [ebp + 0x14]
je 0x10095ad8
lea edx, [ebx + esi]
add edi, ecx
mov esi, dword [ebp + 0x14]
sub esi, ebx
nop dword [eax]
movzx ecx, byte [edx + eax]
lea edi, [edi + 1]
movzx eax, byte [edi - 1]
lea edx, [edx + 1]
add ecx, eax
mov eax, dword [ebp - 0x5c]
shr ecx, 1
add cl, byte [edx - 1]
mov byte [edx + eax - 1], cl
mov eax, dword [ebp - 0x24]
sub esi, 1
jne 0x100947d0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0xc]
sub esi, edi
test edx, edx
je 0x1009481e
mov ebx, edx
nop dword [eax + eax]
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
sub ebx, 1
jne 0x10094810
cmp edx, dword [ebp + 0x14]
je 0x10095ad8
mov ebx, edi
sub ebx, edx
nop dword [eax + eax]
mov al, byte [ebx + edx]
lea ecx, [edx + edi]
shr al, 1
inc edx
add al, byte [ecx + esi]
mov byte [ecx], al
cmp edx, dword [ebp + 0x14]
jne 0x10094830
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x10095a9d
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
cmp ecx, 8
jne 0x10094d61
xor edx, edx
mov byte [ebp - 3], 0
mov byte [ebp - 0x4c], 0
mov byte [ebp + 0x13], 0
mov byte [ebp - 0x48], 0
mov byte [ebp - 0x55], 0
mov byte [ebp - 0x5c], 0
mov byte [ebp - 0x4d], 0
mov byte [ebp - 0x60], 0
mov byte [ebp - 0x19], 0
mov byte [ebp - 0x30], 0
mov byte [ebp - 0x1a], 0
mov byte [ebp - 0x38], 0
mov byte [ebp - 9], 0
mov byte [ebp - 0x3c], 0
mov byte [ebp - 2], 0
mov byte [ebp - 0x28], 0
cmp eax, 7
jbe 0x100959d4
lea eax, [edi + 4]
mov dword [ebp - 8], eax
lea ecx, [ebx + 2]
lea eax, [esi + 3]
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x24], eax
mov eax, esi
sub eax, ebx
mov dword [ebp - 0x78], eax
mov eax, edi
sub eax, ebx
mov dword [ebp - 0x74], eax
mov eax, 5
sub eax, ebx
mov dword [ebp - 0x18], eax
mov eax, edi
sub eax, esi
xor esi, esi
mov dword [ebp - 0x34], eax
mov bl, byte [ecx - 1]
mov dl, byte [ebp + 0x13]
mov byte [ebp - 0x61], dl
mov dl, byte [ebp - 0x55]
mov al, byte [ebp - 3]
mov byte [ebp - 0x69], dl
mov dl, byte [ebp - 0x4d]
mov byte [ebp - 0x3d], dl
mov dl, byte [ebp - 0x19]
mov byte [ebp - 0x29], dl
mov dl, byte [ebp - 0x1a]
mov byte [ebp - 0xb], al
mov byte [ebp + 0x13], bl
mov bl, byte [ecx]
mov byte [ebp - 0x11], dl
mov dl, byte [ebp - 9]
mov byte [ebp - 0x55], bl
mov bl, byte [ecx + 1]
mov byte [ebp - 0xa], dl
mov dl, byte [ebp - 2]
mov byte [ebp - 0x4d], bl
mov bl, byte [ecx + 2]
mov byte [ebp - 1], dl
mov dl, byte [ecx - 2]
mov byte [ebp - 0x19], bl
mov bl, byte [ecx + 3]
mov byte [ebp - 0x1a], bl
mov bl, byte [ecx + 4]
mov cl, byte [ecx + 5]
mov byte [ebp - 2], cl
movzx ecx, al
movzx eax, dl
mov dword [ebp - 0x80], eax
sub eax, ecx
mov byte [ebp - 3], dl
cdq
xor eax, edx
mov dword [ebp - 0x7c], ecx
sub eax, edx
mov byte [ebp - 9], bl
movzx eax, ax
mov dword [ebp - 0x70], eax
movzx eax, ax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x4c]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
add edi, dword [ebp - 0x80]
xor eax, edx
sub eax, edx
movzx ecx, byte [ebp - 3]
movzx ebx, ax
mov eax, ebx
mov dword [ebp - 0x44], eax
mov eax, edi
cdq
xor eax, edx
sub eax, edx
cmp bx, word [ebp - 0x20]
movzx edi, ax
mov edx, ebx
mov eax, dword [ebp - 0x70]
movzx ebx, byte [ebp + 0x13]
movzx eax, ax
cmovge edx, eax
mov eax, dword [ebp - 0x4c]
movzx eax, al
cmovge ecx, eax
movzx eax, byte [ebp - 0xb]
movzx ecx, cl
cmp di, dx
cmovl ecx, eax
mov eax, dword [ebp - 0x24]
add cl, byte [eax - 3]
mov eax, ebx
mov dword [ebp - 0x4c], ecx
movzx ecx, byte [ebp - 0x61]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x48]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x44], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x44]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 0x20]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp + 0x13]
cmovge edi, ecx
cmp ax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x48]
movzx eax, byte [ebp - 0x61]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 0x55]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x24]
add cl, byte [eax - 2]
mov eax, ebx
mov dword [ebp - 0x48], ecx
movzx ecx, byte [ebp - 0x69]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x5c]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x44], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x44]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 0x20]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 0x55]
cmovge edi, ecx
cmp ax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x5c]
movzx eax, byte [ebp - 0x69]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx edx, dl
cmovl edx, eax
mov eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x10]
movzx ebx, byte [ebp - 0x4d]
add dl, byte [ecx + eax]
mov eax, ebx
movzx ecx, byte [ebp - 0x3d]
sub eax, ecx
mov dword [ebp - 0x5c], edx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x60]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x44], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x44]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 0x20]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 0x4d]
cmovge edi, ecx
cmp ax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x60]
movzx eax, byte [ebp - 0x3d]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 0x29]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x24]
add cl, byte [eax]
movzx eax, byte [ebp - 0x19]
mov dword [ebp - 0x44], eax
sub eax, ebx
cdq
xor eax, edx
mov dword [ebp - 0x60], ecx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x30]
movzx edi, al
mov eax, edi
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
movzx ecx, ax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x70], ecx
lea ecx, [ebx + ebx]
sub eax, ecx
add eax, edi
cdq
mov ebx, eax
mov eax, dword [ebp - 0x70]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 0x20]
movzx ecx, dx
cmp ax, dx
movzx edx, byte [ebp - 0x19]
cmovge edi, ecx
mov ecx, dword [ebp - 0x30]
movzx ecx, cl
cmp ax, word [ebp - 0x20]
movzx eax, byte [ebp - 0x29]
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 0x11]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x24]
add cl, byte [eax + 1]
movzx eax, byte [ebp - 0x1a]
mov dword [ebp - 0x44], eax
sub eax, ebx
cdq
xor eax, edx
mov dword [ebp - 0x30], ecx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x38]
movzx edi, al
mov eax, edi
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
movzx ecx, ax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x70], ecx
lea ecx, [ebx + ebx]
sub eax, ecx
add eax, edi
cdq
mov ebx, eax
mov eax, dword [ebp - 0x70]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 0x20]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 0x1a]
cmovge edi, ecx
cmp ax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x38]
movzx eax, byte [ebp - 0x11]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 0xa]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x24]
add cl, byte [eax + 2]
movzx eax, byte [ebp - 9]
mov dword [ebp - 0x44], eax
sub eax, ebx
cdq
xor eax, edx
mov dword [ebp - 0x38], ecx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x3c]
movzx edi, al
mov eax, edi
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
movzx ecx, ax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x70], ecx
lea ecx, [ebx + ebx]
sub eax, ecx
add eax, edi
cdq
mov ebx, eax
mov eax, dword [ebp - 0x70]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 0x20]
cmp ax, dx
movzx ecx, dx
cmovge edi, ecx
movzx edx, byte [ebp - 9]
cmp ax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x3c]
movzx eax, byte [ebp - 0xa]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 1]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x24]
add cl, byte [eax + 3]
movzx eax, byte [ebp - 2]
mov dword [ebp - 0x44], eax
sub eax, ebx
cdq
xor eax, edx
mov dword [ebp - 0x3c], ecx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x28]
movzx edi, al
mov eax, edi
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
movzx ecx, ax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x70], ecx
lea ecx, [ebx + ebx]
sub eax, ecx
add eax, edi
cdq
mov ebx, eax
mov eax, dword [ebp - 0x70]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 0x20]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 2]
cmovge edi, ecx
cmp ax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
movzx eax, byte [ebp - 1]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
mov ebx, dword [ebp - 8]
movzx ecx, dl
mov edx, dword [ebp - 0x24]
cmovl ecx, eax
mov eax, dword [ebp - 0x4c]
add cl, byte [edx + 4]
mov edx, dword [ebp - 0x5c]
mov byte [ebx - 4], al
mov eax, dword [ebp - 0x48]
mov byte [ebx - 3], al
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x10]
mov byte [ecx + eax], dl
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x60]
mov byte [eax + edx], cl
mov eax, dword [ebp - 0x30]
mov byte [ebx], al
mov eax, dword [ebp - 0x38]
mov byte [ebx + 1], al
mov eax, dword [ebp - 0x3c]
mov byte [ebx + 2], al
mov eax, dword [ebp - 0x28]
mov byte [ebx + 3], al
mov ecx, dword [ebp - 0x10]
add edx, 8
mov eax, dword [ebp - 0x18]
add ecx, 8
add ebx, 8
mov dword [ebp - 0x10], ecx
add eax, ecx
mov dword [ebp - 0x24], edx
add esi, 8
mov dword [ebp - 8], ebx
cmp eax, dword [ebp + 0x14]
jb 0x100948e4
mov dword [ebp - 0x24], esi
mov edx, esi
jmp 0x100959c8
cmp ecx, 6
jne 0x10095151
xor edx, edx
mov byte [ebp - 3], 0
mov byte [ebp - 0x5c], 0
mov byte [ebp + 0x13], 0
mov byte [ebp - 0x10], 0
mov byte [ebp - 2], 0
mov byte [ebp - 0x28], 0
mov byte [ebp - 9], 0
mov byte [ebp - 0x3c], 0
mov byte [ebp - 0x1a], 0
mov byte [ebp - 0x38], 0
mov byte [ebp - 0x19], 0
mov byte [ebp - 0x4c], 0
cmp eax, 5
jbe 0x100959d4
lea eax, [edi + 4]
mov dword [ebp - 0x20], eax
lea ecx, [ebx + 2]
lea eax, [esi + 3]
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x30], eax
mov eax, esi
sub eax, ebx
mov dword [ebp - 0x44], eax
mov eax, edi
sub eax, ebx
mov dword [ebp - 0x70], eax
mov eax, 3
sub eax, ebx
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x7c], eax
mov eax, edi
sub eax, esi
xor esi, esi
mov dword [ebp - 0x80], eax
nop dword [eax + eax]
mov ah, byte [ecx - 1]
mov dl, byte [ebp + 0x13]
mov byte [ebp + 0x13], ah
mov ah, byte [ecx]
mov al, byte [ebp - 3]
mov byte [ebp - 0xb], al
mov byte [ebp - 1], dl
mov dl, byte [ebp - 2]
mov byte [ebp - 2], ah
mov ah, byte [ecx + 1]
mov byte [ebp - 0xa], dl
mov dl, byte [ebp - 9]
mov byte [ebp - 9], ah
mov ah, byte [ecx + 2]
mov byte [ebp - 0x11], dl
mov dl, byte [ebp - 0x1a]
mov byte [ebp - 0x1a], ah
mov byte [ebp - 0x29], dl
mov dl, byte [ebp - 0x19]
mov byte [ebp - 0x3d], dl
mov dl, byte [ecx - 2]
mov cl, byte [ecx + 3]
mov byte [ebp - 0x19], cl
movzx ecx, al
movzx eax, dl
mov dword [ebp - 0x34], eax
sub eax, ecx
mov byte [ebp - 3], dl
cdq
xor eax, edx
movzx edi, bl
sub eax, edx
mov dword [ebp - 0x18], ecx
movzx eax, ax
mov dword [ebp - 0x74], eax
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
xor eax, edx
sub eax, edx
movzx ebx, ax
mov eax, ebx
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x34]
sub eax, ecx
movzx ecx, byte [ebp - 3]
add eax, edi
cdq
xor eax, edx
sub eax, edx
cmp bx, word [ebp - 8]
movzx edi, ax
mov edx, ebx
mov eax, dword [ebp - 0x74]
movzx ebx, byte [ebp - 1]
movzx eax, ax
cmovge edx, eax
mov eax, dword [ebp - 0x5c]
movzx eax, al
cmovge ecx, eax
movzx eax, byte [ebp - 0xb]
cmp di, dx
movzx ecx, cl
cmovl ecx, eax
mov eax, dword [ebp - 0x30]
add cl, byte [eax - 3]
movzx eax, byte [ebp + 0x13]
mov dword [ebp - 0x18], eax
sub eax, ebx
cdq
xor eax, edx
mov dword [ebp - 0x5c], ecx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
movzx edi, al
mov eax, edi
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
movzx ecx, ax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x34], ecx
lea ecx, [ebx + ebx]
sub eax, ecx
add eax, edi
cdq
mov ebx, eax
mov eax, dword [ebp - 0x34]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp + 0x13]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ebp - 1]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 0xa]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x30]
add cl, byte [eax - 2]
movzx eax, byte [ebp - 2]
mov dword [ebp - 0x18], eax
sub eax, ebx
cdq
xor eax, edx
mov dword [ebp - 0x10], ecx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x28]
movzx edi, al
mov eax, edi
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
movzx ecx, ax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x34], ecx
lea ecx, [ebx + ebx]
sub eax, ecx
add eax, edi
cdq
mov ebx, eax
mov eax, dword [ebp - 0x34]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 2]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x28]
movzx eax, byte [ebp - 0xa]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 0x11]
movzx ecx, dl
mov edx, dword [ebp - 0x44]
cmovl ecx, eax
mov eax, dword [ebp - 0x48]
add cl, byte [eax + edx]
movzx eax, byte [ebp - 9]
mov dword [ebp - 0x18], eax
sub eax, ebx
mov dword [ebp - 0x28], ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x3c]
movzx edi, al
mov eax, edi
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
movzx ecx, ax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x34], ecx
lea ecx, [ebx + ebx]
sub eax, ecx
add eax, edi
cdq
mov ebx, eax
mov eax, dword [ebp - 0x34]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 9]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x3c]
movzx eax, byte [ebp - 0x11]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 0x29]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x30]
add cl, byte [eax]
movzx eax, byte [ebp - 0x1a]
mov dword [ebp - 0x18], eax
sub eax, ebx
cdq
xor eax, edx
mov dword [ebp - 0x3c], ecx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x38]
movzx edi, al
mov eax, edi
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
movzx ecx, ax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x34], ecx
lea ecx, [ebx + ebx]
sub eax, ecx
add eax, edi
cdq
mov ebx, eax
mov eax, dword [ebp - 0x34]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 0x1a]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x38]
movzx eax, byte [ebp - 0x29]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x30]
movzx ebx, byte [ebp - 0x3d]
add cl, byte [eax + 1]
movzx eax, byte [ebp - 0x19]
mov dword [ebp - 0x18], eax
sub eax, ebx
cdq
xor eax, edx
mov dword [ebp - 0x38], ecx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x4c]
movzx edi, al
mov eax, edi
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
movzx ecx, ax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x34], ecx
lea ecx, [ebx + ebx]
sub eax, ecx
add eax, edi
cdq
mov ebx, eax
mov eax, dword [ebp - 0x34]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 0x19]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x4c]
movzx eax, byte [ebp - 0x3d]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x5c]
movzx ecx, dl
mov edx, dword [ebp - 0x28]
cmovl ecx, eax
mov eax, dword [ebp - 0x30]
add esi, 6
add cl, byte [eax + 2]
mov dword [ebp - 0x4c], ecx
mov ecx, dword [ebp - 0x10]
mov byte [edi - 4], bl
mov ebx, dword [ebp - 0x70]
mov byte [edi - 3], cl
mov ecx, dword [ebp - 0x48]
mov byte [ecx + ebx], dl
add ecx, 6
mov ebx, dword [ebp - 0x80]
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x48], ecx
mov byte [eax + ebx], dl
add eax, 6
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x7c]
mov byte [edi], dl
add eax, ecx
mov edx, dword [ebp - 0x4c]
mov byte [edi + 1], dl
add edi, 6
mov dword [ebp - 0x20], edi
cmp eax, dword [ebp + 0x14]
jb 0x10094de0
mov dword [ebp - 0x24], esi
mov edx, esi
jmp 0x100959c8
cmp ecx, 4
jne 0x100953f6
xor edx, edx
mov byte [ebp - 3], 0
mov byte [ebp - 0x10], 0
mov byte [ebp + 0x13], 0
mov byte [ebp - 0x28], 0
mov byte [ebp - 2], 0
mov byte [ebp - 0x3c], 0
mov byte [ebp - 9], 0
mov byte [ebp - 0x4c], 0
cmp eax, 3
jbe 0x100959d4
lea eax, [esi + 3]
mov dword [ebp - 0x38], eax
lea ecx, [ebx + 2]
mov eax, esi
mov dword [ebp - 0x48], ecx
sub eax, ebx
mov dword [ebp - 0x34], eax
mov eax, edi
sub eax, ebx
mov dword [ebp - 0x74], eax
mov eax, 1
sub eax, ebx
mov dword [ebp - 0x44], eax
mov eax, edi
sub eax, esi
xor esi, esi
mov dword [ebp - 0x78], eax
mov bl, byte [ecx - 1]
mov dl, byte [ebp + 0x13]
mov al, byte [ebp - 3]
mov byte [ebp - 0xb], al
mov byte [ebp - 1], dl
mov dl, byte [ebp - 2]
mov byte [ebp - 0xa], dl
mov dl, byte [ebp - 9]
mov byte [ebp - 0x11], dl
mov dl, byte [ecx - 2]
mov byte [ebp + 0x13], bl
mov bl, byte [ecx]
mov cl, byte [ecx + 1]
mov byte [ebp - 9], cl
movzx ecx, al
mov byte [ebp - 3], dl
mov byte [ebp - 2], bl
movzx ebx, dl
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x18], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x18]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 3]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ebp - 0xb]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp + 0x13]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x38]
add cl, byte [eax - 3]
mov eax, ebx
mov dword [ebp - 0x10], ecx
movzx ecx, byte [ebp - 1]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x28]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
xor eax, edx
sub eax, edx
sub edi, ecx
movzx eax, ax
mov dword [ebp - 0x18], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x18]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp + 0x13]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x28]
movzx eax, byte [ebp - 1]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 2]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x38]
add cl, byte [eax - 2]
mov eax, ebx
mov dword [ebp - 0x28], ecx
movzx ecx, byte [ebp - 0xa]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x3c]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x18], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x18]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 2]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x3c]
movzx eax, byte [ebp - 0xa]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 9]
movzx ecx, dl
mov edx, dword [ebp - 0x34]
cmovl ecx, eax
mov eax, dword [ebp - 0x48]
add cl, byte [eax + edx]
mov eax, ebx
mov dword [ebp - 0x3c], ecx
movzx ecx, byte [ebp - 0x11]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x4c]
movzx edi, al
mov eax, edi
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
add ecx, ecx
movzx eax, ax
sub edi, ecx
mov dword [ebp - 0x18], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x18]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 9]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x4c]
movzx eax, byte [ebp - 0x11]
movzx ecx, cl
cmovge edx, ecx
mov ecx, dword [ebp - 0x48]
cmp bx, di
movzx edx, dl
mov ebx, dword [ebp - 0x38]
mov edi, dword [ebp - 0x54]
cmovl edx, eax
mov eax, dword [ebp - 0x10]
add dl, byte [ebx]
mov byte [esi + edi], al
mov eax, dword [ebp - 0x28]
mov byte [esi + edi + 1], al
add esi, 4
mov edi, dword [ebp - 0x74]
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x4c], edx
mov byte [ecx + edi], al
add ecx, 4
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x48], ecx
mov byte [eax + ebx], dl
add ebx, 4
mov eax, dword [ebp - 0x44]
add eax, ecx
mov dword [ebp - 0x38], ebx
cmp eax, dword [ebp + 0x14]
jb 0x100951b2
mov dword [ebp - 0x24], esi
mov edx, esi
jmp 0x100959c8
cmp ecx, 3
jne 0x1009560f
xor edx, edx
mov byte [ebp - 3], 0
mov byte [ebp - 0x10], 0
mov byte [ebp + 0x13], 0
mov byte [ebp - 0x28], 0
mov byte [ebp - 2], 0
mov byte [ebp - 0x3c], 0
mov dword [ebp - 0x24], edx
cmp eax, 2
jbe 0x100959d4
lea eax, [edi + 1]
mov dword [ebp - 0x4c], eax
lea eax, [ebx + 2]
mov dword [ebp - 0x38], eax
mov eax, esi
sub eax, ebx
mov dword [ebp - 0x74], eax
mov eax, edi
sub eax, ebx
mov ebx, dword [ebp - 0x38]
mov dword [ebp - 0x78], eax
mov eax, esi
sub eax, edi
mov dword [ebp - 0x34], eax
mov eax, 1
sub eax, edi
mov dword [ebp - 0x44], eax
mov cl, byte [ebp + 0x13]
mov dl, byte [ebx - 2]
mov al, byte [ebp - 3]
mov byte [ebp - 0xb], al
mov byte [ebp - 1], cl
mov cl, byte [ebp - 2]
mov byte [ebp - 0xa], cl
mov cl, byte [ebx - 1]
mov byte [ebp + 0x13], cl
mov cl, byte [ebx]
movzx ebx, dl
mov byte [ebp - 3], dl
mov byte [ebp - 2], cl
movzx ecx, al
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x18], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x18]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 3]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ebp - 0xb]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp + 0x13]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x24]
add cl, byte [eax + esi]
mov eax, ebx
mov dword [ebp - 0x10], ecx
movzx ecx, byte [ebp - 1]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x28]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x18], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x18]
xor ebx, edx
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx edi, ax
movzx ecx, dx
cmovge edi, ecx
movzx edx, byte [ebp + 0x13]
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x28]
movzx eax, byte [ebp - 1]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp - 2]
movzx ecx, dl
cmovl ecx, eax
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x4c]
add cl, byte [edx + eax]
mov eax, ebx
mov dword [ebp - 0x28], ecx
movzx ecx, byte [ebp - 0xa]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x3c]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x18], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x18]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 2]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x3c]
movzx eax, byte [ebp - 0xa]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
mov ebx, dword [ebp - 0x38]
mov edi, dword [ebp - 0x4c]
movzx ecx, dl
mov edx, dword [ebp - 0x24]
cmovl ecx, eax
mov eax, dword [ebp - 0x74]
add edx, 3
mov dword [ebp - 0x24], edx
add cl, byte [eax + ebx]
mov eax, dword [ebp - 0x10]
mov byte [edi - 1], al
mov eax, dword [ebp - 0x28]
mov byte [edi], al
add edi, 3
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x4c], edi
mov byte [eax + ebx], cl
add ebx, 3
mov eax, dword [ebp - 0x44]
add eax, edi
mov dword [ebp - 0x38], ebx
cmp eax, dword [ebp + 0x14]
jb 0x10095453
jmp 0x100959cb
cmp ecx, 2
jne 0x1009579f
xor edx, edx
mov byte [ebp - 3], 0
mov byte [ebp - 0x10], 0
mov byte [ebp + 0x13], 0
mov byte [ebp - 0x3c], 0
mov dword [ebp - 0x24], edx
cmp eax, 1
jbe 0x100959d4
lea eax, [esi + 1]
mov ecx, edi
mov dword [ebp - 0x28], eax
mov eax, ebx
sub eax, esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov eax, edi
sub eax, esi
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x78], eax
mov eax, ebx
mov ebx, dword [ebp - 0x28]
sub eax, edi
mov dword [ebp - 0x18], eax
mov eax, 1
sub eax, edi
mov dword [ebp - 0x44], eax
mov dl, byte [ebp + 0x13]
mov al, byte [ebp - 3]
mov byte [ebp - 0xb], al
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x18]
mov dl, byte [edx + ecx]
mov ecx, dword [ebp - 0x34]
mov byte [ebp - 3], dl
mov cl, byte [ecx + ebx]
movzx ebx, dl
mov byte [ebp + 0x13], cl
movzx ecx, al
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x74], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x74]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp - 3]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ebp - 0xb]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
movzx ebx, byte [ebp + 0x13]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x28]
add cl, byte [eax - 1]
mov eax, ebx
mov dword [ebp - 0x10], ecx
movzx ecx, byte [ebp - 1]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x3c]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x74], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x74]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp + 0x13]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x3c]
movzx eax, byte [ebp - 1]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
mov ebx, dword [ebp - 0x28]
movzx ecx, dl
mov edx, dword [ebp - 0x38]
cmovl ecx, eax
mov eax, dword [ebp - 0x10]
add cl, byte [ebx]
mov dword [ebp - 0x3c], ecx
mov byte [edx], al
mov eax, dword [ebp - 0x78]
mov edx, dword [ebp - 0x24]
add edx, 2
mov dword [ebp - 0x24], edx
mov byte [eax + ebx], cl
add ebx, 2
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x44]
add ecx, 2
add eax, ecx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x38], ecx
cmp eax, esi
jb 0x10095666
jmp 0x100959c8
cmp ecx, 1
jne 0x1009585f
mov ecx, dword [ebp + 0x14]
xor al, al
mov byte [ebp - 0x10], al
mov dword [ebp - 0x20], ecx
test ecx, ecx
je 0x10095ad8
sub ebx, esi
sub edi, esi
mov dword [ebp + 8], ebx
mov dword [ebp - 0x54], edi
mov dl, byte [esi + ebx]
lea esi, [esi + 1]
movzx ecx, al
mov byte [ebp - 0xb], al
movzx ebx, dl
mov byte [ebp + 0x13], dl
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
movzx edi, al
mov eax, edi
sub eax, ecx
add ecx, ecx
cdq
sub edi, ecx
xor eax, edx
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x18], eax
lea eax, [ebx + edi]
cdq
mov ebx, eax
mov eax, dword [ebp - 0x18]
xor ebx, edx
movzx edi, ax
sub ebx, edx
mov edx, dword [ebp - 8]
cmp ax, dx
movzx ecx, dx
movzx edx, byte [ebp + 0x13]
cmovge edi, ecx
cmp ax, word [ebp - 8]
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ebp - 0xb]
movzx ecx, cl
cmovge edx, ecx
cmp bx, di
mov ebx, dword [ebp + 8]
movzx ecx, dl
cmovl ecx, eax
mov eax, dword [ebp - 0x54]
add cl, byte [esi - 1]
sub dword [ebp - 0x20], 1
mov dword [ebp - 0x10], ecx
mov byte [esi + eax - 1], cl
mov al, byte [ebp + 0x13]
jne 0x100957c5
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
xor edx, edx
test ecx, ecx
je 0x100959d4
cmp ecx, 8
jb 0x10095998
lea eax, [ecx - 1]
add eax, ebx
cmp edi, eax
ja 0x10095888
lea eax, [ecx - 1]
add eax, edi
cmp eax, ebx
jae 0x10095998
lea eax, [ecx - 1]
add eax, esi
cmp edi, eax
ja 0x1009589e
lea eax, [ecx - 1]
add eax, edi
cmp eax, esi
jae 0x10095998
cmp ecx, 0x40
jb 0x10095945
mov eax, ecx
and eax, 0x3f
mov dword [ebp - 8], eax
mov eax, ecx
sub eax, dword [ebp - 8]
mov ecx, esi
sub ecx, ebx
mov dword [ebp - 0x34], eax
mov dword [ebp + 0x10], ecx
lea eax, [ebx + 0x10]
mov ecx, edi
sub ecx, ebx
mov ebx, dword [ebp + 0x10]
mov dword [ebp - 0x10], ecx
mov ecx, esi
sub ecx, edi
mov dword [ebp - 0x18], ecx
lea ecx, [edi + 0x20]
nop word [eax + eax]
vmovdqu xmm0, xmmword [edx + esi]
vpaddb xmm0, xmm0, xmmword [eax - 0x10]
mov edi, dword [ebp - 0x10]
lea eax, [eax + 0x40]
vmovdqu xmmword [ecx - 0x20], xmm0
vmovdqu xmm0, xmmword [eax + ebx - 0x40]
vpaddb xmm0, xmm0, xmmword [eax - 0x40]
vmovdqu xmmword [eax + edi - 0x40], xmm0
mov edi, dword [ebp - 0x18]
lea ecx, [ecx + 0x40]
vmovdqu xmm0, xmmword [ecx + edi - 0x40]
vpaddb xmm0, xmm0, xmmword [eax - 0x30]
mov edi, dword [ebp - 0x54]
vmovdqu xmmword [ecx - 0x40], xmm0
vmovdqu xmm0, xmmword [edx + esi + 0x30]
vpaddb xmm0, xmm0, xmmword [eax - 0x20]
add edx, 0x40
vmovdqu xmmword [ecx - 0x30], xmm0
cmp edx, dword [ebp - 0x34]
jne 0x100958e0
cmp dword [ebp - 8], 8
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
jb 0x10095994
jmp 0x10095953
mov eax, esi
sub eax, ebx
mov dword [ebp + 0x10], eax
mov eax, edi
sub eax, ebx
mov dword [ebp - 0x10], eax
mov esi, dword [ebp + 0x10]
mov eax, ecx
mov edi, dword [ebp - 0x10]
and eax, 0xfffffff8
mov dword [ebp - 0x18], eax
lea eax, [edx + ebx]
nop dword [eax]
nop dword [eax + eax]
vmovq xmm1, qword [eax + esi]
vmovq xmm0, qword [eax]
vpaddb xmm0, xmm1, xmm0
add edx, 8
lea eax, [eax + 8]
vmovq qword [eax + edi - 8], xmm0
cmp edx, dword [ebp - 0x18]
jne 0x10095970
mov esi, dword [ebp - 0x68]
mov edi, dword [ebp - 0x54]
cmp edx, ecx
je 0x100959d1
sub esi, ebx
lea eax, [edx + ebx]
mov dword [ebp - 0x18], esi
sub edi, ebx
mov esi, ecx
mov dword [ebp - 0x34], edi
mov edi, dword [ebp - 0x18]
sub esi, edx
mov edx, ecx
mov dword [ebp + 0x10], eax
mov ecx, dword [ebp - 0x34]
mov ebx, eax
mov al, byte [edi + ebx]
lea ebx, [ebx + 1]
add al, byte [ebx - 1]
mov byte [ecx + ebx - 1], al
sub esi, 1
jne 0x100959b6
mov esi, dword [ebp - 0x68]
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
cmp edx, eax
je 0x10095ad8
lea edi, [edx + esi]
mov dword [ebp - 0x30], edx
sub dword [ebp - 0x30], ecx
mov ecx, ebx
mov dword [ebp - 0x10], edi
sub ebx, esi
mov edi, dword [ebp - 0x54]
sub ecx, edi
add dword [ebp - 0x30], edi
sub eax, edx
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x34], ecx
mov dword [ebp + 8], ebx
mov dword [ebp - 8], eax
mov cl, byte [ecx + edx]
mov eax, dword [ebp - 0x10]
mov byte [ebp - 1], cl
movzx ecx, cl
mov al, byte [ebx + eax]
mov bl, byte [edx]
movzx edi, al
mov byte [ebp + 0x13], al
mov eax, edi
sub eax, ecx
movzx esi, bl
cdq
xor eax, edx
mov byte [ebp - 0xb], bl
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x18], eax
mov eax, esi
sub eax, ecx
add ecx, ecx
sub edi, ecx
cdq
xor eax, edx
sub eax, edx
movzx ebx, ax
lea eax, [esi + edi]
mov esi, ebx
cdq
mov edi, eax
mov eax, dword [ebp - 0x18]
xor edi, edx
movzx ecx, ax
sub edi, edx
movzx edx, byte [ebp + 0x13]
cmp bx, ax
movzx eax, byte [ebp - 1]
mov ebx, dword [ebp - 0x10]
cmovge esi, ecx
movzx ecx, byte [ebp - 0xb]
cmovge edx, ecx
cmp di, si
movzx ecx, dl
mov edx, dword [ebp - 0x30]
cmovl ecx, eax
add cl, byte [ebx]
inc ebx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x10], ebx
mov ebx, dword [ebp + 8]
mov byte [edx + eax], cl
inc edx
sub dword [ebp - 8], 1
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x30], edx
jne 0x10095a02
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0xc]
sub esi, edi
test edx, edx
je 0x10095abe
mov ebx, edx
nop dword [eax + eax]
mov al, byte [ecx + esi]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
sub ebx, 1
jne 0x10095ab0
cmp edx, dword [ebp + 0x14]
je 0x10095ad8
mov ebx, edi
sub ebx, edx
lea ecx, [edx + edi]
mov al, byte [ecx + esi]
add al, byte [ebx + edx]
inc edx
mov byte [ecx], al
cmp edx, dword [ebp + 0x14]
jne 0x10095ac7
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0x24
pop ebx
mov esp, ebp
pop ebp
ret