40d359:	ff 75 0c             	push   0xc(%ebp)
40d35c:	ff 75 08             	push   0x8(%ebp)
40d35f:	e8 0d 00 00 00       	call   0x40d371
40d364:	83 c4 18             	add    $0x18,%esp
40d367:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40d36a:	e8 bb fd ff ff       	call   0x40d12a
40d36f:	c9                   	leave
40d370:	c3                   	ret
40d371:	8b ff                	mov    %edi,%edi
40d373:	55                   	push   %ebp
40d374:	8b ec                	mov    %esp,%ebp
40d376:	56                   	push   %esi
40d377:	57                   	push   %edi
40d378:	8b 7d 1c             	mov    0x1c(%ebp),%edi
40d37b:	8b 07                	mov    (%edi),%eax
40d37d:	85 c0                	test   %eax,%eax
40d37f:	75 0b                	jne    0x40d38c
40d381:	8b cf                	mov    %edi,%ecx
40d383:	e8 07 fe ff ff       	call   0x40d18f
40d388:	85 c0                	test   %eax,%eax
40d38a:	74 2a                	je     0x40d3b6
40d38c:	8b b0 5c 03 00 00    	mov    0x35c(%eax),%esi
40d392:	85 f6                	test   %esi,%esi
40d394:	74 20                	je     0x40d3b6
40d396:	ff 75 18             	push   0x18(%ebp)
40d399:	ff 75 14             	push   0x14(%ebp)
40d39c:	ff 75 10             	push   0x10(%ebp)
40d39f:	ff 75 0c             	push   0xc(%ebp)
40d3a2:	ff 75 08             	push   0x8(%ebp)
40d3a5:	8b ce                	mov    %esi,%ecx
40d3a7:	ff 15 68 12 43 00    	call   *0x431268
40d3ad:	ff d6                	call   *%esi
40d3af:	83 c4 14             	add    $0x14,%esp
40d3b2:	5f                   	pop    %edi
40d3b3:	5e                   	pop    %esi
40d3b4:	5d                   	pop    %ebp
40d3b5:	c3                   	ret
40d3b6:	8b cf                	mov    %edi,%ecx
40d3b8:	e8 a9 fd ff ff       	call   0x40d166
40d3bd:	ff 75 18             	push   0x18(%ebp)
40d3c0:	8b 0d c0 d0 43 00    	mov    0x43d0c0,%ecx
40d3c6:	ff 75 14             	push   0x14(%ebp)
40d3c9:	8b 34 85 80 f6 43 00 	mov    0x43f680(,%eax,4),%esi
40d3d0:	83 e1 1f             	and    $0x1f,%ecx
40d3d3:	ff 75 10             	push   0x10(%ebp)
40d3d6:	33 35 c0 d0 43 00    	xor    0x43d0c0,%esi
40d3dc:	ff 75 0c             	push   0xc(%ebp)
40d3df:	d3 ce                	ror    %cl,%esi
40d3e1:	ff 75 08             	push   0x8(%ebp)
40d3e4:	85 f6                	test   %esi,%esi
40d3e6:	75 bd                	jne    0x40d3a5
40d3e8:	e8 2e 00 00 00       	call   0x40d41b
40d3ed:	cc                   	int3
40d3ee:	33 c0                	xor    %eax,%eax
40d3f0:	50                   	push   %eax
40d3f1:	50                   	push   %eax
40d3f2:	50                   	push   %eax
40d3f3:	50                   	push   %eax
40d3f4:	50                   	push   %eax
40d3f5:	e8 40 ff ff ff       	call   0x40d33a
40d3fa:	83 c4 14             	add    $0x14,%esp
40d3fd:	c3                   	ret
40d3fe:	8b ff                	mov    %edi,%edi
40d400:	56                   	push   %esi
40d401:	33 f6                	xor    %esi,%esi
40d403:	56                   	push   %esi
40d404:	56                   	push   %esi
40d405:	56                   	push   %esi
40d406:	56                   	push   %esi
40d407:	56                   	push   %esi
40d408:	e8 2d ff ff ff       	call   0x40d33a
40d40d:	83 c4 14             	add    $0x14,%esp
40d410:	56                   	push   %esi
40d411:	56                   	push   %esi
40d412:	56                   	push   %esi
40d413:	56                   	push   %esi
40d414:	56                   	push   %esi
40d415:	e8 01 00 00 00       	call   0x40d41b
40d41a:	cc                   	int3
40d41b:	6a 17                	push   $0x17
40d41d:	ff 15 a4 11 43 00    	call   *0x4311a4
40d423:	85 c0                	test   %eax,%eax
40d425:	74 05                	je     0x40d42c
40d427:	6a 05                	push   $0x5
40d429:	59                   	pop    %ecx
40d42a:	cd 29                	int    $0x29
40d42c:	56                   	push   %esi
40d42d:	6a 01                	push   $0x1
40d42f:	be 17 04 00 c0       	mov    $0xc0000417,%esi
40d434:	56                   	push   %esi
40d435:	6a 02                	push   $0x2
40d437:	e8 b6 fd ff ff       	call   0x40d1f2
40d43c:	83 c4 0c             	add    $0xc,%esp
40d43f:	56                   	push   %esi
40d440:	ff 15 dc 10 43 00    	call   *0x4310dc
40d446:	50                   	push   %eax
40d447:	ff 15 ac 11 43 00    	call   *0x4311ac
40d44d:	5e                   	pop    %esi
40d44e:	c3                   	ret
40d44f:	8b ff                	mov    %edi,%edi
40d451:	55                   	push   %ebp
40d452:	8b ec                	mov    %esp,%ebp
40d454:	56                   	push   %esi
40d455:	8b 35 c0 d0 43 00    	mov    0x43d0c0,%esi
40d45b:	57                   	push   %edi
40d45c:	8b 3d 80 f6 43 00    	mov    0x43f680,%edi
40d462:	ff 75 08             	push   0x8(%ebp)
40d465:	33 fe                	xor    %esi,%edi
40d467:	e8 57 fc ff ff       	call   0x40d0c3
40d46c:	59                   	pop    %ecx
40d46d:	83 e6 1f             	and    $0x1f,%esi
40d470:	a3 80 f6 43 00       	mov    %eax,0x43f680
40d475:	8b ce                	mov    %esi,%ecx
40d477:	d3 cf                	ror    %cl,%edi
40d479:	8b c7                	mov    %edi,%eax
40d47b:	5f                   	pop    %edi
40d47c:	5e                   	pop    %esi
40d47d:	5d                   	pop    %ebp
40d47e:	c3                   	ret
40d47f:	6a 0c                	push   $0xc
40d481:	68 18 ab 43 00       	push   $0x43ab18
40d486:	e8 45 d0 ff ff       	call   0x40a4d0
40d48b:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40d48f:	8b 45 08             	mov    0x8(%ebp),%eax
40d492:	ff 30                	push   (%eax)
40d494:	e8 38 05 01 00       	call   0x41d9d1
40d499:	59                   	pop    %ecx
40d49a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40d49e:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40d4a1:	e8 3b 20 00 00       	call   0x40f4e1
40d4a6:	8b f0                	mov    %eax,%esi
40d4a8:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40d4ab:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40d4b2:	e8 17 00 00 00       	call   0x40d4ce
40d4b7:	8b c6                	mov    %esi,%eax
40d4b9:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40d4bc:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40d4c3:	59                   	pop    %ecx
40d4c4:	5f                   	pop    %edi
40d4c5:	5e                   	pop    %esi
40d4c6:	5b                   	pop    %ebx
40d4c7:	c9                   	leave
40d4c8:	c2 0c 00             	ret    $0xc
40d4cb:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40d4ce:	8b 45 10             	mov    0x10(%ebp),%eax
40d4d1:	ff 30                	push   (%eax)
40d4d3:	e8 0d 05 01 00       	call   0x41d9e5
40d4d8:	59                   	pop    %ecx
40d4d9:	c3                   	ret
40d4da:	8b ff                	mov    %edi,%edi
40d4dc:	55                   	push   %ebp
40d4dd:	8b ec                	mov    %esp,%ebp
40d4df:	81 ec 74 04 00 00    	sub    $0x474,%esp
40d4e5:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
40d4ea:	33 c5                	xor    %ebp,%eax
40d4ec:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d4ef:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40d4f3:	8b 45 10             	mov    0x10(%ebp),%eax
40d4f6:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
40d4f9:	53                   	push   %ebx
40d4fa:	56                   	push   %esi
40d4fb:	8b 75 14             	mov    0x14(%ebp),%esi
40d4fe:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d504:	75 23                	jne    0x40d529
40d506:	51                   	push   %ecx
40d507:	33 db                	xor    %ebx,%ebx
40d509:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40d50d:	53                   	push   %ebx
40d50e:	53                   	push   %ebx
40d50f:	53                   	push   %ebx
40d510:	53                   	push   %ebx
40d511:	53                   	push   %ebx
40d512:	c7 41 18 16 00 00 00 	movl   $0x16,0x18(%ecx)
40d519:	e8 53 fe ff ff       	call   0x40d371
40d51e:	83 c4 18             	add    $0x18,%esp
40d521:	83 c8 ff             	or     $0xffffffff,%eax
40d524:	e9 26 01 00 00       	jmp    0x40d64f
40d529:	85 f6                	test   %esi,%esi
40d52b:	74 04                	je     0x40d531
40d52d:	85 c0                	test   %eax,%eax
40d52f:	74 d5                	je     0x40d506
40d531:	8b 55 08             	mov    0x8(%ebp),%edx
40d534:	33 c0                	xor    %eax,%eax
40d536:	57                   	push   %edi
40d537:	8d bd 90 fb ff ff    	lea    -0x470(%ebp),%edi
40d53d:	33 db                	xor    %ebx,%ebx
40d53f:	ab                   	stos   %eax,%es:(%edi)
40d540:	ab                   	stos   %eax,%es:(%edi)
40d541:	ab                   	stos   %eax,%es:(%edi)
40d542:	ab                   	stos   %eax,%es:(%edi)
40d543:	8b c2                	mov    %edx,%eax
40d545:	8b bd a0 fb ff ff    	mov    -0x460(%ebp),%edi
40d54b:	83 e0 02             	and    $0x2,%eax
40d54e:	89 85 8c fb ff ff    	mov    %eax,-0x474(%ebp)
40d554:	0b c3                	or     %ebx,%eax
40d556:	89 bd 90 fb ff ff    	mov    %edi,-0x470(%ebp)
40d55c:	89 b5 94 fb ff ff    	mov    %esi,-0x46c(%ebp)
40d562:	89 9d 98 fb ff ff    	mov    %ebx,-0x468(%ebp)
40d568:	75 0a                	jne    0x40d574
40d56a:	88 9d 9c fb ff ff    	mov    %bl,-0x464(%ebp)
40d570:	85 ff                	test   %edi,%edi
40d572:	75 07                	jne    0x40d57b
40d574:	c6 85 9c fb ff ff 01 	movb   $0x1,-0x464(%ebp)
40d57b:	ff 75 20             	push   0x20(%ebp)
40d57e:	8d 85 90 fb ff ff    	lea    -0x470(%ebp),%eax
40d584:	51                   	push   %ecx
40d585:	ff 75 18             	push   0x18(%ebp)
40d588:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d58e:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d594:	ff 75 0c             	push   0xc(%ebp)
40d597:	8d 85 a0 fb ff ff    	lea    -0x460(%ebp),%eax
40d59d:	52                   	push   %edx
40d59e:	50                   	push   %eax
40d59f:	e8 93 1e 00 00       	call   0x40f437
40d5a4:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d5aa:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40d5ad:	e8 ae 27 00 00       	call   0x40fd60
40d5b2:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d5b8:	85 ff                	test   %edi,%edi
40d5ba:	74 7f                	je     0x40d63b
40d5bc:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d5bf:	83 e1 01             	and    $0x1,%ecx
40d5c2:	0b cb                	or     %ebx,%ecx
40d5c4:	74 24                	je     0x40d5ea
40d5c6:	85 f6                	test   %esi,%esi
40d5c8:	75 04                	jne    0x40d5ce
40d5ca:	85 c0                	test   %eax,%eax
40d5cc:	75 4c                	jne    0x40d61a
40d5ce:	8b 8d 98 fb ff ff    	mov    -0x468(%ebp),%ecx
40d5d4:	3b ce                	cmp    %esi,%ecx
40d5d6:	74 08                	je     0x40d5e0
40d5d8:	33 c0                	xor    %eax,%eax
40d5da:	66 89 04 4f          	mov    %ax,(%edi,%ecx,2)
40d5de:	eb 5b                	jmp    0x40d63b
40d5e0:	85 c0                	test   %eax,%eax
40d5e2:	78 57                	js     0x40d63b
40d5e4:	3b c6                	cmp    %esi,%eax
40d5e6:	77 32                	ja     0x40d61a
40d5e8:	eb 51                	jmp    0x40d63b
40d5ea:	8b 8d 8c fb ff ff    	mov    -0x474(%ebp),%ecx
40d5f0:	0b cb                	or     %ebx,%ecx
40d5f2:	74 22                	je     0x40d616
40d5f4:	85 f6                	test   %esi,%esi
40d5f6:	74 43                	je     0x40d63b
40d5f8:	85 c0                	test   %eax,%eax
40d5fa:	79 07                	jns    0x40d603
40d5fc:	33 c0                	xor    %eax,%eax
40d5fe:	66 89 07             	mov    %ax,(%edi)
40d601:	eb 38                	jmp    0x40d63b
40d603:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40d609:	3b c6                	cmp    %esi,%eax
40d60b:	75 28                	jne    0x40d635
40d60d:	33 c0                	xor    %eax,%eax
40d60f:	66 89 44 77 fe       	mov    %ax,-0x2(%edi,%esi,2)
40d614:	eb 25                	jmp    0x40d63b
40d616:	85 f6                	test   %esi,%esi
40d618:	75 05                	jne    0x40d61f
40d61a:	83 ce ff             	or     $0xffffffff,%esi
40d61d:	eb 22                	jmp    0x40d641
40d61f:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40d625:	3b c6                	cmp    %esi,%eax
40d627:	75 0c                	jne    0x40d635
40d629:	33 c0                	xor    %eax,%eax
40d62b:	6a fe                	push   $0xfffffffe
40d62d:	66 89 44 77 fe       	mov    %ax,-0x2(%edi,%esi,2)
40d632:	5e                   	pop    %esi
40d633:	eb 0c                	jmp    0x40d641
40d635:	33 c9                	xor    %ecx,%ecx
40d637:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
40d63b:	8b b5 a0 fb ff ff    	mov    -0x460(%ebp),%esi
40d641:	8d 8d e0 fb ff ff    	lea    -0x420(%ebp),%ecx
40d647:	e8 57 1e 00 00       	call   0x40f4a3
40d64c:	8b c6                	mov    %esi,%eax
40d64e:	5f                   	pop    %edi
40d64f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d652:	5e                   	pop    %esi
40d653:	33 cd                	xor    %ebp,%ecx
40d655:	5b                   	pop    %ebx
40d656:	e8 4c c6 ff ff       	call   0x409ca7
40d65b:	c9                   	leave
40d65c:	c3                   	ret
40d65d:	8b ff                	mov    %edi,%edi
40d65f:	55                   	push   %ebp
40d660:	8b ec                	mov    %esp,%ebp
40d662:	81 ec 74 04 00 00    	sub    $0x474,%esp
40d668:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
40d66d:	33 c5                	xor    %ebp,%eax
40d66f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d672:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40d676:	8b 45 10             	mov    0x10(%ebp),%eax
40d679:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
40d67c:	53                   	push   %ebx
40d67d:	56                   	push   %esi
40d67e:	8b 75 14             	mov    0x14(%ebp),%esi
40d681:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d687:	75 23                	jne    0x40d6ac
40d689:	51                   	push   %ecx
40d68a:	33 db                	xor    %ebx,%ebx
40d68c:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40d690:	53                   	push   %ebx
40d691:	53                   	push   %ebx
40d692:	53                   	push   %ebx
40d693:	53                   	push   %ebx
40d694:	53                   	push   %ebx
40d695:	c7 41 18 16 00 00 00 	movl   $0x16,0x18(%ecx)
40d69c:	e8 d0 fc ff ff       	call   0x40d371
40d6a1:	83 c4 18             	add    $0x18,%esp
40d6a4:	83 c8 ff             	or     $0xffffffff,%eax
40d6a7:	e9 17 01 00 00       	jmp    0x40d7c3
40d6ac:	85 f6                	test   %esi,%esi
40d6ae:	74 04                	je     0x40d6b4
40d6b0:	85 c0                	test   %eax,%eax
40d6b2:	74 d5                	je     0x40d689
40d6b4:	8b 55 08             	mov    0x8(%ebp),%edx
40d6b7:	33 c0                	xor    %eax,%eax
40d6b9:	57                   	push   %edi
40d6ba:	8d bd 90 fb ff ff    	lea    -0x470(%ebp),%edi
40d6c0:	33 db                	xor    %ebx,%ebx
40d6c2:	ab                   	stos   %eax,%es:(%edi)
40d6c3:	ab                   	stos   %eax,%es:(%edi)
40d6c4:	ab                   	stos   %eax,%es:(%edi)
40d6c5:	ab                   	stos   %eax,%es:(%edi)
40d6c6:	8b c2                	mov    %edx,%eax
40d6c8:	8b bd a0 fb ff ff    	mov    -0x460(%ebp),%edi
40d6ce:	83 e0 02             	and    $0x2,%eax
40d6d1:	89 85 8c fb ff ff    	mov    %eax,-0x474(%ebp)
40d6d7:	0b c3                	or     %ebx,%eax
40d6d9:	89 bd 90 fb ff ff    	mov    %edi,-0x470(%ebp)
40d6df:	89 b5 94 fb ff ff    	mov    %esi,-0x46c(%ebp)
40d6e5:	89 9d 98 fb ff ff    	mov    %ebx,-0x468(%ebp)
40d6eb:	75 0a                	jne    0x40d6f7
40d6ed:	88 9d 9c fb ff ff    	mov    %bl,-0x464(%ebp)
40d6f3:	85 ff                	test   %edi,%edi
40d6f5:	75 07                	jne    0x40d6fe
40d6f7:	c6 85 9c fb ff ff 01 	movb   $0x1,-0x464(%ebp)
40d6fe:	ff 75 20             	push   0x20(%ebp)
40d701:	8d 85 90 fb ff ff    	lea    -0x470(%ebp),%eax
40d707:	51                   	push   %ecx
40d708:	ff 75 18             	push   0x18(%ebp)
40d70b:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d711:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d717:	ff 75 0c             	push   0xc(%ebp)
40d71a:	8d 85 a0 fb ff ff    	lea    -0x460(%ebp),%eax
40d720:	52                   	push   %edx
40d721:	50                   	push   %eax
40d722:	e8 a9 1c 00 00       	call   0x40f3d0
40d727:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d72d:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40d730:	e8 57 23 00 00       	call   0x40fa8c
40d735:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)