40f4ab:	cc                   	int3
40f4ac:	cc                   	int3
40f4ad:	cc                   	int3
40f4ae:	cc                   	int3
40f4af:	cc                   	int3
40f4b0:	8b ff                	mov    %edi,%edi
40f4b2:	55                   	push   %ebp
40f4b3:	8b ec                	mov    %esp,%ebp
40f4b5:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40f4b9:	56                   	push   %esi
40f4ba:	8b f1                	mov    %ecx,%esi
40f4bc:	c7 06 34 10 40 00    	movl   $0x401034,(%esi)
40f4c2:	74 0a                	je     0x40f4ce
40f4c4:	6a 08                	push   $0x8
40f4c6:	56                   	push   %esi
40f4c7:	e8 62 28 01 00       	call   0x421d2e
40f4cc:	59                   	pop    %ecx
40f4cd:	59                   	pop    %ecx
40f4ce:	8b c6                	mov    %esi,%eax
40f4d0:	5e                   	pop    %esi
40f4d1:	5d                   	pop    %ebp
40f4d2:	c2 04 00             	ret    $0x4
40f4d5:	cc                   	int3
40f4d6:	cc                   	int3
40f4d7:	cc                   	int3
40f4d8:	cc                   	int3
40f4d9:	cc                   	int3
40f4da:	cc                   	int3
40f4db:	cc                   	int3
40f4dc:	cc                   	int3
40f4dd:	cc                   	int3
40f4de:	cc                   	int3
40f4df:	cc                   	int3
40f4e0:	8b ff                	mov    %edi,%edi
40f4e2:	55                   	push   %ebp
40f4e3:	8b ec                	mov    %esp,%ebp
40f4e5:	8b 55 08             	mov    0x8(%ebp),%edx
40f4e8:	c7 02 5c 10 40 00    	movl   $0x40105c,(%edx)
40f4ee:	8b 41 04             	mov    0x4(%ecx),%eax
40f4f1:	89 42 04             	mov    %eax,0x4(%edx)
40f4f4:	5d                   	pop    %ebp
40f4f5:	c2 04 00             	ret    $0x4
40f4f8:	cc                   	int3
40f4f9:	cc                   	int3
40f4fa:	cc                   	int3
40f4fb:	cc                   	int3
40f4fc:	cc                   	int3
40f4fd:	cc                   	int3
40f4fe:	cc                   	int3
40f4ff:	cc                   	int3
40f500:	8b ff                	mov    %edi,%edi
40f502:	55                   	push   %ebp
40f503:	8b ec                	mov    %esp,%ebp
40f505:	8b 45 10             	mov    0x10(%ebp),%eax
40f508:	56                   	push   %esi
40f509:	57                   	push   %edi
40f50a:	8b 38                	mov    (%eax),%edi
40f50c:	8b 45 0c             	mov    0xc(%ebp),%eax
40f50f:	8b 30                	mov    (%eax),%esi
40f511:	8b 45 08             	mov    0x8(%ebp),%eax
40f514:	56                   	push   %esi
40f515:	ff 30                	push   (%eax)
40f517:	8b 41 04             	mov    0x4(%ecx),%eax
40f51a:	ff 30                	push   (%eax)
40f51c:	ff 15 6c 90 42 00    	call   *0x42906c
40f522:	0f b7 c0             	movzwl %ax,%eax
40f525:	66 85 c0             	test   %ax,%ax
40f528:	79 12                	jns    0x40f53c
40f52a:	8b 4d 04             	mov    0x4(%ebp),%ecx
40f52d:	68 20 1f 40 00       	push   $0x401f20
40f532:	6a 17                	push   $0x17
40f534:	5a                   	pop    %edx
40f535:	e8 73 7a ff ff       	call   0x406fad
40f53a:	eb 09                	jmp    0x40f545
40f53c:	74 03                	je     0x40f541
40f53e:	98                   	cwtl
40f53f:	8b f0                	mov    %eax,%esi
40f541:	89 37                	mov    %esi,(%edi)
40f543:	33 c0                	xor    %eax,%eax
40f545:	5f                   	pop    %edi
40f546:	5e                   	pop    %esi
40f547:	5d                   	pop    %ebp
40f548:	c2 0c 00             	ret    $0xc
40f54b:	8b ff                	mov    %edi,%edi
40f54d:	55                   	push   %ebp
40f54e:	8b ec                	mov    %esp,%ebp
40f550:	8b 55 08             	mov    0x8(%ebp),%edx
40f553:	8b 02                	mov    (%edx),%eax
40f555:	89 01                	mov    %eax,(%ecx)
40f557:	8b c1                	mov    %ecx,%eax
40f559:	83 22 00             	andl   $0x0,(%edx)
40f55c:	5d                   	pop    %ebp
40f55d:	c2 04 00             	ret    $0x4
40f560:	8b ff                	mov    %edi,%edi
40f562:	55                   	push   %ebp
40f563:	8b ec                	mov    %esp,%ebp
40f565:	56                   	push   %esi
40f566:	57                   	push   %edi
40f567:	8b 79 40             	mov    0x40(%ecx),%edi
40f56a:	85 ff                	test   %edi,%edi
40f56c:	74 23                	je     0x40f591
40f56e:	8b 07                	mov    (%edi),%eax
40f570:	8b 70 10             	mov    0x10(%eax),%esi
40f573:	8d 45 10             	lea    0x10(%ebp),%eax
40f576:	50                   	push   %eax
40f577:	8d 45 0c             	lea    0xc(%ebp),%eax
40f57a:	8b ce                	mov    %esi,%ecx
40f57c:	50                   	push   %eax
40f57d:	8d 45 08             	lea    0x8(%ebp),%eax
40f580:	50                   	push   %eax
40f581:	ff 15 78 64 42 00    	call   *0x426478
40f587:	8b cf                	mov    %edi,%ecx
40f589:	ff d6                	call   *%esi
40f58b:	5f                   	pop    %edi
40f58c:	5e                   	pop    %esi
40f58d:	5d                   	pop    %ebp
40f58e:	c2 0c 00             	ret    $0xc
40f591:	e8 64 7a ff ff       	call   0x406ffa
40f596:	cc                   	int3
40f597:	8b ff                	mov    %edi,%edi
40f599:	57                   	push   %edi
40f59a:	8b 79 40             	mov    0x40(%ecx),%edi
40f59d:	85 ff                	test   %edi,%edi
40f59f:	74 13                	je     0x40f5b4
40f5a1:	8b 07                	mov    (%edi),%eax
40f5a3:	56                   	push   %esi
40f5a4:	8b 70 0c             	mov    0xc(%eax),%esi
40f5a7:	8b ce                	mov    %esi,%ecx
40f5a9:	ff 15 78 64 42 00    	call   *0x426478
40f5af:	8b cf                	mov    %edi,%ecx
40f5b1:	ff d6                	call   *%esi
40f5b3:	5e                   	pop    %esi
40f5b4:	5f                   	pop    %edi
40f5b5:	c3                   	ret
40f5b6:	8b ff                	mov    %edi,%edi
40f5b8:	55                   	push   %ebp
40f5b9:	8b ec                	mov    %esp,%ebp
40f5bb:	56                   	push   %esi
40f5bc:	8b 35 84 4d 42 00    	mov    0x424d84,%esi
40f5c2:	85 f6                	test   %esi,%esi
40f5c4:	74 12                	je     0x40f5d8
40f5c6:	ff 75 08             	push   0x8(%ebp)
40f5c9:	6a 01                	push   $0x1
40f5cb:	51                   	push   %ecx
40f5cc:	8b ce                	mov    %esi,%ecx
40f5ce:	ff 15 78 64 42 00    	call   *0x426478
40f5d4:	ff d6                	call   *%esi
40f5d6:	eb 0c                	jmp    0x40f5e4
40f5d8:	8b 35 88 4d 42 00    	mov    0x424d88,%esi
40f5de:	85 f6                	test   %esi,%esi
40f5e0:	75 e4                	jne    0x40f5c6
40f5e2:	33 c0                	xor    %eax,%eax
40f5e4:	5e                   	pop    %esi
40f5e5:	5d                   	pop    %ebp
40f5e6:	c2 04 00             	ret    $0x4
40f5e9:	8b c1                	mov    %ecx,%eax
40f5eb:	83 e8 00             	sub    $0x0,%eax
40f5ee:	0f 84 8f 00 00 00    	je     0x40f683
40f5f4:	83 e8 01             	sub    $0x1,%eax
40f5f7:	74 7f                	je     0x40f678
40f5f9:	83 e8 01             	sub    $0x1,%eax
40f5fc:	74 6b                	je     0x40f669
40f5fe:	83 e8 01             	sub    $0x1,%eax
40f601:	74 57                	je     0x40f65a
40f603:	83 e8 01             	sub    $0x1,%eax
40f606:	74 43                	je     0x40f64b
40f608:	83 e8 01             	sub    $0x1,%eax
40f60b:	74 2f                	je     0x40f63c
40f60d:	83 e8 01             	sub    $0x1,%eax
40f610:	74 1b                	je     0x40f62d
40f612:	80 e9 64             	sub    $0x64,%cl
40f615:	80 f9 31             	cmp    $0x31,%cl
40f618:	77 69                	ja     0x40f683
40f61a:	f7 da                	neg    %edx
40f61c:	0f b6 c1             	movzbl %cl,%eax
40f61f:	1b d2                	sbb    %edx,%edx
40f621:	83 e2 ce             	and    $0xffffffce,%edx
40f624:	81 c2 96 00 00 00    	add    $0x96,%edx
40f62a:	03 c2                	add    %edx,%eax
40f62c:	c3                   	ret
40f62d:	33 c0                	xor    %eax,%eax
40f62f:	85 d2                	test   %edx,%edx
40f631:	0f 94 c0             	sete   %al
40f634:	8d 04 45 09 00 00 00 	lea    0x9(,%eax,2),%eax
40f63b:	c3                   	ret
40f63c:	33 c0                	xor    %eax,%eax
40f63e:	85 d2                	test   %edx,%edx
40f640:	0f 94 c0             	sete   %al
40f643:	8d 04 45 08 00 00 00 	lea    0x8(,%eax,2),%eax
40f64a:	c3                   	ret
40f64b:	33 c0                	xor    %eax,%eax
40f64d:	85 d2                	test   %edx,%edx
40f64f:	0f 94 c0             	sete   %al
40f652:	8d 04 85 03 00 00 00 	lea    0x3(,%eax,4),%eax
40f659:	c3                   	ret
40f65a:	33 c0                	xor    %eax,%eax
40f65c:	85 d2                	test   %edx,%edx
40f65e:	0f 94 c0             	sete   %al
40f661:	8d 04 85 02 00 00 00 	lea    0x2(,%eax,4),%eax
40f668:	c3                   	ret
40f669:	33 c0                	xor    %eax,%eax
40f66b:	85 d2                	test   %edx,%edx
40f66d:	0f 94 c0             	sete   %al
40f670:	8d 04 85 01 00 00 00 	lea    0x1(,%eax,4),%eax
40f677:	c3                   	ret
40f678:	f7 da                	neg    %edx
40f67a:	1b d2                	sbb    %edx,%edx
40f67c:	83 e2 fc             	and    $0xfffffffc,%edx
40f67f:	8d 42 04             	lea    0x4(%edx),%eax
40f682:	c3                   	ret
40f683:	b8 ff 00 00 00       	mov    $0xff,%eax
40f688:	c3                   	ret
40f689:	8b ff                	mov    %edi,%edi
40f68b:	55                   	push   %ebp
40f68c:	8b ec                	mov    %esp,%ebp
40f68e:	83 ec 0c             	sub    $0xc,%esp
40f691:	53                   	push   %ebx
40f692:	8b c2                	mov    %edx,%eax
40f694:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40f697:	33 db                	xor    %ebx,%ebx
40f699:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f69c:	83 f8 04             	cmp    $0x4,%eax
40f69f:	56                   	push   %esi
40f6a0:	8b 31                	mov    (%ecx),%esi
40f6a2:	0f 94 c3             	sete   %bl
40f6a5:	57                   	push   %edi
40f6a6:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f6a9:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40f6ac:	83 67 04 00          	andl   $0x0,0x4(%edi)
40f6b0:	8b ce                	mov    %esi,%ecx
40f6b2:	83 c9 01             	or     $0x1,%ecx
40f6b5:	8b c1                	mov    %ecx,%eax
40f6b7:	c1 e8 0e             	shr    $0xe,%eax
40f6ba:	83 e0 01             	and    $0x1,%eax
40f6bd:	3b c3                	cmp    %ebx,%eax
40f6bf:	74 33                	je     0x40f6f4
40f6c1:	8b d1                	mov    %ecx,%edx
40f6c3:	c1 ea 05             	shr    $0x5,%edx
40f6c6:	81 e2 ff 01 00 00    	and    $0x1ff,%edx
40f6cc:	76 19                	jbe    0x40f6e7
40f6ce:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f6d1:	f7 d8                	neg    %eax
40f6d3:	89 57 04             	mov    %edx,0x4(%edi)
40f6d6:	1b c0                	sbb    %eax,%eax
40f6d8:	83 e0 fc             	and    $0xfffffffc,%eax
40f6db:	83 c0 04             	add    $0x4,%eax
40f6de:	81 e1 1f c0 ff ff    	and    $0xffffc01f,%ecx
40f6e4:	89 47 08             	mov    %eax,0x8(%edi)
40f6e7:	8b c3                	mov    %ebx,%eax
40f6e9:	81 e1 ff bf ff ff    	and    $0xffffbfff,%ecx
40f6ef:	c1 e0 0e             	shl    $0xe,%eax
40f6f2:	0b c8                	or     %eax,%ecx
40f6f4:	8b c1                	mov    %ecx,%eax
40f6f6:	c1 e8 05             	shr    $0x5,%eax
40f6f9:	25 ff 01 00 00       	and    $0x1ff,%eax
40f6fe:	8d 50 01             	lea    0x1(%eax),%edx
40f701:	81 fa ff 01 00 00    	cmp    $0x1ff,%edx
40f707:	77 04                	ja     0x40f70d
40f709:	3b d0                	cmp    %eax,%edx
40f70b:	73 0f                	jae    0x40f71c
40f70d:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40f710:	33 d2                	xor    %edx,%edx
40f712:	89 5f 08             	mov    %ebx,0x8(%edi)
40f715:	42                   	inc    %edx
40f716:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40f719:	89 47 04             	mov    %eax,0x4(%edi)
40f71c:	c1 e2 05             	shl    $0x5,%edx
40f71f:	8b c6                	mov    %esi,%eax
40f721:	33 d1                	xor    %ecx,%edx
40f723:	81 e2 e0 3f 00 00    	and    $0x3fe0,%edx
40f729:	33 ca                	xor    %edx,%ecx
40f72b:	8b 55 f4             	mov    -0xc(%ebp),%edx
40f72e:	f0 0f b1 0a          	lock cmpxchg %ecx,(%edx)
40f732:	3b c6                	cmp    %esi,%eax
40f734:	74 07                	je     0x40f73d
40f736:	8b f0                	mov    %eax,%esi
40f738:	e9 6f ff ff ff       	jmp    0x40f6ac
40f73d:	f7 d6                	not    %esi
40f73f:	83 e6 01             	and    $0x1,%esi
40f742:	83 67 10 00          	andl   $0x0,0x10(%edi)
40f746:	89 37                	mov    %esi,(%edi)
40f748:	5f                   	pop    %edi
40f749:	5e                   	pop    %esi
40f74a:	5b                   	pop    %ebx
40f74b:	c9                   	leave
40f74c:	c2 08 00             	ret    $0x8
40f74f:	8b ff                	mov    %edi,%edi
40f751:	55                   	push   %ebp
40f752:	8b ec                	mov    %esp,%ebp
40f754:	83 ec 0c             	sub    $0xc,%esp
40f757:	53                   	push   %ebx
40f758:	8b c2                	mov    %edx,%eax
40f75a:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40f75d:	33 db                	xor    %ebx,%ebx
40f75f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f762:	83 f8 05             	cmp    $0x5,%eax
40f765:	56                   	push   %esi
40f766:	8b 31                	mov    (%ecx),%esi
40f768:	0f 94 c3             	sete   %bl
40f76b:	57                   	push   %edi
40f76c:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f76f:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40f772:	83 67 04 00          	andl   $0x0,0x4(%edi)
40f776:	8b ce                	mov    %esi,%ecx
40f778:	83 c9 01             	or     $0x1,%ecx
40f77b:	8b c1                	mov    %ecx,%eax
40f77d:	c1 e8 16             	shr    $0x16,%eax
40f780:	83 e0 01             	and    $0x1,%eax
40f783:	3b c3                	cmp    %ebx,%eax
40f785:	74 36                	je     0x40f7bd
40f787:	8b d1                	mov    %ecx,%edx
40f789:	c1 ea 0f             	shr    $0xf,%edx
40f78c:	83 e2 7f             	and    $0x7f,%edx
40f78f:	76 1f                	jbe    0x40f7b0
40f791:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f794:	33 c0                	xor    %eax,%eax
40f796:	83 7d fc 01          	cmpl   $0x1,-0x4(%ebp)
40f79a:	0f 94 c0             	sete   %al
40f79d:	81 e1 ff 7f c0 ff    	and    $0xffc07fff,%ecx
40f7a3:	89 57 04             	mov    %edx,0x4(%edi)
40f7a6:	8d 04 85 01 00 00 00 	lea    0x1(,%eax,4),%eax
40f7ad:	89 47 08             	mov    %eax,0x8(%edi)
40f7b0:	8b c3                	mov    %ebx,%eax
40f7b2:	81 e1 ff ff bf ff    	and    $0xffbfffff,%ecx
40f7b8:	c1 e0 16             	shl    $0x16,%eax
40f7bb:	0b c8                	or     %eax,%ecx
40f7bd:	8b c1                	mov    %ecx,%eax
40f7bf:	c1 e8 0f             	shr    $0xf,%eax
40f7c2:	83 e0 7f             	and    $0x7f,%eax
40f7c5:	8d 50 01             	lea    0x1(%eax),%edx
40f7c8:	83 fa 7f             	cmp    $0x7f,%edx
40f7cb:	77 04                	ja     0x40f7d1
40f7cd:	3b d0                	cmp    %eax,%edx
40f7cf:	73 0f                	jae    0x40f7e0
40f7d1:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40f7d4:	33 d2                	xor    %edx,%edx
40f7d6:	89 5f 08             	mov    %ebx,0x8(%edi)
40f7d9:	42                   	inc    %edx
40f7da:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40f7dd:	89 47 04             	mov    %eax,0x4(%edi)
40f7e0:	c1 e2 0f             	shl    $0xf,%edx
40f7e3:	8b c6                	mov    %esi,%eax
40f7e5:	33 d1                	xor    %ecx,%edx
40f7e7:	81 e2 00 80 3f 00    	and    $0x3f8000,%edx
40f7ed:	33 ca                	xor    %edx,%ecx
40f7ef:	8b 55 f4             	mov    -0xc(%ebp),%edx
40f7f2:	f0 0f b1 0a          	lock cmpxchg %ecx,(%edx)
40f7f6:	3b c6                	cmp    %esi,%eax
40f7f8:	74 07                	je     0x40f801
40f7fa:	8b f0                	mov    %eax,%esi