4072a5:	68 80 00 00 00       	push   $0x80
4072aa:	ff 75 10             	push   0x10(%ebp)
4072ad:	ff 75 0c             	push   0xc(%ebp)
4072b0:	e8 11 ff ff ff       	call   0x4071c6
4072b5:	83 c4 0c             	add    $0xc,%esp
4072b8:	89 06                	mov    %eax,(%esi)
4072ba:	85 c0                	test   %eax,%eax
4072bc:	75 09                	jne    0x4072c7
4072be:	e8 44 0a 00 00       	call   0x407d07
4072c3:	8b 30                	mov    (%eax),%esi
4072c5:	eb 02                	jmp    0x4072c9
4072c7:	33 f6                	xor    %esi,%esi
4072c9:	8b c6                	mov    %esi,%eax
4072cb:	5e                   	pop    %esi
4072cc:	5d                   	pop    %ebp
4072cd:	c3                   	ret
4072ce:	8b ff                	mov    %edi,%edi
4072d0:	55                   	push   %ebp
4072d1:	8b ec                	mov    %esp,%ebp
4072d3:	56                   	push   %esi
4072d4:	8b 75 08             	mov    0x8(%ebp),%esi
4072d7:	85 f6                	test   %esi,%esi
4072d9:	75 15                	jne    0x4072f0
4072db:	e8 27 0a 00 00       	call   0x407d07
4072e0:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4072e6:	e8 43 09 00 00       	call   0x407c2e
4072eb:	83 c8 ff             	or     $0xffffffff,%eax
4072ee:	eb 51                	jmp    0x407341
4072f0:	8b 46 0c             	mov    0xc(%esi),%eax
4072f3:	57                   	push   %edi
4072f4:	83 cf ff             	or     $0xffffffff,%edi
4072f7:	c1 e8 0d             	shr    $0xd,%eax
4072fa:	a8 01                	test   $0x1,%al
4072fc:	74 39                	je     0x407337
4072fe:	56                   	push   %esi
4072ff:	e8 22 68 00 00       	call   0x40db26
407304:	56                   	push   %esi
407305:	8b f8                	mov    %eax,%edi
407307:	e8 dc 67 00 00       	call   0x40dae8
40730c:	56                   	push   %esi
40730d:	e8 ce 42 00 00       	call   0x40b5e0
407312:	50                   	push   %eax
407313:	e8 b5 66 00 00       	call   0x40d9cd
407318:	83 c4 10             	add    $0x10,%esp
40731b:	85 c0                	test   %eax,%eax
40731d:	79 05                	jns    0x407324
40731f:	83 cf ff             	or     $0xffffffff,%edi
407322:	eb 13                	jmp    0x407337
407324:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
407328:	74 0d                	je     0x407337
40732a:	ff 76 1c             	push   0x1c(%esi)
40732d:	e8 f2 24 00 00       	call   0x409824
407332:	83 66 1c 00          	andl   $0x0,0x1c(%esi)
407336:	59                   	pop    %ecx
407337:	56                   	push   %esi
407338:	e8 21 61 00 00       	call   0x40d45e
40733d:	59                   	pop    %ecx
40733e:	8b c7                	mov    %edi,%eax
407340:	5f                   	pop    %edi
407341:	5e                   	pop    %esi
407342:	5d                   	pop    %ebp
407343:	c3                   	ret
407344:	6a 10                	push   $0x10
407346:	68 78 1b 42 00       	push   $0x421b78
40734b:	e8 00 c8 ff ff       	call   0x403b50
407350:	8b 75 08             	mov    0x8(%ebp),%esi
407353:	89 75 e0             	mov    %esi,-0x20(%ebp)
407356:	33 c0                	xor    %eax,%eax
407358:	85 f6                	test   %esi,%esi
40735a:	0f 95 c0             	setne  %al
40735d:	85 c0                	test   %eax,%eax
40735f:	75 15                	jne    0x407376
407361:	e8 a1 09 00 00       	call   0x407d07
407366:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40736c:	e8 bd 08 00 00       	call   0x407c2e
407371:	83 c8 ff             	or     $0xffffffff,%eax
407374:	eb 3b                	jmp    0x4073b1
407376:	8b 46 0c             	mov    0xc(%esi),%eax
407379:	c1 e8 0c             	shr    $0xc,%eax
40737c:	56                   	push   %esi
40737d:	a8 01                	test   $0x1,%al
40737f:	74 08                	je     0x407389
407381:	e8 d8 60 00 00       	call   0x40d45e
407386:	59                   	pop    %ecx
407387:	eb e8                	jmp    0x407371
407389:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40738d:	e8 98 43 00 00       	call   0x40b72a
407392:	59                   	pop    %ecx
407393:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407397:	56                   	push   %esi
407398:	e8 31 ff ff ff       	call   0x4072ce
40739d:	59                   	pop    %ecx
40739e:	8b f0                	mov    %eax,%esi
4073a0:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4073a3:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4073aa:	e8 0b 00 00 00       	call   0x4073ba
4073af:	8b c6                	mov    %esi,%eax
4073b1:	e8 e0 c7 ff ff       	call   0x403b96
4073b6:	c3                   	ret
4073b7:	8b 75 e4             	mov    -0x1c(%ebp),%esi
4073ba:	ff 75 e0             	push   -0x20(%ebp)
4073bd:	e8 7c 43 00 00       	call   0x40b73e
4073c2:	59                   	pop    %ecx
4073c3:	c3                   	ret
4073c4:	8b ff                	mov    %edi,%edi
4073c6:	55                   	push   %ebp
4073c7:	8b ec                	mov    %esp,%ebp
4073c9:	53                   	push   %ebx
4073ca:	56                   	push   %esi
4073cb:	8b 75 08             	mov    0x8(%ebp),%esi
4073ce:	2b 75 10             	sub    0x10(%ebp),%esi
4073d1:	57                   	push   %edi
4073d2:	8b 7d 0c             	mov    0xc(%ebp),%edi
4073d5:	1b 7d 14             	sbb    0x14(%ebp),%edi
4073d8:	33 c9                	xor    %ecx,%ecx
4073da:	33 c0                	xor    %eax,%eax
4073dc:	41                   	inc    %ecx
4073dd:	39 45 0c             	cmp    %eax,0xc(%ebp)
4073e0:	7f 0b                	jg     0x4073ed
4073e2:	7c 05                	jl     0x4073e9
4073e4:	39 45 08             	cmp    %eax,0x8(%ebp)
4073e7:	73 04                	jae    0x4073ed
4073e9:	8b d9                	mov    %ecx,%ebx
4073eb:	eb 02                	jmp    0x4073ef
4073ed:	8b d8                	mov    %eax,%ebx
4073ef:	39 45 14             	cmp    %eax,0x14(%ebp)
4073f2:	7f 0b                	jg     0x4073ff
4073f4:	7c 05                	jl     0x4073fb
4073f6:	39 45 10             	cmp    %eax,0x10(%ebp)
4073f9:	73 04                	jae    0x4073ff
4073fb:	8b d1                	mov    %ecx,%edx
4073fd:	eb 02                	jmp    0x407401
4073ff:	8b d0                	mov    %eax,%edx
407401:	3b da                	cmp    %edx,%ebx
407403:	74 33                	je     0x407438
407405:	39 45 0c             	cmp    %eax,0xc(%ebp)
407408:	7f 0b                	jg     0x407415
40740a:	7c 05                	jl     0x407411
40740c:	39 45 08             	cmp    %eax,0x8(%ebp)
40740f:	73 04                	jae    0x407415
407411:	8b d1                	mov    %ecx,%edx
407413:	eb 02                	jmp    0x407417
407415:	8b d0                	mov    %eax,%edx
407417:	3b f8                	cmp    %eax,%edi
407419:	7f 06                	jg     0x407421
40741b:	7c 06                	jl     0x407423
40741d:	3b f0                	cmp    %eax,%esi
40741f:	72 02                	jb     0x407423
407421:	8b c8                	mov    %eax,%ecx
407423:	3b d1                	cmp    %ecx,%edx
407425:	74 11                	je     0x407438
407427:	8b 45 18             	mov    0x18(%ebp),%eax
40742a:	83 08 ff             	orl    $0xffffffff,(%eax)
40742d:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
407431:	b8 16 02 07 80       	mov    $0x80070216,%eax
407436:	eb 08                	jmp    0x407440
407438:	8b 4d 18             	mov    0x18(%ebp),%ecx
40743b:	89 31                	mov    %esi,(%ecx)
40743d:	89 79 04             	mov    %edi,0x4(%ecx)
407440:	5f                   	pop    %edi
407441:	5e                   	pop    %esi
407442:	5b                   	pop    %ebx
407443:	5d                   	pop    %ebp
407444:	c3                   	ret
407445:	6a 0c                	push   $0xc
407447:	68 98 1b 42 00       	push   $0x421b98
40744c:	e8 ff c6 ff ff       	call   0x403b50
407451:	33 c0                	xor    %eax,%eax
407453:	39 45 08             	cmp    %eax,0x8(%ebp)
407456:	0f 95 c0             	setne  %al
407459:	85 c0                	test   %eax,%eax
40745b:	75 15                	jne    0x407472
40745d:	e8 a5 08 00 00       	call   0x407d07
407462:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407468:	e8 c1 07 00 00       	call   0x407c2e
40746d:	83 c8 ff             	or     $0xffffffff,%eax
407470:	eb 47                	jmp    0x4074b9
407472:	8b 75 14             	mov    0x14(%ebp),%esi
407475:	85 f6                	test   %esi,%esi
407477:	74 0a                	je     0x407483
407479:	83 fe 01             	cmp    $0x1,%esi
40747c:	74 05                	je     0x407483
40747e:	83 fe 02             	cmp    $0x2,%esi
407481:	75 da                	jne    0x40745d
407483:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
407487:	ff 75 08             	push   0x8(%ebp)
40748a:	e8 9b 42 00 00       	call   0x40b72a
40748f:	59                   	pop    %ecx
407490:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407494:	56                   	push   %esi
407495:	ff 75 10             	push   0x10(%ebp)
407498:	ff 75 0c             	push   0xc(%ebp)
40749b:	ff 75 08             	push   0x8(%ebp)
40749e:	e8 02 01 00 00       	call   0x4075a5
4074a3:	83 c4 10             	add    $0x10,%esp
4074a6:	8b f0                	mov    %eax,%esi
4074a8:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4074ab:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4074b2:	e8 0b 00 00 00       	call   0x4074c2
4074b7:	8b c6                	mov    %esi,%eax
4074b9:	e8 d8 c6 ff ff       	call   0x403b96
4074be:	c3                   	ret
4074bf:	8b 75 e4             	mov    -0x1c(%ebp),%esi
4074c2:	ff 75 08             	push   0x8(%ebp)
4074c5:	e8 74 42 00 00       	call   0x40b73e
4074ca:	59                   	pop    %ecx
4074cb:	c3                   	ret
4074cc:	8b ff                	mov    %edi,%edi
4074ce:	55                   	push   %ebp
4074cf:	8b ec                	mov    %esp,%ebp
4074d1:	83 7d 14 02          	cmpl   $0x2,0x14(%ebp)
4074d5:	57                   	push   %edi
4074d6:	75 07                	jne    0x4074df
4074d8:	32 c0                	xor    %al,%al
4074da:	e9 8d 00 00 00       	jmp    0x40756c
4074df:	8b 45 08             	mov    0x8(%ebp),%eax
4074e2:	8b 40 0c             	mov    0xc(%eax),%eax
4074e5:	a9 c0 04 00 00       	test   $0x4c0,%eax
4074ea:	74 ec                	je     0x4074d8
4074ec:	8b 45 08             	mov    0x8(%ebp),%eax
4074ef:	8b 40 0c             	mov    0xc(%eax),%eax
4074f2:	a8 06                	test   $0x6,%al
4074f4:	75 e2                	jne    0x4074d8
4074f6:	8b 45 08             	mov    0x8(%ebp),%eax
4074f9:	56                   	push   %esi
4074fa:	33 f6                	xor    %esi,%esi
4074fc:	39 70 08             	cmp    %esi,0x8(%eax)
4074ff:	7c 68                	jl     0x407569
407501:	8b 50 10             	mov    0x10(%eax),%edx
407504:	8b c2                	mov    %edx,%eax
407506:	8b ca                	mov    %edx,%ecx
407508:	83 e0 3f             	and    $0x3f,%eax
40750b:	c1 f9 06             	sar    $0x6,%ecx
40750e:	6b c0 30             	imul   $0x30,%eax,%eax
407511:	8b 0c 8d c0 41 42 00 	mov    0x4241c0(,%ecx,4),%ecx
407518:	f6 44 01 28 80       	testb  $0x80,0x28(%ecx,%eax,1)
40751d:	75 4a                	jne    0x407569
40751f:	80 7c 01 29 00       	cmpb   $0x0,0x29(%ecx,%eax,1)
407524:	75 43                	jne    0x407569
407526:	39 75 14             	cmp    %esi,0x14(%ebp)
407529:	75 44                	jne    0x40756f
40752b:	6a 01                	push   $0x1
40752d:	56                   	push   %esi
40752e:	56                   	push   %esi
40752f:	52                   	push   %edx
407530:	e8 dc 6d 00 00       	call   0x40e311
407535:	8b fa                	mov    %edx,%edi
407537:	83 c4 10             	add    $0x10,%esp
40753a:	8b c8                	mov    %eax,%ecx
40753c:	3b fe                	cmp    %esi,%edi
40753e:	7f 06                	jg     0x407546
407540:	7c 27                	jl     0x407569
407542:	3b ce                	cmp    %esi,%ecx
407544:	72 23                	jb     0x407569
407546:	8b 75 08             	mov    0x8(%ebp),%esi
407549:	8d 45 0c             	lea    0xc(%ebp),%eax
40754c:	50                   	push   %eax
40754d:	8b 46 08             	mov    0x8(%esi),%eax
407550:	99                   	cltd
407551:	2b c8                	sub    %eax,%ecx
407553:	1b fa                	sbb    %edx,%edi
407555:	57                   	push   %edi
407556:	51                   	push   %ecx
407557:	ff 75 10             	push   0x10(%ebp)
40755a:	ff 75 0c             	push   0xc(%ebp)
40755d:	e8 62 fe ff ff       	call   0x4073c4
407562:	83 c4 14             	add    $0x14,%esp
407565:	85 c0                	test   %eax,%eax
407567:	79 09                	jns    0x407572
407569:	32 c0                	xor    %al,%al
40756b:	5e                   	pop    %esi
40756c:	5f                   	pop    %edi
40756d:	5d                   	pop    %ebp
40756e:	c3                   	ret
40756f:	8b 75 08             	mov    0x8(%ebp),%esi
407572:	8b 46 04             	mov    0x4(%esi),%eax
407575:	8b 0e                	mov    (%esi),%ecx
407577:	2b c1                	sub    %ecx,%eax
407579:	99                   	cltd
40757a:	3b 55 10             	cmp    0x10(%ebp),%edx
40757d:	7f ea                	jg     0x407569
40757f:	8b 7d 0c             	mov    0xc(%ebp),%edi
407582:	7c 04                	jl     0x407588
407584:	3b c7                	cmp    %edi,%eax
407586:	77 e1                	ja     0x407569
407588:	8b 46 08             	mov    0x8(%esi),%eax
40758b:	99                   	cltd
40758c:	39 55 10             	cmp    %edx,0x10(%ebp)
40758f:	7f d8                	jg     0x407569
407591:	7c 04                	jl     0x407597
407593:	3b f8                	cmp    %eax,%edi
407595:	77 d2                	ja     0x407569
407597:	03 cf                	add    %edi,%ecx
407599:	b0 01                	mov    $0x1,%al
40759b:	89 0e                	mov    %ecx,(%esi)
40759d:	8b 4d 08             	mov    0x8(%ebp),%ecx
4075a0:	29 79 08             	sub    %edi,0x8(%ecx)
4075a3:	eb c6                	jmp    0x40756b
4075a5:	8b ff                	mov    %edi,%edi
4075a7:	55                   	push   %ebp
4075a8:	8b ec                	mov    %esp,%ebp
4075aa:	8b 45 08             	mov    0x8(%ebp),%eax
4075ad:	8b 40 0c             	mov    0xc(%eax),%eax
4075b0:	c1 e8 0d             	shr    $0xd,%eax
4075b3:	a8 01                	test   $0x1,%al
4075b5:	75 10                	jne    0x4075c7
4075b7:	e8 4b 07 00 00       	call   0x407d07
4075bc:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4075c2:	83 c8 ff             	or     $0xffffffff,%eax
4075c5:	5d                   	pop    %ebp
4075c6:	c3                   	ret
4075c7:	8b 45 08             	mov    0x8(%ebp),%eax
4075ca:	53                   	push   %ebx
4075cb:	56                   	push   %esi
4075cc:	57                   	push   %edi
4075cd:	6a f7                	push   $0xfffffff7
4075cf:	59                   	pop    %ecx
4075d0:	83 c0 0c             	add    $0xc,%eax
4075d3:	f0 21 08             	lock and %ecx,(%eax)
4075d6:	8b 75 14             	mov    0x14(%ebp),%esi
4075d9:	8b 7d 10             	mov    0x10(%ebp),%edi
4075dc:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4075df:	56                   	push   %esi
4075e0:	57                   	push   %edi
4075e1:	53                   	push   %ebx
4075e2:	ff 75 08             	push   0x8(%ebp)
4075e5:	e8 e2 fe ff ff       	call   0x4074cc
4075ea:	83 c4 10             	add    $0x10,%esp
4075ed:	84 c0                	test   %al,%al
4075ef:	0f 85 82 00 00 00    	jne    0x407677
4075f5:	83 fe 01             	cmp    $0x1,%esi
4075f8:	75 0f                	jne    0x407609
4075fa:	ff 75 08             	push   0x8(%ebp)
4075fd:	e8 66 6b 00 00       	call   0x40e168
407602:	03 d8                	add    %eax,%ebx
407604:	59                   	pop    %ecx
407605:	13 fa                	adc    %edx,%edi
407607:	33 f6                	xor    %esi,%esi
407609:	ff 75 08             	push   0x8(%ebp)
40760c:	e8 15 65 00 00       	call   0x40db26
407611:	8b 45 08             	mov    0x8(%ebp),%eax
407614:	59                   	pop    %ecx
407615:	8b 48 04             	mov    0x4(%eax),%ecx
407618:	83 60 08 00          	andl   $0x0,0x8(%eax)
40761c:	89 08                	mov    %ecx,(%eax)
40761e:	8b 45 08             	mov    0x8(%ebp),%eax
407621:	8b 40 0c             	mov    0xc(%eax),%eax
407624:	c1 e8 02             	shr    $0x2,%eax
407627:	a8 01                	test   $0x1,%al
407629:	8b 45 08             	mov    0x8(%ebp),%eax