403383:	33 f6                	xor    %esi,%esi
403385:	3b 7e 0c             	cmp    0xc(%esi),%edi
403388:	73 05                	jae    0x40338f
40338a:	e8 bc 1e 00 00       	call   0x40524b
40338f:	8b 44 24 20          	mov    0x20(%esp),%eax
403393:	89 78 04             	mov    %edi,0x4(%eax)
403396:	5f                   	pop    %edi
403397:	5e                   	pop    %esi
403398:	89 28                	mov    %ebp,(%eax)
40339a:	5d                   	pop    %ebp
40339b:	5b                   	pop    %ebx
40339c:	83 c4 0c             	add    $0xc,%esp
40339f:	c2 10 00             	ret    $0x10
4033a2:	cc                   	int3
4033a3:	cc                   	int3
4033a4:	cc                   	int3
4033a5:	cc                   	int3
4033a6:	cc                   	int3
4033a7:	cc                   	int3
4033a8:	cc                   	int3
4033a9:	cc                   	int3
4033aa:	cc                   	int3
4033ab:	cc                   	int3
4033ac:	cc                   	int3
4033ad:	cc                   	int3
4033ae:	cc                   	int3
4033af:	cc                   	int3
4033b0:	83 ec 10             	sub    $0x10,%esp
4033b3:	85 c9                	test   %ecx,%ecx
4033b5:	77 12                	ja     0x4033c9
4033b7:	33 c9                	xor    %ecx,%ecx
4033b9:	8d 14 09             	lea    (%ecx,%ecx,1),%edx
4033bc:	52                   	push   %edx
4033bd:	e8 bb 24 00 00       	call   0x40587d
4033c2:	83 c4 04             	add    $0x4,%esp
4033c5:	83 c4 10             	add    $0x10,%esp
4033c8:	c3                   	ret
4033c9:	83 c8 ff             	or     $0xffffffff,%eax
4033cc:	33 d2                	xor    %edx,%edx
4033ce:	f7 f1                	div    %ecx
4033d0:	83 f8 02             	cmp    $0x2,%eax
4033d3:	73 e4                	jae    0x4033b9
4033d5:	8d 04 24             	lea    (%esp),%eax
4033d8:	50                   	push   %eax
4033d9:	8d 4c 24 08          	lea    0x8(%esp),%ecx
4033dd:	c7 44 24 04 00 00 00 	movl   $0x0,0x4(%esp)
4033e4:	00
4033e5:	e8 b8 1a 00 00       	call   0x404ea2
4033ea:	68 80 9c 42 00       	push   $0x429c80
4033ef:	8d 4c 24 08          	lea    0x8(%esp),%ecx
4033f3:	51                   	push   %ecx
4033f4:	c7 44 24 0c 08 a2 41 	movl   $0x41a208,0xc(%esp)
4033fb:	00
4033fc:	e8 b1 32 00 00       	call   0x4066b2
403401:	cc                   	int3
403402:	cc                   	int3
403403:	cc                   	int3
403404:	cc                   	int3
403405:	cc                   	int3
403406:	cc                   	int3
403407:	cc                   	int3
403408:	cc                   	int3
403409:	cc                   	int3
40340a:	cc                   	int3
40340b:	cc                   	int3
40340c:	cc                   	int3
40340d:	cc                   	int3
40340e:	cc                   	int3
40340f:	cc                   	int3
403410:	55                   	push   %ebp
403411:	8b 6c 24 08          	mov    0x8(%esp),%ebp
403415:	56                   	push   %esi
403416:	57                   	push   %edi
403417:	8b f1                	mov    %ecx,%esi
403419:	85 ed                	test   %ebp,%ebp
40341b:	74 46                	je     0x403463
40341d:	8b 56 18             	mov    0x18(%esi),%edx
403420:	8d 46 04             	lea    0x4(%esi),%eax
403423:	83 fa 10             	cmp    $0x10,%edx
403426:	72 04                	jb     0x40342c
403428:	8b 08                	mov    (%eax),%ecx
40342a:	eb 02                	jmp    0x40342e
40342c:	8b c8                	mov    %eax,%ecx
40342e:	3b e9                	cmp    %ecx,%ebp
403430:	72 31                	jb     0x403463
403432:	83 fa 10             	cmp    $0x10,%edx
403435:	72 04                	jb     0x40343b
403437:	8b 08                	mov    (%eax),%ecx
403439:	eb 02                	jmp    0x40343d
40343b:	8b c8                	mov    %eax,%ecx
40343d:	8b 7e 14             	mov    0x14(%esi),%edi
403440:	03 f9                	add    %ecx,%edi
403442:	3b fd                	cmp    %ebp,%edi
403444:	76 1d                	jbe    0x403463
403446:	83 fa 10             	cmp    $0x10,%edx
403449:	72 02                	jb     0x40344d
40344b:	8b 00                	mov    (%eax),%eax
40344d:	8b 4c 24 14          	mov    0x14(%esp),%ecx
403451:	51                   	push   %ecx
403452:	2b e8                	sub    %eax,%ebp
403454:	55                   	push   %ebp
403455:	56                   	push   %esi
403456:	8b ce                	mov    %esi,%ecx
403458:	e8 d3 fc ff ff       	call   0x403130
40345d:	5f                   	pop    %edi
40345e:	5e                   	pop    %esi
40345f:	5d                   	pop    %ebp
403460:	c2 08 00             	ret    $0x8
403463:	8b 7c 24 14          	mov    0x14(%esp),%edi
403467:	83 ff fe             	cmp    $0xfffffffe,%edi
40346a:	76 05                	jbe    0x403471
40346c:	e8 2b 13 00 00       	call   0x40479c
403471:	8b 46 18             	mov    0x18(%esi),%eax
403474:	3b c7                	cmp    %edi,%eax
403476:	73 20                	jae    0x403498
403478:	8b 56 14             	mov    0x14(%esi),%edx
40347b:	52                   	push   %edx
40347c:	57                   	push   %edi
40347d:	8b ce                	mov    %esi,%ecx
40347f:	e8 7c 06 00 00       	call   0x403b00
403484:	85 ff                	test   %edi,%edi
403486:	76 56                	jbe    0x4034de
403488:	8b 4e 18             	mov    0x18(%esi),%ecx
40348b:	53                   	push   %ebx
40348c:	8d 5e 04             	lea    0x4(%esi),%ebx
40348f:	83 f9 10             	cmp    $0x10,%ecx
403492:	72 2c                	jb     0x4034c0
403494:	8b 03                	mov    (%ebx),%eax
403496:	eb 2a                	jmp    0x4034c2
403498:	85 ff                	test   %edi,%edi
40349a:	75 ea                	jne    0x403486
40349c:	89 7e 14             	mov    %edi,0x14(%esi)
40349f:	83 f8 10             	cmp    $0x10,%eax
4034a2:	72 0e                	jb     0x4034b2
4034a4:	8b 46 04             	mov    0x4(%esi),%eax
4034a7:	5f                   	pop    %edi
4034a8:	c6 00 00             	movb   $0x0,(%eax)
4034ab:	8b c6                	mov    %esi,%eax
4034ad:	5e                   	pop    %esi
4034ae:	5d                   	pop    %ebp
4034af:	c2 08 00             	ret    $0x8
4034b2:	8d 46 04             	lea    0x4(%esi),%eax
4034b5:	5f                   	pop    %edi
4034b6:	c6 00 00             	movb   $0x0,(%eax)
4034b9:	8b c6                	mov    %esi,%eax
4034bb:	5e                   	pop    %esi
4034bc:	5d                   	pop    %ebp
4034bd:	c2 08 00             	ret    $0x8
4034c0:	8b c3                	mov    %ebx,%eax
4034c2:	57                   	push   %edi
4034c3:	55                   	push   %ebp
4034c4:	51                   	push   %ecx
4034c5:	50                   	push   %eax
4034c6:	e8 cb 1f 00 00       	call   0x405496
4034cb:	83 c4 10             	add    $0x10,%esp
4034ce:	83 7e 18 10          	cmpl   $0x10,0x18(%esi)
4034d2:	89 7e 14             	mov    %edi,0x14(%esi)
4034d5:	72 02                	jb     0x4034d9
4034d7:	8b 1b                	mov    (%ebx),%ebx
4034d9:	c6 04 3b 00          	movb   $0x0,(%ebx,%edi,1)
4034dd:	5b                   	pop    %ebx
4034de:	5f                   	pop    %edi
4034df:	8b c6                	mov    %esi,%eax
4034e1:	5e                   	pop    %esi
4034e2:	5d                   	pop    %ebp
4034e3:	c2 08 00             	ret    $0x8
4034e6:	cc                   	int3
4034e7:	cc                   	int3
4034e8:	cc                   	int3
4034e9:	cc                   	int3
4034ea:	cc                   	int3
4034eb:	cc                   	int3
4034ec:	cc                   	int3
4034ed:	cc                   	int3
4034ee:	cc                   	int3
4034ef:	cc                   	int3
4034f0:	53                   	push   %ebx
4034f1:	8b 5c 24 08          	mov    0x8(%esp),%ebx
4034f5:	56                   	push   %esi
4034f6:	8b f1                	mov    %ecx,%esi
4034f8:	57                   	push   %edi
4034f9:	39 5e 14             	cmp    %ebx,0x14(%esi)
4034fc:	73 05                	jae    0x403503
4034fe:	e8 d1 12 00 00       	call   0x4047d4
403503:	8b 46 14             	mov    0x14(%esi),%eax
403506:	8b 7c 24 14          	mov    0x14(%esp),%edi
40350a:	2b c3                	sub    %ebx,%eax
40350c:	3b c7                	cmp    %edi,%eax
40350e:	73 02                	jae    0x403512
403510:	8b f8                	mov    %eax,%edi
403512:	85 ff                	test   %edi,%edi
403514:	76 55                	jbe    0x40356b
403516:	8b 4e 18             	mov    0x18(%esi),%ecx
403519:	55                   	push   %ebp
40351a:	8d 6e 04             	lea    0x4(%esi),%ebp
40351d:	83 f9 10             	cmp    $0x10,%ecx
403520:	72 09                	jb     0x40352b
403522:	8b 55 00             	mov    0x0(%ebp),%edx
403525:	89 54 24 14          	mov    %edx,0x14(%esp)
403529:	eb 04                	jmp    0x40352f
40352b:	89 6c 24 14          	mov    %ebp,0x14(%esp)
40352f:	83 f9 10             	cmp    $0x10,%ecx
403532:	72 05                	jb     0x403539
403534:	8b 55 00             	mov    0x0(%ebp),%edx
403537:	eb 02                	jmp    0x40353b
403539:	8b d5                	mov    %ebp,%edx
40353b:	2b c7                	sub    %edi,%eax
40353d:	50                   	push   %eax
40353e:	8b 44 24 18          	mov    0x18(%esp),%eax
403542:	03 c3                	add    %ebx,%eax
403544:	03 c7                	add    %edi,%eax
403546:	50                   	push   %eax
403547:	2b cb                	sub    %ebx,%ecx
403549:	51                   	push   %ecx
40354a:	03 d3                	add    %ebx,%edx
40354c:	52                   	push   %edx
40354d:	e8 cd 17 00 00       	call   0x404d1f
403552:	8b 46 14             	mov    0x14(%esi),%eax
403555:	2b c7                	sub    %edi,%eax
403557:	83 c4 10             	add    $0x10,%esp
40355a:	83 7e 18 10          	cmpl   $0x10,0x18(%esi)
40355e:	89 46 14             	mov    %eax,0x14(%esi)
403561:	72 03                	jb     0x403566
403563:	8b 6d 00             	mov    0x0(%ebp),%ebp
403566:	c6 04 28 00          	movb   $0x0,(%eax,%ebp,1)
40356a:	5d                   	pop    %ebp
40356b:	5f                   	pop    %edi
40356c:	8b c6                	mov    %esi,%eax
40356e:	5e                   	pop    %esi
40356f:	5b                   	pop    %ebx
403570:	c2 08 00             	ret    $0x8
403573:	cc                   	int3
403574:	cc                   	int3
403575:	cc                   	int3
403576:	cc                   	int3
403577:	cc                   	int3
403578:	cc                   	int3
403579:	cc                   	int3
40357a:	cc                   	int3
40357b:	cc                   	int3
40357c:	cc                   	int3
40357d:	cc                   	int3
40357e:	cc                   	int3
40357f:	cc                   	int3
403580:	6a ff                	push   $0xffffffff
403582:	68 00 9a 41 00       	push   $0x419a00
403587:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40358d:	50                   	push   %eax
40358e:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
403595:	51                   	push   %ecx
403596:	53                   	push   %ebx
403597:	56                   	push   %esi
403598:	57                   	push   %edi
403599:	8b 7c 24 20          	mov    0x20(%esp),%edi
40359d:	33 db                	xor    %ebx,%ebx
40359f:	89 5c 24 0c          	mov    %ebx,0xc(%esp)
4035a3:	8b 07                	mov    (%edi),%eax
4035a5:	8b 48 04             	mov    0x4(%eax),%ecx
4035a8:	c7 04 0f 88 8a 42 00 	movl   $0x428a88,(%edi,%ecx,1)
4035af:	8b 17                	mov    (%edi),%edx
4035b1:	89 5f 04             	mov    %ebx,0x4(%edi)
4035b4:	8b 72 04             	mov    0x4(%edx),%esi
4035b7:	03 f7                	add    %edi,%esi
4035b9:	e8 82 e6 ff ff       	call   0x401c40
4035be:	8b 44 24 24          	mov    0x24(%esp),%eax
4035c2:	56                   	push   %esi
4035c3:	89 46 28             	mov    %eax,0x28(%esi)
4035c6:	89 5e 2c             	mov    %ebx,0x2c(%esi)
4035c9:	e8 12 07 00 00       	call   0x403ce0
4035ce:	66 89 46 30          	mov    %ax,0x30(%esi)
4035d2:	39 5e 28             	cmp    %ebx,0x28(%esi)
4035d5:	75 18                	jne    0x4035ef
4035d7:	8b 46 08             	mov    0x8(%esi),%eax
4035da:	83 c8 04             	or     $0x4,%eax
4035dd:	83 e0 17             	and    $0x17,%eax
4035e0:	89 46 08             	mov    %eax,0x8(%esi)
4035e3:	85 46 0c             	test   %eax,0xc(%esi)
4035e6:	74 07                	je     0x4035ef
4035e8:	8b ce                	mov    %esi,%ecx
4035ea:	e8 81 e4 ff ff       	call   0x401a70
4035ef:	8b 4c 24 10          	mov    0x10(%esp),%ecx
4035f3:	89 5e 04             	mov    %ebx,0x4(%esi)
4035f6:	8b c7                	mov    %edi,%eax
4035f8:	5f                   	pop    %edi
4035f9:	5e                   	pop    %esi
4035fa:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
403601:	5b                   	pop    %ebx
403602:	83 c4 10             	add    $0x10,%esp
403605:	c2 08 00             	ret    $0x8
403608:	cc                   	int3
403609:	cc                   	int3
40360a:	cc                   	int3
40360b:	cc                   	int3
40360c:	cc                   	int3
40360d:	cc                   	int3
40360e:	cc                   	int3
40360f:	cc                   	int3
403610:	6a ff                	push   $0xffffffff
403612:	68 db 97 41 00       	push   $0x4197db
403617:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40361d:	50                   	push   %eax
40361e:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
403625:	51                   	push   %ecx
403626:	56                   	push   %esi
403627:	8b 74 24 18          	mov    0x18(%esp),%esi
40362b:	57                   	push   %edi
40362c:	8d 4e 04             	lea    0x4(%esi),%ecx
40362f:	c7 06 4c 8a 42 00    	movl   $0x428a4c,(%esi)
403635:	e8 ef 11 00 00       	call   0x404829
40363a:	6a 04                	push   $0x4
40363c:	c7 44 24 18 00 00 00 	movl   $0x0,0x18(%esp)
403643:	00
403644:	e8 34 22 00 00       	call   0x40587d
403649:	8b f8                	mov    %eax,%edi
40364b:	83 c4 04             	add    $0x4,%esp
40364e:	85 ff                	test   %edi,%edi
403650:	74 32                	je     0x403684
403652:	53                   	push   %ebx
403653:	e8 66 0f 00 00       	call   0x4045be
403658:	89 07                	mov    %eax,(%edi)
40365a:	e8 8d 0d 00 00       	call   0x4043ec
40365f:	6a 00                	push   $0x0
403661:	8d 4c 24 10          	lea    0x10(%esp),%ecx
403665:	8b d8                	mov    %eax,%ebx
403667:	e8 a2 10 00 00       	call   0x40470e
40366c:	8b 43 04             	mov    0x4(%ebx),%eax
40366f:	83 f8 ff             	cmp    $0xffffffff,%eax
403672:	73 04                	jae    0x403678
403674:	40                   	inc    %eax
403675:	89 43 04             	mov    %eax,0x4(%ebx)
403678:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
40367c:	e8 b5 10 00 00       	call   0x404736
403681:	5b                   	pop    %ebx
403682:	eb 02                	jmp    0x403686
403684:	33 ff                	xor    %edi,%edi
403686:	89 7e 38             	mov    %edi,0x38(%esi)
403689:	8d 46 08             	lea    0x8(%esi),%eax
40368c:	89 46 10             	mov    %eax,0x10(%esi)
40368f:	8d 4e 18             	lea    0x18(%esi),%ecx
403692:	89 4e 20             	mov    %ecx,0x20(%esi)
403695:	8d 56 1c             	lea    0x1c(%esi),%edx
403698:	89 56 24             	mov    %edx,0x24(%esi)
40369b:	8d 46 0c             	lea    0xc(%esi),%eax
40369e:	89 46 14             	mov    %eax,0x14(%esi)
4036a1:	8d 4e 28             	lea    0x28(%esi),%ecx
4036a4:	89 4e 30             	mov    %ecx,0x30(%esi)
4036a7:	8d 56 2c             	lea    0x2c(%esi),%edx
4036aa:	89 56 34             	mov    %edx,0x34(%esi)
4036ad:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
4036b3:	8b 46 24             	mov    0x24(%esi),%eax