4088c4:	99                   	cltd
4088c5:	8b f8                	mov    %eax,%edi
4088c7:	8b c2                	mov    %edx,%eax
4088c9:	eb 11                	jmp    0x4088dc
4088cb:	0f 57 c0             	xorps  %xmm0,%xmm0
4088ce:	66 0f 13 44 24 18    	movlpd %xmm0,0x18(%esp)
4088d4:	8b 44 24 1c          	mov    0x1c(%esp),%eax
4088d8:	8b 7c 24 18          	mov    0x18(%esp),%edi
4088dc:	03 7d 0c             	add    0xc(%ebp),%edi
4088df:	13 45 10             	adc    0x10(%ebp),%eax
4088e2:	89 44 24 18          	mov    %eax,0x18(%esp)
4088e6:	8b 44 24 14          	mov    0x14(%esp),%eax
4088ea:	99                   	cltd
4088eb:	39 54 24 18          	cmp    %edx,0x18(%esp)
4088ef:	0f 87 9a 00 00 00    	ja     0x40898f
4088f5:	72 08                	jb     0x4088ff
4088f7:	3b f8                	cmp    %eax,%edi
4088f9:	0f 87 90 00 00 00    	ja     0x40898f
4088ff:	8b c7                	mov    %edi,%eax
408901:	0b 44 24 18          	or     0x18(%esp),%eax
408905:	74 15                	je     0x40891c
408907:	f6 c3 01             	test   $0x1,%bl
40890a:	74 07                	je     0x408913
40890c:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
408911:	74 7c                	je     0x40898f
408913:	f6 c3 02             	test   $0x2,%bl
408916:	74 04                	je     0x40891c
408918:	85 c9                	test   %ecx,%ecx
40891a:	74 73                	je     0x40898f
40891c:	8b 54 24 24          	mov    0x24(%esp),%edx
408920:	8d 04 7a             	lea    (%edx,%edi,2),%eax
408923:	89 44 24 14          	mov    %eax,0x14(%esp)
408927:	f6 c3 01             	test   $0x1,%bl
40892a:	74 28                	je     0x408954
40892c:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
408931:	74 21                	je     0x408954
408933:	8b 46 0c             	mov    0xc(%esi),%eax
408936:	89 10                	mov    %edx,(%eax)
408938:	8b 46 1c             	mov    0x1c(%esi),%eax
40893b:	8b 54 24 14          	mov    0x14(%esp),%edx
40893f:	89 10                	mov    %edx,(%eax)
408941:	8b 54 24 2c          	mov    0x2c(%esp),%edx
408945:	2b 54 24 14          	sub    0x14(%esp),%edx
408949:	8b 46 2c             	mov    0x2c(%esi),%eax
40894c:	d1 fa                	sar    $1,%edx
40894e:	89 10                	mov    %edx,(%eax)
408950:	8b 54 24 24          	mov    0x24(%esp),%edx
408954:	f6 c3 02             	test   $0x2,%bl
408957:	74 28                	je     0x408981
408959:	85 c9                	test   %ecx,%ecx
40895b:	74 24                	je     0x408981
40895d:	8b 46 30             	mov    0x30(%esi),%eax
408960:	8b 08                	mov    (%eax),%ecx
408962:	8b 46 20             	mov    0x20(%esi),%eax
408965:	8b 00                	mov    (%eax),%eax
408967:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
40896a:	8b 46 10             	mov    0x10(%esi),%eax
40896d:	89 10                	mov    %edx,(%eax)
40896f:	8b 46 20             	mov    0x20(%esi),%eax
408972:	8b 54 24 14          	mov    0x14(%esp),%edx
408976:	2b ca                	sub    %edx,%ecx
408978:	d1 f9                	sar    $1,%ecx
40897a:	89 10                	mov    %edx,(%eax)
40897c:	8b 46 30             	mov    0x30(%esi),%eax
40897f:	89 08                	mov    %ecx,(%eax)
408981:	8b 45 08             	mov    0x8(%ebp),%eax
408984:	8b 4c 24 18          	mov    0x18(%esp),%ecx
408988:	89 38                	mov    %edi,(%eax)
40898a:	89 48 04             	mov    %ecx,0x4(%eax)
40898d:	eb 10                	jmp    0x40899f
40898f:	8b 45 08             	mov    0x8(%ebp),%eax
408992:	c7 00 ff ff ff ff    	movl   $0xffffffff,(%eax)
408998:	c7 40 04 ff ff ff ff 	movl   $0xffffffff,0x4(%eax)
40899f:	5f                   	pop    %edi
4089a0:	0f 57 c0             	xorps  %xmm0,%xmm0
4089a3:	c7 40 08 00 00 00 00 	movl   $0x0,0x8(%eax)
4089aa:	5e                   	pop    %esi
4089ab:	c7 40 0c 00 00 00 00 	movl   $0x0,0xc(%eax)
4089b2:	66 0f d6 40 10       	movq   %xmm0,0x10(%eax)
4089b7:	5b                   	pop    %ebx
4089b8:	8b e5                	mov    %ebp,%esp
4089ba:	5d                   	pop    %ebp
4089bb:	c2 14 00             	ret    $0x14
4089be:	cc                   	int3
4089bf:	cc                   	int3
4089c0:	55                   	push   %ebp
4089c1:	8b ec                	mov    %esp,%ebp
4089c3:	51                   	push   %ecx
4089c4:	8b d1                	mov    %ecx,%edx
4089c6:	53                   	push   %ebx
4089c7:	56                   	push   %esi
4089c8:	57                   	push   %edi
4089c9:	8b 5a 1c             	mov    0x1c(%edx),%ebx
4089cc:	8b 33                	mov    (%ebx),%esi
4089ce:	85 f6                	test   %esi,%esi
4089d0:	74 52                	je     0x408a24
4089d2:	8b 4a 2c             	mov    0x2c(%edx),%ecx
4089d5:	8b 09                	mov    (%ecx),%ecx
4089d7:	8d 0c 4e             	lea    (%esi,%ecx,2),%ecx
4089da:	3b f1                	cmp    %ecx,%esi
4089dc:	73 0a                	jae    0x4089e8
4089de:	66 8b 06             	mov    (%esi),%ax
4089e1:	5f                   	pop    %edi
4089e2:	5e                   	pop    %esi
4089e3:	5b                   	pop    %ebx
4089e4:	8b e5                	mov    %ebp,%esp
4089e6:	5d                   	pop    %ebp
4089e7:	c3                   	ret
4089e8:	8b 42 20             	mov    0x20(%edx),%eax
4089eb:	8b 00                	mov    (%eax),%eax
4089ed:	85 c0                	test   %eax,%eax
4089ef:	74 33                	je     0x408a24
4089f1:	f6 42 3c 04          	testb  $0x4,0x3c(%edx)
4089f5:	75 2d                	jne    0x408a24
4089f7:	8b 7a 38             	mov    0x38(%edx),%edi
4089fa:	3b f8                	cmp    %eax,%edi
4089fc:	0f 42 f8             	cmovb  %eax,%edi
4089ff:	3b fe                	cmp    %esi,%edi
408a01:	76 21                	jbe    0x408a24
408a03:	89 7a 38             	mov    %edi,0x38(%edx)
408a06:	8b c3                	mov    %ebx,%eax
408a08:	8b 0b                	mov    (%ebx),%ecx
408a0a:	2b f9                	sub    %ecx,%edi
408a0c:	d1 ff                	sar    $1,%edi
408a0e:	89 08                	mov    %ecx,(%eax)
408a10:	8b 42 2c             	mov    0x2c(%edx),%eax
408a13:	89 38                	mov    %edi,(%eax)
408a15:	8b 42 1c             	mov    0x1c(%edx),%eax
408a18:	5f                   	pop    %edi
408a19:	5e                   	pop    %esi
408a1a:	5b                   	pop    %ebx
408a1b:	8b 00                	mov    (%eax),%eax
408a1d:	66 8b 00             	mov    (%eax),%ax
408a20:	8b e5                	mov    %ebp,%esp
408a22:	5d                   	pop    %ebp
408a23:	c3                   	ret
408a24:	5f                   	pop    %edi
408a25:	5e                   	pop    %esi
408a26:	b8 ff ff 00 00       	mov    $0xffff,%eax
408a2b:	5b                   	pop    %ebx
408a2c:	8b e5                	mov    %ebp,%esp
408a2e:	5d                   	pop    %ebp
408a2f:	c3                   	ret
408a30:	55                   	push   %ebp
408a31:	8b ec                	mov    %esp,%ebp
408a33:	8b 41 1c             	mov    0x1c(%ecx),%eax
408a36:	66 8b 55 08          	mov    0x8(%ebp),%dx
408a3a:	53                   	push   %ebx
408a3b:	56                   	push   %esi
408a3c:	8b 30                	mov    (%eax),%esi
408a3e:	bb ff ff 00 00       	mov    $0xffff,%ebx
408a43:	57                   	push   %edi
408a44:	0f b7 fa             	movzwl %dx,%edi
408a47:	85 f6                	test   %esi,%esi
408a49:	74 41                	je     0x408a8c
408a4b:	8b 41 0c             	mov    0xc(%ecx),%eax
408a4e:	3b 30                	cmp    (%eax),%esi
408a50:	76 3a                	jbe    0x408a8c
408a52:	66 3b da             	cmp    %dx,%bx
408a55:	74 0c                	je     0x408a63
408a57:	66 3b 56 fe          	cmp    -0x2(%esi),%dx
408a5b:	74 06                	je     0x408a63
408a5d:	f6 41 3c 02          	testb  $0x2,0x3c(%ecx)
408a61:	75 29                	jne    0x408a8c
408a63:	8b 41 2c             	mov    0x2c(%ecx),%eax
408a66:	ff 00                	incl   (%eax)
408a68:	8b 41 1c             	mov    0x1c(%ecx),%eax
408a6b:	83 00 fe             	addl   $0xfffffffe,(%eax)
408a6e:	66 3b da             	cmp    %dx,%bx
408a71:	74 08                	je     0x408a7b
408a73:	8b 41 1c             	mov    0x1c(%ecx),%eax
408a76:	8b 00                	mov    (%eax),%eax
408a78:	66 89 10             	mov    %dx,(%eax)
408a7b:	8b c7                	mov    %edi,%eax
408a7d:	33 c9                	xor    %ecx,%ecx
408a7f:	5f                   	pop    %edi
408a80:	66 3b d3             	cmp    %bx,%dx
408a83:	5e                   	pop    %esi
408a84:	0f 44 c1             	cmove  %ecx,%eax
408a87:	5b                   	pop    %ebx
408a88:	5d                   	pop    %ebp
408a89:	c2 04 00             	ret    $0x4
408a8c:	5f                   	pop    %edi
408a8d:	5e                   	pop    %esi
408a8e:	66 8b c3             	mov    %bx,%ax
408a91:	5b                   	pop    %ebx
408a92:	5d                   	pop    %ebp
408a93:	c2 04 00             	ret    $0x4
408a96:	cc                   	int3
408a97:	cc                   	int3
408a98:	cc                   	int3
408a99:	cc                   	int3
408a9a:	cc                   	int3
408a9b:	cc                   	int3
408a9c:	cc                   	int3
408a9d:	cc                   	int3
408a9e:	cc                   	int3
408a9f:	cc                   	int3
408aa0:	55                   	push   %ebp
408aa1:	8b ec                	mov    %esp,%ebp
408aa3:	83 ec 08             	sub    $0x8,%esp
408aa6:	b8 ff ff 00 00       	mov    $0xffff,%eax
408aab:	53                   	push   %ebx
408aac:	56                   	push   %esi
408aad:	57                   	push   %edi
408aae:	8b f9                	mov    %ecx,%edi
408ab0:	f6 47 3c 02          	testb  $0x2,0x3c(%edi)
408ab4:	0f 85 b6 01 00 00    	jne    0x408c70
408aba:	66 3b 45 08          	cmp    0x8(%ebp),%ax
408abe:	75 0b                	jne    0x408acb
408ac0:	5f                   	pop    %edi
408ac1:	5e                   	pop    %esi
408ac2:	33 c0                	xor    %eax,%eax
408ac4:	5b                   	pop    %ebx
408ac5:	8b e5                	mov    %ebp,%esp
408ac7:	5d                   	pop    %ebp
408ac8:	c2 04 00             	ret    $0x4
408acb:	8b 47 20             	mov    0x20(%edi),%eax
408ace:	8b 57 30             	mov    0x30(%edi),%edx
408ad1:	8b 00                	mov    (%eax),%eax
408ad3:	8b 0a                	mov    (%edx),%ecx
408ad5:	89 45 fc             	mov    %eax,-0x4(%ebp)
408ad8:	8d 1c 48             	lea    (%eax,%ecx,2),%ebx
408adb:	85 c0                	test   %eax,%eax
408add:	0f 84 9d 00 00 00    	je     0x408b80
408ae3:	3b c3                	cmp    %ebx,%eax
408ae5:	73 26                	jae    0x408b0d
408ae7:	66 8b 45 08          	mov    0x8(%ebp),%ax
408aeb:	49                   	dec    %ecx
408aec:	89 0a                	mov    %ecx,(%edx)
408aee:	8b 57 20             	mov    0x20(%edi),%edx
408af1:	8b 32                	mov    (%edx),%esi
408af3:	8d 4e 02             	lea    0x2(%esi),%ecx
408af6:	89 0a                	mov    %ecx,(%edx)
408af8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408afb:	66 89 06             	mov    %ax,(%esi)
408afe:	83 c1 02             	add    $0x2,%ecx
408b01:	89 4f 38             	mov    %ecx,0x38(%edi)
408b04:	5f                   	pop    %edi
408b05:	5e                   	pop    %esi
408b06:	5b                   	pop    %ebx
408b07:	8b e5                	mov    %ebp,%esp
408b09:	5d                   	pop    %ebp
408b0a:	c2 04 00             	ret    $0x4
408b0d:	8b 47 0c             	mov    0xc(%edi),%eax
408b10:	8b 30                	mov    (%eax),%esi
408b12:	2b de                	sub    %esi,%ebx
408b14:	d1 fb                	sar    $1,%ebx
408b16:	89 5d fc             	mov    %ebx,-0x4(%ebp)
408b19:	83 fb 20             	cmp    $0x20,%ebx
408b1c:	72 6e                	jb     0x408b8c
408b1e:	81 fb ff ff ff 3f    	cmp    $0x3fffffff,%ebx
408b24:	73 49                	jae    0x408b6f
408b26:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
408b29:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
408b2e:	0f 87 45 01 00 00    	ja     0x408c79
408b34:	03 c0                	add    %eax,%eax
408b36:	89 45 f8             	mov    %eax,-0x8(%ebp)
408b39:	3d 00 10 00 00       	cmp    $0x1000,%eax
408b3e:	72 27                	jb     0x408b67
408b40:	8d 48 23             	lea    0x23(%eax),%ecx
408b43:	3b c8                	cmp    %eax,%ecx
408b45:	0f 86 2e 01 00 00    	jbe    0x408c79
408b4b:	51                   	push   %ecx
408b4c:	e8 8d 2d 01 00       	call   0x41b8de
408b51:	83 c4 04             	add    $0x4,%esp
408b54:	85 c0                	test   %eax,%eax
408b56:	0f 84 22 01 00 00    	je     0x408c7e
408b5c:	8d 58 23             	lea    0x23(%eax),%ebx
408b5f:	83 e3 e0             	and    $0xffffffe0,%ebx
408b62:	89 43 fc             	mov    %eax,-0x4(%ebx)
408b65:	eb 38                	jmp    0x408b9f
408b67:	85 c0                	test   %eax,%eax
408b69:	75 29                	jne    0x408b94
408b6b:	33 db                	xor    %ebx,%ebx
408b6d:	eb 30                	jmp    0x408b9f
408b6f:	81 fb ff ff ff 7f    	cmp    $0x7fffffff,%ebx
408b75:	0f 82 fe 00 00 00    	jb     0x408c79
408b7b:	e9 eb 00 00 00       	jmp    0x408c6b
408b80:	8b 47 0c             	mov    0xc(%edi),%eax
408b83:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
408b8a:	8b 30                	mov    (%eax),%esi
408b8c:	b8 40 00 00 00       	mov    $0x40,%eax
408b91:	89 45 f8             	mov    %eax,-0x8(%ebp)
408b94:	50                   	push   %eax
408b95:	e8 44 2d 01 00       	call   0x41b8de
408b9a:	83 c4 04             	add    $0x4,%esp
408b9d:	8b d8                	mov    %eax,%ebx
408b9f:	8b 45 fc             	mov    -0x4(%ebp),%eax
408ba2:	03 c0                	add    %eax,%eax
408ba4:	50                   	push   %eax
408ba5:	56                   	push   %esi
408ba6:	53                   	push   %ebx
408ba7:	89 45 fc             	mov    %eax,-0x4(%ebp)
408baa:	e8 a1 48 01 00       	call   0x41d450
408baf:	8b 55 fc             	mov    -0x4(%ebp),%edx
408bb2:	83 c4 0c             	add    $0xc,%esp
408bb5:	8d 0c 1a             	lea    (%edx,%ebx,1),%ecx
408bb8:	8d 41 02             	lea    0x2(%ecx),%eax
408bbb:	89 47 38             	mov    %eax,0x38(%edi)
408bbe:	8b 47 10             	mov    0x10(%edi),%eax
408bc1:	89 18                	mov    %ebx,(%eax)
408bc3:	8b 47 20             	mov    0x20(%edi),%eax
408bc6:	89 08                	mov    %ecx,(%eax)
408bc8:	8b 45 f8             	mov    -0x8(%ebp),%eax
408bcb:	2b c1                	sub    %ecx,%eax
408bcd:	03 c3                	add    %ebx,%eax
408bcf:	d1 f8                	sar    $1,%eax
408bd1:	89 45 f8             	mov    %eax,-0x8(%ebp)
408bd4:	8b 47 30             	mov    0x30(%edi),%eax
408bd7:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408bda:	89 08                	mov    %ecx,(%eax)
408bdc:	f6 47 3c 04          	testb  $0x4,0x3c(%edi)
408be0:	74 17                	je     0x408bf9
408be2:	8b 47 0c             	mov    0xc(%edi),%eax
408be5:	89 18                	mov    %ebx,(%eax)
408be7:	8b 47 1c             	mov    0x1c(%edi),%eax
408bea:	d1 fb                	sar    $1,%ebx
408bec:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
408bf2:	8b 47 2c             	mov    0x2c(%edi),%eax
408bf5:	89 18                	mov    %ebx,(%eax)
408bf7:	eb 25                	jmp    0x408c1e
408bf9:	8b 47 1c             	mov    0x1c(%edi),%eax
408bfc:	8b 57 38             	mov    0x38(%edi),%edx
408bff:	8b 00                	mov    (%eax),%eax
408c01:	2b c6                	sub    %esi,%eax
408c03:	d1 f8                	sar    $1,%eax
408c05:	8d 0c 43             	lea    (%ebx,%eax,2),%ecx
408c08:	8b 47 0c             	mov    0xc(%edi),%eax
408c0b:	2b d1                	sub    %ecx,%edx
408c0d:	d1 fa                	sar    $1,%edx
408c0f:	89 18                	mov    %ebx,(%eax)
408c11:	8b 47 1c             	mov    0x1c(%edi),%eax
408c14:	89 08                	mov    %ecx,(%eax)
408c16:	8b 47 2c             	mov    0x2c(%edi),%eax
408c19:	89 10                	mov    %edx,(%eax)
408c1b:	8b 55 fc             	mov    -0x4(%ebp),%edx
408c1e:	f6 47 3c 01          	testb  $0x1,0x3c(%edi)
408c22:	74 24                	je     0x408c48
408c24:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
408c2a:	72 12                	jb     0x408c3e
408c2c:	8b 4e fc             	mov    -0x4(%esi),%ecx
408c2f:	83 c2 23             	add    $0x23,%edx
408c32:	2b f1                	sub    %ecx,%esi
408c34:	8d 46 fc             	lea    -0x4(%esi),%eax
408c37:	83 f8 1f             	cmp    $0x1f,%eax
408c3a:	77 42                	ja     0x408c7e
408c3c:	8b f1                	mov    %ecx,%esi
408c3e:	52                   	push   %edx
408c3f:	56                   	push   %esi