40721c:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40721f:	8b f0                	mov    %eax,%esi
407221:	8b 45 f8             	mov    -0x8(%ebp),%eax
407224:	89 75 f0             	mov    %esi,-0x10(%ebp)
407227:	3b 43 08             	cmp    0x8(%ebx),%eax
40722a:	0f 92 c1             	setb   %cl
40722d:	e8 f9 e5 ff ff       	call   0x40582b
407232:	8b 43 08             	mov    0x8(%ebx),%eax
407235:	8b 4d ec             	mov    -0x14(%ebp),%ecx
407238:	3b c8                	cmp    %eax,%ecx
40723a:	77 1d                	ja     0x407259
40723c:	6b d1 0c             	imul   $0xc,%ecx,%edx
40723f:	8b 33                	mov    (%ebx),%esi
407241:	03 f2                	add    %edx,%esi
407243:	41                   	inc    %ecx
407244:	83 c2 0c             	add    $0xc,%edx
407247:	8d 7e f4             	lea    -0xc(%esi),%edi
40724a:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40724b:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40724c:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40724d:	8b 43 08             	mov    0x8(%ebx),%eax
407250:	3b c8                	cmp    %eax,%ecx
407252:	76 eb                	jbe    0x40723f
407254:	8b 75 f0             	mov    -0x10(%ebp),%esi
407257:	33 ff                	xor    %edi,%edi
407259:	48                   	dec    %eax
40725a:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40725e:	89 43 08             	mov    %eax,0x8(%ebx)
407261:	0f 84 58 ff ff ff    	je     0x4071bf
407267:	6a 03                	push   $0x3
407269:	8d 45 e8             	lea    -0x18(%ebp),%eax
40726c:	89 7d e8             	mov    %edi,-0x18(%ebp)
40726f:	50                   	push   %eax
407270:	57                   	push   %edi
407271:	57                   	push   %edi
407272:	57                   	push   %edi
407273:	57                   	push   %edi
407274:	51                   	push   %ecx
407275:	8b c4                	mov    %esp,%eax
407277:	89 7d ec             	mov    %edi,-0x14(%ebp)
40727a:	ff 75 0c             	push   0xc(%ebp)
40727d:	8d 4d b4             	lea    -0x4c(%ebp),%ecx
407280:	89 38                	mov    %edi,(%eax)
407282:	e8 c3 ca ff ff       	call   0x403d4a
407287:	8b 4d 08             	mov    0x8(%ebp),%ecx
40728a:	50                   	push   %eax
40728b:	e8 c3 d8 ff ff       	call   0x404b53
407290:	8d 4d b4             	lea    -0x4c(%ebp),%ecx
407293:	e8 18 ca ff ff       	call   0x403cb0
407298:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40729b:	e8 c6 bb ff ff       	call   0x402e66
4072a0:	e9 1a ff ff ff       	jmp    0x4071bf
4072a5:	55                   	push   %ebp
4072a6:	8b ec                	mov    %esp,%ebp
4072a8:	83 ec 14             	sub    $0x14,%esp
4072ab:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4072af:	53                   	push   %ebx
4072b0:	56                   	push   %esi
4072b1:	57                   	push   %edi
4072b2:	8b d9                	mov    %ecx,%ebx
4072b4:	6a 14                	push   $0x14
4072b6:	59                   	pop    %ecx
4072b7:	e8 ee e6 ff ff       	call   0x4059aa
4072bc:	8b 75 0c             	mov    0xc(%ebp),%esi
4072bf:	8b f8                	mov    %eax,%edi
4072c1:	8b 56 04             	mov    0x4(%esi),%edx
4072c4:	8d 4e 08             	lea    0x8(%esi),%ecx
4072c7:	51                   	push   %ecx
4072c8:	8d 4f 10             	lea    0x10(%edi),%ecx
4072cb:	89 57 0c             	mov    %edx,0xc(%edi)
4072ce:	e8 91 bf ff ff       	call   0x403264
4072d3:	8b 45 08             	mov    0x8(%ebp),%eax
4072d6:	8d 4b 10             	lea    0x10(%ebx),%ecx
4072d9:	89 47 04             	mov    %eax,0x4(%edi)
4072dc:	89 1f                	mov    %ebx,(%edi)
4072de:	8b 46 04             	mov    0x4(%esi),%eax
4072e1:	89 45 f0             	mov    %eax,-0x10(%ebp)
4072e4:	89 7d f4             	mov    %edi,-0xc(%ebp)
4072e7:	e8 21 6f 00 00       	call   0x40e20d
4072ec:	8d 45 fc             	lea    -0x4(%ebp),%eax
4072ef:	50                   	push   %eax
4072f0:	33 c0                	xor    %eax,%eax
4072f2:	50                   	push   %eax
4072f3:	57                   	push   %edi
4072f4:	68 43 6f 40 00       	push   $0x406f43
4072f9:	50                   	push   %eax
4072fa:	50                   	push   %eax
4072fb:	ff 15 8c 20 41 00    	call   *0x41208c
407301:	83 ec 0c             	sub    $0xc,%esp
407304:	89 45 ec             	mov    %eax,-0x14(%ebp)
407307:	8b fc                	mov    %esp,%edi
407309:	8d 75 ec             	lea    -0x14(%ebp),%esi
40730c:	8b cb                	mov    %ebx,%ecx
40730e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40730f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
407310:	a5                   	movsl  %ds:(%esi),%es:(%edi)
407311:	e8 c9 aa ff ff       	call   0x401ddf
407316:	ff 73 10             	push   0x10(%ebx)
407319:	ff 15 50 21 41 00    	call   *0x412150
40731f:	5f                   	pop    %edi
407320:	5e                   	pop    %esi
407321:	5b                   	pop    %ebx
407322:	c9                   	leave
407323:	c2 08 00             	ret    $0x8
407326:	53                   	push   %ebx
407327:	56                   	push   %esi
407328:	57                   	push   %edi
407329:	8b f1                	mov    %ecx,%esi
40732b:	33 ff                	xor    %edi,%edi
40732d:	6a 05                	push   $0x5
40732f:	5b                   	pop    %ebx
407330:	6a 40                	push   $0x40
407332:	59                   	pop    %ecx
407333:	89 5e 0c             	mov    %ebx,0xc(%esi)
407336:	89 5e 04             	mov    %ebx,0x4(%esi)
407339:	89 7e 08             	mov    %edi,0x8(%esi)
40733c:	e8 9a e7 ff ff       	call   0x405adb
407341:	85 c0                	test   %eax,%eax
407343:	74 05                	je     0x40734a
407345:	89 18                	mov    %ebx,(%eax)
407347:	8d 78 04             	lea    0x4(%eax),%edi
40734a:	51                   	push   %ecx
40734b:	8d 4e 10             	lea    0x10(%esi),%ecx
40734e:	89 3e                	mov    %edi,(%esi)
407350:	e8 e1 6e 00 00       	call   0x40e236
407355:	5f                   	pop    %edi
407356:	8b c6                	mov    %esi,%eax
407358:	5e                   	pop    %esi
407359:	5b                   	pop    %ebx
40735a:	c3                   	ret
40735b:	56                   	push   %esi
40735c:	8b f1                	mov    %ecx,%esi
40735e:	57                   	push   %edi
40735f:	83 3e 00             	cmpl   $0x0,(%esi)
407362:	74 08                	je     0x40736c
407364:	8d 4e 14             	lea    0x14(%esi),%ecx
407367:	e8 57 6d 00 00       	call   0x40e0c3
40736c:	8d 4e 14             	lea    0x14(%esi),%ecx
40736f:	e8 17 6b 00 00       	call   0x40de8b
407374:	8b 46 04             	mov    0x4(%esi),%eax
407377:	85 c0                	test   %eax,%eax
407379:	74 1b                	je     0x407396
40737b:	8b 78 fc             	mov    -0x4(%eax),%edi
40737e:	53                   	push   %ebx
40737f:	8d 1c f8             	lea    (%eax,%edi,8),%ebx
407382:	85 ff                	test   %edi,%edi
407384:	74 0f                	je     0x407395
407386:	83 eb 08             	sub    $0x8,%ebx
407389:	8b cb                	mov    %ebx,%ecx
40738b:	e8 d6 ba ff ff       	call   0x402e66
407390:	83 ef 01             	sub    $0x1,%edi
407393:	75 f1                	jne    0x407386
407395:	5b                   	pop    %ebx
407396:	83 66 04 00          	andl   $0x0,0x4(%esi)
40739a:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40739e:	83 66 08 00          	andl   $0x0,0x8(%esi)
4073a2:	5f                   	pop    %edi
4073a3:	5e                   	pop    %esi
4073a4:	c3                   	ret
4073a5:	83 39 00             	cmpl   $0x0,(%ecx)
4073a8:	74 08                	je     0x4073b2
4073aa:	83 c1 14             	add    $0x14,%ecx
4073ad:	e9 11 6d 00 00       	jmp    0x40e0c3
4073b2:	c3                   	ret
4073b3:	55                   	push   %ebp
4073b4:	8b ec                	mov    %esp,%ebp
4073b6:	56                   	push   %esi
4073b7:	8b f1                	mov    %ecx,%esi
4073b9:	83 3e 00             	cmpl   $0x0,(%esi)
4073bc:	74 57                	je     0x407415
4073be:	8b 4d 08             	mov    0x8(%ebp),%ecx
4073c1:	3b 4e 30             	cmp    0x30(%esi),%ecx
4073c4:	77 4f                	ja     0x407415
4073c6:	8b 46 2c             	mov    0x2c(%esi),%eax
4073c9:	0f af c1             	imul   %ecx,%eax
4073cc:	8d 4e 14             	lea    0x14(%esi),%ecx
4073cf:	53                   	push   %ebx
4073d0:	57                   	push   %edi
4073d1:	8b 7e 28             	mov    0x28(%esi),%edi
4073d4:	2b f8                	sub    %eax,%edi
4073d6:	50                   	push   %eax
4073d7:	3b 7e 2c             	cmp    0x2c(%esi),%edi
4073da:	73 26                	jae    0x407402
4073dc:	57                   	push   %edi
4073dd:	ff 75 0c             	push   0xc(%ebp)
4073e0:	e8 f6 69 00 00       	call   0x40dddb
4073e5:	8b 4e 2c             	mov    0x2c(%esi),%ecx
4073e8:	8b d8                	mov    %eax,%ebx
4073ea:	2b cf                	sub    %edi,%ecx
4073ec:	e8 ea e6 ff ff       	call   0x405adb
4073f1:	8b 56 2c             	mov    0x2c(%esi),%edx
4073f4:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4073f7:	2b d7                	sub    %edi,%edx
4073f9:	52                   	push   %edx
4073fa:	50                   	push   %eax
4073fb:	e8 c1 b9 ff ff       	call   0x402dc1
407400:	eb 0d                	jmp    0x40740f
407402:	ff 76 2c             	push   0x2c(%esi)
407405:	ff 75 0c             	push   0xc(%ebp)
407408:	e8 ce 69 00 00       	call   0x40dddb
40740d:	8b d8                	mov    %eax,%ebx
40740f:	5f                   	pop    %edi
407410:	8b c3                	mov    %ebx,%eax
407412:	5b                   	pop    %ebx
407413:	eb 02                	jmp    0x407417
407415:	33 c0                	xor    %eax,%eax
407417:	5e                   	pop    %esi
407418:	5d                   	pop    %ebp
407419:	c2 08 00             	ret    $0x8
40741c:	55                   	push   %ebp
40741d:	8b ec                	mov    %esp,%ebp
40741f:	53                   	push   %ebx
407420:	56                   	push   %esi
407421:	57                   	push   %edi
407422:	8b f9                	mov    %ecx,%edi
407424:	33 db                	xor    %ebx,%ebx
407426:	6a 05                	push   $0x5
407428:	5e                   	pop    %esi
407429:	6a 2c                	push   $0x2c
40742b:	59                   	pop    %ecx
40742c:	89 77 10             	mov    %esi,0x10(%edi)
40742f:	89 77 08             	mov    %esi,0x8(%edi)
407432:	89 5f 0c             	mov    %ebx,0xc(%edi)
407435:	e8 a1 e6 ff ff       	call   0x405adb
40743a:	85 c0                	test   %eax,%eax
40743c:	74 16                	je     0x407454
40743e:	8d 48 04             	lea    0x4(%eax),%ecx
407441:	89 30                	mov    %esi,(%eax)
407443:	8b c1                	mov    %ecx,%eax
407445:	89 18                	mov    %ebx,(%eax)
407447:	8d 40 08             	lea    0x8(%eax),%eax
40744a:	89 58 fc             	mov    %ebx,-0x4(%eax)
40744d:	83 ee 01             	sub    $0x1,%esi
407450:	75 f3                	jne    0x407445
407452:	eb 02                	jmp    0x407456
407454:	8b cb                	mov    %ebx,%ecx
407456:	89 4f 04             	mov    %ecx,0x4(%edi)
407459:	8d 4f 14             	lea    0x14(%edi),%ecx
40745c:	e8 0b 6a 00 00       	call   0x40de6c
407461:	b8 ff ff 00 00       	mov    $0xffff,%eax
407466:	8d 4f 18             	lea    0x18(%edi),%ecx
407469:	89 47 2c             	mov    %eax,0x2c(%edi)
40746c:	8d 45 08             	lea    0x8(%ebp),%eax
40746f:	50                   	push   %eax
407470:	e8 ef bd ff ff       	call   0x403264
407475:	51                   	push   %ecx
407476:	68 00 00 00 80       	push   $0x80000000
40747b:	8d 4f 14             	lea    0x14(%edi),%ecx
40747e:	e8 ad 6c 00 00       	call   0x40e130
407483:	85 c0                	test   %eax,%eax
407485:	74 1a                	je     0x4074a1
407487:	8b 47 28             	mov    0x28(%edi),%eax
40748a:	33 d2                	xor    %edx,%edx
40748c:	b9 ff ff 00 00       	mov    $0xffff,%ecx
407491:	f7 f1                	div    %ecx
407493:	89 47 30             	mov    %eax,0x30(%edi)
407496:	85 d2                	test   %edx,%edx
407498:	74 04                	je     0x40749e
40749a:	40                   	inc    %eax
40749b:	89 47 30             	mov    %eax,0x30(%edi)
40749e:	33 db                	xor    %ebx,%ebx
4074a0:	43                   	inc    %ebx
4074a1:	89 1f                	mov    %ebx,(%edi)
4074a3:	8b 4d 08             	mov    0x8(%ebp),%ecx
4074a6:	e8 82 e5 ff ff       	call   0x405a2d
4074ab:	8b c7                	mov    %edi,%eax
4074ad:	5f                   	pop    %edi
4074ae:	5e                   	pop    %esi
4074af:	5b                   	pop    %ebx
4074b0:	5d                   	pop    %ebp
4074b1:	c2 08 00             	ret    $0x8
4074b4:	55                   	push   %ebp
4074b5:	8b ec                	mov    %esp,%ebp
4074b7:	83 e4 f8             	and    $0xfffffff8,%esp
4074ba:	81 ec d4 00 00 00    	sub    $0xd4,%esp
4074c0:	53                   	push   %ebx
4074c1:	56                   	push   %esi
4074c2:	57                   	push   %edi
4074c3:	6a 00                	push   $0x0
4074c5:	ff 15 ac 21 41 00    	call   *0x4121ac
4074cb:	8b 0d 90 66 41 00    	mov    0x416690,%ecx
4074d1:	8d 7c 24 14          	lea    0x14(%esp),%edi
4074d5:	8b d8                	mov    %eax,%ebx
4074d7:	81 c1 10 02 00 00    	add    $0x210,%ecx
4074dd:	33 c0                	xor    %eax,%eax
4074df:	ab                   	stos   %eax,%es:(%edi)
4074e0:	68 00 08 00 00       	push   $0x800
4074e5:	ab                   	stos   %eax,%es:(%edi)
4074e6:	ab                   	stos   %eax,%es:(%edi)
4074e7:	ab                   	stos   %eax,%es:(%edi)
4074e8:	33 ff                	xor    %edi,%edi
4074ea:	57                   	push   %edi
4074eb:	51                   	push   %ecx
4074ec:	e8 61 9b ff ff       	call   0x401052
4074f1:	a1 90 66 41 00       	mov    0x416690,%eax
4074f6:	83 c4 0c             	add    $0xc,%esp
4074f9:	83 c0 10             	add    $0x10,%eax
4074fc:	68 08 02 00 00       	push   $0x208
407501:	57                   	push   %edi
407502:	50                   	push   %eax
407503:	e8 4a 9b ff ff       	call   0x401052
407508:	a1 90 66 41 00       	mov    0x416690,%eax
40750d:	83 c4 0c             	add    $0xc,%esp
407510:	83 c0 10             	add    $0x10,%eax
407513:	50                   	push   %eax
407514:	57                   	push   %edi
407515:	57                   	push   %edi
407516:	6a 1c                	push   $0x1c
407518:	57                   	push   %edi
407519:	ff 15 5c 22 41 00    	call   *0x41225c
40751f:	a1 90 66 41 00       	mov    0x416690,%eax
407524:	8b 35 04 22 41 00    	mov    0x412204,%esi
40752a:	83 c0 10             	add    $0x10,%eax
40752d:	68 0c 26 41 00       	push   $0x41260c
407532:	50                   	push   %eax
407533:	ff d6                	call   *%esi
407535:	8d 44 24 14          	lea    0x14(%esp),%eax
407539:	50                   	push   %eax
40753a:	ff 15 9c 20 41 00    	call   *0x41209c
407540:	0f b7 44 24 20       	movzwl 0x20(%esp),%eax
407545:	50                   	push   %eax
407546:	0f b7 44 24 22       	movzwl 0x22(%esp),%eax
40754b:	50                   	push   %eax
40754c:	0f b7 44 24 24       	movzwl 0x24(%esp),%eax
407551:	50                   	push   %eax
407552:	0f b7 44 24 20       	movzwl 0x20(%esp),%eax
407557:	50                   	push   %eax
407558:	0f b7 44 24 26       	movzwl 0x26(%esp),%eax
40755d:	50                   	push   %eax
40755e:	0f b7 44 24 2e       	movzwl 0x2e(%esp),%eax
407563:	50                   	push   %eax
407564:	8d 44 24 58          	lea    0x58(%esp),%eax
407568:	68 54 29 41 00       	push   $0x412954
40756d:	50                   	push   %eax
40756e:	ff 15 9c 22 41 00    	call   *0x41229c
407574:	83 c4 20             	add    $0x20,%esp
407577:	8d 44 24 40          	lea    0x40(%esp),%eax
40757b:	50                   	push   %eax
40757c:	a1 90 66 41 00       	mov    0x416690,%eax
407581:	83 c0 10             	add    $0x10,%eax
407584:	50                   	push   %eax
407585:	ff d6                	call   *%esi
407587:	8b 0d 90 66 41 00    	mov    0x416690,%ecx
40758d:	8d 41 10             	lea    0x10(%ecx),%eax
407590:	83 c1 0c             	add    $0xc,%ecx
407593:	50                   	push   %eax
407594:	e8 93 bb ff ff       	call   0x40312c
407599:	a1 90 66 41 00       	mov    0x416690,%eax
40759e:	57                   	push   %edi
40759f:	68 80 00 00 00       	push   $0x80