409ec7:	89 75 b0             	mov    %esi,-0x50(%ebp)
409eca:	e8 30 03 00 00       	call   0x40a1ff
409ecf:	85 c0                	test   %eax,%eax
409ed1:	0f 84 b0 02 00 00    	je     0x40a187
409ed7:	8d 45 f4             	lea    -0xc(%ebp),%eax
409eda:	50                   	push   %eax
409edb:	56                   	push   %esi
409edc:	68 40 61 41 00       	push   $0x416140
409ee1:	ff 93 8c 00 00 00    	call   *0x8c(%ebx)
409ee7:	85 c0                	test   %eax,%eax
409ee9:	0f 85 98 02 00 00    	jne    0x40a187
409eef:	8d 45 f0             	lea    -0x10(%ebp),%eax
409ef2:	50                   	push   %eax
409ef3:	8d 45 d8             	lea    -0x28(%ebp),%eax
409ef6:	50                   	push   %eax
409ef7:	68 00 02 00 00       	push   $0x200
409efc:	ff 75 f4             	push   -0xc(%ebp)
409eff:	ff 93 94 00 00 00    	call   *0x94(%ebx)
409f05:	85 c0                	test   %eax,%eax
409f07:	0f 85 7a 02 00 00    	jne    0x40a187
409f0d:	8b 45 d8             	mov    -0x28(%ebp),%eax
409f10:	85 c0                	test   %eax,%eax
409f12:	0f 84 6f 02 00 00    	je     0x40a187
409f18:	89 75 b4             	mov    %esi,-0x4c(%ebp)
409f1b:	89 75 dc             	mov    %esi,-0x24(%ebp)
409f1e:	89 75 e0             	mov    %esi,-0x20(%ebp)
409f21:	e8 a6 02 00 00       	call   0x40a1cc
409f26:	6a 10                	push   $0x10
409f28:	68 30 61 41 00       	push   $0x416130
409f2d:	85 c0                	test   %eax,%eax
409f2f:	0f 84 18 01 00 00    	je     0x40a04d
409f35:	8b 7d e0             	mov    -0x20(%ebp),%edi
409f38:	03 7d f0             	add    -0x10(%ebp),%edi
409f3b:	57                   	push   %edi
409f3c:	89 7d fc             	mov    %edi,-0x4(%ebp)
409f3f:	e8 bc 70 ff ff       	call   0x401000
409f44:	83 c4 0c             	add    $0xc,%esp
409f47:	85 c0                	test   %eax,%eax
409f49:	0f 85 1d 02 00 00    	jne    0x40a16c
409f4f:	ff 77 10             	push   0x10(%edi)
409f52:	8d 4d ec             	lea    -0x14(%ebp),%ecx
409f55:	e8 b8 94 ff ff       	call   0x403412
409f5a:	68 20 2e 41 00       	push   $0x412e20
409f5f:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
409f62:	e8 ab 94 ff ff       	call   0x403412
409f67:	50                   	push   %eax
409f68:	8d 4d ec             	lea    -0x14(%ebp),%ecx
409f6b:	e8 05 91 ff ff       	call   0x403075
409f70:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
409f73:	8b f8                	mov    %eax,%edi
409f75:	e8 b3 ba ff ff       	call   0x405a2d
409f7a:	89 75 d4             	mov    %esi,-0x2c(%ebp)
409f7d:	85 ff                	test   %edi,%edi
409f7f:	0f 84 b8 00 00 00    	je     0x40a03d
409f85:	8b 7d fc             	mov    -0x4(%ebp),%edi
409f88:	8d 4d d0             	lea    -0x30(%ebp),%ecx
409f8b:	0f 28 05 d0 49 41 00 	movaps 0x4149d0,%xmm0
409f92:	0f 11 45 a0          	movups %xmm0,-0x60(%ebp)
409f96:	8b 47 14             	mov    0x14(%edi),%eax
409f99:	83 c0 20             	add    $0x20,%eax
409f9c:	50                   	push   %eax
409f9d:	e8 70 94 ff ff       	call   0x403412
409fa2:	50                   	push   %eax
409fa3:	8d 4d a0             	lea    -0x60(%ebp),%ecx
409fa6:	e8 b9 92 ff ff       	call   0x403264
409fab:	8b 4d d0             	mov    -0x30(%ebp),%ecx
409fae:	e8 7a ba ff ff       	call   0x405a2d
409fb3:	8b 47 18             	mov    0x18(%edi),%eax
409fb6:	8d 4d cc             	lea    -0x34(%ebp),%ecx
409fb9:	83 c0 20             	add    $0x20,%eax
409fbc:	89 75 d0             	mov    %esi,-0x30(%ebp)
409fbf:	50                   	push   %eax
409fc0:	e8 4d 94 ff ff       	call   0x403412
409fc5:	50                   	push   %eax
409fc6:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
409fc9:	e8 96 92 ff ff       	call   0x403264
409fce:	8b 4d cc             	mov    -0x34(%ebp),%ecx
409fd1:	e8 57 ba ff ff       	call   0x405a2d
409fd6:	8d 45 f8             	lea    -0x8(%ebp),%eax
409fd9:	89 75 f8             	mov    %esi,-0x8(%ebp)
409fdc:	50                   	push   %eax
409fdd:	56                   	push   %esi
409fde:	56                   	push   %esi
409fdf:	56                   	push   %esi
409fe0:	ff 77 18             	push   0x18(%edi)
409fe3:	89 75 cc             	mov    %esi,-0x34(%ebp)
409fe6:	ff 77 14             	push   0x14(%edi)
409fe9:	57                   	push   %edi
409fea:	ff 75 f4             	push   -0xc(%ebp)
409fed:	ff 93 98 00 00 00    	call   *0x98(%ebx)
409ff3:	85 c0                	test   %eax,%eax
409ff5:	75 29                	jne    0x40a020
409ff7:	8b 7d f8             	mov    -0x8(%ebp),%edi
409ffa:	8d 4d c8             	lea    -0x38(%ebp),%ecx
409ffd:	89 7d fc             	mov    %edi,-0x4(%ebp)
40a000:	8b 47 1c             	mov    0x1c(%edi),%eax
40a003:	83 c0 20             	add    $0x20,%eax
40a006:	50                   	push   %eax
40a007:	e8 06 94 ff ff       	call   0x403412
40a00c:	50                   	push   %eax
40a00d:	8d 4d a8             	lea    -0x58(%ebp),%ecx
40a010:	e8 4f 92 ff ff       	call   0x403264
40a015:	8b 4d c8             	mov    -0x38(%ebp),%ecx
40a018:	e8 10 ba ff ff       	call   0x405a2d
40a01d:	89 75 c8             	mov    %esi,-0x38(%ebp)
40a020:	83 ec 10             	sub    $0x10,%esp
40a023:	8d 45 a0             	lea    -0x60(%ebp),%eax
40a026:	8b cc                	mov    %esp,%ecx
40a028:	50                   	push   %eax
40a029:	e8 8b 7e ff ff       	call   0x401eb9
40a02e:	8b cb                	mov    %ebx,%ecx
40a030:	e8 ba 7e ff ff       	call   0x401eef
40a035:	8d 4d a0             	lea    -0x60(%ebp),%ecx
40a038:	e8 52 73 ff ff       	call   0x40138f
40a03d:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40a040:	e8 e8 b9 ff ff       	call   0x405a2d
40a045:	89 75 ec             	mov    %esi,-0x14(%ebp)
40a048:	e9 1c 01 00 00       	jmp    0x40a169
40a04d:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a050:	03 45 dc             	add    -0x24(%ebp),%eax
40a053:	57                   	push   %edi
40a054:	89 45 e8             	mov    %eax,-0x18(%ebp)
40a057:	e8 a4 6f ff ff       	call   0x401000
40a05c:	83 c4 0c             	add    $0xc,%esp
40a05f:	85 c0                	test   %eax,%eax
40a061:	0f 85 05 01 00 00    	jne    0x40a16c
40a067:	8b 45 e8             	mov    -0x18(%ebp),%eax
40a06a:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40a06d:	ff 70 10             	push   0x10(%eax)
40a070:	e8 9d 93 ff ff       	call   0x403412
40a075:	68 20 2e 41 00       	push   $0x412e20
40a07a:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
40a07d:	e8 90 93 ff ff       	call   0x403412
40a082:	50                   	push   %eax
40a083:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40a086:	e8 ea 8f ff ff       	call   0x403075
40a08b:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
40a08e:	8b f8                	mov    %eax,%edi
40a090:	e8 98 b9 ff ff       	call   0x405a2d
40a095:	89 75 c4             	mov    %esi,-0x3c(%ebp)
40a098:	85 ff                	test   %edi,%edi
40a09a:	0f 84 be 00 00 00    	je     0x40a15e
40a0a0:	8b 7d fc             	mov    -0x4(%ebp),%edi
40a0a3:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40a0a6:	0f 28 05 d0 49 41 00 	movaps 0x4149d0,%xmm0
40a0ad:	0f 11 45 a0          	movups %xmm0,-0x60(%ebp)
40a0b1:	8b 47 14             	mov    0x14(%edi),%eax
40a0b4:	83 c0 20             	add    $0x20,%eax
40a0b7:	50                   	push   %eax
40a0b8:	e8 55 93 ff ff       	call   0x403412
40a0bd:	50                   	push   %eax
40a0be:	8d 4d a0             	lea    -0x60(%ebp),%ecx
40a0c1:	e8 9e 91 ff ff       	call   0x403264
40a0c6:	8b 4d c0             	mov    -0x40(%ebp),%ecx
40a0c9:	e8 5f b9 ff ff       	call   0x405a2d
40a0ce:	8b 47 18             	mov    0x18(%edi),%eax
40a0d1:	8d 4d bc             	lea    -0x44(%ebp),%ecx
40a0d4:	83 c0 20             	add    $0x20,%eax
40a0d7:	89 75 c0             	mov    %esi,-0x40(%ebp)
40a0da:	50                   	push   %eax
40a0db:	e8 32 93 ff ff       	call   0x403412
40a0e0:	50                   	push   %eax
40a0e1:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
40a0e4:	e8 7b 91 ff ff       	call   0x403264
40a0e9:	8b 4d bc             	mov    -0x44(%ebp),%ecx
40a0ec:	e8 3c b9 ff ff       	call   0x405a2d
40a0f1:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a0f4:	89 75 f8             	mov    %esi,-0x8(%ebp)
40a0f7:	50                   	push   %eax
40a0f8:	8b 45 e8             	mov    -0x18(%ebp),%eax
40a0fb:	56                   	push   %esi
40a0fc:	56                   	push   %esi
40a0fd:	56                   	push   %esi
40a0fe:	ff 70 18             	push   0x18(%eax)
40a101:	89 75 bc             	mov    %esi,-0x44(%ebp)
40a104:	ff 70 14             	push   0x14(%eax)
40a107:	50                   	push   %eax
40a108:	ff 75 f4             	push   -0xc(%ebp)
40a10b:	ff 93 98 00 00 00    	call   *0x98(%ebx)
40a111:	85 c0                	test   %eax,%eax
40a113:	75 2c                	jne    0x40a141
40a115:	8b 45 e8             	mov    -0x18(%ebp),%eax
40a118:	8d 4d b8             	lea    -0x48(%ebp),%ecx
40a11b:	8b 7d f8             	mov    -0x8(%ebp),%edi
40a11e:	89 7d fc             	mov    %edi,-0x4(%ebp)
40a121:	8b 40 1c             	mov    0x1c(%eax),%eax
40a124:	83 c0 20             	add    $0x20,%eax
40a127:	50                   	push   %eax
40a128:	e8 e5 92 ff ff       	call   0x403412
40a12d:	50                   	push   %eax
40a12e:	8d 4d b0             	lea    -0x50(%ebp),%ecx
40a131:	e8 2e 91 ff ff       	call   0x403264
40a136:	8b 4d b8             	mov    -0x48(%ebp),%ecx
40a139:	e8 ef b8 ff ff       	call   0x405a2d
40a13e:	89 75 b8             	mov    %esi,-0x48(%ebp)
40a141:	83 ec 10             	sub    $0x10,%esp
40a144:	8d 45 a0             	lea    -0x60(%ebp),%eax
40a147:	8b cc                	mov    %esp,%ecx
40a149:	50                   	push   %eax
40a14a:	e8 6a 7d ff ff       	call   0x401eb9
40a14f:	8b cb                	mov    %ebx,%ecx
40a151:	e8 99 7d ff ff       	call   0x401eef
40a156:	8d 4d a0             	lea    -0x60(%ebp),%ecx
40a159:	e8 31 72 ff ff       	call   0x40138f
40a15e:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40a161:	e8 c7 b8 ff ff       	call   0x405a2d
40a166:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40a169:	8b 7d fc             	mov    -0x4(%ebp),%edi
40a16c:	8b 45 b4             	mov    -0x4c(%ebp),%eax
40a16f:	83 45 e0 38          	addl   $0x38,-0x20(%ebp)
40a173:	40                   	inc    %eax
40a174:	83 45 dc 34          	addl   $0x34,-0x24(%ebp)
40a178:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40a17b:	3b 45 d8             	cmp    -0x28(%ebp),%eax
40a17e:	0f 82 9d fd ff ff    	jb     0x409f21
40a184:	8b 75 b0             	mov    -0x50(%ebp),%esi
40a187:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
40a18b:	74 09                	je     0x40a196
40a18d:	ff 75 f0             	push   -0x10(%ebp)
40a190:	ff 93 a0 00 00 00    	call   *0xa0(%ebx)
40a196:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
40a19a:	74 0a                	je     0x40a1a6
40a19c:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a19f:	50                   	push   %eax
40a1a0:	ff 93 90 00 00 00    	call   *0x90(%ebx)
40a1a6:	ff b3 c0 00 00 00    	push   0xc0(%ebx)
40a1ac:	ff 15 dc 20 41 00    	call   *0x4120dc
40a1b2:	8b ce                	mov    %esi,%ecx
40a1b4:	e8 74 b8 ff ff       	call   0x405a2d
40a1b9:	33 c9                	xor    %ecx,%ecx
40a1bb:	e8 6d b8 ff ff       	call   0x405a2d
40a1c0:	33 c9                	xor    %ecx,%ecx
40a1c2:	e8 66 b8 ff ff       	call   0x405a2d
40a1c7:	5f                   	pop    %edi
40a1c8:	5e                   	pop    %esi
40a1c9:	5b                   	pop    %ebx
40a1ca:	c9                   	leave
40a1cb:	c3                   	ret
40a1cc:	e8 0c 38 00 00       	call   0x40d9dd
40a1d1:	8d 88 94 fd ff ff    	lea    -0x26c(%eax),%ecx
40a1d7:	81 f9 7c 01 00 00    	cmp    $0x17c,%ecx
40a1dd:	76 0f                	jbe    0x40a1ee
40a1df:	05 c8 e7 ff ff       	add    $0xffffe7c8,%eax
40a1e4:	3d d8 0e 00 00       	cmp    $0xed8,%eax
40a1e9:	76 03                	jbe    0x40a1ee
40a1eb:	33 c0                	xor    %eax,%eax
40a1ed:	c3                   	ret
40a1ee:	33 c0                	xor    %eax,%eax
40a1f0:	40                   	inc    %eax
40a1f1:	c3                   	ret
40a1f2:	ff b1 c0 00 00 00    	push   0xc0(%ecx)
40a1f8:	ff 15 dc 20 41 00    	call   *0x4120dc
40a1fe:	c3                   	ret
40a1ff:	56                   	push   %esi
40a200:	68 c0 2d 41 00       	push   $0x412dc0
40a205:	8b f1                	mov    %ecx,%esi
40a207:	ff 15 b8 21 41 00    	call   *0x4121b8
40a20d:	89 86 c0 00 00 00    	mov    %eax,0xc0(%esi)
40a213:	85 c0                	test   %eax,%eax
40a215:	0f 84 ae 00 00 00    	je     0x40a2c9
40a21b:	57                   	push   %edi
40a21c:	51                   	push   %ecx
40a21d:	ba d0 2d 41 00       	mov    $0x412dd0,%edx
40a222:	8b c8                	mov    %eax,%ecx
40a224:	e8 de 46 00 00       	call   0x40e907
40a229:	8b 8e c0 00 00 00    	mov    0xc0(%esi),%ecx
40a22f:	ba e0 2d 41 00       	mov    $0x412de0,%edx
40a234:	89 86 8c 00 00 00    	mov    %eax,0x8c(%esi)
40a23a:	e8 c8 46 00 00       	call   0x40e907
40a23f:	8b 8e c0 00 00 00    	mov    0xc0(%esi),%ecx
40a245:	ba f0 2d 41 00       	mov    $0x412df0,%edx
40a24a:	89 86 90 00 00 00    	mov    %eax,0x90(%esi)
40a250:	e8 b2 46 00 00       	call   0x40e907
40a255:	8b 8e c0 00 00 00    	mov    0xc0(%esi),%ecx
40a25b:	bf 04 2e 41 00       	mov    $0x412e04,%edi
40a260:	8b d7                	mov    %edi,%edx
40a262:	89 86 94 00 00 00    	mov    %eax,0x94(%esi)
40a268:	e8 9a 46 00 00       	call   0x40e907
40a26d:	8b 8e c0 00 00 00    	mov    0xc0(%esi),%ecx
40a273:	8b d7                	mov    %edi,%edx
40a275:	89 86 98 00 00 00    	mov    %eax,0x98(%esi)
40a27b:	e8 87 46 00 00       	call   0x40e907
40a280:	8b 8e c0 00 00 00    	mov    0xc0(%esi),%ecx
40a286:	ba 14 2e 41 00       	mov    $0x412e14,%edx
40a28b:	89 86 9c 00 00 00    	mov    %eax,0x9c(%esi)
40a291:	e8 71 46 00 00       	call   0x40e907
40a296:	59                   	pop    %ecx
40a297:	33 c9                	xor    %ecx,%ecx
40a299:	89 86 a0 00 00 00    	mov    %eax,0xa0(%esi)
40a29f:	5f                   	pop    %edi
40a2a0:	39 8e 8c 00 00 00    	cmp    %ecx,0x8c(%esi)
40a2a6:	74 21                	je     0x40a2c9
40a2a8:	39 8e 94 00 00 00    	cmp    %ecx,0x94(%esi)
40a2ae:	74 19                	je     0x40a2c9
40a2b0:	39 8e 90 00 00 00    	cmp    %ecx,0x90(%esi)
40a2b6:	74 11                	je     0x40a2c9
40a2b8:	39 8e 98 00 00 00    	cmp    %ecx,0x98(%esi)
40a2be:	74 09                	je     0x40a2c9
40a2c0:	85 c0                	test   %eax,%eax
40a2c2:	74 05                	je     0x40a2c9
40a2c4:	33 c0                	xor    %eax,%eax
40a2c6:	40                   	inc    %eax
40a2c7:	5e                   	pop    %esi
40a2c8:	c3                   	ret
40a2c9:	33 c0                	xor    %eax,%eax
40a2cb:	5e                   	pop    %esi
40a2cc:	c3                   	ret
40a2cd:	53                   	push   %ebx
40a2ce:	56                   	push   %esi
40a2cf:	8b 35 dc 20 41 00    	mov    0x4120dc,%esi
40a2d5:	57                   	push   %edi
40a2d6:	8b f9                	mov    %ecx,%edi
40a2d8:	ff b7 b4 00 00 00    	push   0xb4(%edi)
40a2de:	ff d6                	call   *%esi
40a2e0:	ff b7 a8 00 00 00    	push   0xa8(%edi)
40a2e6:	33 db                	xor    %ebx,%ebx
40a2e8:	89 9f b4 00 00 00    	mov    %ebx,0xb4(%edi)
40a2ee:	ff d6                	call   *%esi
40a2f0:	ff b7 ac 00 00 00    	push   0xac(%edi)
40a2f6:	89 9f a8 00 00 00    	mov    %ebx,0xa8(%edi)
40a2fc:	ff d6                	call   *%esi
40a2fe:	ff b7 b8 00 00 00    	push   0xb8(%edi)
40a304:	89 9f ac 00 00 00    	mov    %ebx,0xac(%edi)
40a30a:	ff d6                	call   *%esi
40a30c:	ff b7 b0 00 00 00    	push   0xb0(%edi)
40a312:	89 9f b8 00 00 00    	mov    %ebx,0xb8(%edi)
40a318:	ff d6                	call   *%esi
40a31a:	89 9f b0 00 00 00    	mov    %ebx,0xb0(%edi)
40a320:	5f                   	pop    %edi
40a321:	5e                   	pop    %esi
40a322:	5b                   	pop    %ebx
40a323:	c3                   	ret
40a324:	55                   	push   %ebp
40a325:	8b ec                	mov    %esp,%ebp
40a327:	81 ec 2c 02 00 00    	sub    $0x22c,%esp
40a32d:	53                   	push   %ebx
40a32e:	56                   	push   %esi
40a32f:	57                   	push   %edi
40a330:	be 04 01 00 00       	mov    $0x104,%esi
40a335:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a33b:	56                   	push   %esi
40a33c:	33 db                	xor    %ebx,%ebx
40a33e:	8b f9                	mov    %ecx,%edi
40a340:	53                   	push   %ebx
40a341:	50                   	push   %eax
40a342:	e8 0b 6d ff ff       	call   0x401052
40a347:	83 c4 0c             	add    $0xc,%esp
40a34a:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a350:	50                   	push   %eax
40a351:	56                   	push   %esi