403340:	83 c4 0c             	add    $0xc,%esp
403343:	8d 04 37             	lea    (%edi,%esi,1),%eax
403346:	5f                   	pop    %edi
403347:	5e                   	pop    %esi
403348:	5d                   	pop    %ebp
403349:	c3                   	ret
40334a:	55                   	push   %ebp
40334b:	8b ec                	mov    %esp,%ebp
40334d:	56                   	push   %esi
40334e:	8b 75 10             	mov    0x10(%ebp),%esi
403351:	57                   	push   %edi
403352:	8b 7d 0c             	mov    0xc(%ebp),%edi
403355:	2b 7d 08             	sub    0x8(%ebp),%edi
403358:	57                   	push   %edi
403359:	ff 75 08             	push   0x8(%ebp)
40335c:	56                   	push   %esi
40335d:	e8 7e 05 04 00       	call   0x4438e0
403362:	83 c4 0c             	add    $0xc,%esp
403365:	8d 04 37             	lea    (%edi,%esi,1),%eax
403368:	5f                   	pop    %edi
403369:	5e                   	pop    %esi
40336a:	5d                   	pop    %ebp
40336b:	c3                   	ret
40336c:	55                   	push   %ebp
40336d:	8b ec                	mov    %esp,%ebp
40336f:	56                   	push   %esi
403370:	8b 75 10             	mov    0x10(%ebp),%esi
403373:	57                   	push   %edi
403374:	8b 7d 0c             	mov    0xc(%ebp),%edi
403377:	2b 7d 08             	sub    0x8(%ebp),%edi
40337a:	57                   	push   %edi
40337b:	ff 75 08             	push   0x8(%ebp)
40337e:	56                   	push   %esi
40337f:	e8 5c 05 04 00       	call   0x4438e0
403384:	83 c4 0c             	add    $0xc,%esp
403387:	8d 04 37             	lea    (%edi,%esi,1),%eax
40338a:	5f                   	pop    %edi
40338b:	5e                   	pop    %esi
40338c:	5d                   	pop    %ebp
40338d:	c3                   	ret
40338e:	55                   	push   %ebp
40338f:	8b ec                	mov    %esp,%ebp
403391:	56                   	push   %esi
403392:	8b 75 10             	mov    0x10(%ebp),%esi
403395:	57                   	push   %edi
403396:	8b 7d 0c             	mov    0xc(%ebp),%edi
403399:	2b 7d 08             	sub    0x8(%ebp),%edi
40339c:	57                   	push   %edi
40339d:	ff 75 08             	push   0x8(%ebp)
4033a0:	56                   	push   %esi
4033a1:	e8 3a 05 04 00       	call   0x4438e0
4033a6:	83 c4 0c             	add    $0xc,%esp
4033a9:	8d 04 37             	lea    (%edi,%esi,1),%eax
4033ac:	5f                   	pop    %edi
4033ad:	5e                   	pop    %esi
4033ae:	5d                   	pop    %ebp
4033af:	c3                   	ret
4033b0:	55                   	push   %ebp
4033b1:	8b ec                	mov    %esp,%ebp
4033b3:	56                   	push   %esi
4033b4:	8b 75 10             	mov    0x10(%ebp),%esi
4033b7:	57                   	push   %edi
4033b8:	8b 7d 0c             	mov    0xc(%ebp),%edi
4033bb:	2b 7d 08             	sub    0x8(%ebp),%edi
4033be:	57                   	push   %edi
4033bf:	ff 75 08             	push   0x8(%ebp)
4033c2:	56                   	push   %esi
4033c3:	e8 18 05 04 00       	call   0x4438e0
4033c8:	83 c4 0c             	add    $0xc,%esp
4033cb:	8d 04 37             	lea    (%edi,%esi,1),%eax
4033ce:	5f                   	pop    %edi
4033cf:	5e                   	pop    %esi
4033d0:	5d                   	pop    %ebp
4033d1:	c3                   	ret
4033d2:	55                   	push   %ebp
4033d3:	8b ec                	mov    %esp,%ebp
4033d5:	53                   	push   %ebx
4033d6:	56                   	push   %esi
4033d7:	8b 75 10             	mov    0x10(%ebp),%esi
4033da:	33 db                	xor    %ebx,%ebx
4033dc:	57                   	push   %edi
4033dd:	8b 7d 0c             	mov    0xc(%ebp),%edi
4033e0:	33 c0                	xor    %eax,%eax
4033e2:	2b f7                	sub    %edi,%esi
4033e4:	46                   	inc    %esi
4033e5:	d1 ee                	shr    $1,%esi
4033e7:	3b 7d 10             	cmp    0x10(%ebp),%edi
4033ea:	0f 47 f0             	cmova  %eax,%esi
4033ed:	85 f6                	test   %esi,%esi
4033ef:	74 14                	je     0x403405
4033f1:	0f b7 07             	movzwl (%edi),%eax
4033f4:	8b 4d 14             	mov    0x14(%ebp),%ecx
4033f7:	50                   	push   %eax
4033f8:	e8 d1 f2 01 00       	call   0x4226ce
4033fd:	43                   	inc    %ebx
4033fe:	8d 7f 02             	lea    0x2(%edi),%edi
403401:	3b de                	cmp    %esi,%ebx
403403:	75 ec                	jne    0x4033f1
403405:	8b 45 08             	mov    0x8(%ebp),%eax
403408:	8b 4d 14             	mov    0x14(%ebp),%ecx
40340b:	5f                   	pop    %edi
40340c:	5e                   	pop    %esi
40340d:	89 08                	mov    %ecx,(%eax)
40340f:	5b                   	pop    %ebx
403410:	5d                   	pop    %ebp
403411:	c3                   	ret
403412:	55                   	push   %ebp
403413:	8b ec                	mov    %esp,%ebp
403415:	8b 4d 20             	mov    0x20(%ebp),%ecx
403418:	83 ec 10             	sub    $0x10,%esp
40341b:	8b 55 1c             	mov    0x1c(%ebp),%edx
40341e:	8b 45 10             	mov    0x10(%ebp),%eax
403421:	56                   	push   %esi
403422:	8b 75 0c             	mov    0xc(%ebp),%esi
403425:	3b 75 14             	cmp    0x14(%ebp),%esi
403428:	75 05                	jne    0x40342f
40342a:	3b 45 18             	cmp    0x18(%ebp),%eax
40342d:	74 4f                	je     0x40347e
40342f:	89 45 fc             	mov    %eax,-0x4(%ebp)
403432:	8d 45 f8             	lea    -0x8(%ebp),%eax
403435:	89 4d f4             	mov    %ecx,-0xc(%ebp)
403438:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40343b:	50                   	push   %eax
40343c:	89 75 f8             	mov    %esi,-0x8(%ebp)
40343f:	89 55 f0             	mov    %edx,-0x10(%ebp)
403442:	e8 50 c2 00 00       	call   0x40f697
403447:	8b 4d 20             	mov    0x20(%ebp),%ecx
40344a:	8b 55 1c             	mov    0x1c(%ebp),%edx
40344d:	83 f9 1f             	cmp    $0x1f,%ecx
403450:	73 03                	jae    0x403455
403452:	41                   	inc    %ecx
403453:	eb 08                	jmp    0x40345d
403455:	33 c9                	xor    %ecx,%ecx
403457:	83 c2 04             	add    $0x4,%edx
40345a:	89 55 1c             	mov    %edx,0x1c(%ebp)
40345d:	8b 45 10             	mov    0x10(%ebp),%eax
403460:	8b 75 0c             	mov    0xc(%ebp),%esi
403463:	89 4d 20             	mov    %ecx,0x20(%ebp)
403466:	83 f8 1f             	cmp    $0x1f,%eax
403469:	73 06                	jae    0x403471
40346b:	40                   	inc    %eax
40346c:	89 45 10             	mov    %eax,0x10(%ebp)
40346f:	eb b4                	jmp    0x403425
403471:	33 c0                	xor    %eax,%eax
403473:	83 c6 04             	add    $0x4,%esi
403476:	89 45 10             	mov    %eax,0x10(%ebp)
403479:	89 75 0c             	mov    %esi,0xc(%ebp)
40347c:	eb a7                	jmp    0x403425
40347e:	8b 45 08             	mov    0x8(%ebp),%eax
403481:	5e                   	pop    %esi
403482:	89 10                	mov    %edx,(%eax)
403484:	89 48 04             	mov    %ecx,0x4(%eax)
403487:	c9                   	leave
403488:	c3                   	ret
403489:	55                   	push   %ebp
40348a:	8b ec                	mov    %esp,%ebp
40348c:	51                   	push   %ecx
40348d:	8d 45 10             	lea    0x10(%ebp),%eax
403490:	50                   	push   %eax
403491:	8d 45 08             	lea    0x8(%ebp),%eax
403494:	50                   	push   %eax
403495:	8d 45 ff             	lea    -0x1(%ebp),%eax
403498:	50                   	push   %eax
403499:	e8 03 16 00 00       	call   0x404aa1
40349e:	ff 75 10             	push   0x10(%ebp)
4034a1:	ff 75 0c             	push   0xc(%ebp)
4034a4:	ff 75 08             	push   0x8(%ebp)
4034a7:	e8 5a fe ff ff       	call   0x403306
4034ac:	83 c4 18             	add    $0x18,%esp
4034af:	c9                   	leave
4034b0:	c3                   	ret
4034b1:	55                   	push   %ebp
4034b2:	8b ec                	mov    %esp,%ebp
4034b4:	51                   	push   %ecx
4034b5:	8d 45 10             	lea    0x10(%ebp),%eax
4034b8:	50                   	push   %eax
4034b9:	8d 45 08             	lea    0x8(%ebp),%eax
4034bc:	50                   	push   %eax
4034bd:	8d 45 ff             	lea    -0x1(%ebp),%eax
4034c0:	50                   	push   %eax
4034c1:	e8 e6 15 00 00       	call   0x404aac
4034c6:	ff 75 10             	push   0x10(%ebp)
4034c9:	ff 75 0c             	push   0xc(%ebp)
4034cc:	ff 75 08             	push   0x8(%ebp)
4034cf:	e8 54 fe ff ff       	call   0x403328
4034d4:	83 c4 18             	add    $0x18,%esp
4034d7:	c9                   	leave
4034d8:	c3                   	ret
4034d9:	55                   	push   %ebp
4034da:	8b ec                	mov    %esp,%ebp
4034dc:	51                   	push   %ecx
4034dd:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
4034e1:	ff 75 fc             	push   -0x4(%ebp)
4034e4:	ff 75 14             	push   0x14(%ebp)
4034e7:	ff 75 10             	push   0x10(%ebp)
4034ea:	ff 75 0c             	push   0xc(%ebp)
4034ed:	ff 75 08             	push   0x8(%ebp)
4034f0:	e8 dd fe ff ff       	call   0x4033d2
4034f5:	8b 45 08             	mov    0x8(%ebp),%eax
4034f8:	83 c4 14             	add    $0x14,%esp
4034fb:	c9                   	leave
4034fc:	c3                   	ret
4034fd:	55                   	push   %ebp
4034fe:	8b ec                	mov    %esp,%ebp
403500:	51                   	push   %ecx
403501:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
403505:	ff 75 fc             	push   -0x4(%ebp)
403508:	ff 75 20             	push   0x20(%ebp)
40350b:	ff 75 1c             	push   0x1c(%ebp)
40350e:	ff 75 18             	push   0x18(%ebp)
403511:	ff 75 14             	push   0x14(%ebp)
403514:	ff 75 10             	push   0x10(%ebp)
403517:	ff 75 0c             	push   0xc(%ebp)
40351a:	ff 75 08             	push   0x8(%ebp)
40351d:	e8 f0 fe ff ff       	call   0x403412
403522:	8b 45 08             	mov    0x8(%ebp),%eax
403525:	83 c4 20             	add    $0x20,%esp
403528:	c9                   	leave
403529:	c3                   	ret
40352a:	55                   	push   %ebp
40352b:	8b ec                	mov    %esp,%ebp
40352d:	8b 45 0c             	mov    0xc(%ebp),%eax
403530:	3d 00 10 00 00       	cmp    $0x1000,%eax
403535:	72 12                	jb     0x403549
403537:	8d 45 0c             	lea    0xc(%ebp),%eax
40353a:	50                   	push   %eax
40353b:	8d 45 08             	lea    0x8(%ebp),%eax
40353e:	50                   	push   %eax
40353f:	e8 07 2a 01 00       	call   0x415f4b
403544:	8b 45 0c             	mov    0xc(%ebp),%eax
403547:	59                   	pop    %ecx
403548:	59                   	pop    %ecx
403549:	50                   	push   %eax
40354a:	ff 75 08             	push   0x8(%ebp)
40354d:	e8 81 bd 03 00       	call   0x43f2d3
403552:	59                   	pop    %ecx
403553:	59                   	pop    %ecx
403554:	5d                   	pop    %ebp
403555:	c3                   	ret
403556:	6a 00                	push   $0x0
403558:	b8 b6 a0 48 00       	mov    $0x48a0b6,%eax
40355d:	e8 e8 c4 03 00       	call   0x43fa4a
403562:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
403569:	33 f6                	xor    %esi,%esi
40356b:	eb 09                	jmp    0x403576
40356d:	8d 4d 08             	lea    0x8(%ebp),%ecx
403570:	46                   	inc    %esi
403571:	e8 cf c9 00 00       	call   0x40ff45
403576:	8d 45 70             	lea    0x70(%ebp),%eax
403579:	50                   	push   %eax
40357a:	8d 4d 08             	lea    0x8(%ebp),%ecx
40357d:	e8 61 c7 00 00       	call   0x40fce3
403582:	84 c0                	test   %al,%al
403584:	74 e7                	je     0x40356d
403586:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40358a:	8d 4d 08             	lea    0x8(%ebp),%ecx
40358d:	e8 3b ae 00 00       	call   0x40e3cd
403592:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
403596:	8d 4d 70             	lea    0x70(%ebp),%ecx
403599:	e8 2f ae 00 00       	call   0x40e3cd
40359e:	8b c6                	mov    %esi,%eax
4035a0:	e8 6e c4 03 00       	call   0x43fa13
4035a5:	c3                   	ret
4035a6:	55                   	push   %ebp
4035a7:	8b ec                	mov    %esp,%ebp
4035a9:	56                   	push   %esi
4035aa:	ff 75 08             	push   0x8(%ebp)
4035ad:	8b f1                	mov    %ecx,%esi
4035af:	8b 4e 04             	mov    0x4(%esi),%ecx
4035b2:	83 21 00             	andl   $0x0,(%ecx)
4035b5:	83 61 04 00          	andl   $0x0,0x4(%ecx)
4035b9:	e8 7d 35 00 00       	call   0x406b3b
4035be:	8b 46 04             	mov    0x4(%esi),%eax
4035c1:	8d 48 08             	lea    0x8(%eax),%ecx
4035c4:	89 4e 04             	mov    %ecx,0x4(%esi)
4035c7:	5e                   	pop    %esi
4035c8:	5d                   	pop    %ebp
4035c9:	c2 04 00             	ret    $0x4
4035cc:	6a 20                	push   $0x20
4035ce:	b8 d1 a0 48 00       	mov    $0x48a0d1,%eax
4035d3:	e8 dd c4 03 00       	call   0x43fab5
4035d8:	8b f1                	mov    %ecx,%esi
4035da:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4035dd:	8b 7d 08             	mov    0x8(%ebp),%edi
4035e0:	2b 3e                	sub    (%esi),%edi
4035e2:	c1 ff 03             	sar    $0x3,%edi
4035e5:	8b 46 04             	mov    0x4(%esi),%eax
4035e8:	2b 06                	sub    (%esi),%eax
4035ea:	c1 f8 03             	sar    $0x3,%eax
4035ed:	3d ff ff ff 1f       	cmp    $0x1fffffff,%eax
4035f2:	0f 84 c0 00 00 00    	je     0x4036b8
4035f8:	40                   	inc    %eax
4035f9:	89 45 e0             	mov    %eax,-0x20(%ebp)
4035fc:	50                   	push   %eax
4035fd:	e8 85 38 01 00       	call   0x416e87
403602:	89 45 e8             	mov    %eax,-0x18(%ebp)
403605:	50                   	push   %eax
403606:	8b ce                	mov    %esi,%ecx
403608:	e8 c7 be 01 00       	call   0x41f4d4
40360d:	8b d8                	mov    %eax,%ebx
40360f:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
403612:	8b c7                	mov    %edi,%eax
403614:	c1 e0 03             	shl    $0x3,%eax
403617:	89 45 dc             	mov    %eax,-0x24(%ebp)
40361a:	8d 3c 18             	lea    (%eax,%ebx,1),%edi
40361d:	8d 47 08             	lea    0x8(%edi),%eax
403620:	89 45 d8             	mov    %eax,-0x28(%ebp)
403623:	89 45 ec             	mov    %eax,-0x14(%ebp)
403626:	33 c0                	xor    %eax,%eax
403628:	89 45 fc             	mov    %eax,-0x4(%ebp)
40362b:	89 07                	mov    %eax,(%edi)
40362d:	89 47 04             	mov    %eax,0x4(%edi)
403630:	ff 75 0c             	push   0xc(%ebp)
403633:	8b cf                	mov    %edi,%ecx
403635:	e8 01 35 00 00       	call   0x406b3b
40363a:	89 7d ec             	mov    %edi,-0x14(%ebp)
40363d:	8b 46 04             	mov    0x4(%esi),%eax
403640:	56                   	push   %esi
403641:	53                   	push   %ebx
403642:	39 45 08             	cmp    %eax,0x8(%ebp)
403645:	75 0d                	jne    0x403654
403647:	50                   	push   %eax
403648:	ff 36                	push   (%esi)
40364a:	e8 81 31 00 00       	call   0x4067d0
40364f:	83 c4 10             	add    $0x10,%esp
403652:	eb 20                	jmp    0x403674
403654:	ff 75 08             	push   0x8(%ebp)
403657:	ff 36                	push   (%esi)
403659:	e8 72 31 00 00       	call   0x4067d0
40365e:	89 5d ec             	mov    %ebx,-0x14(%ebp)
403661:	56                   	push   %esi
403662:	8d 47 08             	lea    0x8(%edi),%eax
403665:	50                   	push   %eax
403666:	ff 76 04             	push   0x4(%esi)
403669:	ff 75 08             	push   0x8(%ebp)
40366c:	e8 5f 31 00 00       	call   0x4067d0
403671:	83 c4 20             	add    $0x20,%esp
403674:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
403678:	ff 75 e8             	push   -0x18(%ebp)
40367b:	ff 75 e0             	push   -0x20(%ebp)
40367e:	53                   	push   %ebx
40367f:	8b ce                	mov    %esi,%ecx
403681:	e8 4c 3b 01 00       	call   0x4171d2
403686:	8b 06                	mov    (%esi),%eax
403688:	03 45 dc             	add    -0x24(%ebp),%eax
40368b:	e8 83 c3 03 00       	call   0x43fa13
403690:	c2 08 00             	ret    $0x8
403693:	ff 75 d8             	push   -0x28(%ebp)
403696:	ff 75 ec             	push   -0x14(%ebp)
403699:	8b 4d e4             	mov    -0x1c(%ebp),%ecx