40a9f8:	25 ff 00 04 00       	and    $0x400ff,%eax
40a9fd:	83 e7 07             	and    $0x7,%edi
40aa00:	a3 cc f5 43 00       	mov    %eax,0x43f5cc
40aa05:	81 cf 28 00 00 01    	or     $0x1000028,%edi
40aa0b:	f7 d1                	not    %ecx
40aa0d:	23 0d 0c d1 43 00    	and    0x43d10c,%ecx
40aa13:	f7 d7                	not    %edi
40aa15:	23 3d 08 d1 43 00    	and    0x43d108,%edi
40aa1b:	89 3d 08 d1 43 00    	mov    %edi,0x43d108
40aa21:	89 0d 0c d1 43 00    	mov    %ecx,0x43d10c
40aa27:	83 f8 01             	cmp    $0x1,%eax
40aa2a:	76 0f                	jbe    0x40aa3b
40aa2c:	83 e7 bf             	and    $0xffffffbf,%edi
40aa2f:	89 0d 0c d1 43 00    	mov    %ecx,0x43d10c
40aa35:	89 3d 08 d1 43 00    	mov    %edi,0x43d108
40aa3b:	5f                   	pop    %edi
40aa3c:	5e                   	pop    %esi
40aa3d:	5b                   	pop    %ebx
40aa3e:	33 c0                	xor    %eax,%eax
40aa40:	c9                   	leave
40aa41:	c3                   	ret
40aa42:	33 c0                	xor    %eax,%eax
40aa44:	39 05 bc ff 43 00    	cmp    %eax,0x43ffbc
40aa4a:	0f 95 c0             	setne  %al
40aa4d:	c3                   	ret
40aa4e:	a1 dc f5 43 00       	mov    0x43f5dc,%eax
40aa53:	90                   	nop
40aa54:	c3                   	ret
40aa55:	56                   	push   %esi
40aa56:	e8 f3 ff ff ff       	call   0x40aa4e
40aa5b:	8b f0                	mov    %eax,%esi
40aa5d:	85 f6                	test   %esi,%esi
40aa5f:	74 0a                	je     0x40aa6b
40aa61:	8b ce                	mov    %esi,%ecx
40aa63:	ff 15 68 12 43 00    	call   *0x431268
40aa69:	ff d6                	call   *%esi
40aa6b:	e8 21 14 01 00       	call   0x41be91
40aa70:	cc                   	int3
40aa71:	55                   	push   %ebp
40aa72:	8b ec                	mov    %esp,%ebp
40aa74:	8b 45 08             	mov    0x8(%ebp),%eax
40aa77:	b9 dc f5 43 00       	mov    $0x43f5dc,%ecx
40aa7c:	87 01                	xchg   %eax,(%ecx)
40aa7e:	5d                   	pop    %ebp
40aa7f:	c3                   	ret
40aa80:	55                   	push   %ebp
40aa81:	8b ec                	mov    %esp,%ebp
40aa83:	51                   	push   %ecx
40aa84:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
40aa87:	53                   	push   %ebx
40aa88:	56                   	push   %esi
40aa89:	57                   	push   %edi
40aa8a:	8b 7d 18             	mov    0x18(%ebp),%edi
40aa8d:	8b 57 0c             	mov    0xc(%edi),%edx
40aa90:	8b f2                	mov    %edx,%esi
40aa92:	8b 5f 10             	mov    0x10(%edi),%ebx
40aa95:	89 55 fc             	mov    %edx,-0x4(%ebp)
40aa98:	85 c9                	test   %ecx,%ecx
40aa9a:	78 2d                	js     0x40aac9
40aa9c:	6b c2 14             	imul   $0x14,%edx,%eax
40aa9f:	83 c3 08             	add    $0x8,%ebx
40aaa2:	03 c3                	add    %ebx,%eax
40aaa4:	8b 5d 10             	mov    0x10(%ebp),%ebx
40aaa7:	83 fa ff             	cmp    $0xffffffff,%edx
40aaaa:	74 3d                	je     0x40aae9
40aaac:	83 e8 14             	sub    $0x14,%eax
40aaaf:	4a                   	dec    %edx
40aab0:	39 58 fc             	cmp    %ebx,-0x4(%eax)
40aab3:	7d 04                	jge    0x40aab9
40aab5:	3b 18                	cmp    (%eax),%ebx
40aab7:	7e 05                	jle    0x40aabe
40aab9:	83 fa ff             	cmp    $0xffffffff,%edx
40aabc:	75 07                	jne    0x40aac5
40aabe:	8b 75 fc             	mov    -0x4(%ebp),%esi
40aac1:	49                   	dec    %ecx
40aac2:	89 55 fc             	mov    %edx,-0x4(%ebp)
40aac5:	85 c9                	test   %ecx,%ecx
40aac7:	79 de                	jns    0x40aaa7
40aac9:	42                   	inc    %edx
40aaca:	3b 77 0c             	cmp    0xc(%edi),%esi
40aacd:	77 1a                	ja     0x40aae9
40aacf:	3b d6                	cmp    %esi,%edx
40aad1:	77 16                	ja     0x40aae9
40aad3:	8b 45 08             	mov    0x8(%ebp),%eax
40aad6:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40aad9:	5f                   	pop    %edi
40aada:	89 70 0c             	mov    %esi,0xc(%eax)
40aadd:	5e                   	pop    %esi
40aade:	89 08                	mov    %ecx,(%eax)
40aae0:	89 50 04             	mov    %edx,0x4(%eax)
40aae3:	89 48 08             	mov    %ecx,0x8(%eax)
40aae6:	5b                   	pop    %ebx
40aae7:	c9                   	leave
40aae8:	c3                   	ret
40aae9:	e8 a3 13 01 00       	call   0x41be91
40aaee:	cc                   	int3
40aaef:	55                   	push   %ebp
40aaf0:	8b ec                	mov    %esp,%ebp
40aaf2:	83 ec 18             	sub    $0x18,%esp
40aaf5:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
40aaf9:	8d 45 e8             	lea    -0x18(%ebp),%eax
40aafc:	33 05 c0 d0 43 00    	xor    0x43d0c0,%eax
40ab02:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ab05:	89 45 f0             	mov    %eax,-0x10(%ebp)
40ab08:	8b 45 0c             	mov    0xc(%ebp),%eax
40ab0b:	89 45 f4             	mov    %eax,-0xc(%ebp)
40ab0e:	8b 45 14             	mov    0x14(%ebp),%eax
40ab11:	40                   	inc    %eax
40ab12:	c7 45 ec c0 ac 40 00 	movl   $0x40acc0,-0x14(%ebp)
40ab19:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40ab1c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ab1f:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40ab25:	89 45 e8             	mov    %eax,-0x18(%ebp)
40ab28:	8d 45 e8             	lea    -0x18(%ebp),%eax
40ab2b:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40ab31:	ff 75 18             	push   0x18(%ebp)
40ab34:	51                   	push   %ecx
40ab35:	ff 75 10             	push   0x10(%ebp)
40ab38:	e8 93 20 00 00       	call   0x40cbd0
40ab3d:	8b c8                	mov    %eax,%ecx
40ab3f:	8b 45 e8             	mov    -0x18(%ebp),%eax
40ab42:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40ab48:	8b c1                	mov    %ecx,%eax
40ab4a:	c9                   	leave
40ab4b:	c3                   	ret
40ab4c:	55                   	push   %ebp
40ab4d:	8b ec                	mov    %esp,%ebp
40ab4f:	83 ec 3c             	sub    $0x3c,%esp
40ab52:	53                   	push   %ebx
40ab53:	81 7d 08 23 01 00 00 	cmpl   $0x123,0x8(%ebp)
40ab5a:	75 12                	jne    0x40ab6e
40ab5c:	b8 10 ac 40 00       	mov    $0x40ac10,%eax
40ab61:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ab64:	89 01                	mov    %eax,(%ecx)
40ab66:	33 c0                	xor    %eax,%eax
40ab68:	40                   	inc    %eax
40ab69:	e9 cb 00 00 00       	jmp    0x40ac39
40ab6e:	83 65 c4 00          	andl   $0x0,-0x3c(%ebp)
40ab72:	c7 45 c8 5d ad 40 00 	movl   $0x40ad5d,-0x38(%ebp)
40ab79:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
40ab7e:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
40ab81:	33 c1                	xor    %ecx,%eax
40ab83:	89 45 cc             	mov    %eax,-0x34(%ebp)
40ab86:	8b 45 18             	mov    0x18(%ebp),%eax
40ab89:	89 45 d0             	mov    %eax,-0x30(%ebp)
40ab8c:	8b 45 0c             	mov    0xc(%ebp),%eax
40ab8f:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40ab92:	8b 45 1c             	mov    0x1c(%ebp),%eax
40ab95:	89 45 d8             	mov    %eax,-0x28(%ebp)
40ab98:	8b 45 20             	mov    0x20(%ebp),%eax
40ab9b:	89 45 dc             	mov    %eax,-0x24(%ebp)
40ab9e:	83 65 e0 00          	andl   $0x0,-0x20(%ebp)
40aba2:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40aba6:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
40abaa:	89 65 e0             	mov    %esp,-0x20(%ebp)
40abad:	89 6d e4             	mov    %ebp,-0x1c(%ebp)
40abb0:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40abb6:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40abb9:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40abbc:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40abc2:	8b 45 08             	mov    0x8(%ebp),%eax
40abc5:	ff 30                	push   (%eax)
40abc7:	e8 cd 53 02 00       	call   0x42ff99
40abcc:	59                   	pop    %ecx
40abcd:	8b 4d 08             	mov    0x8(%ebp),%ecx
40abd0:	89 01                	mov    %eax,(%ecx)
40abd2:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
40abd9:	8b 45 08             	mov    0x8(%ebp),%eax
40abdc:	89 45 ec             	mov    %eax,-0x14(%ebp)
40abdf:	8b 45 10             	mov    0x10(%ebp),%eax
40abe2:	89 45 f0             	mov    %eax,-0x10(%ebp)
40abe5:	e8 b0 11 00 00       	call   0x40bd9a
40abea:	8b 40 08             	mov    0x8(%eax),%eax
40abed:	89 45 fc             	mov    %eax,-0x4(%ebp)
40abf0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40abf3:	e8 57 2f 02 00       	call   0x42db4f
40abf8:	8b 45 fc             	mov    -0x4(%ebp),%eax
40abfb:	89 45 f4             	mov    %eax,-0xc(%ebp)
40abfe:	8d 45 ec             	lea    -0x14(%ebp),%eax
40ac01:	50                   	push   %eax
40ac02:	8b 45 08             	mov    0x8(%ebp),%eax
40ac05:	ff 30                	push   (%eax)
40ac07:	ff 55 f4             	call   *-0xc(%ebp)
40ac0a:	59                   	pop    %ecx
40ac0b:	59                   	pop    %ecx
40ac0c:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40ac10:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
40ac14:	74 17                	je     0x40ac2d
40ac16:	64 8b 1d 00 00 00 00 	mov    %fs:0x0,%ebx
40ac1d:	8b 03                	mov    (%ebx),%eax
40ac1f:	8b 5d c4             	mov    -0x3c(%ebp),%ebx
40ac22:	89 03                	mov    %eax,(%ebx)
40ac24:	64 89 1d 00 00 00 00 	mov    %ebx,%fs:0x0
40ac2b:	eb 09                	jmp    0x40ac36
40ac2d:	8b 45 c4             	mov    -0x3c(%ebp),%eax
40ac30:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40ac36:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ac39:	5b                   	pop    %ebx
40ac3a:	c9                   	leave
40ac3b:	c3                   	ret
40ac3c:	55                   	push   %ebp
40ac3d:	8b ec                	mov    %esp,%ebp
40ac3f:	51                   	push   %ecx
40ac40:	53                   	push   %ebx
40ac41:	8b 45 0c             	mov    0xc(%ebp),%eax
40ac44:	83 c0 0c             	add    $0xc,%eax
40ac47:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ac4a:	64 8b 1d 00 00 00 00 	mov    %fs:0x0,%ebx
40ac51:	8b 03                	mov    (%ebx),%eax
40ac53:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40ac59:	8b 45 08             	mov    0x8(%ebp),%eax
40ac5c:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40ac5f:	8b 6d fc             	mov    -0x4(%ebp),%ebp
40ac62:	8b 63 fc             	mov    -0x4(%ebx),%esp
40ac65:	ff e0                	jmp    *%eax
40ac67:	5b                   	pop    %ebx
40ac68:	c9                   	leave
40ac69:	c2 08 00             	ret    $0x8
40ac6c:	55                   	push   %ebp
40ac6d:	8b ec                	mov    %esp,%ebp
40ac6f:	51                   	push   %ecx
40ac70:	51                   	push   %ecx
40ac71:	53                   	push   %ebx
40ac72:	56                   	push   %esi
40ac73:	57                   	push   %edi
40ac74:	64 8b 35 00 00 00 00 	mov    %fs:0x0,%esi
40ac7b:	89 75 f8             	mov    %esi,-0x8(%ebp)
40ac7e:	c7 45 fc 97 ac 40 00 	movl   $0x40ac97,-0x4(%ebp)
40ac85:	6a 00                	push   $0x0
40ac87:	ff 75 0c             	push   0xc(%ebp)
40ac8a:	ff 75 fc             	push   -0x4(%ebp)
40ac8d:	ff 75 08             	push   0x8(%ebp)
40ac90:	ff 15 d4 10 43 00    	call   *0x4310d4
40ac96:	90                   	nop
40ac97:	8b 45 0c             	mov    0xc(%ebp),%eax
40ac9a:	8b 40 04             	mov    0x4(%eax),%eax
40ac9d:	83 e0 fd             	and    $0xfffffffd,%eax
40aca0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40aca3:	89 41 04             	mov    %eax,0x4(%ecx)
40aca6:	64 8b 3d 00 00 00 00 	mov    %fs:0x0,%edi
40acad:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40acb0:	89 3b                	mov    %edi,(%ebx)
40acb2:	64 89 1d 00 00 00 00 	mov    %ebx,%fs:0x0
40acb9:	5f                   	pop    %edi
40acba:	5e                   	pop    %esi
40acbb:	5b                   	pop    %ebx
40acbc:	c9                   	leave
40acbd:	c2 08 00             	ret    $0x8
40acc0:	55                   	push   %ebp
40acc1:	8b ec                	mov    %esp,%ebp
40acc3:	56                   	push   %esi
40acc4:	fc                   	cld
40acc5:	8b 75 0c             	mov    0xc(%ebp),%esi
40acc8:	8b 4e 08             	mov    0x8(%esi),%ecx
40accb:	33 ce                	xor    %esi,%ecx
40accd:	e8 d5 ef ff ff       	call   0x409ca7
40acd2:	6a 00                	push   $0x0
40acd4:	56                   	push   %esi
40acd5:	ff 76 14             	push   0x14(%esi)
40acd8:	ff 76 0c             	push   0xc(%esi)
40acdb:	6a 00                	push   $0x0
40acdd:	ff 75 10             	push   0x10(%ebp)
40ace0:	ff 76 10             	push   0x10(%esi)
40ace3:	ff 75 08             	push   0x8(%ebp)
40ace6:	e8 5e 1a 00 00       	call   0x40c749
40aceb:	83 c4 20             	add    $0x20,%esp
40acee:	5e                   	pop    %esi
40acef:	5d                   	pop    %ebp
40acf0:	c3                   	ret
40acf1:	55                   	push   %ebp
40acf2:	8b ec                	mov    %esp,%ebp
40acf4:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40acf7:	56                   	push   %esi
40acf8:	8b 75 08             	mov    0x8(%ebp),%esi
40acfb:	89 0e                	mov    %ecx,(%esi)
40acfd:	e8 98 10 00 00       	call   0x40bd9a
40ad02:	8b 48 24             	mov    0x24(%eax),%ecx
40ad05:	89 4e 04             	mov    %ecx,0x4(%esi)
40ad08:	e8 8d 10 00 00       	call   0x40bd9a
40ad0d:	89 70 24             	mov    %esi,0x24(%eax)
40ad10:	8b c6                	mov    %esi,%eax
40ad12:	5e                   	pop    %esi
40ad13:	5d                   	pop    %ebp
40ad14:	c3                   	ret
40ad15:	55                   	push   %ebp
40ad16:	8b ec                	mov    %esp,%ebp
40ad18:	56                   	push   %esi
40ad19:	e8 7c 10 00 00       	call   0x40bd9a
40ad1e:	8b 75 08             	mov    0x8(%ebp),%esi
40ad21:	3b 70 24             	cmp    0x24(%eax),%esi
40ad24:	75 0e                	jne    0x40ad34
40ad26:	8b 76 04             	mov    0x4(%esi),%esi
40ad29:	e8 6c 10 00 00       	call   0x40bd9a
40ad2e:	89 70 24             	mov    %esi,0x24(%eax)
40ad31:	5e                   	pop    %esi
40ad32:	5d                   	pop    %ebp
40ad33:	c3                   	ret
40ad34:	e8 61 10 00 00       	call   0x40bd9a
40ad39:	8b 48 24             	mov    0x24(%eax),%ecx
40ad3c:	83 c1 04             	add    $0x4,%ecx
40ad3f:	eb 07                	jmp    0x40ad48
40ad41:	3b f0                	cmp    %eax,%esi
40ad43:	74 0b                	je     0x40ad50
40ad45:	8d 48 04             	lea    0x4(%eax),%ecx
40ad48:	8b 01                	mov    (%ecx),%eax
40ad4a:	85 c0                	test   %eax,%eax
40ad4c:	74 09                	je     0x40ad57
40ad4e:	eb f1                	jmp    0x40ad41
40ad50:	8b 46 04             	mov    0x4(%esi),%eax
40ad53:	89 01                	mov    %eax,(%ecx)
40ad55:	eb da                	jmp    0x40ad31
40ad57:	e8 35 11 01 00       	call   0x41be91
40ad5c:	cc                   	int3
40ad5d:	55                   	push   %ebp
40ad5e:	8b ec                	mov    %esp,%ebp
40ad60:	51                   	push   %ecx
40ad61:	53                   	push   %ebx
40ad62:	fc                   	cld
40ad63:	8b 45 0c             	mov    0xc(%ebp),%eax
40ad66:	8b 48 08             	mov    0x8(%eax),%ecx
40ad69:	33 4d 0c             	xor    0xc(%ebp),%ecx
40ad6c:	e8 36 ef ff ff       	call   0x409ca7
40ad71:	90                   	nop
40ad72:	8b 45 08             	mov    0x8(%ebp),%eax
40ad75:	8b 40 04             	mov    0x4(%eax),%eax
40ad78:	83 e0 66             	and    $0x66,%eax
40ad7b:	74 11                	je     0x40ad8e
40ad7d:	8b 45 0c             	mov    0xc(%ebp),%eax
40ad80:	c7 40 24 01 00 00 00 	movl   $0x1,0x24(%eax)
40ad87:	33 c0                	xor    %eax,%eax
40ad89:	40                   	inc    %eax
40ad8a:	eb 6d                	jmp    0x40adf9
40ad8c:	eb 6b                	jmp    0x40adf9
40ad8e:	6a 01                	push   $0x1
40ad90:	8b 45 0c             	mov    0xc(%ebp),%eax
40ad93:	ff 70 18             	push   0x18(%eax)
40ad96:	8b 45 0c             	mov    0xc(%ebp),%eax
40ad99:	ff 70 14             	push   0x14(%eax)
40ad9c:	8b 45 0c             	mov    0xc(%ebp),%eax
40ad9f:	ff 70 0c             	push   0xc(%eax)
40ada2:	6a 00                	push   $0x0
40ada4:	ff 75 10             	push   0x10(%ebp)
40ada7:	8b 45 0c             	mov    0xc(%ebp),%eax
40adaa:	ff 70 10             	push   0x10(%eax)
40adad:	ff 75 08             	push   0x8(%ebp)
40adb0:	e8 94 19 00 00       	call   0x40c749
40adb5:	83 c4 20             	add    $0x20,%esp
40adb8:	8b 45 0c             	mov    0xc(%ebp),%eax
40adbb:	83 78 24 00          	cmpl   $0x0,0x24(%eax)
40adbf:	75 0c                	jne    0x40adcd