40aae7:	80 60 ff 00          	andb   $0x0,-0x1(%eax)
40aaeb:	89 7e 08             	mov    %edi,0x8(%esi)
40aaee:	03 7e 04             	add    0x4(%esi),%edi
40aaf1:	89 5e 0c             	mov    %ebx,0xc(%esi)
40aaf4:	80 27 00             	andb   $0x0,(%edi)
40aaf7:	5f                   	pop    %edi
40aaf8:	5e                   	pop    %esi
40aaf9:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ab00:	5b                   	pop    %ebx
40ab01:	c9                   	leave
40ab02:	c2 04 00             	ret    $0x4
40ab05:	80 7c 24 04 00       	cmpb   $0x0,0x4(%esp)
40ab0a:	56                   	push   %esi
40ab0b:	8b f1                	mov    %ecx,%esi
40ab0d:	74 22                	je     0x40ab31
40ab0f:	8b 46 04             	mov    0x4(%esi),%eax
40ab12:	85 c0                	test   %eax,%eax
40ab14:	74 1b                	je     0x40ab31
40ab16:	8d 48 ff             	lea    -0x1(%eax),%ecx
40ab19:	8a 40 ff             	mov    -0x1(%eax),%al
40ab1c:	84 c0                	test   %al,%al
40ab1e:	74 0a                	je     0x40ab2a
40ab20:	3c ff                	cmp    $0xff,%al
40ab22:	74 06                	je     0x40ab2a
40ab24:	fe c8                	dec    %al
40ab26:	88 01                	mov    %al,(%ecx)
40ab28:	eb 07                	jmp    0x40ab31
40ab2a:	51                   	push   %ecx
40ab2b:	e8 0d 22 01 00       	call   0x41cd3d
40ab30:	59                   	pop    %ecx
40ab31:	83 66 04 00          	andl   $0x0,0x4(%esi)
40ab35:	83 66 08 00          	andl   $0x0,0x8(%esi)
40ab39:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40ab3d:	5e                   	pop    %esi
40ab3e:	c2 04 00             	ret    $0x4
40ab41:	b8 5c 77 42 00       	mov    $0x42775c,%eax
40ab46:	e8 e5 10 00 00       	call   0x40bc30
40ab4b:	51                   	push   %ecx
40ab4c:	83 ec 10             	sub    $0x10,%esp
40ab4f:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
40ab53:	53                   	push   %ebx
40ab54:	56                   	push   %esi
40ab55:	57                   	push   %edi
40ab56:	8b f1                	mov    %ecx,%esi
40ab58:	89 65 f0             	mov    %esp,-0x10(%ebp)
40ab5b:	89 75 e8             	mov    %esi,-0x18(%ebp)
40ab5e:	e8 d1 00 00 00       	call   0x40ac34
40ab63:	88 45 e0             	mov    %al,-0x20(%ebp)
40ab66:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40ab69:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ab6d:	84 c0                	test   %al,%al
40ab6f:	75 09                	jne    0x40ab7a
40ab71:	c7 45 ec 04 00 00 00 	movl   $0x4,-0x14(%ebp)
40ab78:	eb 56                	jmp    0x40abd0
40ab7a:	8b 06                	mov    (%esi),%eax
40ab7c:	ff 75 08             	push   0x8(%ebp)
40ab7f:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40ab83:	8b 40 04             	mov    0x4(%eax),%eax
40ab86:	8b 4c 30 28          	mov    0x28(%eax,%esi,1),%ecx
40ab8a:	e8 2f 01 00 00       	call   0x40acbe
40ab8f:	33 c9                	xor    %ecx,%ecx
40ab91:	83 f8 ff             	cmp    $0xffffffff,%eax
40ab94:	0f 94 c1             	sete   %cl
40ab97:	84 c9                	test   %cl,%cl
40ab99:	74 31                	je     0x40abcc
40ab9b:	c7 45 ec 04 00 00 00 	movl   $0x4,-0x14(%ebp)
40aba2:	eb 28                	jmp    0x40abcc
40aba4:	8b 45 e8             	mov    -0x18(%ebp),%eax
40aba7:	8b 08                	mov    (%eax),%ecx
40aba9:	8b 49 04             	mov    0x4(%ecx),%ecx
40abac:	03 c8                	add    %eax,%ecx
40abae:	8b 41 04             	mov    0x4(%ecx),%eax
40abb1:	0c 04                	or     $0x4,%al
40abb3:	83 79 28 00          	cmpl   $0x0,0x28(%ecx)
40abb7:	75 02                	jne    0x40abbb
40abb9:	0c 04                	or     $0x4,%al
40abbb:	6a 01                	push   $0x1
40abbd:	50                   	push   %eax
40abbe:	e8 fd bf 00 00       	call   0x416bc0
40abc3:	b8 c9 ab 40 00       	mov    $0x40abc9,%eax
40abc8:	c3                   	ret
40abc9:	8b 75 e8             	mov    -0x18(%ebp),%esi
40abcc:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40abd0:	8b 06                	mov    (%esi),%eax
40abd2:	8b 48 04             	mov    0x4(%eax),%ecx
40abd5:	03 ce                	add    %esi,%ecx
40abd7:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40abdb:	74 16                	je     0x40abf3
40abdd:	8b 41 04             	mov    0x4(%ecx),%eax
40abe0:	0b 45 ec             	or     -0x14(%ebp),%eax
40abe3:	83 79 28 00          	cmpl   $0x0,0x28(%ecx)
40abe7:	75 02                	jne    0x40abeb
40abe9:	0c 04                	or     $0x4,%al
40abeb:	6a 00                	push   $0x0
40abed:	50                   	push   %eax
40abee:	e8 cd bf 00 00       	call   0x416bc0
40abf3:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40abf7:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40abfa:	e8 13 00 00 00       	call   0x40ac12
40abff:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40ac02:	8b c6                	mov    %esi,%eax
40ac04:	5f                   	pop    %edi
40ac05:	5e                   	pop    %esi
40ac06:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ac0d:	5b                   	pop    %ebx
40ac0e:	c9                   	leave
40ac0f:	c2 04 00             	ret    $0x4
40ac12:	56                   	push   %esi
40ac13:	8b f1                	mov    %ecx,%esi
40ac15:	e8 86 c6 00 00       	call   0x4172a0
40ac1a:	84 c0                	test   %al,%al
40ac1c:	75 14                	jne    0x40ac32
40ac1e:	8b 4e 04             	mov    0x4(%esi),%ecx
40ac21:	8b 01                	mov    (%ecx),%eax
40ac23:	8b 40 04             	mov    0x4(%eax),%eax
40ac26:	f6 44 08 0c 02       	testb  $0x2,0xc(%eax,%ecx,1)
40ac2b:	74 05                	je     0x40ac32
40ac2d:	e8 38 00 00 00       	call   0x40ac6a
40ac32:	5e                   	pop    %esi
40ac33:	c3                   	ret
40ac34:	56                   	push   %esi
40ac35:	8b f1                	mov    %ecx,%esi
40ac37:	33 c9                	xor    %ecx,%ecx
40ac39:	8b 06                	mov    (%esi),%eax
40ac3b:	8b 40 04             	mov    0x4(%eax),%eax
40ac3e:	03 c6                	add    %esi,%eax
40ac40:	39 48 04             	cmp    %ecx,0x4(%eax)
40ac43:	0f 94 c1             	sete   %cl
40ac46:	84 c9                	test   %cl,%cl
40ac48:	74 0e                	je     0x40ac58
40ac4a:	8b 40 2c             	mov    0x2c(%eax),%eax
40ac4d:	85 c0                	test   %eax,%eax
40ac4f:	74 07                	je     0x40ac58
40ac51:	8b c8                	mov    %eax,%ecx
40ac53:	e8 12 00 00 00       	call   0x40ac6a
40ac58:	8b 06                	mov    (%esi),%eax
40ac5a:	33 c9                	xor    %ecx,%ecx
40ac5c:	8b 40 04             	mov    0x4(%eax),%eax
40ac5f:	39 4c 30 04          	cmp    %ecx,0x4(%eax,%esi,1)
40ac63:	5e                   	pop    %esi
40ac64:	0f 94 c1             	sete   %cl
40ac67:	8a c1                	mov    %cl,%al
40ac69:	c3                   	ret
40ac6a:	56                   	push   %esi
40ac6b:	8b f1                	mov    %ecx,%esi
40ac6d:	57                   	push   %edi
40ac6e:	33 ff                	xor    %edi,%edi
40ac70:	8b 06                	mov    (%esi),%eax
40ac72:	8b 40 04             	mov    0x4(%eax),%eax
40ac75:	03 c6                	add    %esi,%eax
40ac77:	8b 48 04             	mov    0x4(%eax),%ecx
40ac7a:	80 e1 06             	and    $0x6,%cl
40ac7d:	f6 d9                	neg    %cl
40ac7f:	1b c9                	sbb    %ecx,%ecx
40ac81:	f7 d9                	neg    %ecx
40ac83:	84 c9                	test   %cl,%cl
40ac85:	75 12                	jne    0x40ac99
40ac87:	8b 40 28             	mov    0x28(%eax),%eax
40ac8a:	8b c8                	mov    %eax,%ecx
40ac8c:	8b 10                	mov    (%eax),%edx
40ac8e:	ff 52 2c             	call   *0x2c(%edx)
40ac91:	83 f8 ff             	cmp    $0xffffffff,%eax
40ac94:	75 03                	jne    0x40ac99
40ac96:	6a 04                	push   $0x4
40ac98:	5f                   	pop    %edi
40ac99:	8b 06                	mov    (%esi),%eax
40ac9b:	8b 48 04             	mov    0x4(%eax),%ecx
40ac9e:	03 ce                	add    %esi,%ecx
40aca0:	85 ff                	test   %edi,%edi
40aca2:	74 15                	je     0x40acb9
40aca4:	8b 41 04             	mov    0x4(%ecx),%eax
40aca7:	0b c7                	or     %edi,%eax
40aca9:	83 79 28 00          	cmpl   $0x0,0x28(%ecx)
40acad:	75 02                	jne    0x40acb1
40acaf:	0c 04                	or     $0x4,%al
40acb1:	6a 00                	push   $0x0
40acb3:	50                   	push   %eax
40acb4:	e8 07 bf 00 00       	call   0x416bc0
40acb9:	8b c6                	mov    %esi,%eax
40acbb:	5f                   	pop    %edi
40acbc:	5e                   	pop    %esi
40acbd:	c3                   	ret
40acbe:	8b 41 20             	mov    0x20(%ecx),%eax
40acc1:	8b 00                	mov    (%eax),%eax
40acc3:	85 c0                	test   %eax,%eax
40acc5:	74 1b                	je     0x40ace2
40acc7:	8b 51 30             	mov    0x30(%ecx),%edx
40acca:	8b 12                	mov    (%edx),%edx
40accc:	03 d0                	add    %eax,%edx
40acce:	3b c2                	cmp    %edx,%eax
40acd0:	73 10                	jae    0x40ace2
40acd2:	e8 19 00 00 00       	call   0x40acf0
40acd7:	8a 4c 24 04          	mov    0x4(%esp),%cl
40acdb:	88 08                	mov    %cl,(%eax)
40acdd:	0f b6 c1             	movzbl %cl,%eax
40ace0:	eb 0b                	jmp    0x40aced
40ace2:	0f b6 54 24 04       	movzbl 0x4(%esp),%edx
40ace7:	8b 01                	mov    (%ecx),%eax
40ace9:	52                   	push   %edx
40acea:	ff 50 04             	call   *0x4(%eax)
40aced:	c2 04 00             	ret    $0x4
40acf0:	8b 41 30             	mov    0x30(%ecx),%eax
40acf3:	ff 08                	decl   (%eax)
40acf5:	8b 49 20             	mov    0x20(%ecx),%ecx
40acf8:	8b 01                	mov    (%ecx),%eax
40acfa:	8d 50 01             	lea    0x1(%eax),%edx
40acfd:	89 11                	mov    %edx,(%ecx)
40acff:	c3                   	ret
40ad00:	b8 71 77 42 00       	mov    $0x427771,%eax
40ad05:	e8 26 0f 00 00       	call   0x40bc30
40ad0a:	83 ec 2c             	sub    $0x2c,%esp
40ad0d:	53                   	push   %ebx
40ad0e:	56                   	push   %esi
40ad0f:	57                   	push   %edi
40ad10:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40ad13:	6a 08                	push   $0x8
40ad15:	be 2c 12 43 00       	mov    $0x43122c,%esi
40ad1a:	59                   	pop    %ecx
40ad1b:	8d 7d c8             	lea    -0x38(%ebp),%edi
40ad1e:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40ad20:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
40ad22:	8d 45 c8             	lea    -0x38(%ebp),%eax
40ad25:	6a 23                	push   $0x23
40ad27:	50                   	push   %eax
40ad28:	a4                   	movsb  %ds:(%esi),%es:(%edi)
40ad29:	e8 dc fa ff ff       	call   0x40a80a
40ad2e:	8b 35 54 97 43 00    	mov    0x439754,%esi
40ad34:	59                   	pop    %ecx
40ad35:	59                   	pop    %ecx
40ad36:	ff d6                	call   *%esi
40ad38:	a9 00 00 00 80       	test   $0x80000000,%eax
40ad3d:	74 13                	je     0x40ad52
40ad3f:	ff d6                	call   *%esi
40ad41:	3c 04                	cmp    $0x4,%al
40ad43:	73 0d                	jae    0x40ad52
40ad45:	6a ff                	push   $0xffffffff
40ad47:	6a 00                	push   $0x0
40ad49:	6a 03                	push   $0x3
40ad4b:	e8 86 60 01 00       	call   0x420dd6
40ad50:	eb 4a                	jmp    0x40ad9c
40ad52:	68 c0 00 00 00       	push   $0xc0
40ad57:	e8 a5 1f 01 00       	call   0x41cd01
40ad5c:	59                   	pop    %ecx
40ad5d:	8b c8                	mov    %eax,%ecx
40ad5f:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40ad62:	33 db                	xor    %ebx,%ebx
40ad64:	3b cb                	cmp    %ebx,%ecx
40ad66:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40ad69:	74 09                	je     0x40ad74
40ad6b:	e8 e2 02 00 00       	call   0x40b052
40ad70:	8b f0                	mov    %eax,%esi
40ad72:	eb 02                	jmp    0x40ad76
40ad74:	33 f6                	xor    %esi,%esi
40ad76:	8b 3e                	mov    (%esi),%edi
40ad78:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40ad7c:	53                   	push   %ebx
40ad7d:	53                   	push   %ebx
40ad7e:	68 00 80 cf 00       	push   $0xcf8000
40ad83:	6a 02                	push   $0x2
40ad85:	8b ce                	mov    %esi,%ecx
40ad87:	ff 97 c0 00 00 00    	call   *0xc0(%edi)
40ad8d:	85 c0                	test   %eax,%eax
40ad8f:	75 0f                	jne    0x40ada0
40ad91:	3b f3                	cmp    %ebx,%esi
40ad93:	74 07                	je     0x40ad9c
40ad95:	6a 01                	push   $0x1
40ad97:	8b ce                	mov    %esi,%ecx
40ad99:	ff 57 04             	call   *0x4(%edi)
40ad9c:	33 c0                	xor    %eax,%eax
40ad9e:	eb 2b                	jmp    0x40adcb
40ada0:	8b 7d f0             	mov    -0x10(%ebp),%edi
40ada3:	8b ce                	mov    %esi,%ecx
40ada5:	ff 77 74             	push   0x74(%edi)
40ada8:	e8 3d 2a 01 00       	call   0x41d7ea
40adad:	ff 76 1c             	push   0x1c(%esi)
40adb0:	ff 15 3c 99 43 00    	call   *0x43993c
40adb6:	53                   	push   %ebx
40adb7:	53                   	push   %ebx
40adb8:	53                   	push   %ebx
40adb9:	53                   	push   %ebx
40adba:	89 77 1c             	mov    %esi,0x1c(%edi)
40adbd:	ff 15 58 97 43 00    	call   *0x439758
40adc3:	6a 01                	push   $0x1
40adc5:	a3 c0 50 43 00       	mov    %eax,0x4350c0
40adca:	58                   	pop    %eax
40adcb:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40adce:	5f                   	pop    %edi
40adcf:	5e                   	pop    %esi
40add0:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40add7:	5b                   	pop    %ebx
40add8:	c9                   	leave
40add9:	c3                   	ret
40adda:	ff 74 24 04          	push   0x4(%esp)
40adde:	e8 5a 1f 01 00       	call   0x41cd3d
40ade3:	59                   	pop    %ecx
40ade4:	c2 04 00             	ret    $0x4
40ade7:	56                   	push   %esi
40ade8:	8b f1                	mov    %ecx,%esi
40adea:	ff 35 c0 50 43 00    	push   0x4350c0
40adf0:	ff 15 50 97 43 00    	call   *0x439750
40adf6:	8b ce                	mov    %esi,%ecx
40adf8:	e8 a7 9d 01 00       	call   0x424ba4
40adfd:	5e                   	pop    %esi
40adfe:	c3                   	ret
40adff:	b8 84 77 42 00       	mov    $0x427784,%eax
40ae04:	e8 27 0e 00 00       	call   0x40bc30
40ae09:	83 ec 5c             	sub    $0x5c,%esp
40ae0c:	6a 00                	push   $0x0
40ae0e:	6a 64                	push   $0x64
40ae10:	8d 4d 98             	lea    -0x68(%ebp),%ecx
40ae13:	e8 af 23 01 00       	call   0x41d1c7
40ae18:	8b 10                	mov    (%eax),%edx
40ae1a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ae1e:	8b c8                	mov    %eax,%ecx
40ae20:	ff 92 c0 00 00 00    	call   *0xc0(%edx)
40ae26:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40ae2a:	8d 4d 98             	lea    -0x68(%ebp),%ecx
40ae2d:	e8 27 21 01 00       	call   0x41cf59
40ae32:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40ae35:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ae3c:	c9                   	leave
40ae3d:	c3                   	ret
40ae3e:	b8 98 77 42 00       	mov    $0x427798,%eax
40ae43:	e8 e8 0d 00 00       	call   0x40bc30
40ae48:	51                   	push   %ecx
40ae49:	83 ec 0c             	sub    $0xc,%esp
40ae4c:	53                   	push   %ebx
40ae4d:	56                   	push   %esi
40ae4e:	57                   	push   %edi
40ae4f:	33 db                	xor    %ebx,%ebx
40ae51:	89 65 f0             	mov    %esp,-0x10(%ebp)
40ae54:	ff 75 0c             	push   0xc(%ebp)
40ae57:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40ae5a:	e8 01 13 00 00       	call   0x40c160
40ae5f:	8b 75 08             	mov    0x8(%ebp),%esi
40ae62:	8b f8                	mov    %eax,%edi
40ae64:	59                   	pop    %ecx
40ae65:	8b 06                	mov    (%esi),%eax
40ae67:	8b 40 04             	mov    0x4(%eax),%eax
40ae6a:	8b 44 30 14          	mov    0x14(%eax,%esi,1),%eax
40ae6e:	3b c3                	cmp    %ebx,%eax
40ae70:	7e 08                	jle    0x40ae7a
40ae72:	3b c7                	cmp    %edi,%eax
40ae74:	76 04                	jbe    0x40ae7a
40ae76:	2b c7                	sub    %edi,%eax
40ae78:	8b d8                	mov    %eax,%ebx
40ae7a:	8b ce                	mov    %esi,%ecx
40ae7c:	e8 b3 fd ff ff       	call   0x40ac34
40ae81:	88 45 e4             	mov    %al,-0x1c(%ebp)
40ae84:	89 75 e8             	mov    %esi,-0x18(%ebp)