41a0e1:	56                   	push   %esi
41a0e2:	57                   	push   %edi
41a0e3:	55                   	push   %ebp
41a0e4:	8b e9                	mov    %ecx,%ebp
41a0e6:	8b fa                	mov    %edx,%edi
41a0e8:	8b df                	mov    %edi,%ebx
41a0ea:	85 db                	test   %ebx,%ebx
41a0ec:	74 05                	je     0x41a0f3
41a0ee:	83 eb 04             	sub    $0x4,%ebx
41a0f1:	8b 1b                	mov    (%ebx),%ebx
41a0f3:	8b f5                	mov    %ebp,%esi
41a0f5:	85 f6                	test   %esi,%esi
41a0f7:	74 05                	je     0x41a0fe
41a0f9:	83 ee 04             	sub    $0x4,%esi
41a0fc:	8b 36                	mov    (%esi),%esi
41a0fe:	56                   	push   %esi
41a0ff:	8b c5                	mov    %ebp,%eax
41a101:	e8 06 ab fe ff       	call   0x404c0c
41a106:	50                   	push   %eax
41a107:	53                   	push   %ebx
41a108:	8b c7                	mov    %edi,%eax
41a10a:	e8 fd aa fe ff       	call   0x404c0c
41a10f:	50                   	push   %eax
41a110:	6a 01                	push   $0x1
41a112:	68 00 04 00 00       	push   $0x400
41a117:	e8 6c c8 fe ff       	call   0x406988
41a11c:	83 e8 02             	sub    $0x2,%eax
41a11f:	5d                   	pop    %ebp
41a120:	5f                   	pop    %edi
41a121:	5e                   	pop    %esi
41a122:	5b                   	pop    %ebx
41a123:	c3                   	ret
41a124:	53                   	push   %ebx
41a125:	8b d8                	mov    %eax,%ebx
41a127:	f6 43 04 04          	testb  $0x4,0x4(%ebx)
41a12b:	75 09                	jne    0x41a136
41a12d:	b2 3d                	mov    $0x3d,%dl
41a12f:	8b c3                	mov    %ebx,%eax
41a131:	e8 06 00 00 00       	call   0x41a13c
41a136:	0f b6 43 0d          	movzbl 0xd(%ebx),%eax
41a13a:	5b                   	pop    %ebx
41a13b:	c3                   	ret
41a13c:	53                   	push   %ebx
41a13d:	56                   	push   %esi
41a13e:	8b da                	mov    %edx,%ebx
41a140:	8b f0                	mov    %eax,%esi
41a142:	3a 5e 0d             	cmp    0xd(%esi),%bl
41a145:	75 06                	jne    0x41a14d
41a147:	f6 46 04 04          	testb  $0x4,0x4(%esi)
41a14b:	75 07                	jne    0x41a154
41a14d:	80 4e 04 04          	orb    $0x4,0x4(%esi)
41a151:	88 5e 0d             	mov    %bl,0xd(%esi)
41a154:	5e                   	pop    %esi
41a155:	5b                   	pop    %ebx
41a156:	c3                   	ret
41a157:	90                   	nop
41a158:	53                   	push   %ebx
41a159:	56                   	push   %esi
41a15a:	e8 89 9b fe ff       	call   0x403ce8
41a15f:	8b da                	mov    %edx,%ebx
41a161:	8b f0                	mov    %eax,%esi
41a163:	33 c0                	xor    %eax,%eax
41a165:	89 46 28             	mov    %eax,0x28(%esi)
41a168:	89 46 2c             	mov    %eax,0x2c(%esi)
41a16b:	33 c0                	xor    %eax,%eax
41a16d:	89 46 30             	mov    %eax,0x30(%esi)
41a170:	89 46 34             	mov    %eax,0x34(%esi)
41a173:	8b d3                	mov    %ebx,%edx
41a175:	80 e2 fc             	and    $0xfc,%dl
41a178:	8b c6                	mov    %esi,%eax
41a17a:	e8 c5 f0 ff ff       	call   0x419244
41a17f:	8b 46 1c             	mov    0x1c(%esi),%eax
41a182:	85 c0                	test   %eax,%eax
41a184:	74 10                	je     0x41a196
41a186:	8b c8                	mov    %eax,%ecx
41a188:	8b 46 18             	mov    0x18(%esi),%eax
41a18b:	8b 15 2c 62 41 00    	mov    0x41622c,%edx
41a191:	e8 6a b1 fe ff       	call   0x405300
41a196:	33 c0                	xor    %eax,%eax
41a198:	89 46 1c             	mov    %eax,0x1c(%esi)
41a19b:	33 d2                	xor    %edx,%edx
41a19d:	8b c6                	mov    %esi,%eax
41a19f:	8b 08                	mov    (%eax),%ecx
41a1a1:	ff 51 28             	call   *0x28(%ecx)
41a1a4:	84 db                	test   %bl,%bl
41a1a6:	7e 07                	jle    0x41a1af
41a1a8:	8b c6                	mov    %esi,%eax
41a1aa:	e8 e1 9a fe ff       	call   0x403c90
41a1af:	5e                   	pop    %esi
41a1b0:	5b                   	pop    %ebx
41a1b1:	c3                   	ret
41a1b2:	8b c0                	mov    %eax,%eax
41a1b4:	53                   	push   %ebx
41a1b5:	56                   	push   %esi
41a1b6:	8b f0                	mov    %eax,%esi
41a1b8:	33 c9                	xor    %ecx,%ecx
41a1ba:	8b c6                	mov    %esi,%eax
41a1bc:	8b 18                	mov    (%eax),%ebx
41a1be:	ff 53 3c             	call   *0x3c(%ebx)
41a1c1:	5e                   	pop    %esi
41a1c2:	5b                   	pop    %ebx
41a1c3:	c3                   	ret
41a1c4:	53                   	push   %ebx
41a1c5:	56                   	push   %esi
41a1c6:	57                   	push   %edi
41a1c7:	55                   	push   %ebp
41a1c8:	51                   	push   %ecx
41a1c9:	8b f9                	mov    %ecx,%edi
41a1cb:	8b f2                	mov    %edx,%esi
41a1cd:	8b d8                	mov    %eax,%ebx
41a1cf:	80 7b 24 00          	cmpb   $0x0,0x24(%ebx)
41a1d3:	75 08                	jne    0x41a1dd
41a1d5:	8b 43 1c             	mov    0x1c(%ebx),%eax
41a1d8:	89 04 24             	mov    %eax,(%esp)
41a1db:	eb 2f                	jmp    0x41a20c
41a1dd:	8b cc                	mov    %esp,%ecx
41a1df:	8b d6                	mov    %esi,%edx
41a1e1:	8b c3                	mov    %ebx,%eax
41a1e3:	8b 28                	mov    (%eax),%ebp
41a1e5:	ff 95 8c 00 00 00    	call   *0x8c(%ebp)
41a1eb:	84 c0                	test   %al,%al
41a1ed:	74 1d                	je     0x41a20c
41a1ef:	0f b6 43 25          	movzbl 0x25(%ebx),%eax
41a1f3:	2c 01                	sub    $0x1,%al
41a1f5:	72 26                	jb     0x41a21d
41a1f7:	fe c8                	dec    %al
41a1f9:	74 02                	je     0x41a1fd
41a1fb:	eb 0f                	jmp    0x41a20c
41a1fd:	8b 15 c4 74 4a 00    	mov    0x4a74c4,%edx
41a203:	33 c9                	xor    %ecx,%ecx
41a205:	8b c3                	mov    %ebx,%eax
41a207:	e8 d4 f3 ff ff       	call   0x4195e0
41a20c:	57                   	push   %edi
41a20d:	8b ce                	mov    %esi,%ecx
41a20f:	8b 54 24 04          	mov    0x4(%esp),%edx
41a213:	8b c3                	mov    %ebx,%eax
41a215:	8b 18                	mov    (%eax),%ebx
41a217:	ff 93 88 00 00 00    	call   *0x88(%ebx)
41a21d:	8b 04 24             	mov    (%esp),%eax
41a220:	5a                   	pop    %edx
41a221:	5d                   	pop    %ebp
41a222:	5f                   	pop    %edi
41a223:	5e                   	pop    %esi
41a224:	5b                   	pop    %ebx
41a225:	c3                   	ret
41a226:	8b c0                	mov    %eax,%eax
41a228:	53                   	push   %ebx
41a229:	83 78 10 00          	cmpl   $0x0,0x10(%eax)
41a22d:	75 11                	jne    0x41a240
41a22f:	66 83 78 2a 00       	cmpw   $0x0,0x2a(%eax)
41a234:	74 0a                	je     0x41a240
41a236:	8b d8                	mov    %eax,%ebx
41a238:	8b d0                	mov    %eax,%edx
41a23a:	8b 43 2c             	mov    0x2c(%ebx),%eax
41a23d:	ff 53 28             	call   *0x28(%ebx)
41a240:	5b                   	pop    %ebx
41a241:	c3                   	ret
41a242:	8b c0                	mov    %eax,%eax
41a244:	53                   	push   %ebx
41a245:	83 78 10 00          	cmpl   $0x0,0x10(%eax)
41a249:	75 11                	jne    0x41a25c
41a24b:	66 83 78 32 00       	cmpw   $0x0,0x32(%eax)
41a250:	74 0a                	je     0x41a25c
41a252:	8b d8                	mov    %eax,%ebx
41a254:	8b d0                	mov    %eax,%edx
41a256:	8b 43 34             	mov    0x34(%ebx),%eax
41a259:	ff 53 30             	call   *0x30(%ebx)
41a25c:	5b                   	pop    %ebx
41a25d:	c3                   	ret
41a25e:	8b c0                	mov    %eax,%eax
41a260:	53                   	push   %ebx
41a261:	8b d8                	mov    %eax,%ebx
41a263:	83 7b 1c 00          	cmpl   $0x0,0x1c(%ebx)
41a267:	74 33                	je     0x41a29c
41a269:	8b c3                	mov    %ebx,%eax
41a26b:	8b 10                	mov    (%eax),%edx
41a26d:	ff 92 84 00 00 00    	call   *0x84(%edx)
41a273:	8b 43 18             	mov    0x18(%ebx),%eax
41a276:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
41a279:	8b 15 2c 62 41 00    	mov    0x41622c,%edx
41a27f:	e8 7c b0 fe ff       	call   0x405300
41a284:	33 c0                	xor    %eax,%eax
41a286:	89 43 1c             	mov    %eax,0x1c(%ebx)
41a289:	33 d2                	xor    %edx,%edx
41a28b:	8b c3                	mov    %ebx,%eax
41a28d:	8b 08                	mov    (%eax),%ecx
41a28f:	ff 51 28             	call   *0x28(%ecx)
41a292:	8b c3                	mov    %ebx,%eax
41a294:	8b 10                	mov    (%eax),%edx
41a296:	ff 92 80 00 00 00    	call   *0x80(%edx)
41a29c:	5b                   	pop    %ebx
41a29d:	c3                   	ret
41a29e:	8b c0                	mov    %eax,%eax
41a2a0:	53                   	push   %ebx
41a2a1:	56                   	push   %esi
41a2a2:	8b f2                	mov    %edx,%esi
41a2a4:	8b d8                	mov    %eax,%ebx
41a2a6:	85 f6                	test   %esi,%esi
41a2a8:	7c 05                	jl     0x41a2af
41a2aa:	3b 73 1c             	cmp    0x1c(%ebx),%esi
41a2ad:	7c 0f                	jl     0x41a2be
41a2af:	8b 15 3c 77 4a 00    	mov    0x4a773c,%edx
41a2b5:	8b ce                	mov    %esi,%ecx
41a2b7:	8b c3                	mov    %ebx,%eax
41a2b9:	e8 22 f3 ff ff       	call   0x4195e0
41a2be:	8b c3                	mov    %ebx,%eax
41a2c0:	8b 10                	mov    (%eax),%edx
41a2c2:	ff 92 84 00 00 00    	call   *0x84(%edx)
41a2c8:	8b 43 18             	mov    0x18(%ebx),%eax
41a2cb:	8d 04 f0             	lea    (%eax,%esi,8),%eax
41a2ce:	8b 15 2c 62 41 00    	mov    0x41622c,%edx
41a2d4:	e8 13 b1 fe ff       	call   0x4053ec
41a2d9:	ff 4b 1c             	decl   0x1c(%ebx)
41a2dc:	8b 43 1c             	mov    0x1c(%ebx),%eax
41a2df:	3b f0                	cmp    %eax,%esi
41a2e1:	7d 1c                	jge    0x41a2ff
41a2e3:	2b c6                	sub    %esi,%eax
41a2e5:	8b c8                	mov    %eax,%ecx
41a2e7:	03 c9                	add    %ecx,%ecx
41a2e9:	03 c9                	add    %ecx,%ecx
41a2eb:	03 c9                	add    %ecx,%ecx
41a2ed:	8b 43 18             	mov    0x18(%ebx),%eax
41a2f0:	8d 14 f0             	lea    (%eax,%esi,8),%edx
41a2f3:	8b 43 18             	mov    0x18(%ebx),%eax
41a2f6:	8d 44 f0 08          	lea    0x8(%eax,%esi,8),%eax
41a2fa:	e8 ed 8b fe ff       	call   0x402eec
41a2ff:	8b c3                	mov    %ebx,%eax
41a301:	8b 10                	mov    (%eax),%edx
41a303:	ff 92 80 00 00 00    	call   *0x80(%edx)
41a309:	5e                   	pop    %esi
41a30a:	5b                   	pop    %ebx
41a30b:	c3                   	ret
41a30c:	53                   	push   %ebx
41a30d:	56                   	push   %esi
41a30e:	57                   	push   %edi
41a30f:	8b f9                	mov    %ecx,%edi
41a311:	8b f2                	mov    %edx,%esi
41a313:	8b d8                	mov    %eax,%ebx
41a315:	85 f6                	test   %esi,%esi
41a317:	7c 05                	jl     0x41a31e
41a319:	3b 73 1c             	cmp    0x1c(%ebx),%esi
41a31c:	7c 0f                	jl     0x41a32d
41a31e:	8b 15 3c 77 4a 00    	mov    0x4a773c,%edx
41a324:	8b ce                	mov    %esi,%ecx
41a326:	8b c3                	mov    %ebx,%eax
41a328:	e8 b3 f2 ff ff       	call   0x4195e0
41a32d:	85 ff                	test   %edi,%edi
41a32f:	7c 05                	jl     0x41a336
41a331:	3b 7b 1c             	cmp    0x1c(%ebx),%edi
41a334:	7c 0f                	jl     0x41a345
41a336:	8b 15 3c 77 4a 00    	mov    0x4a773c,%edx
41a33c:	8b cf                	mov    %edi,%ecx
41a33e:	8b c3                	mov    %ebx,%eax
41a340:	e8 9b f2 ff ff       	call   0x4195e0
41a345:	8b c3                	mov    %ebx,%eax
41a347:	8b 10                	mov    (%eax),%edx
41a349:	ff 92 84 00 00 00    	call   *0x84(%edx)
41a34f:	8b cf                	mov    %edi,%ecx
41a351:	8b d6                	mov    %esi,%edx
41a353:	8b c3                	mov    %ebx,%eax
41a355:	e8 0e 00 00 00       	call   0x41a368
41a35a:	8b c3                	mov    %ebx,%eax
41a35c:	8b 10                	mov    (%eax),%edx
41a35e:	ff 92 80 00 00 00    	call   *0x80(%edx)
41a364:	5f                   	pop    %edi
41a365:	5e                   	pop    %esi
41a366:	5b                   	pop    %ebx
41a367:	c3                   	ret
41a368:	53                   	push   %ebx
41a369:	8b 58 18             	mov    0x18(%eax),%ebx
41a36c:	8d 14 d3             	lea    (%ebx,%edx,8),%edx
41a36f:	8b 40 18             	mov    0x18(%eax),%eax
41a372:	8d 04 c8             	lea    (%eax,%ecx,8),%eax
41a375:	8b 0a                	mov    (%edx),%ecx
41a377:	8b 18                	mov    (%eax),%ebx
41a379:	89 1a                	mov    %ebx,(%edx)
41a37b:	89 08                	mov    %ecx,(%eax)
41a37d:	8b 4a 04             	mov    0x4(%edx),%ecx
41a380:	8b 58 04             	mov    0x4(%eax),%ebx
41a383:	89 5a 04             	mov    %ebx,0x4(%edx)
41a386:	89 48 04             	mov    %ecx,0x4(%eax)
41a389:	5b                   	pop    %ebx
41a38a:	c3                   	ret
41a38b:	90                   	nop
41a38c:	53                   	push   %ebx
41a38d:	56                   	push   %esi
41a38e:	57                   	push   %edi
41a38f:	55                   	push   %ebp
41a390:	83 c4 ec             	add    $0xffffffec,%esp
41a393:	89 4c 24 04          	mov    %ecx,0x4(%esp)
41a397:	89 14 24             	mov    %edx,(%esp)
41a39a:	8b f8                	mov    %eax,%edi
41a39c:	c6 44 24 08 00       	movb   $0x0,0x8(%esp)
41a3a1:	33 f6                	xor    %esi,%esi
41a3a3:	8b 47 1c             	mov    0x1c(%edi),%eax
41a3a6:	48                   	dec    %eax
41a3a7:	89 44 24 0c          	mov    %eax,0xc(%esp)
41a3ab:	3b 74 24 0c          	cmp    0xc(%esp),%esi
41a3af:	7f 49                	jg     0x41a3fa
41a3b1:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
41a3b5:	03 de                	add    %esi,%ebx
41a3b7:	d1 eb                	shr    $1,%ebx
41a3b9:	8b 47 18             	mov    0x18(%edi),%eax
41a3bc:	8b 14 d8             	mov    (%eax,%ebx,8),%edx
41a3bf:	8b 0c 24             	mov    (%esp),%ecx
41a3c2:	8b c7                	mov    %edi,%eax
41a3c4:	8b 28                	mov    (%eax),%ebp
41a3c6:	ff 55 34             	call   *0x34(%ebp)
41a3c9:	89 44 24 10          	mov    %eax,0x10(%esp)
41a3cd:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
41a3d2:	7d 05                	jge    0x41a3d9
41a3d4:	8d 73 01             	lea    0x1(%ebx),%esi
41a3d7:	eb 1b                	jmp    0x41a3f4
41a3d9:	8b c3                	mov    %ebx,%eax
41a3db:	48                   	dec    %eax
41a3dc:	89 44 24 0c          	mov    %eax,0xc(%esp)
41a3e0:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
41a3e5:	75 0d                	jne    0x41a3f4
41a3e7:	c6 44 24 08 01       	movb   $0x1,0x8(%esp)
41a3ec:	80 7f 25 01          	cmpb   $0x1,0x25(%edi)
41a3f0:	74 02                	je     0x41a3f4
41a3f2:	8b f3                	mov    %ebx,%esi
41a3f4:	3b 74 24 0c          	cmp    0xc(%esp),%esi
41a3f8:	7e b7                	jle    0x41a3b1
41a3fa:	8b 44 24 04          	mov    0x4(%esp),%eax
41a3fe:	89 30                	mov    %esi,(%eax)
41a400:	0f b6 44 24 08       	movzbl 0x8(%esp),%eax
41a405:	83 c4 14             	add    $0x14,%esp
41a408:	5d                   	pop    %ebp
41a409:	5f                   	pop    %edi
41a40a:	5e                   	pop    %esi
41a40b:	5b                   	pop    %ebx
41a40c:	c3                   	ret
41a40d:	8d 40 00             	lea    0x0(%eax),%eax
41a410:	53                   	push   %ebx
41a411:	56                   	push   %esi
41a412:	57                   	push   %edi
41a413:	8b f9                	mov    %ecx,%edi
41a415:	8b f2                	mov    %edx,%esi
41a417:	8b d8                	mov    %eax,%ebx
41a419:	85 f6                	test   %esi,%esi
41a41b:	7c 05                	jl     0x41a422
41a41d:	3b 73 1c             	cmp    0x1c(%ebx),%esi
41a420:	7c 0f                	jl     0x41a431
41a422:	8b 15 3c 77 4a 00    	mov    0x4a773c,%edx
41a428:	8b ce                	mov    %esi,%ecx
41a42a:	8b c3                	mov    %ebx,%eax
41a42c:	e8 af f1 ff ff       	call   0x4195e0
41a431:	8b c7                	mov    %edi,%eax
41a433:	8b 53 18             	mov    0x18(%ebx),%edx