40a92c:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a930:	6a 01                	push   $0x1
40a932:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40a935:	e8 cb 01 00 00       	call   0x40ab05
40a93a:	32 c0                	xor    %al,%al
40a93c:	eb 3c                	jmp    0x40a97a
40a93e:	57                   	push   %edi
40a93f:	ff 75 ec             	push   -0x14(%ebp)
40a942:	56                   	push   %esi
40a943:	e8 28 14 00 00       	call   0x40bd70
40a948:	83 c4 0c             	add    $0xc,%esp
40a94b:	57                   	push   %edi
40a94c:	56                   	push   %esi
40a94d:	ff 75 0c             	push   0xc(%ebp)
40a950:	ff 75 08             	push   0x8(%ebp)
40a953:	e8 4f 75 ff ff       	call   0x401ea7
40a958:	83 c4 10             	add    $0x10,%esp
40a95b:	ff d6                	call   *%esi
40a95d:	6a 01                	push   $0x1
40a95f:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40a962:	88 5d fc             	mov    %bl,-0x4(%ebp)
40a965:	e8 9b 01 00 00       	call   0x40ab05
40a96a:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a96e:	6a 01                	push   $0x1
40a970:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40a973:	e8 8d 01 00 00       	call   0x40ab05
40a978:	b0 01                	mov    $0x1,%al
40a97a:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a97d:	5f                   	pop    %edi
40a97e:	5e                   	pop    %esi
40a97f:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a986:	5b                   	pop    %ebx
40a987:	c9                   	leave
40a988:	c3                   	ret
40a989:	6a 01                	push   $0x1
40a98b:	e8 75 01 00 00       	call   0x40ab05
40a990:	c3                   	ret
40a991:	56                   	push   %esi
40a992:	57                   	push   %edi
40a993:	8b 7c 24 10          	mov    0x10(%esp),%edi
40a997:	6a 01                	push   $0x1
40a999:	8b f1                	mov    %ecx,%esi
40a99b:	57                   	push   %edi
40a99c:	e8 25 00 00 00       	call   0x40a9c6
40a9a1:	84 c0                	test   %al,%al
40a9a3:	74 1a                	je     0x40a9bf
40a9a5:	57                   	push   %edi
40a9a6:	ff 74 24 10          	push   0x10(%esp)
40a9aa:	ff 76 04             	push   0x4(%esi)
40a9ad:	e8 be 13 00 00       	call   0x40bd70
40a9b2:	8b 46 04             	mov    0x4(%esi),%eax
40a9b5:	83 c4 0c             	add    $0xc,%esp
40a9b8:	89 7e 08             	mov    %edi,0x8(%esi)
40a9bb:	80 24 07 00          	andb   $0x0,(%edi,%eax,1)
40a9bf:	8b c6                	mov    %esi,%eax
40a9c1:	5f                   	pop    %edi
40a9c2:	5e                   	pop    %esi
40a9c3:	c2 08 00             	ret    $0x8
40a9c6:	56                   	push   %esi
40a9c7:	57                   	push   %edi
40a9c8:	8b 7c 24 0c          	mov    0xc(%esp),%edi
40a9cc:	8b f1                	mov    %ecx,%esi
40a9ce:	83 ff fd             	cmp    $0xfffffffd,%edi
40a9d1:	76 05                	jbe    0x40a9d8
40a9d3:	e8 88 b7 00 00       	call   0x416160
40a9d8:	8b 4e 04             	mov    0x4(%esi),%ecx
40a9db:	33 d2                	xor    %edx,%edx
40a9dd:	3b ca                	cmp    %edx,%ecx
40a9df:	74 17                	je     0x40a9f8
40a9e1:	8a 41 ff             	mov    -0x1(%ecx),%al
40a9e4:	3a c2                	cmp    %dl,%al
40a9e6:	74 10                	je     0x40a9f8
40a9e8:	3c ff                	cmp    $0xff,%al
40a9ea:	74 0c                	je     0x40a9f8
40a9ec:	3b fa                	cmp    %edx,%edi
40a9ee:	75 52                	jne    0x40aa42
40a9f0:	fe c8                	dec    %al
40a9f2:	52                   	push   %edx
40a9f3:	88 41 ff             	mov    %al,-0x1(%ecx)
40a9f6:	eb 0c                	jmp    0x40aa04
40a9f8:	3b fa                	cmp    %edx,%edi
40a9fa:	75 1e                	jne    0x40aa1a
40a9fc:	38 54 24 10          	cmp    %dl,0x10(%esp)
40aa00:	74 0b                	je     0x40aa0d
40aa02:	6a 01                	push   $0x1
40aa04:	8b ce                	mov    %esi,%ecx
40aa06:	e8 fa 00 00 00       	call   0x40ab05
40aa0b:	eb 09                	jmp    0x40aa16
40aa0d:	3b ca                	cmp    %edx,%ecx
40aa0f:	74 05                	je     0x40aa16
40aa11:	89 56 08             	mov    %edx,0x8(%esi)
40aa14:	88 11                	mov    %dl,(%ecx)
40aa16:	32 c0                	xor    %al,%al
40aa18:	eb 32                	jmp    0x40aa4c
40aa1a:	38 54 24 10          	cmp    %dl,0x10(%esp)
40aa1e:	74 1d                	je     0x40aa3d
40aa20:	8b 46 0c             	mov    0xc(%esi),%eax
40aa23:	83 f8 1f             	cmp    $0x1f,%eax
40aa26:	77 04                	ja     0x40aa2c
40aa28:	3b c7                	cmp    %edi,%eax
40aa2a:	73 0b                	jae    0x40aa37
40aa2c:	6a 01                	push   $0x1
40aa2e:	8b ce                	mov    %esi,%ecx
40aa30:	e8 d0 00 00 00       	call   0x40ab05
40aa35:	eb 0b                	jmp    0x40aa42
40aa37:	38 54 24 10          	cmp    %dl,0x10(%esp)
40aa3b:	75 0d                	jne    0x40aa4a
40aa3d:	39 7e 0c             	cmp    %edi,0xc(%esi)
40aa40:	73 08                	jae    0x40aa4a
40aa42:	57                   	push   %edi
40aa43:	8b ce                	mov    %esi,%ecx
40aa45:	e8 07 00 00 00       	call   0x40aa51
40aa4a:	b0 01                	mov    $0x1,%al
40aa4c:	5f                   	pop    %edi
40aa4d:	5e                   	pop    %esi
40aa4e:	c2 08 00             	ret    $0x8
40aa51:	b8 48 77 42 00       	mov    $0x427748,%eax
40aa56:	e8 d5 11 00 00       	call   0x40bc30
40aa5b:	51                   	push   %ecx
40aa5c:	51                   	push   %ecx
40aa5d:	51                   	push   %ecx
40aa5e:	53                   	push   %ebx
40aa5f:	8b 5d 08             	mov    0x8(%ebp),%ebx
40aa62:	56                   	push   %esi
40aa63:	83 cb 1f             	or     $0x1f,%ebx
40aa66:	57                   	push   %edi
40aa67:	8b f1                	mov    %ecx,%esi
40aa69:	83 fb fd             	cmp    $0xfffffffd,%ebx
40aa6c:	89 65 f0             	mov    %esp,-0x10(%ebp)
40aa6f:	89 75 ec             	mov    %esi,-0x14(%ebp)
40aa72:	76 03                	jbe    0x40aa77
40aa74:	8b 5d 08             	mov    0x8(%ebp),%ebx
40aa77:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40aa7b:	8d 43 02             	lea    0x2(%ebx),%eax
40aa7e:	85 c0                	test   %eax,%eax
40aa80:	7d 02                	jge    0x40aa84
40aa82:	33 c0                	xor    %eax,%eax
40aa84:	50                   	push   %eax
40aa85:	e8 77 22 01 00       	call   0x41cd01
40aa8a:	59                   	pop    %ecx
40aa8b:	89 45 08             	mov    %eax,0x8(%ebp)
40aa8e:	eb 25                	jmp    0x40aab5
40aa90:	8b 45 08             	mov    0x8(%ebp),%eax
40aa93:	89 45 e8             	mov    %eax,-0x18(%ebp)
40aa96:	83 c0 02             	add    $0x2,%eax
40aa99:	85 c0                	test   %eax,%eax
40aa9b:	7d 02                	jge    0x40aa9f
40aa9d:	33 c0                	xor    %eax,%eax
40aa9f:	50                   	push   %eax
40aaa0:	e8 5c 22 01 00       	call   0x41cd01
40aaa5:	89 45 08             	mov    %eax,0x8(%ebp)
40aaa8:	59                   	pop    %ecx
40aaa9:	b8 af aa 40 00       	mov    $0x40aaaf,%eax
40aaae:	c3                   	ret
40aaaf:	8b 75 ec             	mov    -0x14(%ebp),%esi
40aab2:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40aab5:	8b 46 08             	mov    0x8(%esi),%eax
40aab8:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40aabc:	85 c0                	test   %eax,%eax
40aabe:	76 11                	jbe    0x40aad1
40aac0:	50                   	push   %eax
40aac1:	8b 45 08             	mov    0x8(%ebp),%eax
40aac4:	ff 76 04             	push   0x4(%esi)
40aac7:	40                   	inc    %eax
40aac8:	50                   	push   %eax
40aac9:	e8 a2 12 00 00       	call   0x40bd70
40aace:	83 c4 0c             	add    $0xc,%esp
40aad1:	8b 7e 08             	mov    0x8(%esi),%edi
40aad4:	6a 01                	push   $0x1
40aad6:	8b ce                	mov    %esi,%ecx
40aad8:	e8 28 00 00 00       	call   0x40ab05
40aadd:	8b 45 08             	mov    0x8(%ebp),%eax
40aae0:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40aae3:	40                   	inc    %eax
40aae4:	89 46 04             	mov    %eax,0x4(%esi)
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