40b854:	ff 15 3c f2 43 00    	call   *0x43f23c
40b85a:	8b cf                	mov    %edi,%ecx
40b85c:	ff d6                	call   *%esi
40b85e:	0f b7 f8             	movzwl %ax,%edi
40b861:	89 7d f0             	mov    %edi,-0x10(%ebp)
40b864:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
40b86b:	8b 7d ec             	mov    -0x14(%ebp),%edi
40b86e:	85 ff                	test   %edi,%edi
40b870:	74 29                	je     0x40b89b
40b872:	8b 07                	mov    (%edi),%eax
40b874:	8b 70 08             	mov    0x8(%eax),%esi
40b877:	8b ce                	mov    %esi,%ecx
40b879:	ff 15 3c f2 43 00    	call   *0x43f23c
40b87f:	8b cf                	mov    %edi,%ecx
40b881:	ff d6                	call   *%esi
40b883:	8b f8                	mov    %eax,%edi
40b885:	85 ff                	test   %edi,%edi
40b887:	74 12                	je     0x40b89b
40b889:	8b 0f                	mov    (%edi),%ecx
40b88b:	6a 01                	push   $0x1
40b88d:	8b 31                	mov    (%ecx),%esi
40b88f:	8b ce                	mov    %esi,%ecx
40b891:	ff 15 3c f2 43 00    	call   *0x43f23c
40b897:	8b cf                	mov    %edi,%ecx
40b899:	ff d6                	call   *%esi
40b89b:	83 7b 38 00          	cmpl   $0x0,0x38(%ebx)
40b89f:	8b 45 f0             	mov    -0x10(%ebp),%eax
40b8a2:	66 89 43 40          	mov    %ax,0x40(%ebx)
40b8a6:	75 10                	jne    0x40b8b8
40b8a8:	8b 43 0c             	mov    0xc(%ebx),%eax
40b8ab:	8b cb                	mov    %ebx,%ecx
40b8ad:	6a 00                	push   $0x0
40b8af:	83 c8 04             	or     $0x4,%eax
40b8b2:	50                   	push   %eax
40b8b3:	e8 78 92 ff ff       	call   0x404b30
40b8b8:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40b8bb:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40b8c2:	59                   	pop    %ecx
40b8c3:	5f                   	pop    %edi
40b8c4:	5e                   	pop    %esi
40b8c5:	5b                   	pop    %ebx
40b8c6:	8b e5                	mov    %ebp,%esp
40b8c8:	5d                   	pop    %ebp
40b8c9:	c2 08 00             	ret    $0x8
40b8cc:	cc                   	int3
40b8cd:	cc                   	int3
40b8ce:	cc                   	int3
40b8cf:	cc                   	int3
40b8d0:	68 a4 dc 44 00       	push   $0x44dca4
40b8d5:	e8 80 f5 00 00       	call   0x41ae5a
40b8da:	cc                   	int3
40b8db:	cc                   	int3
40b8dc:	cc                   	int3
40b8dd:	cc                   	int3
40b8de:	cc                   	int3
40b8df:	cc                   	int3
40b8e0:	55                   	push   %ebp
40b8e1:	8b ec                	mov    %esp,%ebp
40b8e3:	83 ec 20             	sub    $0x20,%esp
40b8e6:	83 7a 14 08          	cmpl   $0x8,0x14(%edx)
40b8ea:	53                   	push   %ebx
40b8eb:	8b d9                	mov    %ecx,%ebx
40b8ed:	89 55 f8             	mov    %edx,-0x8(%ebp)
40b8f0:	56                   	push   %esi
40b8f1:	57                   	push   %edi
40b8f2:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40b8f5:	8b ca                	mov    %edx,%ecx
40b8f7:	72 05                	jb     0x40b8fe
40b8f9:	8b 0a                	mov    (%edx),%ecx
40b8fb:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40b8fe:	8b 7d 08             	mov    0x8(%ebp),%edi
40b901:	8b 72 10             	mov    0x10(%edx),%esi
40b904:	89 75 e8             	mov    %esi,-0x18(%ebp)
40b907:	8b 57 10             	mov    0x10(%edi),%edx
40b90a:	8b 47 14             	mov    0x14(%edi),%eax
40b90d:	2b c2                	sub    %edx,%eax
40b90f:	89 55 f0             	mov    %edx,-0x10(%ebp)
40b912:	3b f0                	cmp    %eax,%esi
40b914:	0f 87 8d 00 00 00    	ja     0x40b9a7
40b91a:	83 7f 14 08          	cmpl   $0x8,0x14(%edi)
40b91e:	8d 04 32             	lea    (%edx,%esi,1),%eax
40b921:	89 47 10             	mov    %eax,0x10(%edi)
40b924:	8b d7                	mov    %edi,%edx
40b926:	89 7d f4             	mov    %edi,-0xc(%ebp)
40b929:	72 05                	jb     0x40b930
40b92b:	8b 17                	mov    (%edi),%edx
40b92d:	89 55 f4             	mov    %edx,-0xc(%ebp)
40b930:	8d 04 36             	lea    (%esi,%esi,1),%eax
40b933:	89 45 ec             	mov    %eax,-0x14(%ebp)
40b936:	8b 45 f0             	mov    -0x10(%ebp),%eax
40b939:	03 c0                	add    %eax,%eax
40b93b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40b93e:	8d 04 71             	lea    (%ecx,%esi,2),%eax
40b941:	3b c2                	cmp    %edx,%eax
40b943:	76 17                	jbe    0x40b95c
40b945:	8b 45 f0             	mov    -0x10(%ebp),%eax
40b948:	03 c2                	add    %edx,%eax
40b94a:	3b c8                	cmp    %eax,%ecx
40b94c:	77 0e                	ja     0x40b95c
40b94e:	3b d1                	cmp    %ecx,%edx
40b950:	77 04                	ja     0x40b956
40b952:	33 f6                	xor    %esi,%esi
40b954:	eb 06                	jmp    0x40b95c
40b956:	8b f2                	mov    %edx,%esi
40b958:	2b f1                	sub    %ecx,%esi
40b95a:	d1 fe                	sar    $1,%esi
40b95c:	8b 45 f0             	mov    -0x10(%ebp),%eax
40b95f:	83 c0 02             	add    $0x2,%eax
40b962:	89 75 fc             	mov    %esi,-0x4(%ebp)
40b965:	50                   	push   %eax
40b966:	8b 45 ec             	mov    -0x14(%ebp),%eax
40b969:	52                   	push   %edx
40b96a:	03 c2                	add    %edx,%eax
40b96c:	50                   	push   %eax
40b96d:	e8 de 1a 01 00       	call   0x41d450
40b972:	03 f6                	add    %esi,%esi
40b974:	56                   	push   %esi
40b975:	ff 75 f8             	push   -0x8(%ebp)
40b978:	ff 75 f4             	push   -0xc(%ebp)
40b97b:	e8 d0 1a 01 00       	call   0x41d450
40b980:	8b 55 e8             	mov    -0x18(%ebp),%edx
40b983:	8b c2                	mov    %edx,%eax
40b985:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b988:	2b c1                	sub    %ecx,%eax
40b98a:	03 c0                	add    %eax,%eax
40b98c:	50                   	push   %eax
40b98d:	8d 04 11             	lea    (%ecx,%edx,1),%eax
40b990:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40b993:	8d 04 41             	lea    (%ecx,%eax,2),%eax
40b996:	50                   	push   %eax
40b997:	8b 45 f4             	mov    -0xc(%ebp),%eax
40b99a:	03 c6                	add    %esi,%eax
40b99c:	50                   	push   %eax
40b99d:	e8 ae 1a 01 00       	call   0x41d450
40b9a2:	83 c4 24             	add    $0x24,%esp
40b9a5:	eb 14                	jmp    0x40b9bb
40b9a7:	56                   	push   %esi
40b9a8:	51                   	push   %ecx
40b9a9:	51                   	push   %ecx
40b9aa:	c6 45 e8 00          	movb   $0x0,-0x18(%ebp)
40b9ae:	8b cf                	mov    %edi,%ecx
40b9b0:	ff 75 e8             	push   -0x18(%ebp)
40b9b3:	56                   	push   %esi
40b9b4:	e8 f7 18 00 00       	call   0x40d2b0
40b9b9:	8b f8                	mov    %eax,%edi
40b9bb:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
40b9c1:	33 c0                	xor    %eax,%eax
40b9c3:	c7 43 10 00 00 00 00 	movl   $0x0,0x10(%ebx)
40b9ca:	c7 43 14 00 00 00 00 	movl   $0x0,0x14(%ebx)
40b9d1:	0f 10 07             	movups (%edi),%xmm0
40b9d4:	0f 11 03             	movups %xmm0,(%ebx)
40b9d7:	f3 0f 7e 47 10       	movq   0x10(%edi),%xmm0
40b9dc:	66 0f d6 43 10       	movq   %xmm0,0x10(%ebx)
40b9e1:	66 89 07             	mov    %ax,(%edi)
40b9e4:	8b c3                	mov    %ebx,%eax
40b9e6:	c7 47 10 00 00 00 00 	movl   $0x0,0x10(%edi)
40b9ed:	c7 47 14 07 00 00 00 	movl   $0x7,0x14(%edi)
40b9f4:	5f                   	pop    %edi
40b9f5:	5e                   	pop    %esi
40b9f6:	5b                   	pop    %ebx
40b9f7:	8b e5                	mov    %ebp,%esp
40b9f9:	5d                   	pop    %ebp
40b9fa:	c3                   	ret
40b9fb:	cc                   	int3
40b9fc:	cc                   	int3
40b9fd:	cc                   	int3
40b9fe:	cc                   	int3
40b9ff:	cc                   	int3
40ba00:	55                   	push   %ebp
40ba01:	8b ec                	mov    %esp,%ebp
40ba03:	83 ec 0c             	sub    $0xc,%esp
40ba06:	8b 45 08             	mov    0x8(%ebp),%eax
40ba09:	53                   	push   %ebx
40ba0a:	56                   	push   %esi
40ba0b:	57                   	push   %edi
40ba0c:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
40ba10:	8b f9                	mov    %ecx,%edi
40ba12:	8b f2                	mov    %edx,%esi
40ba14:	89 7d f8             	mov    %edi,-0x8(%ebp)
40ba17:	8b d0                	mov    %eax,%edx
40ba19:	72 02                	jb     0x40ba1d
40ba1b:	8b 10                	mov    (%eax),%edx
40ba1d:	8b 48 10             	mov    0x10(%eax),%ecx
40ba20:	8b 5e 10             	mov    0x10(%esi),%ebx
40ba23:	8b 46 14             	mov    0x14(%esi),%eax
40ba26:	2b c3                	sub    %ebx,%eax
40ba28:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40ba2b:	3b c8                	cmp    %eax,%ecx
40ba2d:	77 32                	ja     0x40ba61
40ba2f:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40ba33:	8d 04 0b             	lea    (%ebx,%ecx,1),%eax
40ba36:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ba39:	8b de                	mov    %esi,%ebx
40ba3b:	89 46 10             	mov    %eax,0x10(%esi)
40ba3e:	72 02                	jb     0x40ba42
40ba40:	8b 1e                	mov    (%esi),%ebx
40ba42:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
40ba45:	50                   	push   %eax
40ba46:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ba49:	52                   	push   %edx
40ba4a:	8d 04 43             	lea    (%ebx,%eax,2),%eax
40ba4d:	50                   	push   %eax
40ba4e:	e8 fd 19 01 00       	call   0x41d450
40ba53:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ba56:	83 c4 0c             	add    $0xc,%esp
40ba59:	33 c9                	xor    %ecx,%ecx
40ba5b:	66 89 0c 43          	mov    %cx,(%ebx,%eax,2)
40ba5f:	eb 13                	jmp    0x40ba74
40ba61:	51                   	push   %ecx
40ba62:	52                   	push   %edx
40ba63:	c6 45 f8 00          	movb   $0x0,-0x8(%ebp)
40ba67:	ff 75 f8             	push   -0x8(%ebp)
40ba6a:	51                   	push   %ecx
40ba6b:	8b ce                	mov    %esi,%ecx
40ba6d:	e8 ce 6c ff ff       	call   0x402740
40ba72:	8b f0                	mov    %eax,%esi
40ba74:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
40ba7a:	33 c0                	xor    %eax,%eax
40ba7c:	c7 47 10 00 00 00 00 	movl   $0x0,0x10(%edi)
40ba83:	c7 47 14 00 00 00 00 	movl   $0x0,0x14(%edi)
40ba8a:	0f 10 06             	movups (%esi),%xmm0
40ba8d:	0f 11 07             	movups %xmm0,(%edi)
40ba90:	f3 0f 7e 46 10       	movq   0x10(%esi),%xmm0
40ba95:	66 0f d6 47 10       	movq   %xmm0,0x10(%edi)
40ba9a:	66 89 06             	mov    %ax,(%esi)
40ba9d:	8b c7                	mov    %edi,%eax
40ba9f:	5f                   	pop    %edi
40baa0:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
40baa7:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
40baae:	5e                   	pop    %esi
40baaf:	5b                   	pop    %ebx
40bab0:	8b e5                	mov    %ebp,%esp
40bab2:	5d                   	pop    %ebp
40bab3:	c3                   	ret
40bab4:	cc                   	int3
40bab5:	cc                   	int3
40bab6:	cc                   	int3
40bab7:	cc                   	int3
40bab8:	cc                   	int3
40bab9:	cc                   	int3
40baba:	cc                   	int3
40babb:	cc                   	int3
40babc:	cc                   	int3
40babd:	cc                   	int3
40babe:	cc                   	int3
40babf:	cc                   	int3
40bac0:	55                   	push   %ebp
40bac1:	8b ec                	mov    %esp,%ebp
40bac3:	6a ff                	push   $0xffffffff
40bac5:	68 dc dc 43 00       	push   $0x43dcdc
40baca:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40bad0:	50                   	push   %eax
40bad1:	83 ec 48             	sub    $0x48,%esp
40bad4:	a1 14 40 45 00       	mov    0x454014,%eax
40bad9:	33 c5                	xor    %ebp,%eax
40badb:	89 45 f0             	mov    %eax,-0x10(%ebp)
40bade:	53                   	push   %ebx
40badf:	56                   	push   %esi
40bae0:	57                   	push   %edi
40bae1:	50                   	push   %eax
40bae2:	8d 45 f4             	lea    -0xc(%ebp),%eax
40bae5:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40baeb:	8b 5d 08             	mov    0x8(%ebp),%ebx
40baee:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40baf1:	6a 00                	push   $0x0
40baf3:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40baf6:	e8 55 f5 00 00       	call   0x41b050
40bafb:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40bb02:	8b 35 44 62 45 00    	mov    0x456244,%esi
40bb08:	a1 a8 61 45 00       	mov    0x4561a8,%eax
40bb0d:	89 45 e0             	mov    %eax,-0x20(%ebp)
40bb10:	85 f6                	test   %esi,%esi
40bb12:	75 2f                	jne    0x40bb43
40bb14:	56                   	push   %esi
40bb15:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40bb18:	e8 33 f5 00 00       	call   0x41b050
40bb1d:	39 35 44 62 45 00    	cmp    %esi,0x456244
40bb23:	75 10                	jne    0x40bb35
40bb25:	a1 b8 53 45 00       	mov    0x4553b8,%eax
40bb2a:	40                   	inc    %eax
40bb2b:	a3 b8 53 45 00       	mov    %eax,0x4553b8
40bb30:	a3 44 62 45 00       	mov    %eax,0x456244
40bb35:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40bb38:	e8 6b f5 00 00       	call   0x41b0a8
40bb3d:	8b 35 44 62 45 00    	mov    0x456244,%esi
40bb43:	8b 4b 04             	mov    0x4(%ebx),%ecx
40bb46:	8d 1c b5 00 00 00 00 	lea    0x0(,%esi,4),%ebx
40bb4d:	3b 71 0c             	cmp    0xc(%ecx),%esi
40bb50:	73 30                	jae    0x40bb82
40bb52:	8b 41 08             	mov    0x8(%ecx),%eax
40bb55:	8b 3c 03             	mov    (%ebx,%eax,1),%edi
40bb58:	85 ff                	test   %edi,%edi
40bb5a:	74 28                	je     0x40bb84
40bb5c:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40bb5f:	e8 44 f5 00 00       	call   0x41b0a8
40bb64:	8b c7                	mov    %edi,%eax
40bb66:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40bb69:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40bb70:	59                   	pop    %ecx
40bb71:	5f                   	pop    %edi
40bb72:	5e                   	pop    %esi
40bb73:	5b                   	pop    %ebx
40bb74:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40bb77:	33 cd                	xor    %ebp,%ecx
40bb79:	e8 52 fd 00 00       	call   0x41b8d0
40bb7e:	8b e5                	mov    %ebp,%esp
40bb80:	5d                   	pop    %ebp
40bb81:	c3                   	ret
40bb82:	33 ff                	xor    %edi,%edi
40bb84:	80 79 14 00          	cmpb   $0x0,0x14(%ecx)
40bb88:	74 10                	je     0x40bb9a
40bb8a:	e8 9f f6 00 00       	call   0x41b22e
40bb8f:	3b 70 0c             	cmp    0xc(%eax),%esi
40bb92:	73 0a                	jae    0x40bb9e
40bb94:	8b 40 08             	mov    0x8(%eax),%eax
40bb97:	8b 3c 03             	mov    (%ebx,%eax,1),%edi
40bb9a:	85 ff                	test   %edi,%edi
40bb9c:	75 be                	jne    0x40bb5c
40bb9e:	8b 45 e0             	mov    -0x20(%ebp),%eax
40bba1:	85 c0                	test   %eax,%eax
40bba3:	74 04                	je     0x40bba9
40bba5:	8b f8                	mov    %eax,%edi
40bba7:	eb b3                	jmp    0x40bb5c
40bba9:	6a 08                	push   $0x8
40bbab:	e8 2e fd 00 00       	call   0x41b8de
40bbb0:	8b f8                	mov    %eax,%edi
40bbb2:	83 c4 04             	add    $0x4,%esp
40bbb5:	89 7d e0             	mov    %edi,-0x20(%ebp)
40bbb8:	8b 45 ec             	mov    -0x14(%ebp),%eax
40bbbb:	8b 40 04             	mov    0x4(%eax),%eax
40bbbe:	85 c0                	test   %eax,%eax
40bbc0:	74 0c                	je     0x40bbce
40bbc2:	8b 70 18             	mov    0x18(%eax),%esi
40bbc5:	85 f6                	test   %esi,%esi
40bbc7:	75 0a                	jne    0x40bbd3
40bbc9:	8d 70 1c             	lea    0x1c(%eax),%esi
40bbcc:	eb 05                	jmp    0x40bbd3
40bbce:	be d7 da 44 00       	mov    $0x44dad7,%esi
40bbd3:	6a 00                	push   $0x0
40bbd5:	8d 4d ac             	lea    -0x54(%ebp),%ecx
40bbd8:	e8 73 f4 00 00       	call   0x41b050
40bbdd:	c7 45 b0 00 00 00 00 	movl   $0x0,-0x50(%ebp)
40bbe4:	c6 45 b4 00          	movb   $0x0,-0x4c(%ebp)
40bbe8:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
40bbef:	c6 45 bc 00          	movb   $0x0,-0x44(%ebp)
40bbf3:	33 c0                	xor    %eax,%eax
40bbf5:	c7 45 c0 00 00 00 00 	movl   $0x0,-0x40(%ebp)
40bbfc:	66 89 45 c4          	mov    %ax,-0x3c(%ebp)
40bc00:	89 45 c8             	mov    %eax,-0x38(%ebp)
40bc03:	66 89 45 cc          	mov    %ax,-0x34(%ebp)