40d8c1:	ff 51 08             	call   *0x8(%ecx)
40d8c4:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d8c7:	50                   	push   %eax
40d8c8:	8b 08                	mov    (%eax),%ecx
40d8ca:	ff 51 08             	call   *0x8(%ecx)
40d8cd:	e9 57 ff ff ff       	jmp    0x40d829
40d8d2:	ff 75 e0             	push   -0x20(%ebp)
40d8d5:	e9 46 ff ff ff       	jmp    0x40d820
40d8da:	55                   	push   %ebp
40d8db:	8b ec                	mov    %esp,%ebp
40d8dd:	83 ec 58             	sub    $0x58,%esp
40d8e0:	0f 28 05 b0 49 41 00 	movaps 0x4149b0,%xmm0
40d8e7:	53                   	push   %ebx
40d8e8:	56                   	push   %esi
40d8e9:	57                   	push   %edi
40d8ea:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40d8ed:	bf 00 00 00 80       	mov    $0x80000000,%edi
40d8f2:	8b c7                	mov    %edi,%eax
40d8f4:	33 c9                	xor    %ecx,%ecx
40d8f6:	53                   	push   %ebx
40d8f7:	0f a2                	cpuid
40d8f9:	8b f3                	mov    %ebx,%esi
40d8fb:	0f 11 45 e8          	movups %xmm0,-0x18(%ebp)
40d8ff:	5b                   	pop    %ebx
40d900:	8d 5d e8             	lea    -0x18(%ebp),%ebx
40d903:	89 03                	mov    %eax,(%ebx)
40d905:	89 73 04             	mov    %esi,0x4(%ebx)
40d908:	89 4b 08             	mov    %ecx,0x8(%ebx)
40d90b:	89 53 0c             	mov    %edx,0xc(%ebx)
40d90e:	8b 45 e8             	mov    -0x18(%ebp),%eax
40d911:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d914:	3b c7                	cmp    %edi,%eax
40d916:	72 5d                	jb     0x40d975
40d918:	8b c7                	mov    %edi,%eax
40d91a:	33 c9                	xor    %ecx,%ecx
40d91c:	53                   	push   %ebx
40d91d:	0f a2                	cpuid
40d91f:	8b f3                	mov    %ebx,%esi
40d921:	5b                   	pop    %ebx
40d922:	8d 5d e8             	lea    -0x18(%ebp),%ebx
40d925:	89 03                	mov    %eax,(%ebx)
40d927:	89 73 04             	mov    %esi,0x4(%ebx)
40d92a:	89 4b 08             	mov    %ecx,0x8(%ebx)
40d92d:	89 53 0c             	mov    %edx,0xc(%ebx)
40d930:	81 ff 02 00 00 80    	cmp    $0x80000002,%edi
40d936:	75 0a                	jne    0x40d942
40d938:	8b c3                	mov    %ebx,%eax
40d93a:	6a 10                	push   $0x10
40d93c:	50                   	push   %eax
40d93d:	8d 45 a8             	lea    -0x58(%ebp),%eax
40d940:	eb 24                	jmp    0x40d966
40d942:	81 ff 03 00 00 80    	cmp    $0x80000003,%edi
40d948:	75 0b                	jne    0x40d955
40d94a:	8d 45 e8             	lea    -0x18(%ebp),%eax
40d94d:	6a 10                	push   $0x10
40d94f:	50                   	push   %eax
40d950:	8d 45 b8             	lea    -0x48(%ebp),%eax
40d953:	eb 11                	jmp    0x40d966
40d955:	81 ff 04 00 00 80    	cmp    $0x80000004,%edi
40d95b:	75 12                	jne    0x40d96f
40d95d:	8d 45 e8             	lea    -0x18(%ebp),%eax
40d960:	6a 10                	push   $0x10
40d962:	50                   	push   %eax
40d963:	8d 45 c8             	lea    -0x38(%ebp),%eax
40d966:	50                   	push   %eax
40d967:	e8 c0 36 ff ff       	call   0x40102c
40d96c:	83 c4 0c             	add    $0xc,%esp
40d96f:	47                   	inc    %edi
40d970:	3b 7d fc             	cmp    -0x4(%ebp),%edi
40d973:	76 a3                	jbe    0x40d918
40d975:	68 00 02 00 00       	push   $0x200
40d97a:	e8 2e 37 ff ff       	call   0x4010ad
40d97f:	8b f0                	mov    %eax,%esi
40d981:	8d 45 a8             	lea    -0x58(%ebp),%eax
40d984:	6a 40                	push   $0x40
40d986:	50                   	push   %eax
40d987:	56                   	push   %esi
40d988:	e8 9f 36 ff ff       	call   0x40102c
40d98d:	8b 7d f8             	mov    -0x8(%ebp),%edi
40d990:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40d993:	83 c4 10             	add    $0x10,%esp
40d996:	57                   	push   %edi
40d997:	56                   	push   %esi
40d998:	e8 4f 58 ff ff       	call   0x4031ec
40d99d:	8b c8                	mov    %eax,%ecx
40d99f:	e8 26 55 ff ff       	call   0x402eca
40d9a4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40d9a7:	e8 81 80 ff ff       	call   0x405a2d
40d9ac:	56                   	push   %esi
40d9ad:	e8 0f 37 ff ff       	call   0x4010c1
40d9b2:	59                   	pop    %ecx
40d9b3:	8b c7                	mov    %edi,%eax
40d9b5:	5f                   	pop    %edi
40d9b6:	5e                   	pop    %esi
40d9b7:	5b                   	pop    %ebx
40d9b8:	c9                   	leave
40d9b9:	c3                   	ret
40d9ba:	55                   	push   %ebp
40d9bb:	8b ec                	mov    %esp,%ebp
40d9bd:	83 ec 40             	sub    $0x40,%esp
40d9c0:	8d 45 c0             	lea    -0x40(%ebp),%eax
40d9c3:	c7 45 c0 40 00 00 00 	movl   $0x40,-0x40(%ebp)
40d9ca:	50                   	push   %eax
40d9cb:	ff 15 18 21 41 00    	call   *0x412118
40d9d1:	8b 45 c8             	mov    -0x38(%ebp),%eax
40d9d4:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40d9d7:	0f ac c8 14          	shrd   $0x14,%ecx,%eax
40d9db:	c9                   	leave
40d9dc:	c3                   	ret
40d9dd:	55                   	push   %ebp
40d9de:	8b ec                	mov    %esp,%ebp
40d9e0:	81 ec 1c 01 00 00    	sub    $0x11c,%esp
40d9e6:	68 a0 42 41 00       	push   $0x4142a0
40d9eb:	c7 85 e4 fe ff ff 1c 	movl   $0x11c,-0x11c(%ebp)
40d9f2:	01 00 00
40d9f5:	ff 15 b8 21 41 00    	call   *0x4121b8
40d9fb:	85 c0                	test   %eax,%eax
40d9fd:	74 1d                	je     0x40da1c
40d9ff:	68 ac 42 41 00       	push   $0x4142ac
40da04:	50                   	push   %eax
40da05:	ff 15 b4 21 41 00    	call   *0x4121b4
40da0b:	85 c0                	test   %eax,%eax
40da0d:	0f 84 80 01 00 00    	je     0x40db93
40da13:	8d 8d e4 fe ff ff    	lea    -0x11c(%ebp),%ecx
40da19:	51                   	push   %ecx
40da1a:	ff d0                	call   *%eax
40da1c:	6a 02                	push   $0x2
40da1e:	59                   	pop    %ecx
40da1f:	39 8d f4 fe ff ff    	cmp    %ecx,-0x10c(%ebp)
40da25:	0f 85 68 01 00 00    	jne    0x40db93
40da2b:	8a 45 fe             	mov    -0x2(%ebp),%al
40da2e:	3c 01                	cmp    $0x1,%al
40da30:	0f 85 b7 00 00 00    	jne    0x40daed
40da36:	83 bd e8 fe ff ff 05 	cmpl   $0x5,-0x118(%ebp)
40da3d:	75 38                	jne    0x40da77
40da3f:	8b 85 ec fe ff ff    	mov    -0x114(%ebp),%eax
40da45:	85 c0                	test   %eax,%eax
40da47:	75 0b                	jne    0x40da54
40da49:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40da4d:	05 f4 01 00 00       	add    $0x1f4,%eax
40da52:	c9                   	leave
40da53:	c3                   	ret
40da54:	83 f8 01             	cmp    $0x1,%eax
40da57:	75 0b                	jne    0x40da64
40da59:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40da5d:	05 fe 01 00 00       	add    $0x1fe,%eax
40da62:	c9                   	leave
40da63:	c3                   	ret
40da64:	3b c1                	cmp    %ecx,%eax
40da66:	0f 85 27 01 00 00    	jne    0x40db93
40da6c:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40da70:	05 08 02 00 00       	add    $0x208,%eax
40da75:	c9                   	leave
40da76:	c3                   	ret
40da77:	83 bd e8 fe ff ff 06 	cmpl   $0x6,-0x118(%ebp)
40da7e:	75 48                	jne    0x40dac8
40da80:	8b 85 ec fe ff ff    	mov    -0x114(%ebp),%eax
40da86:	85 c0                	test   %eax,%eax
40da88:	75 0b                	jne    0x40da95
40da8a:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40da8e:	05 58 02 00 00       	add    $0x258,%eax
40da93:	c9                   	leave
40da94:	c3                   	ret
40da95:	83 f8 01             	cmp    $0x1,%eax
40da98:	75 0b                	jne    0x40daa5
40da9a:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40da9e:	05 62 02 00 00       	add    $0x262,%eax
40daa3:	c9                   	leave
40daa4:	c3                   	ret
40daa5:	3b c1                	cmp    %ecx,%eax
40daa7:	75 0b                	jne    0x40dab4
40daa9:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40daad:	05 6c 02 00 00       	add    $0x26c,%eax
40dab2:	c9                   	leave
40dab3:	c3                   	ret
40dab4:	83 f8 03             	cmp    $0x3,%eax
40dab7:	0f 85 d6 00 00 00    	jne    0x40db93
40dabd:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40dac1:	05 76 02 00 00       	add    $0x276,%eax
40dac6:	c9                   	leave
40dac7:	c3                   	ret
40dac8:	83 bd e8 fe ff ff 0a 	cmpl   $0xa,-0x118(%ebp)
40dacf:	0f 85 be 00 00 00    	jne    0x40db93
40dad5:	83 bd ec fe ff ff 00 	cmpl   $0x0,-0x114(%ebp)
40dadc:	0f 85 b1 00 00 00    	jne    0x40db93
40dae2:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40dae6:	05 e8 03 00 00       	add    $0x3e8,%eax
40daeb:	c9                   	leave
40daec:	c3                   	ret
40daed:	3c 02                	cmp    $0x2,%al
40daef:	74 08                	je     0x40daf9
40daf1:	3c 03                	cmp    $0x3,%al
40daf3:	0f 85 9a 00 00 00    	jne    0x40db93
40daf9:	83 bd e8 fe ff ff 05 	cmpl   $0x5,-0x118(%ebp)
40db00:	75 27                	jne    0x40db29
40db02:	83 bd ec fe ff ff 01 	cmpl   $0x1,-0x114(%ebp)
40db09:	75 0b                	jne    0x40db16
40db0b:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40db0f:	05 ec 13 00 00       	add    $0x13ec,%eax
40db14:	c9                   	leave
40db15:	c3                   	ret
40db16:	39 8d ec fe ff ff    	cmp    %ecx,-0x114(%ebp)
40db1c:	75 75                	jne    0x40db93
40db1e:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40db22:	05 50 14 00 00       	add    $0x1450,%eax
40db27:	c9                   	leave
40db28:	c3                   	ret
40db29:	83 bd e8 fe ff ff 06 	cmpl   $0x6,-0x118(%ebp)
40db30:	75 44                	jne    0x40db76
40db32:	8b 85 ec fe ff ff    	mov    -0x114(%ebp),%eax
40db38:	85 c0                	test   %eax,%eax
40db3a:	75 0b                	jne    0x40db47
40db3c:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40db40:	05 70 17 00 00       	add    $0x1770,%eax
40db45:	c9                   	leave
40db46:	c3                   	ret
40db47:	83 f8 01             	cmp    $0x1,%eax
40db4a:	75 0b                	jne    0x40db57
40db4c:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40db50:	05 d4 17 00 00       	add    $0x17d4,%eax
40db55:	c9                   	leave
40db56:	c3                   	ret
40db57:	3b c1                	cmp    %ecx,%eax
40db59:	75 0b                	jne    0x40db66
40db5b:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40db5f:	05 38 18 00 00       	add    $0x1838,%eax
40db64:	c9                   	leave
40db65:	c3                   	ret
40db66:	83 f8 03             	cmp    $0x3,%eax
40db69:	75 28                	jne    0x40db93
40db6b:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40db6f:	05 9c 18 00 00       	add    $0x189c,%eax
40db74:	c9                   	leave
40db75:	c3                   	ret
40db76:	83 bd e8 fe ff ff 0a 	cmpl   $0xa,-0x118(%ebp)
40db7d:	75 14                	jne    0x40db93
40db7f:	83 bd ec fe ff ff 00 	cmpl   $0x0,-0x114(%ebp)
40db86:	75 0b                	jne    0x40db93
40db88:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40db8c:	05 10 27 00 00       	add    $0x2710,%eax
40db91:	c9                   	leave
40db92:	c3                   	ret
40db93:	33 c0                	xor    %eax,%eax
40db95:	c9                   	leave
40db96:	c3                   	ret
40db97:	55                   	push   %ebp
40db98:	8b ec                	mov    %esp,%ebp
40db9a:	83 ec 0c             	sub    $0xc,%esp
40db9d:	56                   	push   %esi
40db9e:	8d 45 fc             	lea    -0x4(%ebp),%eax
40dba1:	33 f6                	xor    %esi,%esi
40dba3:	50                   	push   %eax
40dba4:	6a 08                	push   $0x8
40dba6:	89 75 fc             	mov    %esi,-0x4(%ebp)
40dba9:	ff 15 e8 20 41 00    	call   *0x4120e8
40dbaf:	50                   	push   %eax
40dbb0:	ff 15 54 20 41 00    	call   *0x412054
40dbb6:	85 c0                	test   %eax,%eax
40dbb8:	74 20                	je     0x40dbda
40dbba:	6a 04                	push   $0x4
40dbbc:	59                   	pop    %ecx
40dbbd:	8d 45 f8             	lea    -0x8(%ebp),%eax
40dbc0:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40dbc3:	50                   	push   %eax
40dbc4:	51                   	push   %ecx
40dbc5:	8d 45 f4             	lea    -0xc(%ebp),%eax
40dbc8:	50                   	push   %eax
40dbc9:	6a 14                	push   $0x14
40dbcb:	ff 75 fc             	push   -0x4(%ebp)
40dbce:	ff 15 48 20 41 00    	call   *0x412048
40dbd4:	85 c0                	test   %eax,%eax
40dbd6:	0f 45 75 f4          	cmovne -0xc(%ebp),%esi
40dbda:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40dbde:	74 09                	je     0x40dbe9
40dbe0:	ff 75 fc             	push   -0x4(%ebp)
40dbe3:	ff 15 00 22 41 00    	call   *0x412200
40dbe9:	33 c0                	xor    %eax,%eax
40dbeb:	85 f6                	test   %esi,%esi
40dbed:	5e                   	pop    %esi
40dbee:	0f 95 c0             	setne  %al
40dbf1:	c9                   	leave
40dbf2:	c3                   	ret
40dbf3:	55                   	push   %ebp
40dbf4:	8b ec                	mov    %esp,%ebp
40dbf6:	51                   	push   %ecx
40dbf7:	ff 15 e8 20 41 00    	call   *0x4120e8
40dbfd:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40dc00:	89 45 fc             	mov    %eax,-0x4(%ebp)
40dc03:	e8 cc 0f 00 00       	call   0x40ebd4
40dc08:	f7 d8                	neg    %eax
40dc0a:	1b c0                	sbb    %eax,%eax
40dc0c:	f7 d8                	neg    %eax
40dc0e:	c9                   	leave
40dc0f:	c3                   	ret
40dc10:	ff 31                	push   (%ecx)
40dc12:	ff 15 78 22 41 00    	call   *0x412278
40dc18:	c3                   	ret
40dc19:	55                   	push   %ebp
40dc1a:	8b ec                	mov    %esp,%ebp
40dc1c:	83 ec 24             	sub    $0x24,%esp
40dc1f:	56                   	push   %esi
40dc20:	57                   	push   %edi
40dc21:	6a 08                	push   $0x8
40dc23:	8b f1                	mov    %ecx,%esi
40dc25:	c7 45 fc 10 00 00 00 	movl   $0x10,-0x4(%ebp)
40dc2c:	59                   	pop    %ecx
40dc2d:	33 c0                	xor    %eax,%eax
40dc2f:	8d 7d dc             	lea    -0x24(%ebp),%edi
40dc32:	f3 ab                	rep stos %eax,%es:(%edi)
40dc34:	8d 45 fc             	lea    -0x4(%ebp),%eax
40dc37:	50                   	push   %eax
40dc38:	8d 45 dc             	lea    -0x24(%ebp),%eax
40dc3b:	50                   	push   %eax
40dc3c:	ff 15 1c 22 41 00    	call   *0x41221c
40dc42:	8d 45 dc             	lea    -0x24(%ebp),%eax
40dc45:	8b ce                	mov    %esi,%ecx
40dc47:	50                   	push   %eax
40dc48:	e8 c5 57 ff ff       	call   0x403412
40dc4d:	5f                   	pop    %edi
40dc4e:	8b c6                	mov    %esi,%eax
40dc50:	5e                   	pop    %esi
40dc51:	c9                   	leave
40dc52:	c3                   	ret
40dc53:	55                   	push   %ebp
40dc54:	8b ec                	mov    %esp,%ebp
40dc56:	83 ec 18             	sub    $0x18,%esp
40dc59:	56                   	push   %esi
40dc5a:	33 f6                	xor    %esi,%esi
40dc5c:	57                   	push   %edi
40dc5d:	8b f9                	mov    %ecx,%edi
40dc5f:	89 75 fc             	mov    %esi,-0x4(%ebp)
40dc62:	89 75 ec             	mov    %esi,-0x14(%ebp)
40dc65:	89 75 f0             	mov    %esi,-0x10(%ebp)
40dc68:	89 37                	mov    %esi,(%edi)
40dc6a:	89 77 04             	mov    %esi,0x4(%edi)
40dc6d:	39 35 48 7d 41 00    	cmp    %esi,0x417d48
40dc73:	0f 85 83 00 00 00    	jne    0x40dcfc
40dc79:	68 08 42 41 00       	push   $0x414208
40dc7e:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40dc81:	e8 8c 57 ff ff       	call   0x403412
40dc86:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40dc89:	51                   	push   %ecx
40dc8a:	68 01 01 00 00       	push   $0x101
40dc8f:	56                   	push   %esi
40dc90:	ff 30                	push   (%eax)
40dc92:	68 02 00 00 80       	push   $0x80000002
40dc97:	ff 15 14 20 41 00    	call   *0x412014
40dc9d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40dca0:	f7 d8                	neg    %eax
40dca2:	1b f6                	sbb    %esi,%esi