40a001:	85 c9                	test   %ecx,%ecx
40a003:	74 0f                	je     0x40a014
40a005:	83 ef 01             	sub    $0x1,%edi
40a008:	83 ee 01             	sub    $0x1,%esi
40a00b:	8a 06                	mov    (%esi),%al
40a00d:	88 07                	mov    %al,(%edi)
40a00f:	83 e9 01             	sub    $0x1,%ecx
40a012:	75 f1                	jne    0x40a005
40a014:	8b 44 24 0c          	mov    0xc(%esp),%eax
40a018:	5e                   	pop    %esi
40a019:	5f                   	pop    %edi
40a01a:	c3                   	ret
40a01b:	eb 03                	jmp    0x40a020
40a01d:	cc                   	int3
40a01e:	cc                   	int3
40a01f:	cc                   	int3
40a020:	8b c6                	mov    %esi,%eax
40a022:	83 e0 0f             	and    $0xf,%eax
40a025:	85 c0                	test   %eax,%eax
40a027:	0f 85 e3 00 00 00    	jne    0x40a110
40a02d:	8b d1                	mov    %ecx,%edx
40a02f:	83 e1 7f             	and    $0x7f,%ecx
40a032:	c1 ea 07             	shr    $0x7,%edx
40a035:	74 66                	je     0x40a09d
40a037:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40a03e:	8b ff                	mov    %edi,%edi
40a040:	66 0f 6f 06          	movdqa (%esi),%xmm0
40a044:	66 0f 6f 4e 10       	movdqa 0x10(%esi),%xmm1
40a049:	66 0f 6f 56 20       	movdqa 0x20(%esi),%xmm2
40a04e:	66 0f 6f 5e 30       	movdqa 0x30(%esi),%xmm3
40a053:	66 0f 7f 07          	movdqa %xmm0,(%edi)
40a057:	66 0f 7f 4f 10       	movdqa %xmm1,0x10(%edi)
40a05c:	66 0f 7f 57 20       	movdqa %xmm2,0x20(%edi)
40a061:	66 0f 7f 5f 30       	movdqa %xmm3,0x30(%edi)
40a066:	66 0f 6f 66 40       	movdqa 0x40(%esi),%xmm4
40a06b:	66 0f 6f 6e 50       	movdqa 0x50(%esi),%xmm5
40a070:	66 0f 6f 76 60       	movdqa 0x60(%esi),%xmm6
40a075:	66 0f 6f 7e 70       	movdqa 0x70(%esi),%xmm7
40a07a:	66 0f 7f 67 40       	movdqa %xmm4,0x40(%edi)
40a07f:	66 0f 7f 6f 50       	movdqa %xmm5,0x50(%edi)
40a084:	66 0f 7f 77 60       	movdqa %xmm6,0x60(%edi)
40a089:	66 0f 7f 7f 70       	movdqa %xmm7,0x70(%edi)
40a08e:	8d b6 80 00 00 00    	lea    0x80(%esi),%esi
40a094:	8d bf 80 00 00 00    	lea    0x80(%edi),%edi
40a09a:	4a                   	dec    %edx
40a09b:	75 a3                	jne    0x40a040
40a09d:	85 c9                	test   %ecx,%ecx
40a09f:	74 5f                	je     0x40a100
40a0a1:	8b d1                	mov    %ecx,%edx
40a0a3:	c1 ea 05             	shr    $0x5,%edx
40a0a6:	85 d2                	test   %edx,%edx
40a0a8:	74 21                	je     0x40a0cb
40a0aa:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40a0b0:	f3 0f 6f 06          	movdqu (%esi),%xmm0
40a0b4:	f3 0f 6f 4e 10       	movdqu 0x10(%esi),%xmm1
40a0b9:	f3 0f 7f 07          	movdqu %xmm0,(%edi)
40a0bd:	f3 0f 7f 4f 10       	movdqu %xmm1,0x10(%edi)
40a0c2:	8d 76 20             	lea    0x20(%esi),%esi
40a0c5:	8d 7f 20             	lea    0x20(%edi),%edi
40a0c8:	4a                   	dec    %edx
40a0c9:	75 e5                	jne    0x40a0b0
40a0cb:	83 e1 1f             	and    $0x1f,%ecx
40a0ce:	74 30                	je     0x40a100
40a0d0:	8b c1                	mov    %ecx,%eax
40a0d2:	c1 e9 02             	shr    $0x2,%ecx
40a0d5:	74 0f                	je     0x40a0e6
40a0d7:	8b 16                	mov    (%esi),%edx
40a0d9:	89 17                	mov    %edx,(%edi)
40a0db:	83 c7 04             	add    $0x4,%edi
40a0de:	83 c6 04             	add    $0x4,%esi
40a0e1:	83 e9 01             	sub    $0x1,%ecx
40a0e4:	75 f1                	jne    0x40a0d7
40a0e6:	8b c8                	mov    %eax,%ecx
40a0e8:	83 e1 03             	and    $0x3,%ecx
40a0eb:	74 13                	je     0x40a100
40a0ed:	8a 06                	mov    (%esi),%al
40a0ef:	88 07                	mov    %al,(%edi)
40a0f1:	46                   	inc    %esi
40a0f2:	47                   	inc    %edi
40a0f3:	49                   	dec    %ecx
40a0f4:	75 f7                	jne    0x40a0ed
40a0f6:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40a0fd:	8d 49 00             	lea    0x0(%ecx),%ecx
40a100:	8b 44 24 0c          	mov    0xc(%esp),%eax
40a104:	5e                   	pop    %esi
40a105:	5f                   	pop    %edi
40a106:	c3                   	ret
40a107:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40a10e:	8b ff                	mov    %edi,%edi
40a110:	ba 10 00 00 00       	mov    $0x10,%edx
40a115:	2b d0                	sub    %eax,%edx
40a117:	2b ca                	sub    %edx,%ecx
40a119:	51                   	push   %ecx
40a11a:	8b c2                	mov    %edx,%eax
40a11c:	8b c8                	mov    %eax,%ecx
40a11e:	83 e1 03             	and    $0x3,%ecx
40a121:	74 09                	je     0x40a12c
40a123:	8a 16                	mov    (%esi),%dl
40a125:	88 17                	mov    %dl,(%edi)
40a127:	46                   	inc    %esi
40a128:	47                   	inc    %edi
40a129:	49                   	dec    %ecx
40a12a:	75 f7                	jne    0x40a123
40a12c:	c1 e8 02             	shr    $0x2,%eax
40a12f:	74 0d                	je     0x40a13e
40a131:	8b 16                	mov    (%esi),%edx
40a133:	89 17                	mov    %edx,(%edi)
40a135:	8d 76 04             	lea    0x4(%esi),%esi
40a138:	8d 7f 04             	lea    0x4(%edi),%edi
40a13b:	48                   	dec    %eax
40a13c:	75 f3                	jne    0x40a131
40a13e:	59                   	pop    %ecx
40a13f:	e9 e9 fe ff ff       	jmp    0x40a02d
40a144:	6a 10                	push   $0x10
40a146:	68 b0 3d 42 00       	push   $0x423db0
40a14b:	e8 80 e8 ff ff       	call   0x4089d0
40a150:	33 db                	xor    %ebx,%ebx
40a152:	8b 45 10             	mov    0x10(%ebp),%eax
40a155:	8b 48 04             	mov    0x4(%eax),%ecx
40a158:	85 c9                	test   %ecx,%ecx
40a15a:	0f 84 0a 01 00 00    	je     0x40a26a
40a160:	38 59 08             	cmp    %bl,0x8(%ecx)
40a163:	0f 84 01 01 00 00    	je     0x40a26a
40a169:	8b 50 08             	mov    0x8(%eax),%edx
40a16c:	85 d2                	test   %edx,%edx
40a16e:	75 08                	jne    0x40a178
40a170:	39 18                	cmp    %ebx,(%eax)
40a172:	0f 8d f2 00 00 00    	jge    0x40a26a
40a178:	8b 08                	mov    (%eax),%ecx
40a17a:	8b 75 0c             	mov    0xc(%ebp),%esi
40a17d:	85 c9                	test   %ecx,%ecx
40a17f:	78 05                	js     0x40a186
40a181:	83 c6 0c             	add    $0xc,%esi
40a184:	03 f2                	add    %edx,%esi
40a186:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40a189:	8b 7d 14             	mov    0x14(%ebp),%edi
40a18c:	84 c9                	test   %cl,%cl
40a18e:	79 20                	jns    0x40a1b0
40a190:	f6 07 10             	testb  $0x10,(%edi)
40a193:	74 1b                	je     0x40a1b0
40a195:	a1 8c 6c 42 00       	mov    0x426c8c,%eax
40a19a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a19d:	85 c0                	test   %eax,%eax
40a19f:	74 0f                	je     0x40a1b0
40a1a1:	8b c8                	mov    %eax,%ecx
40a1a3:	ff 15 50 c2 41 00    	call   *0x41c250
40a1a9:	ff 55 e4             	call   *-0x1c(%ebp)
40a1ac:	8b c8                	mov    %eax,%ecx
40a1ae:	eb 0b                	jmp    0x40a1bb
40a1b0:	8b 45 08             	mov    0x8(%ebp),%eax
40a1b3:	f6 c1 08             	test   $0x8,%cl
40a1b6:	74 1c                	je     0x40a1d4
40a1b8:	8b 48 18             	mov    0x18(%eax),%ecx
40a1bb:	85 c9                	test   %ecx,%ecx
40a1bd:	0f 84 b9 00 00 00    	je     0x40a27c
40a1c3:	85 f6                	test   %esi,%esi
40a1c5:	0f 84 b1 00 00 00    	je     0x40a27c
40a1cb:	89 0e                	mov    %ecx,(%esi)
40a1cd:	8d 47 08             	lea    0x8(%edi),%eax
40a1d0:	50                   	push   %eax
40a1d1:	51                   	push   %ecx
40a1d2:	eb 37                	jmp    0x40a20b
40a1d4:	f6 07 01             	testb  $0x1,(%edi)
40a1d7:	74 3d                	je     0x40a216
40a1d9:	83 78 18 00          	cmpl   $0x0,0x18(%eax)
40a1dd:	0f 84 99 00 00 00    	je     0x40a27c
40a1e3:	85 f6                	test   %esi,%esi
40a1e5:	0f 84 91 00 00 00    	je     0x40a27c
40a1eb:	ff 77 14             	push   0x14(%edi)
40a1ee:	ff 70 18             	push   0x18(%eax)
40a1f1:	56                   	push   %esi
40a1f2:	e8 d9 f9 ff ff       	call   0x409bd0
40a1f7:	83 c4 0c             	add    $0xc,%esp
40a1fa:	83 7f 14 04          	cmpl   $0x4,0x14(%edi)
40a1fe:	75 56                	jne    0x40a256
40a200:	83 3e 00             	cmpl   $0x0,(%esi)
40a203:	74 51                	je     0x40a256
40a205:	8d 47 08             	lea    0x8(%edi),%eax
40a208:	50                   	push   %eax
40a209:	ff 36                	push   (%esi)
40a20b:	e8 6c ee ff ff       	call   0x40907c
40a210:	59                   	pop    %ecx
40a211:	59                   	pop    %ecx
40a212:	89 06                	mov    %eax,(%esi)
40a214:	eb 40                	jmp    0x40a256
40a216:	8b 48 18             	mov    0x18(%eax),%ecx
40a219:	39 5f 18             	cmp    %ebx,0x18(%edi)
40a21c:	75 23                	jne    0x40a241
40a21e:	85 c9                	test   %ecx,%ecx
40a220:	74 5a                	je     0x40a27c
40a222:	85 f6                	test   %esi,%esi
40a224:	74 56                	je     0x40a27c
40a226:	ff 77 14             	push   0x14(%edi)
40a229:	8d 47 08             	lea    0x8(%edi),%eax
40a22c:	50                   	push   %eax
40a22d:	51                   	push   %ecx
40a22e:	e8 49 ee ff ff       	call   0x40907c
40a233:	59                   	pop    %ecx
40a234:	59                   	pop    %ecx
40a235:	50                   	push   %eax
40a236:	56                   	push   %esi
40a237:	e8 94 f9 ff ff       	call   0x409bd0
40a23c:	83 c4 0c             	add    $0xc,%esp
40a23f:	eb 15                	jmp    0x40a256
40a241:	85 c9                	test   %ecx,%ecx
40a243:	74 37                	je     0x40a27c
40a245:	85 f6                	test   %esi,%esi
40a247:	74 33                	je     0x40a27c
40a249:	f6 07 04             	testb  $0x4,(%edi)
40a24c:	6a 00                	push   $0x0
40a24e:	5b                   	pop    %ebx
40a24f:	0f 95 c3             	setne  %bl
40a252:	43                   	inc    %ebx
40a253:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40a256:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a25d:	8b c3                	mov    %ebx,%eax
40a25f:	eb 0b                	jmp    0x40a26c
40a261:	33 c0                	xor    %eax,%eax
40a263:	40                   	inc    %eax
40a264:	c3                   	ret
40a265:	8b 65 e8             	mov    -0x18(%ebp),%esp
40a268:	eb 12                	jmp    0x40a27c
40a26a:	33 c0                	xor    %eax,%eax
40a26c:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a26f:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a276:	59                   	pop    %ecx
40a277:	5f                   	pop    %edi
40a278:	5e                   	pop    %esi
40a279:	5b                   	pop    %ebx
40a27a:	c9                   	leave
40a27b:	c3                   	ret
40a27c:	e8 7a 20 00 00       	call   0x40c2fb
40a281:	cc                   	int3
40a282:	6a 08                	push   $0x8
40a284:	68 d0 3d 42 00       	push   $0x423dd0
40a289:	e8 42 e7 ff ff       	call   0x4089d0
40a28e:	8b 55 10             	mov    0x10(%ebp),%edx
40a291:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a294:	83 3a 00             	cmpl   $0x0,(%edx)
40a297:	7d 04                	jge    0x40a29d
40a299:	8b f9                	mov    %ecx,%edi
40a29b:	eb 06                	jmp    0x40a2a3
40a29d:	8d 79 0c             	lea    0xc(%ecx),%edi
40a2a0:	03 7a 08             	add    0x8(%edx),%edi
40a2a3:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a2a7:	8b 75 14             	mov    0x14(%ebp),%esi
40a2aa:	56                   	push   %esi
40a2ab:	52                   	push   %edx
40a2ac:	51                   	push   %ecx
40a2ad:	8b 5d 08             	mov    0x8(%ebp),%ebx
40a2b0:	53                   	push   %ebx
40a2b1:	e8 8e fe ff ff       	call   0x40a144
40a2b6:	83 c4 10             	add    $0x10,%esp
40a2b9:	83 e8 01             	sub    $0x1,%eax
40a2bc:	74 21                	je     0x40a2df
40a2be:	83 e8 01             	sub    $0x1,%eax
40a2c1:	75 34                	jne    0x40a2f7
40a2c3:	8d 46 08             	lea    0x8(%esi),%eax
40a2c6:	50                   	push   %eax
40a2c7:	ff 73 18             	push   0x18(%ebx)
40a2ca:	e8 ad ed ff ff       	call   0x40907c
40a2cf:	59                   	pop    %ecx
40a2d0:	59                   	pop    %ecx
40a2d1:	6a 01                	push   $0x1
40a2d3:	50                   	push   %eax
40a2d4:	ff 76 18             	push   0x18(%esi)
40a2d7:	57                   	push   %edi
40a2d8:	e8 22 0c 00 00       	call   0x40aeff
40a2dd:	eb 18                	jmp    0x40a2f7
40a2df:	8d 46 08             	lea    0x8(%esi),%eax
40a2e2:	50                   	push   %eax
40a2e3:	ff 73 18             	push   0x18(%ebx)
40a2e6:	e8 91 ed ff ff       	call   0x40907c
40a2eb:	59                   	pop    %ecx
40a2ec:	59                   	pop    %ecx
40a2ed:	50                   	push   %eax
40a2ee:	ff 76 18             	push   0x18(%esi)
40a2f1:	57                   	push   %edi
40a2f2:	e8 f8 0b 00 00       	call   0x40aeef
40a2f7:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a2fe:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a301:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a308:	59                   	pop    %ecx
40a309:	5f                   	pop    %edi
40a30a:	5e                   	pop    %esi
40a30b:	5b                   	pop    %ebx
40a30c:	c9                   	leave
40a30d:	c3                   	ret
40a30e:	33 c0                	xor    %eax,%eax
40a310:	40                   	inc    %eax
40a311:	c3                   	ret
40a312:	8b 65 e8             	mov    -0x18(%ebp),%esp
40a315:	e8 e1 1f 00 00       	call   0x40c2fb
40a31a:	cc                   	int3
40a31b:	55                   	push   %ebp
40a31c:	8b ec                	mov    %esp,%ebp
40a31e:	83 7d 20 00          	cmpl   $0x0,0x20(%ebp)
40a322:	53                   	push   %ebx
40a323:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
40a326:	56                   	push   %esi
40a327:	57                   	push   %edi
40a328:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a32b:	74 10                	je     0x40a33d
40a32d:	ff 75 20             	push   0x20(%ebp)
40a330:	53                   	push   %ebx
40a331:	57                   	push   %edi
40a332:	ff 75 08             	push   0x8(%ebp)
40a335:	e8 48 ff ff ff       	call   0x40a282
40a33a:	83 c4 10             	add    $0x10,%esp
40a33d:	8b 45 2c             	mov    0x2c(%ebp),%eax
40a340:	85 c0                	test   %eax,%eax
40a342:	75 02                	jne    0x40a346
40a344:	8b c7                	mov    %edi,%eax
40a346:	ff 75 08             	push   0x8(%ebp)
40a349:	50                   	push   %eax
40a34a:	e8 b0 f6 ff ff       	call   0x4099ff
40a34f:	8b 75 24             	mov    0x24(%ebp),%esi
40a352:	ff 36                	push   (%esi)
40a354:	ff 75 18             	push   0x18(%ebp)
40a357:	ff 75 14             	push   0x14(%ebp)
40a35a:	57                   	push   %edi
40a35b:	e8 0d 0a 00 00       	call   0x40ad6d
40a360:	8b 46 04             	mov    0x4(%esi),%eax
40a363:	40                   	inc    %eax
40a364:	50                   	push   %eax
40a365:	ff 75 18             	push   0x18(%ebp)
40a368:	57                   	push   %edi
40a369:	e8 48 0c 00 00       	call   0x40afb6
40a36e:	68 00 01 00 00       	push   $0x100
40a373:	ff 75 28             	push   0x28(%ebp)
40a376:	ff 73 0c             	push   0xc(%ebx)
40a379:	ff 75 18             	push   0x18(%ebp)
40a37c:	ff 75 10             	push   0x10(%ebp)
40a37f:	57                   	push   %edi
40a380:	ff 75 08             	push   0x8(%ebp)
40a383:	e8 75 07 00 00       	call   0x40aafd
40a388:	83 c4 38             	add    $0x38,%esp
40a38b:	85 c0                	test   %eax,%eax
40a38d:	74 07                	je     0x40a396
40a38f:	57                   	push   %edi
40a390:	50                   	push   %eax
40a391:	e8 39 f6 ff ff       	call   0x4099cf
40a396:	5f                   	pop    %edi
40a397:	5e                   	pop    %esi
40a398:	5b                   	pop    %ebx
40a399:	5d                   	pop    %ebp
40a39a:	c3                   	ret
40a39b:	55                   	push   %ebp
40a39c:	8b ec                	mov    %esp,%ebp
40a39e:	83 ec 68             	sub    $0x68,%esp