40e97e:	52                   	push   %edx
40e97f:	89 7d fc             	mov    %edi,-0x4(%ebp)
40e982:	8b 08                	mov    (%eax),%ecx
40e984:	50                   	push   %eax
40e985:	ff 51 0c             	call   *0xc(%ecx)
40e988:	85 c0                	test   %eax,%eax
40e98a:	0f 8c bc 00 00 00    	jl     0x40ea4c
40e990:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e993:	8b 08                	mov    (%eax),%ecx
40e995:	8d 55 f0             	lea    -0x10(%ebp),%edx
40e998:	52                   	push   %edx
40e999:	50                   	push   %eax
40e99a:	ff 51 0c             	call   *0xc(%ecx)
40e99d:	85 c0                	test   %eax,%eax
40e99f:	0f 8c 9e 00 00 00    	jl     0x40ea43
40e9a5:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e9a8:	33 f6                	xor    %esi,%esi
40e9aa:	66 39 78 30          	cmp    %di,0x30(%eax)
40e9ae:	0f 86 83 00 00 00    	jbe    0x40ea37
40e9b4:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e9b7:	8b 08                	mov    (%eax),%ecx
40e9b9:	8d 55 e4             	lea    -0x1c(%ebp),%edx
40e9bc:	52                   	push   %edx
40e9bd:	56                   	push   %esi
40e9be:	50                   	push   %eax
40e9bf:	ff 51 24             	call   *0x24(%ecx)
40e9c2:	85 c0                	test   %eax,%eax
40e9c4:	7c 0a                	jl     0x40e9d0
40e9c6:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e9c9:	83 e0 07             	and    $0x7,%eax
40e9cc:	3c 03                	cmp    $0x3,%al
40e9ce:	74 0e                	je     0x40e9de
40e9d0:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e9d3:	0f b7 40 30          	movzwl 0x30(%eax),%eax
40e9d7:	46                   	inc    %esi
40e9d8:	3b f0                	cmp    %eax,%esi
40e9da:	72 d8                	jb     0x40e9b4
40e9dc:	eb 59                	jmp    0x40ea37
40e9de:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e9e1:	8d 55 e0             	lea    -0x20(%ebp),%edx
40e9e4:	52                   	push   %edx
40e9e5:	56                   	push   %esi
40e9e6:	89 7d f8             	mov    %edi,-0x8(%ebp)
40e9e9:	8b 08                	mov    (%eax),%ecx
40e9eb:	50                   	push   %eax
40e9ec:	ff 51 20             	call   *0x20(%ecx)
40e9ef:	85 c0                	test   %eax,%eax
40e9f1:	7c 44                	jl     0x40ea37
40e9f3:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e9f6:	8b 08                	mov    (%eax),%ecx
40e9f8:	8d 55 f8             	lea    -0x8(%ebp),%edx
40e9fb:	52                   	push   %edx
40e9fc:	ff 75 e0             	push   -0x20(%ebp)
40e9ff:	50                   	push   %eax
40ea00:	ff 51 38             	call   *0x38(%ecx)
40ea03:	85 c0                	test   %eax,%eax
40ea05:	7c 30                	jl     0x40ea37
40ea07:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ea0a:	8b 08                	mov    (%eax),%ecx
40ea0c:	8d 55 e8             	lea    -0x18(%ebp),%edx
40ea0f:	52                   	push   %edx
40ea10:	50                   	push   %eax
40ea11:	ff 51 0c             	call   *0xc(%ecx)
40ea14:	85 c0                	test   %eax,%eax
40ea16:	7c 16                	jl     0x40ea2e
40ea18:	8b 75 e8             	mov    -0x18(%ebp),%esi
40ea1b:	8b 7d 08             	mov    0x8(%ebp),%edi
40ea1e:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ea21:	ff 75 e8             	push   -0x18(%ebp)
40ea24:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40ea25:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40ea26:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40ea27:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40ea28:	8b 08                	mov    (%eax),%ecx
40ea2a:	50                   	push   %eax
40ea2b:	ff 51 4c             	call   *0x4c(%ecx)
40ea2e:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ea31:	8b 08                	mov    (%eax),%ecx
40ea33:	50                   	push   %eax
40ea34:	ff 51 08             	call   *0x8(%ecx)
40ea37:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ea3a:	ff 75 f0             	push   -0x10(%ebp)
40ea3d:	8b 08                	mov    (%eax),%ecx
40ea3f:	50                   	push   %eax
40ea40:	ff 51 4c             	call   *0x4c(%ecx)
40ea43:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ea46:	8b 08                	mov    (%eax),%ecx
40ea48:	50                   	push   %eax
40ea49:	ff 51 08             	call   *0x8(%ecx)
40ea4c:	8b 45 ec             	mov    -0x14(%ebp),%eax
40ea4f:	8b 08                	mov    (%eax),%ecx
40ea51:	50                   	push   %eax
40ea52:	ff 51 08             	call   *0x8(%ecx)
40ea55:	68 ac 4b 49 00       	push   $0x494bac
40ea5a:	ff 75 08             	push   0x8(%ebp)
40ea5d:	e8 55 8b ff ff       	call   0x4075b7
40ea62:	59                   	pop    %ecx
40ea63:	59                   	pop    %ecx
40ea64:	f7 d8                	neg    %eax
40ea66:	5f                   	pop    %edi
40ea67:	1b c0                	sbb    %eax,%eax
40ea69:	5e                   	pop    %esi
40ea6a:	40                   	inc    %eax
40ea6b:	5b                   	pop    %ebx
40ea6c:	c9                   	leave
40ea6d:	c2 04 00             	ret    $0x4
40ea70:	55                   	push   %ebp
40ea71:	8b ec                	mov    %esp,%ebp
40ea73:	51                   	push   %ecx
40ea74:	56                   	push   %esi
40ea75:	57                   	push   %edi
40ea76:	8b f9                	mov    %ecx,%edi
40ea78:	6a 10                	push   $0x10
40ea7a:	8d 77 74             	lea    0x74(%edi),%esi
40ea7d:	6a 00                	push   $0x0
40ea7f:	56                   	push   %esi
40ea80:	e8 bb 97 00 00       	call   0x418240
40ea85:	8b 7f 4c             	mov    0x4c(%edi),%edi
40ea88:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ea8c:	83 c4 0c             	add    $0xc,%esp
40ea8f:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40ea92:	51                   	push   %ecx
40ea93:	68 9c 64 49 00       	push   $0x49649c
40ea98:	c7 06 10 00 00 00    	movl   $0x10,(%esi)
40ea9e:	8b 07                	mov    (%edi),%eax
40eaa0:	57                   	push   %edi
40eaa1:	ff 10                	call   *(%eax)
40eaa3:	85 c0                	test   %eax,%eax
40eaa5:	7c 13                	jl     0x40eaba
40eaa7:	8b 45 fc             	mov    -0x4(%ebp),%eax
40eaaa:	8b 08                	mov    (%eax),%ecx
40eaac:	56                   	push   %esi
40eaad:	50                   	push   %eax
40eaae:	ff 51 0c             	call   *0xc(%ecx)
40eab1:	8b 45 fc             	mov    -0x4(%ebp),%eax
40eab4:	8b 08                	mov    (%eax),%ecx
40eab6:	50                   	push   %eax
40eab7:	ff 51 08             	call   *0x8(%ecx)
40eaba:	5f                   	pop    %edi
40eabb:	5e                   	pop    %esi
40eabc:	c9                   	leave
40eabd:	c3                   	ret
40eabe:	55                   	push   %ebp
40eabf:	8b ec                	mov    %esp,%ebp
40eac1:	51                   	push   %ecx
40eac2:	51                   	push   %ecx
40eac3:	53                   	push   %ebx
40eac4:	56                   	push   %esi
40eac5:	8b f1                	mov    %ecx,%esi
40eac7:	66 8b 46 7c          	mov    0x7c(%esi),%ax
40eacb:	33 db                	xor    %ebx,%ebx
40eacd:	66 3b c3             	cmp    %bx,%ax
40ead0:	0f 84 83 00 00 00    	je     0x40eb59
40ead6:	39 5e 78             	cmp    %ebx,0x78(%esi)
40ead9:	74 7e                	je     0x40eb59
40eadb:	0f b7 c0             	movzwl %ax,%eax
40eade:	8d 04 40             	lea    (%eax,%eax,2),%eax
40eae1:	d1 e0                	shl    $1,%eax
40eae3:	57                   	push   %edi
40eae4:	50                   	push   %eax
40eae5:	e8 6b 15 03 00       	call   0x440055
40eaea:	8b f8                	mov    %eax,%edi
40eaec:	0f b7 46 7c          	movzwl 0x7c(%esi),%eax
40eaf0:	59                   	pop    %ecx
40eaf1:	50                   	push   %eax
40eaf2:	57                   	push   %edi
40eaf3:	ff 76 78             	push   0x78(%esi)
40eaf6:	ff 15 18 06 4b 00    	call   *0x4b0618
40eafc:	3b c3                	cmp    %ebx,%eax
40eafe:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40eb01:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40eb04:	7e 46                	jle    0x40eb4c
40eb06:	8b 55 08             	mov    0x8(%ebp),%edx
40eb09:	8b 72 04             	mov    0x4(%edx),%esi
40eb0c:	8b cf                	mov    %edi,%ecx
40eb0e:	81 fe 06 01 00 00    	cmp    $0x106,%esi
40eb14:	75 09                	jne    0x40eb1f
40eb16:	c7 45 08 10 00 00 00 	movl   $0x10,0x8(%ebp)
40eb1d:	eb 04                	jmp    0x40eb23
40eb1f:	83 65 08 00          	andl   $0x0,0x8(%ebp)
40eb23:	0f b6 19             	movzbl (%ecx),%ebx
40eb26:	83 e3 fd             	and    $0xfffffffd,%ebx
40eb29:	3b 5d 08             	cmp    0x8(%ebp),%ebx
40eb2c:	75 0a                	jne    0x40eb38
40eb2e:	66 8b 59 02          	mov    0x2(%ecx),%bx
40eb32:	66 3b 5a 08          	cmp    0x8(%edx),%bx
40eb36:	74 0d                	je     0x40eb45
40eb38:	ff 45 fc             	incl   -0x4(%ebp)
40eb3b:	83 c1 06             	add    $0x6,%ecx
40eb3e:	39 45 fc             	cmp    %eax,-0x4(%ebp)
40eb41:	7c cb                	jl     0x40eb0e
40eb43:	eb 07                	jmp    0x40eb4c
40eb45:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
40eb4c:	57                   	push   %edi
40eb4d:	e8 2e 15 03 00       	call   0x440080
40eb52:	8b 45 f8             	mov    -0x8(%ebp),%eax
40eb55:	59                   	pop    %ecx
40eb56:	5f                   	pop    %edi
40eb57:	eb 02                	jmp    0x40eb5b
40eb59:	33 c0                	xor    %eax,%eax
40eb5b:	5e                   	pop    %esi
40eb5c:	5b                   	pop    %ebx
40eb5d:	c9                   	leave
40eb5e:	c2 04 00             	ret    $0x4
40eb61:	55                   	push   %ebp
40eb62:	8b ec                	mov    %esp,%ebp
40eb64:	51                   	push   %ecx
40eb65:	56                   	push   %esi
40eb66:	8b f1                	mov    %ecx,%esi
40eb68:	f6 46 6d 40          	testb  $0x40,0x6d(%esi)
40eb6c:	75 08                	jne    0x40eb76
40eb6e:	8b 06                	mov    (%esi),%eax
40eb70:	ff 90 b0 00 00 00    	call   *0xb0(%eax)
40eb76:	8b 46 4c             	mov    0x4c(%esi),%eax
40eb79:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40eb7d:	8b 08                	mov    (%eax),%ecx
40eb7f:	8d 55 fc             	lea    -0x4(%ebp),%edx
40eb82:	52                   	push   %edx
40eb83:	68 9c 64 49 00       	push   $0x49649c
40eb88:	50                   	push   %eax
40eb89:	ff 11                	call   *(%ecx)
40eb8b:	85 c0                	test   %eax,%eax
40eb8d:	5e                   	pop    %esi
40eb8e:	7c 15                	jl     0x40eba5
40eb90:	8b 45 fc             	mov    -0x4(%ebp),%eax
40eb93:	ff 75 08             	push   0x8(%ebp)
40eb96:	8b 08                	mov    (%eax),%ecx
40eb98:	50                   	push   %eax
40eb99:	ff 51 10             	call   *0x10(%ecx)
40eb9c:	8b 45 fc             	mov    -0x4(%ebp),%eax
40eb9f:	8b 08                	mov    (%eax),%ecx
40eba1:	50                   	push   %eax
40eba2:	ff 51 08             	call   *0x8(%ecx)
40eba5:	c9                   	leave
40eba6:	c2 04 00             	ret    $0x4
40eba9:	55                   	push   %ebp
40ebaa:	8b ec                	mov    %esp,%ebp
40ebac:	51                   	push   %ecx
40ebad:	8b 41 4c             	mov    0x4c(%ecx),%eax
40ebb0:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ebb4:	8b 08                	mov    (%eax),%ecx
40ebb6:	8d 55 fc             	lea    -0x4(%ebp),%edx
40ebb9:	52                   	push   %edx
40ebba:	68 9c 64 49 00       	push   $0x49649c
40ebbf:	50                   	push   %eax
40ebc0:	ff 11                	call   *(%ecx)
40ebc2:	85 c0                	test   %eax,%eax
40ebc4:	7c 15                	jl     0x40ebdb
40ebc6:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ebc9:	ff 75 08             	push   0x8(%ebp)
40ebcc:	8b 08                	mov    (%eax),%ecx
40ebce:	50                   	push   %eax
40ebcf:	ff 51 18             	call   *0x18(%ecx)
40ebd2:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ebd5:	8b 08                	mov    (%eax),%ecx
40ebd7:	50                   	push   %eax
40ebd8:	ff 51 08             	call   *0x8(%ecx)
40ebdb:	c9                   	leave
40ebdc:	c2 04 00             	ret    $0x4
40ebdf:	55                   	push   %ebp
40ebe0:	8b ec                	mov    %esp,%ebp
40ebe2:	51                   	push   %ecx
40ebe3:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ebe7:	56                   	push   %esi
40ebe8:	8b f1                	mov    %ecx,%esi
40ebea:	8b 46 50             	mov    0x50(%esi),%eax
40ebed:	8b 08                	mov    (%eax),%ecx
40ebef:	8d 55 fc             	lea    -0x4(%ebp),%edx
40ebf2:	52                   	push   %edx
40ebf3:	50                   	push   %eax
40ebf4:	ff 51 0c             	call   *0xc(%ecx)
40ebf7:	85 c0                	test   %eax,%eax
40ebf9:	7c 1e                	jl     0x40ec19
40ebfb:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ebfe:	39 46 20             	cmp    %eax,0x20(%esi)
40ec01:	74 16                	je     0x40ec19
40ec03:	8b 4e 24             	mov    0x24(%esi),%ecx
40ec06:	85 c9                	test   %ecx,%ecx
40ec08:	89 46 20             	mov    %eax,0x20(%esi)
40ec0b:	74 0c                	je     0x40ec19
40ec0d:	50                   	push   %eax
40ec0e:	e8 d0 60 03 00       	call   0x444ce3
40ec13:	8b 46 24             	mov    0x24(%esi),%eax
40ec16:	89 70 4c             	mov    %esi,0x4c(%eax)
40ec19:	5e                   	pop    %esi
40ec1a:	c9                   	leave
40ec1b:	c3                   	ret
40ec1c:	56                   	push   %esi
40ec1d:	8b f1                	mov    %ecx,%esi
40ec1f:	8b 4e 24             	mov    0x24(%esi),%ecx
40ec22:	83 66 20 00          	andl   $0x0,0x20(%esi)
40ec26:	85 c9                	test   %ecx,%ecx
40ec28:	74 3e                	je     0x40ec68
40ec2a:	83 79 1c 00          	cmpl   $0x0,0x1c(%ecx)
40ec2e:	74 31                	je     0x40ec61
40ec30:	8b 01                	mov    (%ecx),%eax
40ec32:	57                   	push   %edi
40ec33:	ff 90 f0 00 00 00    	call   *0xf0(%eax)
40ec39:	8b f8                	mov    %eax,%edi
40ec3b:	8b 46 24             	mov    0x24(%esi),%eax
40ec3e:	ff 70 1c             	push   0x1c(%eax)
40ec41:	ff 15 64 07 4b 00    	call   *0x4b0764
40ec47:	85 c0                	test   %eax,%eax
40ec49:	74 0d                	je     0x40ec58
40ec4b:	83 3f 00             	cmpl   $0x0,(%edi)
40ec4e:	74 08                	je     0x40ec58
40ec50:	8b 4e 24             	mov    0x24(%esi),%ecx
40ec53:	e8 cc 67 03 00       	call   0x445424
40ec58:	8b 4e 24             	mov    0x24(%esi),%ecx
40ec5b:	e8 bc 60 03 00       	call   0x444d1c
40ec60:	5f                   	pop    %edi
40ec61:	8b 46 24             	mov    0x24(%esi),%eax
40ec64:	83 60 4c 00          	andl   $0x0,0x4c(%eax)
40ec68:	5e                   	pop    %esi
40ec69:	c3                   	ret
40ec6a:	56                   	push   %esi
40ec6b:	8b f1                	mov    %ecx,%esi
40ec6d:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
40ec71:	74 1c                	je     0x40ec8f
40ec73:	8b 4e 24             	mov    0x24(%esi),%ecx
40ec76:	8b 01                	mov    (%ecx),%eax
40ec78:	6a 00                	push   $0x0
40ec7a:	ff 74 24 0c          	push   0xc(%esp)
40ec7e:	6a fe                	push   $0xfffffffe
40ec80:	ff 76 28             	push   0x28(%esi)
40ec83:	ff 50 0c             	call   *0xc(%eax)
40ec86:	85 c0                	test   %eax,%eax
40ec88:	74 05                	je     0x40ec8f
40ec8a:	33 c0                	xor    %eax,%eax
40ec8c:	40                   	inc    %eax
40ec8d:	eb 16                	jmp    0x40eca5
40ec8f:	8b 46 1c             	mov    0x1c(%esi),%eax
40ec92:	8b 48 1c             	mov    0x1c(%eax),%ecx
40ec95:	8b 01                	mov    (%ecx),%eax
40ec97:	6a 00                	push   $0x0
40ec99:	ff 74 24 0c          	push   0xc(%esp)
40ec9d:	6a fe                	push   $0xfffffffe
40ec9f:	ff 76 28             	push   0x28(%esi)
40eca2:	ff 50 0c             	call   *0xc(%eax)
40eca5:	5e                   	pop    %esi
40eca6:	c2 04 00             	ret    $0x4
40eca9:	55                   	push   %ebp
40ecaa:	8b ec                	mov    %esp,%ebp
40ecac:	51                   	push   %ecx
40ecad:	56                   	push   %esi
40ecae:	8d b1 b8 00 00 00    	lea    0xb8(%ecx),%esi
40ecb4:	83 3e 00             	cmpl   $0x0,(%esi)
40ecb7:	75 2c                	jne    0x40ece5
40ecb9:	83 79 4c 00          	cmpl   $0x0,0x4c(%ecx)
40ecbd:	74 21                	je     0x40ece0