40a995:	74 1c                	je     0x40a9b3
40a997:	ff 75 10             	push   0x10(%ebp)
40a99a:	ff 75 08             	push   0x8(%ebp)
40a99d:	50                   	push   %eax
40a99e:	e8 7c 5f 00 00       	call   0x41091f
40a9a3:	eb 0e                	jmp    0x40a9b3
40a9a5:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40a9a9:	76 08                	jbe    0x40a9b3
40a9ab:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a9ae:	33 c0                	xor    %eax,%eax
40a9b0:	66 89 01             	mov    %ax,(%ecx)
40a9b3:	5e                   	pop    %esi
40a9b4:	5b                   	pop    %ebx
40a9b5:	c9                   	leave
40a9b6:	c2 0c 00             	ret    $0xc
40a9b9:	56                   	push   %esi
40a9ba:	6a 01                	push   $0x1
40a9bc:	8b f1                	mov    %ecx,%esi
40a9be:	e8 db ec ff ff       	call   0x40969e
40a9c3:	83 66 10 00          	andl   $0x0,0x10(%esi)
40a9c7:	8b c6                	mov    %esi,%eax
40a9c9:	5e                   	pop    %esi
40a9ca:	c3                   	ret
40a9cb:	56                   	push   %esi
40a9cc:	8b f1                	mov    %ecx,%esi
40a9ce:	ff 76 10             	push   0x10(%esi)
40a9d1:	e8 25 1a 01 00       	call   0x41c3fb
40a9d6:	59                   	pop    %ecx
40a9d7:	8b ce                	mov    %esi,%ecx
40a9d9:	5e                   	pop    %esi
40a9da:	e9 f5 ec ff ff       	jmp    0x4096d4
40a9df:	56                   	push   %esi
40a9e0:	8b f1                	mov    %ecx,%esi
40a9e2:	83 7e 10 00          	cmpl   $0x0,0x10(%esi)
40a9e6:	75 0e                	jne    0x40a9f6
40a9e8:	68 04 00 04 00       	push   $0x40004
40a9ed:	e8 d3 f0 00 00       	call   0x419ac5
40a9f2:	59                   	pop    %ecx
40a9f3:	89 46 10             	mov    %eax,0x10(%esi)
40a9f6:	5e                   	pop    %esi
40a9f7:	c3                   	ret
40a9f8:	8b 44 24 08          	mov    0x8(%esp),%eax
40a9fc:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40aa00:	89 01                	mov    %eax,(%ecx)
40aa02:	c2 08 00             	ret    $0x8
40aa05:	56                   	push   %esi
40aa06:	57                   	push   %edi
40aa07:	8b 7c 24 0c          	mov    0xc(%esp),%edi
40aa0b:	8b cf                	mov    %edi,%ecx
40aa0d:	e8 3d ed ff ff       	call   0x40974f
40aa12:	8b f0                	mov    %eax,%esi
40aa14:	25 00 c0 00 00       	and    $0xc000,%eax
40aa19:	8b cf                	mov    %edi,%ecx
40aa1b:	74 72                	je     0x40aa8f
40aa1d:	3d 00 40 00 00       	cmp    $0x4000,%eax
40aa22:	74 42                	je     0x40aa66
40aa24:	6a 02                	push   $0x2
40aa26:	3d 00 80 00 00       	cmp    $0x8000,%eax
40aa2b:	74 25                	je     0x40aa52
40aa2d:	e8 06 ed ff ff       	call   0x409738
40aa32:	8b cf                	mov    %edi,%ecx
40aa34:	e8 16 ed ff ff       	call   0x40974f
40aa39:	8b f0                	mov    %eax,%esi
40aa3b:	6a 10                	push   $0x10
40aa3d:	8b cf                	mov    %edi,%ecx
40aa3f:	c1 e6 10             	shl    $0x10,%esi
40aa42:	e8 f1 ec ff ff       	call   0x409738
40aa47:	8b cf                	mov    %edi,%ecx
40aa49:	e8 01 ed ff ff       	call   0x40974f
40aa4e:	0b f0                	or     %eax,%esi
40aa50:	eb 0e                	jmp    0x40aa60
40aa52:	e8 e1 ec ff ff       	call   0x409738
40aa57:	8b cf                	mov    %edi,%ecx
40aa59:	e8 f1 ec ff ff       	call   0x40974f
40aa5e:	8b f0                	mov    %eax,%esi
40aa60:	6a 10                	push   $0x10
40aa62:	8b cf                	mov    %edi,%ecx
40aa64:	eb 20                	jmp    0x40aa86
40aa66:	f7 c6 00 3c 00 00    	test   $0x3c00,%esi
40aa6c:	75 0d                	jne    0x40aa7b
40aa6e:	c1 ee 02             	shr    $0x2,%esi
40aa71:	81 ce 00 ff ff ff    	or     $0xffffff00,%esi
40aa77:	6a 0e                	push   $0xe
40aa79:	eb 0b                	jmp    0x40aa86
40aa7b:	c1 ee 06             	shr    $0x6,%esi
40aa7e:	81 e6 ff 00 00 00    	and    $0xff,%esi
40aa84:	6a 0a                	push   $0xa
40aa86:	e8 ad ec ff ff       	call   0x409738
40aa8b:	8b c6                	mov    %esi,%eax
40aa8d:	eb 0f                	jmp    0x40aa9e
40aa8f:	6a 06                	push   $0x6
40aa91:	e8 a2 ec ff ff       	call   0x409738
40aa96:	8b c6                	mov    %esi,%eax
40aa98:	c1 e8 0a             	shr    $0xa,%eax
40aa9b:	83 e0 0f             	and    $0xf,%eax
40aa9e:	5f                   	pop    %edi
40aa9f:	5e                   	pop    %esi
40aaa0:	c2 04 00             	ret    $0x4
40aaa3:	55                   	push   %ebp
40aaa4:	8b ec                	mov    %esp,%ebp
40aaa6:	8b 55 08             	mov    0x8(%ebp),%edx
40aaa9:	b8 00 00 04 00       	mov    $0x40000,%eax
40aaae:	3b d0                	cmp    %eax,%edx
40aab0:	73 21                	jae    0x40aad3
40aab2:	8b 49 10             	mov    0x10(%ecx),%ecx
40aab5:	03 ca                	add    %edx,%ecx
40aab7:	39 4d 0c             	cmp    %ecx,0xc(%ebp)
40aaba:	74 17                	je     0x40aad3
40aabc:	2b c2                	sub    %edx,%eax
40aabe:	39 45 10             	cmp    %eax,0x10(%ebp)
40aac1:	73 03                	jae    0x40aac6
40aac3:	8b 45 10             	mov    0x10(%ebp),%eax
40aac6:	50                   	push   %eax
40aac7:	ff 75 0c             	push   0xc(%ebp)
40aaca:	51                   	push   %ecx
40aacb:	e8 a0 1a 01 00       	call   0x41c570
40aad0:	83 c4 0c             	add    $0xc,%esp
40aad3:	5d                   	pop    %ebp
40aad4:	c2 0c 00             	ret    $0xc
40aad7:	56                   	push   %esi
40aad8:	8b 74 24 0c          	mov    0xc(%esp),%esi
40aadc:	56                   	push   %esi
40aadd:	ff 74 24 0c          	push   0xc(%esp)
40aae1:	6a ff                	push   $0xffffffff
40aae3:	e8 95 ac ff ff       	call   0x40577d
40aae8:	33 d2                	xor    %edx,%edx
40aaea:	f7 d0                	not    %eax
40aaec:	33 c9                	xor    %ecx,%ecx
40aaee:	39 81 6c f0 42 00    	cmp    %eax,0x42f06c(%ecx)
40aaf4:	75 08                	jne    0x40aafe
40aaf6:	39 b1 68 f0 42 00    	cmp    %esi,0x42f068(%ecx)
40aafc:	74 0f                	je     0x40ab0d
40aafe:	83 c1 0c             	add    $0xc,%ecx
40ab01:	42                   	inc    %edx
40ab02:	83 f9 48             	cmp    $0x48,%ecx
40ab05:	72 e7                	jb     0x40aaee
40ab07:	33 c0                	xor    %eax,%eax
40ab09:	5e                   	pop    %esi
40ab0a:	c2 08 00             	ret    $0x8
40ab0d:	6b d2 0c             	imul   $0xc,%edx,%edx
40ab10:	8b 82 70 f0 42 00    	mov    0x42f070(%edx),%eax
40ab16:	eb f1                	jmp    0x40ab09
40ab18:	8b 44 24 08          	mov    0x8(%esp),%eax
40ab1c:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40ab20:	99                   	cltd
40ab21:	83 e2 07             	and    $0x7,%edx
40ab24:	03 c2                	add    %edx,%eax
40ab26:	c1 f8 03             	sar    $0x3,%eax
40ab29:	0f b6 14 08          	movzbl (%eax,%ecx,1),%edx
40ab2d:	40                   	inc    %eax
40ab2e:	56                   	push   %esi
40ab2f:	0f b6 34 08          	movzbl (%eax,%ecx,1),%esi
40ab33:	8d 4c 08 01          	lea    0x1(%eax,%ecx,1),%ecx
40ab37:	0f b6 41 01          	movzbl 0x1(%ecx),%eax
40ab3b:	0f b6 09             	movzbl (%ecx),%ecx
40ab3e:	c1 e0 08             	shl    $0x8,%eax
40ab41:	0b c1                	or     %ecx,%eax
40ab43:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40ab47:	c1 e6 08             	shl    $0x8,%esi
40ab4a:	0b d6                	or     %esi,%edx
40ab4c:	c1 e0 10             	shl    $0x10,%eax
40ab4f:	0b c2                	or     %edx,%eax
40ab51:	83 e1 07             	and    $0x7,%ecx
40ab54:	d3 e8                	shr    %cl,%eax
40ab56:	6a 20                	push   $0x20
40ab58:	59                   	pop    %ecx
40ab59:	2b 4c 24 10          	sub    0x10(%esp),%ecx
40ab5d:	83 ca ff             	or     $0xffffffff,%edx
40ab60:	d3 ea                	shr    %cl,%edx
40ab62:	5e                   	pop    %esi
40ab63:	23 c2                	and    %edx,%eax
40ab65:	c2 0c 00             	ret    $0xc
40ab68:	55                   	push   %ebp
40ab69:	8b ec                	mov    %esp,%ebp
40ab6b:	8b 4d 10             	mov    0x10(%ebp),%ecx
40ab6e:	8b c1                	mov    %ecx,%eax
40ab70:	99                   	cltd
40ab71:	56                   	push   %esi
40ab72:	83 e2 07             	and    $0x7,%edx
40ab75:	03 c2                	add    %edx,%eax
40ab77:	83 e1 07             	and    $0x7,%ecx
40ab7a:	57                   	push   %edi
40ab7b:	8b f0                	mov    %eax,%esi
40ab7d:	8b c1                	mov    %ecx,%eax
40ab7f:	6a 20                	push   $0x20
40ab81:	59                   	pop    %ecx
40ab82:	2b 4d 14             	sub    0x14(%ebp),%ecx
40ab85:	83 ca ff             	or     $0xffffffff,%edx
40ab88:	d3 ea                	shr    %cl,%edx
40ab8a:	8b c8                	mov    %eax,%ecx
40ab8c:	8b 45 08             	mov    0x8(%ebp),%eax
40ab8f:	d3 65 0c             	shll   %cl,0xc(%ebp)
40ab92:	d3 e2                	shl    %cl,%edx
40ab94:	c1 fe 03             	sar    $0x3,%esi
40ab97:	33 ff                	xor    %edi,%edi
40ab99:	03 f0                	add    %eax,%esi
40ab9b:	f7 d2                	not    %edx
40ab9d:	8a 04 3e             	mov    (%esi,%edi,1),%al
40aba0:	22 c2                	and    %dl,%al
40aba2:	0a 45 0c             	or     0xc(%ebp),%al
40aba5:	c1 6d 0c 08          	shrl   $0x8,0xc(%ebp)
40aba9:	c1 ea 08             	shr    $0x8,%edx
40abac:	81 ca 00 00 00 ff    	or     $0xff000000,%edx
40abb2:	88 04 3e             	mov    %al,(%esi,%edi,1)
40abb5:	47                   	inc    %edi
40abb6:	83 ff 04             	cmp    $0x4,%edi
40abb9:	72 e2                	jb     0x40ab9d
40abbb:	5f                   	pop    %edi
40abbc:	5e                   	pop    %esi
40abbd:	5d                   	pop    %ebp
40abbe:	c2 10 00             	ret    $0x10
40abc1:	8b 44 24 04          	mov    0x4(%esp),%eax
40abc5:	56                   	push   %esi
40abc6:	8b f1                	mov    %ecx,%esi
40abc8:	01 46 04             	add    %eax,0x4(%esi)
40abcb:	8b 4e 04             	mov    0x4(%esi),%ecx
40abce:	3b 4e 08             	cmp    0x8(%esi),%ecx
40abd1:	76 64                	jbe    0x40ac37
40abd3:	8b 46 0c             	mov    0xc(%esi),%eax
40abd6:	53                   	push   %ebx
40abd7:	55                   	push   %ebp
40abd8:	57                   	push   %edi
40abd9:	bd 74 2a 43 00       	mov    $0x432a74,%ebp
40abde:	85 c0                	test   %eax,%eax
40abe0:	74 1a                	je     0x40abfc
40abe2:	3b c8                	cmp    %eax,%ecx
40abe4:	76 16                	jbe    0x40abfc
40abe6:	50                   	push   %eax
40abe7:	68 f0 a3 42 00       	push   $0x42a3f0
40abec:	55                   	push   %ebp
40abed:	e8 6b b9 ff ff       	call   0x40655d
40abf2:	83 c4 0c             	add    $0xc,%esp
40abf5:	8b cd                	mov    %ebp,%ecx
40abf7:	e8 0c b9 ff ff       	call   0x406508
40abfc:	8b 46 08             	mov    0x8(%esi),%eax
40abff:	8b c8                	mov    %eax,%ecx
40ac01:	c1 e9 02             	shr    $0x2,%ecx
40ac04:	8d 44 01 20          	lea    0x20(%ecx,%eax,1),%eax
40ac08:	8b 4e 04             	mov    0x4(%esi),%ecx
40ac0b:	8b d9                	mov    %ecx,%ebx
40ac0d:	3b c8                	cmp    %eax,%ecx
40ac0f:	77 02                	ja     0x40ac13
40ac11:	8b d8                	mov    %eax,%ebx
40ac13:	8b c3                	mov    %ebx,%eax
40ac15:	6b c0 28             	imul   $0x28,%eax,%eax
40ac18:	50                   	push   %eax
40ac19:	ff 36                	push   (%esi)
40ac1b:	e8 50 f3 00 00       	call   0x419f70
40ac20:	8b f8                	mov    %eax,%edi
40ac22:	59                   	pop    %ecx
40ac23:	59                   	pop    %ecx
40ac24:	85 ff                	test   %edi,%edi
40ac26:	75 07                	jne    0x40ac2f
40ac28:	8b cd                	mov    %ebp,%ecx
40ac2a:	e8 d9 b8 ff ff       	call   0x406508
40ac2f:	89 3e                	mov    %edi,(%esi)
40ac31:	5f                   	pop    %edi
40ac32:	5d                   	pop    %ebp
40ac33:	89 5e 08             	mov    %ebx,0x8(%esi)
40ac36:	5b                   	pop    %ebx
40ac37:	5e                   	pop    %esi
40ac38:	c2 04 00             	ret    $0x4
40ac3b:	55                   	push   %ebp
40ac3c:	8b ec                	mov    %esp,%ebp
40ac3e:	53                   	push   %ebx
40ac3f:	56                   	push   %esi
40ac40:	57                   	push   %edi
40ac41:	8b f9                	mov    %ecx,%edi
40ac43:	83 67 04 00          	andl   $0x0,0x4(%edi)
40ac47:	83 27 00             	andl   $0x0,(%edi)
40ac4a:	b8 00 80 00 00       	mov    $0x8000,%eax
40ac4f:	39 45 0c             	cmp    %eax,0xc(%ebp)
40ac52:	73 03                	jae    0x40ac57
40ac54:	8b 45 0c             	mov    0xc(%ebp),%eax
40ac57:	8b 75 08             	mov    0x8(%ebp),%esi
40ac5a:	50                   	push   %eax
40ac5b:	56                   	push   %esi
40ac5c:	ff 77 0c             	push   0xc(%edi)
40ac5f:	e8 0c 10 01 00       	call   0x41bc70
40ac64:	33 c0                	xor    %eax,%eax
40ac66:	40                   	inc    %eax
40ac67:	83 c4 0c             	add    $0xc,%esp
40ac6a:	32 db                	xor    %bl,%bl
40ac6c:	39 45 0c             	cmp    %eax,0xc(%ebp)
40ac6f:	76 09                	jbe    0x40ac7a
40ac71:	32 1c 30             	xor    (%eax,%esi,1),%bl
40ac74:	40                   	inc    %eax
40ac75:	3b 45 0c             	cmp    0xc(%ebp),%eax
40ac78:	72 f7                	jb     0x40ac71
40ac7a:	6a 08                	push   $0x8
40ac7c:	8b cf                	mov    %edi,%ecx
40ac7e:	e8 b5 ea ff ff       	call   0x409738
40ac83:	8b 75 10             	mov    0x10(%ebp),%esi
40ac86:	8b 45 08             	mov    0x8(%ebp),%eax
40ac89:	83 66 14 00          	andl   $0x0,0x14(%esi)
40ac8d:	3a 18                	cmp    (%eax),%bl
40ac8f:	75 47                	jne    0x40acd8
40ac91:	ff 75 0c             	push   0xc(%ebp)
40ac94:	8b cf                	mov    %edi,%ecx
40ac96:	50                   	push   %eax
40ac97:	e8 3b fe ff ff       	call   0x40aad7
40ac9c:	8b f8                	mov    %eax,%edi
40ac9e:	85 ff                	test   %edi,%edi
40aca0:	74 36                	je     0x40acd8
40aca2:	6a 01                	push   $0x1
40aca4:	8b ce                	mov    %esi,%ecx
40aca6:	e8 16 ff ff ff       	call   0x40abc1
40acab:	8b 46 14             	mov    0x14(%esi),%eax
40acae:	8d 48 01             	lea    0x1(%eax),%ecx
40acb1:	6b c0 28             	imul   $0x28,%eax,%eax
40acb4:	03 06                	add    (%esi),%eax
40acb6:	89 4e 14             	mov    %ecx,0x14(%esi)
40acb9:	8d 48 0c             	lea    0xc(%eax),%ecx
40acbc:	89 39                	mov    %edi,(%ecx)
40acbe:	89 48 14             	mov    %ecx,0x14(%eax)
40acc1:	8d 48 1c             	lea    0x1c(%eax),%ecx
40acc4:	6a 03                	push   $0x3
40acc6:	89 48 24             	mov    %ecx,0x24(%eax)
40acc9:	59                   	pop    %ecx
40acca:	c7 00 28 00 00 00    	movl   $0x28,(%eax)
40acd0:	89 48 18             	mov    %ecx,0x18(%eax)
40acd3:	89 48 08             	mov    %ecx,0x8(%eax)
40acd6:	eb 60                	jmp    0x40ad38
40acd8:	6a 01                	push   $0x1
40acda:	8b ce                	mov    %esi,%ecx
40acdc:	e8 e0 fe ff ff       	call   0x40abc1
40ace1:	8b 46 14             	mov    0x14(%esi),%eax
40ace4:	8d 48 01             	lea    0x1(%eax),%ecx
40ace7:	6b c0 28             	imul   $0x28,%eax,%eax
40acea:	03 06                	add    (%esi),%eax
40acec:	89 4e 14             	mov    %ecx,0x14(%esi)
40acef:	8d 48 0c             	lea    0xc(%eax),%ecx
40acf2:	89 48 14             	mov    %ecx,0x14(%eax)
40acf5:	8d 48 1c             	lea    0x1c(%eax),%ecx
40acf8:	89 48 24             	mov    %ecx,0x24(%eax)
40acfb:	6a 03                	push   $0x3
40acfd:	59                   	pop    %ecx
40acfe:	89 48 18             	mov    %ecx,0x18(%eax)
40ad01:	89 48 08             	mov    %ecx,0x8(%eax)
40ad04:	33 d2                	xor    %edx,%edx
40ad06:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ad0c:	33 c9                	xor    %ecx,%ecx
40ad0e:	39 56 14             	cmp    %edx,0x14(%esi)
40ad11:	7e 25                	jle    0x40ad38
40ad13:	33 ff                	xor    %edi,%edi
40ad15:	8b 06                	mov    (%esi),%eax
40ad17:	03 c7                	add    %edi,%eax
40ad19:	39 50 14             	cmp    %edx,0x14(%eax)
40ad1c:	75 06                	jne    0x40ad24
40ad1e:	8d 58 0c             	lea    0xc(%eax),%ebx