40884e:	cc                   	int3
40884f:	cc                   	int3
408850:	68 a4 13 43 00       	push   $0x4313a4
408855:	e8 bf 10 00 00       	call   0x409919
40885a:	cc                   	int3
40885b:	cc                   	int3
40885c:	cc                   	int3
40885d:	cc                   	int3
40885e:	cc                   	int3
40885f:	cc                   	int3
408860:	68 f4 15 43 00       	push   $0x4315f4
408865:	e8 af 10 00 00       	call   0x409919
40886a:	cc                   	int3
40886b:	cc                   	int3
40886c:	cc                   	int3
40886d:	cc                   	int3
40886e:	cc                   	int3
40886f:	cc                   	int3
408870:	55                   	push   %ebp
408871:	8b ec                	mov    %esp,%ebp
408873:	83 ec 0c             	sub    $0xc,%esp
408876:	53                   	push   %ebx
408877:	56                   	push   %esi
408878:	8b f1                	mov    %ecx,%esi
40887a:	57                   	push   %edi
40887b:	8b 7d 0c             	mov    0xc(%ebp),%edi
40887e:	8b 5e 14             	mov    0x14(%esi),%ebx
408881:	8b c3                	mov    %ebx,%eax
408883:	8b 4e 10             	mov    0x10(%esi),%ecx
408886:	2b c1                	sub    %ecx,%eax
408888:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40888b:	3b f8                	cmp    %eax,%edi
40888d:	77 42                	ja     0x4088d1
40888f:	89 75 0c             	mov    %esi,0xc(%ebp)
408892:	8d 04 39             	lea    (%ecx,%edi,1),%eax
408895:	89 45 f8             	mov    %eax,-0x8(%ebp)
408898:	8b d6                	mov    %esi,%edx
40889a:	89 46 10             	mov    %eax,0x10(%esi)
40889d:	83 fb 07             	cmp    $0x7,%ebx
4088a0:	76 05                	jbe    0x4088a7
4088a2:	8b 16                	mov    (%esi),%edx
4088a4:	89 55 0c             	mov    %edx,0xc(%ebp)
4088a7:	8d 04 3f             	lea    (%edi,%edi,1),%eax
4088aa:	50                   	push   %eax
4088ab:	ff 75 08             	push   0x8(%ebp)
4088ae:	8d 04 4a             	lea    (%edx,%ecx,2),%eax
4088b1:	50                   	push   %eax
4088b2:	e8 89 25 00 00       	call   0x40ae40
4088b7:	8b 45 0c             	mov    0xc(%ebp),%eax
4088ba:	83 c4 0c             	add    $0xc,%esp
4088bd:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4088c0:	33 d2                	xor    %edx,%edx
4088c2:	5f                   	pop    %edi
4088c3:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
4088c7:	8b c6                	mov    %esi,%eax
4088c9:	5e                   	pop    %esi
4088ca:	5b                   	pop    %ebx
4088cb:	8b e5                	mov    %ebp,%esp
4088cd:	5d                   	pop    %ebp
4088ce:	c2 08 00             	ret    $0x8
4088d1:	ba fe ff ff 7f       	mov    $0x7ffffffe,%edx
4088d6:	8b c2                	mov    %edx,%eax
4088d8:	2b c1                	sub    %ecx,%eax
4088da:	3b c7                	cmp    %edi,%eax
4088dc:	0f 82 f7 00 00 00    	jb     0x4089d9
4088e2:	8d 04 39             	lea    (%ecx,%edi,1),%eax
4088e5:	8b c8                	mov    %eax,%ecx
4088e7:	89 45 fc             	mov    %eax,-0x4(%ebp)
4088ea:	83 c9 07             	or     $0x7,%ecx
4088ed:	3b ca                	cmp    %edx,%ecx
4088ef:	76 04                	jbe    0x4088f5
4088f1:	8b ca                	mov    %edx,%ecx
4088f3:	eb 18                	jmp    0x40890d
4088f5:	8b c3                	mov    %ebx,%eax
4088f7:	d1 e8                	shr    $1,%eax
4088f9:	2b d0                	sub    %eax,%edx
4088fb:	3b da                	cmp    %edx,%ebx
4088fd:	76 07                	jbe    0x408906
4088ff:	b9 fe ff ff 7f       	mov    $0x7ffffffe,%ecx
408904:	eb 07                	jmp    0x40890d
408906:	03 c3                	add    %ebx,%eax
408908:	3b c8                	cmp    %eax,%ecx
40890a:	0f 42 c8             	cmovb  %eax,%ecx
40890d:	8d 45 0c             	lea    0xc(%ebp),%eax
408910:	89 4d 0c             	mov    %ecx,0xc(%ebp)
408913:	50                   	push   %eax
408914:	56                   	push   %esi
408915:	e8 16 e4 ff ff       	call   0x406d30
40891a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40891d:	03 ff                	add    %edi,%edi
40891f:	89 4e 10             	mov    %ecx,0x10(%esi)
408922:	83 c4 08             	add    $0x8,%esp
408925:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408928:	89 4e 14             	mov    %ecx,0x14(%esi)
40892b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40892e:	03 c9                	add    %ecx,%ecx
408930:	89 7d 0c             	mov    %edi,0xc(%ebp)
408933:	8b 7d fc             	mov    -0x4(%ebp),%edi
408936:	89 45 f4             	mov    %eax,-0xc(%ebp)
408939:	51                   	push   %ecx
40893a:	8d 14 01             	lea    (%ecx,%eax,1),%edx
40893d:	89 55 f8             	mov    %edx,-0x8(%ebp)
408940:	8d 14 78             	lea    (%eax,%edi,2),%edx
408943:	8b 7d 0c             	mov    0xc(%ebp),%edi
408946:	89 55 fc             	mov    %edx,-0x4(%ebp)
408949:	83 fb 07             	cmp    $0x7,%ebx
40894c:	76 5d                	jbe    0x4089ab
40894e:	8b 3e                	mov    (%esi),%edi
408950:	57                   	push   %edi
408951:	50                   	push   %eax
408952:	e8 e9 24 00 00       	call   0x40ae40
408957:	ff 75 0c             	push   0xc(%ebp)
40895a:	ff 75 08             	push   0x8(%ebp)
40895d:	ff 75 f8             	push   -0x8(%ebp)
408960:	e8 db 24 00 00       	call   0x40ae40
408965:	8b 45 fc             	mov    -0x4(%ebp),%eax
408968:	8d 1c 5d 02 00 00 00 	lea    0x2(,%ebx,2),%ebx
40896f:	33 c9                	xor    %ecx,%ecx
408971:	83 c4 18             	add    $0x18,%esp
408974:	66 89 08             	mov    %cx,(%eax)
408977:	81 fb 00 10 00 00    	cmp    $0x1000,%ebx
40897d:	72 12                	jb     0x408991
40897f:	8b 4f fc             	mov    -0x4(%edi),%ecx
408982:	83 c3 23             	add    $0x23,%ebx
408985:	2b f9                	sub    %ecx,%edi
408987:	8d 47 fc             	lea    -0x4(%edi),%eax
40898a:	83 f8 1f             	cmp    $0x1f,%eax
40898d:	77 4f                	ja     0x4089de
40898f:	8b f9                	mov    %ecx,%edi
408991:	53                   	push   %ebx
408992:	57                   	push   %edi
408993:	e8 58 e0 ff ff       	call   0x4069f0
408998:	8b 45 f4             	mov    -0xc(%ebp),%eax
40899b:	83 c4 08             	add    $0x8,%esp
40899e:	89 06                	mov    %eax,(%esi)
4089a0:	8b c6                	mov    %esi,%eax
4089a2:	5f                   	pop    %edi
4089a3:	5e                   	pop    %esi
4089a4:	5b                   	pop    %ebx
4089a5:	8b e5                	mov    %ebp,%esp
4089a7:	5d                   	pop    %ebp
4089a8:	c2 08 00             	ret    $0x8
4089ab:	56                   	push   %esi
4089ac:	50                   	push   %eax
4089ad:	e8 8e 24 00 00       	call   0x40ae40
4089b2:	57                   	push   %edi
4089b3:	ff 75 08             	push   0x8(%ebp)
4089b6:	ff 75 f8             	push   -0x8(%ebp)
4089b9:	e8 82 24 00 00       	call   0x40ae40
4089be:	8b 45 fc             	mov    -0x4(%ebp),%eax
4089c1:	83 c4 18             	add    $0x18,%esp
4089c4:	33 c9                	xor    %ecx,%ecx
4089c6:	66 89 08             	mov    %cx,(%eax)
4089c9:	8b 45 f4             	mov    -0xc(%ebp),%eax
4089cc:	89 06                	mov    %eax,(%esi)
4089ce:	8b c6                	mov    %esi,%eax
4089d0:	5f                   	pop    %edi
4089d1:	5e                   	pop    %esi
4089d2:	5b                   	pop    %ebx
4089d3:	8b e5                	mov    %ebp,%esp
4089d5:	5d                   	pop    %ebp
4089d6:	c2 08 00             	ret    $0x8
4089d9:	e8 72 fe ff ff       	call   0x408850
4089de:	e8 1b 4a 00 00       	call   0x40d3fe
4089e3:	cc                   	int3
4089e4:	cc                   	int3
4089e5:	cc                   	int3
4089e6:	cc                   	int3
4089e7:	cc                   	int3
4089e8:	cc                   	int3
4089e9:	cc                   	int3
4089ea:	cc                   	int3
4089eb:	cc                   	int3
4089ec:	cc                   	int3
4089ed:	cc                   	int3
4089ee:	cc                   	int3
4089ef:	cc                   	int3
4089f0:	55                   	push   %ebp
4089f1:	8b ec                	mov    %esp,%ebp
4089f3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4089f6:	8b 45 08             	mov    0x8(%ebp),%eax
4089f9:	c1 e1 05             	shl    $0x5,%ecx
4089fc:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
408a02:	72 12                	jb     0x408a16
408a04:	8b 50 fc             	mov    -0x4(%eax),%edx
408a07:	83 c1 23             	add    $0x23,%ecx
408a0a:	2b c2                	sub    %edx,%eax
408a0c:	83 c0 fc             	add    $0xfffffffc,%eax
408a0f:	83 f8 1f             	cmp    $0x1f,%eax
408a12:	77 10                	ja     0x408a24
408a14:	8b c2                	mov    %edx,%eax
408a16:	51                   	push   %ecx
408a17:	50                   	push   %eax
408a18:	e8 d3 df ff ff       	call   0x4069f0
408a1d:	83 c4 08             	add    $0x8,%esp
408a20:	5d                   	pop    %ebp
408a21:	c2 08 00             	ret    $0x8
408a24:	e8 d5 49 00 00       	call   0x40d3fe
408a29:	cc                   	int3
408a2a:	cc                   	int3
408a2b:	cc                   	int3
408a2c:	cc                   	int3
408a2d:	cc                   	int3
408a2e:	cc                   	int3
408a2f:	cc                   	int3
408a30:	8b 49 04             	mov    0x4(%ecx),%ecx
408a33:	b8 4c 13 43 00       	mov    $0x43134c,%eax
408a38:	85 c9                	test   %ecx,%ecx
408a3a:	0f 45 c1             	cmovne %ecx,%eax
408a3d:	c3                   	ret
408a3e:	cc                   	int3
408a3f:	cc                   	int3
408a40:	55                   	push   %ebp
408a41:	8b ec                	mov    %esp,%ebp
408a43:	53                   	push   %ebx
408a44:	56                   	push   %esi
408a45:	68 4c 15 43 00       	push   $0x43154c
408a4a:	ff 75 10             	push   0x10(%ebp)
408a4d:	33 f6                	xor    %esi,%esi
408a4f:	e8 cc 2a 00 00       	call   0x40b520
408a54:	83 c4 08             	add    $0x8,%esp
408a57:	85 c0                	test   %eax,%eax
408a59:	74 0e                	je     0x408a69
408a5b:	83 c0 05             	add    $0x5,%eax
408a5e:	50                   	push   %eax
408a5f:	e8 1e 9f 00 00       	call   0x412982
408a64:	83 c4 04             	add    $0x4,%esp
408a67:	8b f0                	mov    %eax,%esi
408a69:	6a 4c                	push   $0x4c
408a6b:	e8 50 df ff ff       	call   0x4069c0
408a70:	83 c4 04             	add    $0x4,%esp
408a73:	85 c0                	test   %eax,%eax
408a75:	74 0c                	je     0x408a83
408a77:	56                   	push   %esi
408a78:	8b c8                	mov    %eax,%ecx
408a7a:	e8 91 ea ff ff       	call   0x407510
408a7f:	8b d8                	mov    %eax,%ebx
408a81:	eb 02                	jmp    0x408a85
408a83:	33 db                	xor    %ebx,%ebx
408a85:	85 f6                	test   %esi,%esi
408a87:	75 07                	jne    0x408a90
408a89:	b8 28 15 43 00       	mov    $0x431528,%eax
408a8e:	eb 1f                	jmp    0x408aaf
408a90:	56                   	push   %esi
408a91:	68 28 15 43 00       	push   $0x431528
408a96:	68 44 15 43 00       	push   $0x431544
408a9b:	6a 40                	push   $0x40
408a9d:	68 f0 de 43 00       	push   $0x43def0
408aa2:	e8 d9 00 00 00       	call   0x408b80
408aa7:	83 c4 14             	add    $0x14,%esp
408aaa:	b8 f0 de 43 00       	mov    $0x43def0,%eax
408aaf:	50                   	push   %eax
408ab0:	6a 00                	push   $0x0
408ab2:	6a 01                	push   $0x1
408ab4:	6a 00                	push   $0x0
408ab6:	ff 15 24 10 43 00    	call   *0x431024
408abc:	68 58 15 43 00       	push   $0x431558
408ac1:	8b f0                	mov    %eax,%esi
408ac3:	ff 15 1c 10 43 00    	call   *0x43101c
408ac9:	8b cb                	mov    %ebx,%ecx
408acb:	e8 d0 f7 ff ff       	call   0x4082a0
408ad0:	56                   	push   %esi
408ad1:	ff 15 20 10 43 00    	call   *0x431020
408ad7:	68 a0 15 43 00       	push   $0x4315a0
408adc:	ff 15 1c 10 43 00    	call   *0x43101c
408ae2:	8b cb                	mov    %ebx,%ecx
408ae4:	e8 a7 f3 ff ff       	call   0x407e90
408ae9:	8b 73 0c             	mov    0xc(%ebx),%esi
408aec:	85 f6                	test   %esi,%esi
408aee:	74 15                	je     0x408b05
408af0:	8b ce                	mov    %esi,%ecx
408af2:	e8 83 88 ff ff       	call   0x40137a
408af7:	68 d8 00 00 00       	push   $0xd8
408afc:	56                   	push   %esi
408afd:	e8 ee de ff ff       	call   0x4069f0
408b02:	83 c4 08             	add    $0x8,%esp
408b05:	8b 73 10             	mov    0x10(%ebx),%esi
408b08:	c7 43 0c 00 00 00 00 	movl   $0x0,0xc(%ebx)
408b0f:	85 f6                	test   %esi,%esi
408b11:	74 53                	je     0x408b66
408b13:	8b 4e 14             	mov    0x14(%esi),%ecx
408b16:	83 f9 07             	cmp    $0x7,%ecx
408b19:	76 2d                	jbe    0x408b48
408b1b:	8b 06                	mov    (%esi),%eax
408b1d:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
408b24:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
408b2a:	72 12                	jb     0x408b3e
408b2c:	8b 50 fc             	mov    -0x4(%eax),%edx
408b2f:	83 c1 23             	add    $0x23,%ecx
408b32:	2b c2                	sub    %edx,%eax
408b34:	83 c0 fc             	add    $0xfffffffc,%eax
408b37:	83 f8 1f             	cmp    $0x1f,%eax
408b3a:	77 39                	ja     0x408b75
408b3c:	8b c2                	mov    %edx,%eax
408b3e:	51                   	push   %ecx
408b3f:	50                   	push   %eax
408b40:	e8 ab de ff ff       	call   0x4069f0
408b45:	83 c4 08             	add    $0x8,%esp
408b48:	33 c0                	xor    %eax,%eax
408b4a:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
408b51:	6a 24                	push   $0x24
408b53:	56                   	push   %esi
408b54:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
408b5b:	66 89 06             	mov    %ax,(%esi)
408b5e:	e8 8d de ff ff       	call   0x4069f0
408b63:	83 c4 08             	add    $0x8,%esp
408b66:	5e                   	pop    %esi
408b67:	c7 43 10 00 00 00 00 	movl   $0x0,0x10(%ebx)
408b6e:	33 c0                	xor    %eax,%eax
408b70:	5b                   	pop    %ebx
408b71:	5d                   	pop    %ebp
408b72:	c2 10 00             	ret    $0x10
408b75:	e8 84 48 00 00       	call   0x40d3fe
408b7a:	cc                   	int3
408b7b:	cc                   	int3
408b7c:	cc                   	int3
408b7d:	cc                   	int3
408b7e:	cc                   	int3
408b7f:	cc                   	int3
408b80:	55                   	push   %ebp
408b81:	8b ec                	mov    %esp,%ebp
408b83:	8d 45 14             	lea    0x14(%ebp),%eax
408b86:	50                   	push   %eax
408b87:	6a 00                	push   $0x0
408b89:	ff 75 10             	push   0x10(%ebp)
408b8c:	ff 75 0c             	push   0xc(%ebp)
408b8f:	ff 75 08             	push   0x8(%ebp)
408b92:	e8 11 9c ff ff       	call   0x4027a8
408b97:	8b 08                	mov    (%eax),%ecx
408b99:	ff 70 04             	push   0x4(%eax)
408b9c:	83 c9 01             	or     $0x1,%ecx
408b9f:	51                   	push   %ecx
408ba0:	e8 26 91 00 00       	call   0x411ccb
408ba5:	83 c9 ff             	or     $0xffffffff,%ecx
408ba8:	83 c4 1c             	add    $0x1c,%esp
408bab:	85 c0                	test   %eax,%eax
408bad:	0f 48 c1             	cmovs  %ecx,%eax
408bb0:	5d                   	pop    %ebp
408bb1:	c3                   	ret
408bb2:	cc                   	int3
408bb3:	cc                   	int3
408bb4:	cc                   	int3
408bb5:	cc                   	int3
408bb6:	cc                   	int3
408bb7:	cc                   	int3
408bb8:	cc                   	int3
408bb9:	cc                   	int3
408bba:	cc                   	int3
408bbb:	cc                   	int3
408bbc:	cc                   	int3