409f8b:	59                   	pop    %ecx
409f8c:	59                   	pop    %ecx
409f8d:	85 c0                	test   %eax,%eax
409f8f:	75 11                	jne    0x409fa2
409f91:	8b 45 fc             	mov    -0x4(%ebp),%eax
409f94:	3b c7                	cmp    %edi,%eax
409f96:	73 0a                	jae    0x409fa2
409f98:	8b 0e                	mov    (%esi),%ecx
409f9a:	89 4d e0             	mov    %ecx,-0x20(%ebp)
409f9d:	e9 09 01 00 00       	jmp    0x40a0ab
409fa2:	68 b0 43 40 00       	push   $0x4043b0
409fa7:	ff 76 fc             	push   -0x4(%esi)
409faa:	ff 15 28 f1 40 00    	call   *0x40f128
409fb0:	59                   	pop    %ecx
409fb1:	59                   	pop    %ecx
409fb2:	85 c0                	test   %eax,%eax
409fb4:	75 27                	jne    0x409fdd
409fb6:	39 7d fc             	cmp    %edi,-0x4(%ebp)
409fb9:	73 22                	jae    0x409fdd
409fbb:	68 bc 43 40 00       	push   $0x4043bc
409fc0:	ff 36                	push   (%esi)
409fc2:	ff 15 28 f1 40 00    	call   *0x40f128
409fc8:	59                   	pop    %ecx
409fc9:	59                   	pop    %ecx
409fca:	85 c0                	test   %eax,%eax
409fcc:	0f 85 9a fd ff ff    	jne    0x409d6c
409fd2:	8d 45 cc             	lea    -0x34(%ebp),%eax
409fd5:	89 45 e4             	mov    %eax,-0x1c(%ebp)
409fd8:	e9 8f fd ff ff       	jmp    0x409d6c
409fdd:	68 38 44 40 00       	push   $0x404438
409fe2:	ff 76 fc             	push   -0x4(%esi)
409fe5:	ff 15 28 f1 40 00    	call   *0x40f128
409feb:	59                   	pop    %ecx
409fec:	59                   	pop    %ecx
409fed:	85 c0                	test   %eax,%eax
409fef:	75 11                	jne    0x40a002
409ff1:	8b 45 fc             	mov    -0x4(%ebp),%eax
409ff4:	3b c7                	cmp    %edi,%eax
409ff6:	73 0a                	jae    0x40a002
409ff8:	8b 0e                	mov    (%esi),%ecx
409ffa:	89 4d d8             	mov    %ecx,-0x28(%ebp)
409ffd:	e9 a9 00 00 00       	jmp    0x40a0ab
40a002:	68 c4 43 40 00       	push   $0x4043c4
40a007:	ff 76 fc             	push   -0x4(%esi)
40a00a:	ff 15 28 f1 40 00    	call   *0x40f128
40a010:	59                   	pop    %ecx
40a011:	59                   	pop    %ecx
40a012:	85 c0                	test   %eax,%eax
40a014:	75 75                	jne    0x40a08b
40a016:	39 7d fc             	cmp    %edi,-0x4(%ebp)
40a019:	73 70                	jae    0x40a08b
40a01b:	8b 06                	mov    (%esi),%eax
40a01d:	33 ff                	xor    %edi,%edi
40a01f:	8b c8                	mov    %eax,%ecx
40a021:	89 45 c8             	mov    %eax,-0x38(%ebp)
40a024:	8d 51 02             	lea    0x2(%ecx),%edx
40a027:	66 8b 01             	mov    (%ecx),%ax
40a02a:	83 c1 02             	add    $0x2,%ecx
40a02d:	66 3b c7             	cmp    %di,%ax
40a030:	75 f5                	jne    0x40a027
40a032:	2b ca                	sub    %edx,%ecx
40a034:	d1 f9                	sar    $1,%ecx
40a036:	8d 3c 4d 04 00 00 00 	lea    0x4(,%ecx,2),%edi
40a03d:	57                   	push   %edi
40a03e:	6a 40                	push   $0x40
40a040:	ff 15 64 f0 40 00    	call   *0x40f064
40a046:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a049:	85 c0                	test   %eax,%eax
40a04b:	0f 84 d0 00 00 00    	je     0x40a121
40a051:	ff 75 c8             	push   -0x38(%ebp)
40a054:	8b d7                	mov    %edi,%edx
40a056:	8b c8                	mov    %eax,%ecx
40a058:	e8 e6 27 00 00       	call   0x40c843
40a05d:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a060:	8b c8                	mov    %eax,%ecx
40a062:	0f b7 10             	movzwl (%eax),%edx
40a065:	66 85 d2             	test   %dx,%dx
40a068:	0f 84 fb fc ff ff    	je     0x409d69
40a06e:	66 83 fa 2f          	cmp    $0x2f,%dx
40a072:	75 05                	jne    0x40a079
40a074:	33 c0                	xor    %eax,%eax
40a076:	66 89 01             	mov    %ax,(%ecx)
40a079:	83 c1 02             	add    $0x2,%ecx
40a07c:	0f b7 01             	movzwl (%ecx),%eax
40a07f:	8b d0                	mov    %eax,%edx
40a081:	66 85 c0             	test   %ax,%ax
40a084:	75 e8                	jne    0x40a06e
40a086:	e9 de fc ff ff       	jmp    0x409d69
40a08b:	68 18 44 40 00       	push   $0x404418
40a090:	ff 76 fc             	push   -0x4(%esi)
40a093:	ff 15 28 f1 40 00    	call   *0x40f128
40a099:	59                   	pop    %ecx
40a09a:	59                   	pop    %ecx
40a09b:	85 c0                	test   %eax,%eax
40a09d:	75 17                	jne    0x40a0b6
40a09f:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a0a2:	3b c7                	cmp    %edi,%eax
40a0a4:	73 10                	jae    0x40a0b6
40a0a6:	8b 0e                	mov    (%esi),%ecx
40a0a8:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40a0ab:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a0ae:	8b 55 f4             	mov    -0xc(%ebp),%edx
40a0b1:	e9 bf fc ff ff       	jmp    0x409d75
40a0b6:	68 24 44 40 00       	push   $0x404424
40a0bb:	ff 76 fc             	push   -0x4(%esi)
40a0be:	ff 15 28 f1 40 00    	call   *0x40f128
40a0c4:	59                   	pop    %ecx
40a0c5:	59                   	pop    %ecx
40a0c6:	85 c0                	test   %eax,%eax
40a0c8:	75 29                	jne    0x40a0f3
40a0ca:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a0cd:	3b c7                	cmp    %edi,%eax
40a0cf:	73 22                	jae    0x40a0f3
40a0d1:	8b 0e                	mov    (%esi),%ecx
40a0d3:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40a0d6:	eb d3                	jmp    0x40a0ab
40a0d8:	80 3d c4 eb 40 00 01 	cmpb   $0x1,0x40ebc4
40a0df:	75 12                	jne    0x40a0f3
40a0e1:	c7 45 c8 b4 11 40 00 	movl   $0x4011b4,-0x38(%ebp)
40a0e8:	6a 69                	push   $0x69
40a0ea:	8d 55 c8             	lea    -0x38(%ebp),%edx
40a0ed:	59                   	pop    %ecx
40a0ee:	e8 bc 04 00 00       	call   0x40a5af
40a0f3:	e8 f1 fa ff ff       	call   0x409be9
40a0f8:	e9 c6 00 00 00       	jmp    0x40a1c3
40a0fd:	80 3d c4 eb 40 00 01 	cmpb   $0x1,0x40ebc4
40a104:	75 ed                	jne    0x40a0f3
40a106:	c7 45 c8 dc 42 40 00 	movl   $0x4042dc,-0x38(%ebp)
40a10d:	eb d9                	jmp    0x40a0e8
40a10f:	80 3d c4 eb 40 00 01 	cmpb   $0x1,0x40ebc4
40a116:	75 db                	jne    0x40a0f3
40a118:	c7 45 c8 48 43 40 00 	movl   $0x404348,-0x38(%ebp)
40a11f:	eb c7                	jmp    0x40a0e8
40a121:	ff 15 40 f0 40 00    	call   *0x40f040
40a127:	b9 d8 43 40 00       	mov    $0x4043d8,%ecx
40a12c:	8b d0                	mov    %eax,%edx
40a12e:	e8 4d e8 ff ff       	call   0x408980
40a133:	e9 8b 00 00 00       	jmp    0x40a1c3
40a138:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40a13b:	85 c0                	test   %eax,%eax
40a13d:	74 4b                	je     0x40a18a
40a13f:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a142:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40a145:	50                   	push   %eax
40a146:	6a 03                	push   $0x3
40a148:	57                   	push   %edi
40a149:	ff 15 68 00 41 00    	call   *0x410068
40a14f:	85 c0                	test   %eax,%eax
40a151:	75 37                	jne    0x40a18a
40a153:	ff 15 40 f0 40 00    	call   *0x40f040
40a159:	8b f0                	mov    %eax,%esi
40a15b:	85 f6                	test   %esi,%esi
40a15d:	74 2b                	je     0x40a18a
40a15f:	8b d6                	mov    %esi,%edx
40a161:	b9 b8 44 40 00       	mov    $0x4044b8,%ecx
40a166:	e8 15 e8 ff ff       	call   0x408980
40a16b:	57                   	push   %edi
40a16c:	ff 15 40 00 41 00    	call   *0x410040
40a172:	85 c0                	test   %eax,%eax
40a174:	75 44                	jne    0x40a1ba
40a176:	ff 15 40 f0 40 00    	call   *0x40f040
40a17c:	8b d0                	mov    %eax,%edx
40a17e:	b9 74 40 40 00       	mov    $0x404074,%ecx
40a183:	e8 f8 e7 ff ff       	call   0x408980
40a188:	eb 2e                	jmp    0x40a1b8
40a18a:	6a 64                	push   $0x64
40a18c:	8d 55 c8             	lea    -0x38(%ebp),%edx
40a18f:	c7 45 c8 8c 46 40 00 	movl   $0x40468c,-0x38(%ebp)
40a196:	59                   	pop    %ecx
40a197:	e8 13 04 00 00       	call   0x40a5af
40a19c:	83 fb ff             	cmp    $0xffffffff,%ebx
40a19f:	74 15                	je     0x40a1b6
40a1a1:	f7 c3 00 01 00 00    	test   $0x100,%ebx
40a1a7:	74 0d                	je     0x40a1b6
40a1a9:	8d 55 d0             	lea    -0x30(%ebp),%edx
40a1ac:	b9 84 00 00 00       	mov    $0x84,%ecx
40a1b1:	e8 f9 03 00 00       	call   0x40a5af
40a1b6:	33 c0                	xor    %eax,%eax
40a1b8:	8b f0                	mov    %eax,%esi
40a1ba:	57                   	push   %edi
40a1bb:	ff 15 48 00 41 00    	call   *0x410048
40a1c1:	8b c6                	mov    %esi,%eax
40a1c3:	5f                   	pop    %edi
40a1c4:	5e                   	pop    %esi
40a1c5:	5b                   	pop    %ebx
40a1c6:	c9                   	leave
40a1c7:	c2 08 00             	ret    $0x8
40a1ca:	8b ff                	mov    %edi,%edi
40a1cc:	55                   	push   %ebp
40a1cd:	8b ec                	mov    %esp,%ebp
40a1cf:	83 ec 10             	sub    $0x10,%esp
40a1d2:	56                   	push   %esi
40a1d3:	6a 08                	push   $0x8
40a1d5:	52                   	push   %edx
40a1d6:	33 f6                	xor    %esi,%esi
40a1d8:	51                   	push   %ecx
40a1d9:	89 75 f4             	mov    %esi,-0xc(%ebp)
40a1dc:	ff 15 3c 00 41 00    	call   *0x41003c
40a1e2:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a1e5:	85 c0                	test   %eax,%eax
40a1e7:	75 17                	jne    0x40a200
40a1e9:	ff 15 40 f0 40 00    	call   *0x40f040
40a1ef:	8b d0                	mov    %eax,%edx
40a1f1:	b9 88 14 40 00       	mov    $0x401488,%ecx
40a1f6:	e8 85 e7 ff ff       	call   0x408980
40a1fb:	e9 ea 00 00 00       	jmp    0x40a2ea
40a200:	53                   	push   %ebx
40a201:	8b 5d 08             	mov    0x8(%ebp),%ebx
40a204:	57                   	push   %edi
40a205:	85 db                	test   %ebx,%ebx
40a207:	74 31                	je     0x40a23a
40a209:	53                   	push   %ebx
40a20a:	6a 00                	push   $0x0
40a20c:	ff 15 64 f0 40 00    	call   *0x40f064
40a212:	8b f8                	mov    %eax,%edi
40a214:	85 ff                	test   %edi,%edi
40a216:	75 26                	jne    0x40a23e
40a218:	ff 15 40 f0 40 00    	call   *0x40f040
40a21e:	8b d0                	mov    %eax,%edx
40a220:	b9 a8 46 40 00       	mov    $0x4046a8,%ecx
40a225:	e8 56 e7 ff ff       	call   0x408980
40a22a:	ff 75 f8             	push   -0x8(%ebp)
40a22d:	8b f0                	mov    %eax,%esi
40a22f:	ff 15 48 00 41 00    	call   *0x410048
40a235:	e9 ac 00 00 00       	jmp    0x40a2e6
40a23a:	33 ff                	xor    %edi,%edi
40a23c:	eb 03                	jmp    0x40a241
40a23e:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a241:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40a244:	51                   	push   %ecx
40a245:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40a248:	51                   	push   %ecx
40a249:	53                   	push   %ebx
40a24a:	57                   	push   %edi
40a24b:	6a 03                	push   $0x3
40a24d:	50                   	push   %eax
40a24e:	ff 15 1c 00 41 00    	call   *0x41001c
40a254:	85 c0                	test   %eax,%eax
40a256:	75 25                	jne    0x40a27d
40a258:	ff 15 40 f0 40 00    	call   *0x40f040
40a25e:	8b f0                	mov    %eax,%esi
40a260:	89 75 f4             	mov    %esi,-0xc(%ebp)
40a263:	85 f6                	test   %esi,%esi
40a265:	74 16                	je     0x40a27d
40a267:	81 fe ea 00 00 00    	cmp    $0xea,%esi
40a26d:	74 0e                	je     0x40a27d
40a26f:	8b d6                	mov    %esi,%edx
40a271:	b9 d8 46 40 00       	mov    $0x4046d8,%ecx
40a276:	e8 05 e7 ff ff       	call   0x408980
40a27b:	eb 5e                	jmp    0x40a2db
40a27d:	6a 00                	push   $0x0
40a27f:	ff 75 fc             	push   -0x4(%ebp)
40a282:	b9 d8 46 40 00       	mov    $0x4046d8,%ecx
40a287:	6a 2a                	push   $0x2a
40a289:	5a                   	pop    %edx
40a28a:	e8 84 e7 ff ff       	call   0x408a13
40a28f:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40a293:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40a297:	76 28                	jbe    0x40a2c1
40a299:	8b 75 f8             	mov    -0x8(%ebp),%esi
40a29c:	8d 5f 04             	lea    0x4(%edi),%ebx
40a29f:	8b 13                	mov    (%ebx),%edx
40a2a1:	8d 43 04             	lea    0x4(%ebx),%eax
40a2a4:	8b 4b fc             	mov    -0x4(%ebx),%ecx
40a2a7:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a2aa:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a2ad:	6a 01                	push   $0x1
40a2af:	50                   	push   %eax
40a2b0:	e8 db b7 ff ff       	call   0x405a90
40a2b5:	46                   	inc    %esi
40a2b6:	8d 5b 24             	lea    0x24(%ebx),%ebx
40a2b9:	3b 75 fc             	cmp    -0x4(%ebp),%esi
40a2bc:	72 e1                	jb     0x40a29f
40a2be:	8b 75 f4             	mov    -0xc(%ebp),%esi
40a2c1:	81 fe ea 00 00 00    	cmp    $0xea,%esi
40a2c7:	75 12                	jne    0x40a2db
40a2c9:	6a 00                	push   $0x0
40a2cb:	ff 75 f0             	push   -0x10(%ebp)
40a2ce:	b9 d8 46 40 00       	mov    $0x4046d8,%ecx
40a2d3:	6a 68                	push   $0x68
40a2d5:	5a                   	pop    %edx
40a2d6:	e8 38 e7 ff ff       	call   0x408a13
40a2db:	85 ff                	test   %edi,%edi
40a2dd:	74 07                	je     0x40a2e6
40a2df:	57                   	push   %edi
40a2e0:	ff 15 68 f0 40 00    	call   *0x40f068
40a2e6:	5f                   	pop    %edi
40a2e7:	8b c6                	mov    %esi,%eax
40a2e9:	5b                   	pop    %ebx
40a2ea:	5e                   	pop    %esi
40a2eb:	c9                   	leave
40a2ec:	c2 04 00             	ret    $0x4
40a2ef:	8b ff                	mov    %edi,%edi
40a2f1:	55                   	push   %ebp
40a2f2:	8b ec                	mov    %esp,%ebp
40a2f4:	51                   	push   %ecx
40a2f5:	56                   	push   %esi
40a2f6:	8b 35 c0 eb 40 00    	mov    0x40ebc0,%esi
40a2fc:	56                   	push   %esi
40a2fd:	ff 15 50 f0 40 00    	call   *0x40f050
40a303:	25 ff 7f ff ff       	and    $0xffff7fff,%eax
40a308:	83 f8 02             	cmp    $0x2,%eax
40a30b:	75 14                	jne    0x40a321
40a30d:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a310:	50                   	push   %eax
40a311:	56                   	push   %esi
40a312:	ff 15 24 f0 40 00    	call   *0x40f024
40a318:	85 c0                	test   %eax,%eax
40a31a:	74 05                	je     0x40a321
40a31c:	33 c0                	xor    %eax,%eax
40a31e:	40                   	inc    %eax
40a31f:	eb 02                	jmp    0x40a323
40a321:	33 c0                	xor    %eax,%eax
40a323:	5e                   	pop    %esi
40a324:	c9                   	leave
40a325:	c3                   	ret
40a326:	8b ff                	mov    %edi,%edi
40a328:	55                   	push   %ebp
40a329:	8b ec                	mov    %esp,%ebp
40a32b:	83 ec 38             	sub    $0x38,%esp
40a32e:	8b c2                	mov    %edx,%eax
40a330:	c7 45 e8 02 00 00 00 	movl   $0x2,-0x18(%ebp)
40a337:	8b 55 08             	mov    0x8(%ebp),%edx
40a33a:	53                   	push   %ebx
40a33b:	56                   	push   %esi
40a33c:	57                   	push   %edi
40a33d:	89 02                	mov    %eax,(%edx)
40a33f:	8b d9                	mov    %ecx,%ebx
40a341:	8b 55 0c             	mov    0xc(%ebp),%edx
40a344:	33 f6                	xor    %esi,%esi
40a346:	33 c9                	xor    %ecx,%ecx
40a348:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a34b:	6a 02                	push   $0x2
40a34d:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40a350:	8b f9                	mov    %ecx,%edi
40a352:	89 32                	mov    %esi,(%edx)
40a354:	5e                   	pop    %esi
40a355:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40a358:	88 4d ff             	mov    %cl,-0x1(%ebp)
40a35b:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a35e:	39 33                	cmp    %esi,(%ebx)
40a360:	0f 86 42 02 00 00    	jbe    0x40a5a8
40a366:	8b 04 b0             	mov    (%eax,%esi,4),%eax
40a369:	8b d0                	mov    %eax,%edx
40a36b:	89 45 e0             	mov    %eax,-0x20(%ebp)
40a36e:	8d 42 02             	lea    0x2(%edx),%eax
40a371:	89 45 d8             	mov    %eax,-0x28(%ebp)
40a374:	66 8b 02             	mov    (%edx),%ax
40a377:	83 c2 02             	add    $0x2,%edx
40a37a:	66 3b 45 e4          	cmp    -0x1c(%ebp),%ax