40671b:	74 28                	je     0x406745
40671d:	66 89 8c 45 e0 f9 ff 	mov    %cx,-0x620(%ebp,%eax,2)
406724:	ff
406725:	66 3b cf             	cmp    %di,%cx
406728:	75 10                	jne    0x40673a
40672a:	3d 06 02 00 00       	cmp    $0x206,%eax
40672f:	73 09                	jae    0x40673a
406731:	40                   	inc    %eax
406732:	66 89 bc 45 e0 f9 ff 	mov    %di,-0x620(%ebp,%eax,2)
406739:	ff
40673a:	83 c2 02             	add    $0x2,%edx
40673d:	40                   	inc    %eax
40673e:	3d 07 02 00 00       	cmp    $0x207,%eax
406743:	72 d0                	jb     0x406715
406745:	33 c9                	xor    %ecx,%ecx
406747:	66 89 8c 45 e0 f9 ff 	mov    %cx,-0x620(%ebp,%eax,2)
40674e:	ff
40674f:	85 f6                	test   %esi,%esi
406751:	74 16                	je     0x406769
406753:	53                   	push   %ebx
406754:	ff 15 cc 60 41 00    	call   *0x4160cc
40675a:	3b f0                	cmp    %eax,%esi
40675c:	74 0b                	je     0x406769
40675e:	8d 85 e0 f9 ff ff    	lea    -0x620(%ebp),%eax
406764:	e9 a2 00 00 00       	jmp    0x40680b
406769:	6a 22                	push   $0x22
40676b:	5e                   	pop    %esi
40676c:	8d 8d e0 f9 ff ff    	lea    -0x620(%ebp),%ecx
406772:	66 89 b5 c8 f5 ff ff 	mov    %si,-0xa38(%ebp)
406779:	8d 51 02             	lea    0x2(%ecx),%edx
40677c:	66 8b 01             	mov    (%ecx),%ax
40677f:	83 c1 02             	add    $0x2,%ecx
406782:	66 3b c3             	cmp    %bx,%ax
406785:	75 f5                	jne    0x40677c
406787:	2b ca                	sub    %edx,%ecx
406789:	d1 f9                	sar    $1,%ecx
40678b:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
406792:	50                   	push   %eax
406793:	8d 85 e0 f9 ff ff    	lea    -0x620(%ebp),%eax
406799:	50                   	push   %eax
40679a:	8d 85 ca f5 ff ff    	lea    -0xa36(%ebp),%eax
4067a0:	68 14 04 00 00       	push   $0x414
4067a5:	50                   	push   %eax
4067a6:	ff 15 c4 62 41 00    	call   *0x4162c4
4067ac:	83 c4 10             	add    $0x10,%esp
4067af:	85 c0                	test   %eax,%eax
4067b1:	74 15                	je     0x4067c8
4067b3:	8d 8d c4 f5 ff ff    	lea    -0xa3c(%ebp),%ecx
4067b9:	e8 ff 0f 00 00       	call   0x4077bd
4067be:	be 05 40 00 80       	mov    $0x80004005,%esi
4067c3:	e9 c6 00 00 00       	jmp    0x40688e
4067c8:	8d 8d c8 f5 ff ff    	lea    -0xa38(%ebp),%ecx
4067ce:	8d 51 02             	lea    0x2(%ecx),%edx
4067d1:	66 8b 01             	mov    (%ecx),%ax
4067d4:	83 c1 02             	add    $0x2,%ecx
4067d7:	66 3b c3             	cmp    %bx,%ax
4067da:	75 f5                	jne    0x4067d1
4067dc:	2b ca                	sub    %edx,%ecx
4067de:	d1 f9                	sar    $1,%ecx
4067e0:	66 89 b4 4d c8 f5 ff 	mov    %si,-0xa38(%ebp,%ecx,2)
4067e7:	ff
4067e8:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4067ef:	81 f9 18 04 00 00    	cmp    $0x418,%ecx
4067f5:	0f 83 b1 00 00 00    	jae    0x4068ac
4067fb:	33 c0                	xor    %eax,%eax
4067fd:	66 89 84 0d c8 f5 ff 	mov    %ax,-0xa38(%ebp,%ecx,1)
406804:	ff
406805:	8d 85 c8 f5 ff ff    	lea    -0xa38(%ebp),%eax
40680b:	50                   	push   %eax
40680c:	68 a8 2a 40 00       	push   $0x402aa8
406811:	8d 85 94 f5 ff ff    	lea    -0xa6c(%ebp),%eax
406817:	50                   	push   %eax
406818:	e8 33 ea ff ff       	call   0x405250
40681d:	8b f0                	mov    %eax,%esi
40681f:	85 f6                	test   %esi,%esi
406821:	0f 88 ba fe ff ff    	js     0x4066e1
406827:	8d 85 e0 f9 ff ff    	lea    -0x620(%ebp),%eax
40682d:	50                   	push   %eax
40682e:	68 b8 2a 40 00       	push   $0x402ab8
406833:	8d 85 94 f5 ff ff    	lea    -0xa6c(%ebp),%eax
406839:	50                   	push   %eax
40683a:	e8 11 ea ff ff       	call   0x405250
40683f:	8b f0                	mov    %eax,%esi
406841:	85 f6                	test   %esi,%esi
406843:	0f 88 98 fe ff ff    	js     0x4066e1
406849:	8d 8d 94 f5 ff ff    	lea    -0xa6c(%ebp),%ecx
40684f:	8b 85 c0 f5 ff ff    	mov    -0xa40(%ebp),%eax
406855:	0f b7 c0             	movzwl %ax,%eax
406858:	89 9d c0 f5 ff ff    	mov    %ebx,-0xa40(%ebp)
40685e:	39 5d 08             	cmp    %ebx,0x8(%ebp)
406861:	74 04                	je     0x406867
406863:	6a 01                	push   $0x1
406865:	eb 01                	jmp    0x406868
406867:	53                   	push   %ebx
406868:	68 d0 2a 40 00       	push   $0x402ad0
40686d:	50                   	push   %eax
40686e:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
406874:	50                   	push   %eax
406875:	e8 41 ea ff ff       	call   0x4052bb
40687a:	8d 8d c0 f5 ff ff    	lea    -0xa40(%ebp),%ecx
406880:	8b f0                	mov    %eax,%esi
406882:	e8 36 0f 00 00       	call   0x4077bd
406887:	e9 55 fe ff ff       	jmp    0x4066e1
40688c:	8b f0                	mov    %eax,%esi
40688e:	8d 8d 94 f5 ff ff    	lea    -0xa6c(%ebp),%ecx
406894:	e8 4c e9 ff ff       	call   0x4051e5
406899:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40689c:	8b c6                	mov    %esi,%eax
40689e:	5f                   	pop    %edi
40689f:	5e                   	pop    %esi
4068a0:	33 cd                	xor    %ebp,%ecx
4068a2:	5b                   	pop    %ebx
4068a3:	e8 48 b7 00 00       	call   0x411ff0
4068a8:	c9                   	leave
4068a9:	c2 08 00             	ret    $0x8
4068ac:	e8 87 b8 00 00       	call   0x412138
4068b1:	cc                   	int3
4068b2:	8b ff                	mov    %edi,%edi
4068b4:	55                   	push   %ebp
4068b5:	8b ec                	mov    %esp,%ebp
4068b7:	51                   	push   %ecx
4068b8:	51                   	push   %ecx
4068b9:	53                   	push   %ebx
4068ba:	56                   	push   %esi
4068bb:	8b f1                	mov    %ecx,%esi
4068bd:	57                   	push   %edi
4068be:	85 f6                	test   %esi,%esi
4068c0:	0f 84 9f 00 00 00    	je     0x406965
4068c6:	85 d2                	test   %edx,%edx
4068c8:	0f 84 97 00 00 00    	je     0x406965
4068ce:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4068d1:	85 db                	test   %ebx,%ebx
4068d3:	75 0a                	jne    0x4068df
4068d5:	b8 03 40 00 80       	mov    $0x80004003,%eax
4068da:	e9 8b 00 00 00       	jmp    0x40696a
4068df:	83 23 00             	andl   $0x0,(%ebx)
4068e2:	8b 4d 08             	mov    0x8(%ebp),%ecx
4068e5:	e8 0d e4 ff ff       	call   0x404cf7
4068ea:	85 c0                	test   %eax,%eax
4068ec:	74 1b                	je     0x406909
4068ee:	8b 7a 04             	mov    0x4(%edx),%edi
4068f1:	03 fe                	add    %esi,%edi
4068f3:	57                   	push   %edi
4068f4:	8b 07                	mov    (%edi),%eax
4068f6:	8b 70 04             	mov    0x4(%eax),%esi
4068f9:	8b ce                	mov    %esi,%ecx
4068fb:	ff 15 28 63 41 00    	call   *0x416328
406901:	ff d6                	call   *%esi
406903:	89 3b                	mov    %edi,(%ebx)
406905:	33 c0                	xor    %eax,%eax
406907:	eb 61                	jmp    0x40696a
406909:	8d 7a 08             	lea    0x8(%edx),%edi
40690c:	eb 46                	jmp    0x406954
40690e:	8b 47 f8             	mov    -0x8(%edi),%eax
406911:	89 45 f8             	mov    %eax,-0x8(%ebp)
406914:	85 c0                	test   %eax,%eax
406916:	74 0e                	je     0x406926
406918:	8b 55 08             	mov    0x8(%ebp),%edx
40691b:	8b c8                	mov    %eax,%ecx
40691d:	e8 6e e2 ff ff       	call   0x404b90
406922:	85 c0                	test   %eax,%eax
406924:	74 2b                	je     0x406951
406926:	8b 07                	mov    (%edi),%eax
406928:	89 45 fc             	mov    %eax,-0x4(%ebp)
40692b:	83 f8 01             	cmp    $0x1,%eax
40692e:	74 30                	je     0x406960
406930:	ff 77 fc             	push   -0x4(%edi)
406933:	8b c8                	mov    %eax,%ecx
406935:	53                   	push   %ebx
406936:	ff 75 08             	push   0x8(%ebp)
406939:	56                   	push   %esi
40693a:	ff 15 28 63 41 00    	call   *0x416328
406940:	ff 55 fc             	call   *-0x4(%ebp)
406943:	85 c0                	test   %eax,%eax
406945:	74 23                	je     0x40696a
406947:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
40694b:	74 04                	je     0x406951
40694d:	85 c0                	test   %eax,%eax
40694f:	78 19                	js     0x40696a
406951:	83 c7 0c             	add    $0xc,%edi
406954:	83 3f 00             	cmpl   $0x0,(%edi)
406957:	75 b5                	jne    0x40690e
406959:	b8 02 40 00 80       	mov    $0x80004002,%eax
40695e:	eb 0a                	jmp    0x40696a
406960:	8b 7f fc             	mov    -0x4(%edi),%edi
406963:	eb 8c                	jmp    0x4068f1
406965:	b8 57 00 07 80       	mov    $0x80070057,%eax
40696a:	5f                   	pop    %edi
40696b:	5e                   	pop    %esi
40696c:	5b                   	pop    %ebx
40696d:	c9                   	leave
40696e:	c2 08 00             	ret    $0x8
406971:	6a 10                	push   $0x10
406973:	b8 34 2c 41 00       	mov    $0x412c34,%eax
406978:	e8 4a bc 00 00       	call   0x4125c7
40697d:	8b d9                	mov    %ecx,%ebx
40697f:	89 5d e8             	mov    %ebx,-0x18(%ebp)
406982:	85 db                	test   %ebx,%ebx
406984:	75 07                	jne    0x40698d
406986:	b8 57 00 07 80       	mov    $0x80070057,%eax
40698b:	eb 5a                	jmp    0x4069e7
40698d:	33 ff                	xor    %edi,%edi
40698f:	6a 0c                	push   $0xc
406991:	89 7d fc             	mov    %edi,-0x4(%ebp)
406994:	e8 0f ab 00 00       	call   0x4114a8
406999:	59                   	pop    %ecx
40699a:	8b c8                	mov    %eax,%ecx
40699c:	89 45 ec             	mov    %eax,-0x14(%ebp)
40699f:	eb 10                	jmp    0x4069b1
4069a1:	b8 a7 69 40 00       	mov    $0x4069a7,%eax
4069a6:	c3                   	ret
4069a7:	8b 5d e8             	mov    -0x18(%ebp),%ebx
4069aa:	33 ff                	xor    %edi,%edi
4069ac:	8b cf                	mov    %edi,%ecx
4069ae:	89 4d ec             	mov    %ecx,-0x14(%ebp)
4069b1:	85 c9                	test   %ecx,%ecx
4069b3:	75 07                	jne    0x4069bc
4069b5:	bf 0e 00 07 80       	mov    $0x8007000e,%edi
4069ba:	eb 29                	jmp    0x4069e5
4069bc:	8b 45 08             	mov    0x8(%ebp),%eax
4069bf:	8d 73 0c             	lea    0xc(%ebx),%esi
4069c2:	56                   	push   %esi
4069c3:	c7 01 40 6e 40 00    	movl   $0x406e40,(%ecx)
4069c9:	89 41 04             	mov    %eax,0x4(%ecx)
4069cc:	ff 15 64 61 41 00    	call   *0x416164
4069d2:	8b 45 ec             	mov    -0x14(%ebp),%eax
4069d5:	8b 4b 08             	mov    0x8(%ebx),%ecx
4069d8:	56                   	push   %esi
4069d9:	89 48 08             	mov    %ecx,0x8(%eax)
4069dc:	89 43 08             	mov    %eax,0x8(%ebx)
4069df:	ff 15 5c 61 41 00    	call   *0x41615c
4069e5:	8b c7                	mov    %edi,%eax
4069e7:	e8 40 bb 00 00       	call   0x41252c
4069ec:	c2 04 00             	ret    $0x4
4069ef:	8b ff                	mov    %edi,%edi
4069f1:	55                   	push   %ebp
4069f2:	8b ec                	mov    %esp,%ebp
4069f4:	6a ff                	push   $0xffffffff
4069f6:	68 4f 2c 41 00       	push   $0x412c4f
4069fb:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
406a01:	50                   	push   %eax
406a02:	56                   	push   %esi
406a03:	a1 f4 51 41 00       	mov    0x4151f4,%eax
406a08:	33 c5                	xor    %ebp,%eax
406a0a:	50                   	push   %eax
406a0b:	8d 45 f4             	lea    -0xc(%ebp),%eax
406a0e:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
406a14:	8b 09                	mov    (%ecx),%ecx
406a16:	85 c9                	test   %ecx,%ecx
406a18:	74 10                	je     0x406a2a
406a1a:	8b 01                	mov    (%ecx),%eax
406a1c:	51                   	push   %ecx
406a1d:	8b 70 08             	mov    0x8(%eax),%esi
406a20:	8b ce                	mov    %esi,%ecx
406a22:	ff 15 28 63 41 00    	call   *0x416328
406a28:	ff d6                	call   *%esi
406a2a:	8b 4d f4             	mov    -0xc(%ebp),%ecx
406a2d:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406a34:	59                   	pop    %ecx
406a35:	5e                   	pop    %esi
406a36:	c9                   	leave
406a37:	c3                   	ret
406a38:	cc                   	int3
406a39:	cc                   	int3
406a3a:	cc                   	int3
406a3b:	cc                   	int3
406a3c:	cc                   	int3
406a3d:	cc                   	int3
406a3e:	cc                   	int3
406a3f:	cc                   	int3
406a40:	33 c0                	xor    %eax,%eax
406a42:	c3                   	ret
406a43:	cc                   	int3
406a44:	cc                   	int3
406a45:	cc                   	int3
406a46:	cc                   	int3
406a47:	cc                   	int3
406a48:	cc                   	int3
406a49:	cc                   	int3
406a4a:	cc                   	int3
406a4b:	cc                   	int3
406a4c:	cc                   	int3
406a4d:	cc                   	int3
406a4e:	cc                   	int3
406a4f:	cc                   	int3
406a50:	c2 04 00             	ret    $0x4
406a53:	c7 01 54 19 40 00    	movl   $0x401954,(%ecx)
406a59:	83 c1 08             	add    $0x8,%ecx
406a5c:	80 79 18 00          	cmpb   $0x0,0x18(%ecx)
406a60:	74 0b                	je     0x406a6d
406a62:	51                   	push   %ecx
406a63:	c6 41 18 00          	movb   $0x0,0x18(%ecx)
406a67:	ff 15 c8 60 41 00    	call   *0x4160c8
406a6d:	c3                   	ret
406a6e:	cc                   	int3
406a6f:	cc                   	int3
406a70:	8b ff                	mov    %edi,%edi
406a72:	55                   	push   %ebp
406a73:	8b ec                	mov    %esp,%ebp
406a75:	8b 55 14             	mov    0x14(%ebp),%edx
406a78:	b8 03 40 00 80       	mov    $0x80004003,%eax
406a7d:	85 d2                	test   %edx,%edx
406a7f:	74 33                	je     0x406ab4
406a81:	83 22 00             	andl   $0x0,(%edx)
406a84:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406a88:	8b 4d 10             	mov    0x10(%ebp),%ecx
406a8b:	74 10                	je     0x406a9d
406a8d:	e8 65 e2 ff ff       	call   0x404cf7
406a92:	85 c0                	test   %eax,%eax
406a94:	75 07                	jne    0x406a9d
406a96:	b8 10 01 04 80       	mov    $0x80040110,%eax
406a9b:	eb 17                	jmp    0x406ab4
406a9d:	8b 45 08             	mov    0x8(%ebp),%eax
406aa0:	56                   	push   %esi
406aa1:	52                   	push   %edx
406aa2:	51                   	push   %ecx
406aa3:	8b 70 24             	mov    0x24(%eax),%esi
406aa6:	8b ce                	mov    %esi,%ecx
406aa8:	ff 75 0c             	push   0xc(%ebp)
406aab:	ff 15 28 63 41 00    	call   *0x416328
406ab1:	ff d6                	call   *%esi
406ab3:	5e                   	pop    %esi
406ab4:	5d                   	pop    %ebp
406ab5:	c2 10 00             	ret    $0x10
406ab8:	cc                   	int3
406ab9:	cc                   	int3
406aba:	cc                   	int3
406abb:	cc                   	int3
406abc:	cc                   	int3
406abd:	cc                   	int3
406abe:	cc                   	int3
406abf:	cc                   	int3
406ac0:	8b ff                	mov    %edi,%edi
406ac2:	55                   	push   %ebp
406ac3:	8b ec                	mov    %esp,%ebp
406ac5:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406ac9:	56                   	push   %esi
406aca:	57                   	push   %edi
406acb:	8b 3d a4 55 41 00    	mov    0x4155a4,%edi
406ad1:	8b 07                	mov    (%edi),%eax
406ad3:	74 05                	je     0x406ada
406ad5:	8b 70 04             	mov    0x4(%eax),%esi
406ad8:	eb 03                	jmp    0x406add
406ada:	8b 70 08             	mov    0x8(%eax),%esi
406add:	8b ce                	mov    %esi,%ecx
406adf:	ff 15 28 63 41 00    	call   *0x416328
406ae5:	8b cf                	mov    %edi,%ecx
406ae7:	ff d6                	call   *%esi
406ae9:	5f                   	pop    %edi
406aea:	33 c0                	xor    %eax,%eax