40ad64:	50                   	push   %eax
40ad65:	53                   	push   %ebx
40ad66:	e8 c5 fb ff ff       	call   0x40a930
40ad6b:	8b 55 ac             	mov    -0x54(%ebp),%edx
40ad6e:	8b 75 a0             	mov    -0x60(%ebp),%esi
40ad71:	57                   	push   %edi
40ad72:	8b 08                	mov    (%eax),%ecx
40ad74:	8b 40 04             	mov    0x4(%eax),%eax
40ad77:	ff 75 1c             	push   0x1c(%ebp)
40ad7a:	89 4d 10             	mov    %ecx,0x10(%ebp)
40ad7d:	50                   	push   %eax
40ad7e:	51                   	push   %ecx
40ad7f:	56                   	push   %esi
40ad80:	53                   	push   %ebx
40ad81:	89 45 14             	mov    %eax,0x14(%ebp)
40ad84:	c7 42 20 00 00 00 00 	movl   $0x0,0x20(%edx)
40ad8b:	c7 42 24 00 00 00 00 	movl   $0x0,0x24(%edx)
40ad92:	e8 19 fb ff ff       	call   0x40a8b0
40ad97:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40ad9a:	83 c4 30             	add    $0x30,%esp
40ad9d:	83 f9 10             	cmp    $0x10,%ecx
40ada0:	72 28                	jb     0x40adca
40ada2:	8b 55 c0             	mov    -0x40(%ebp),%edx
40ada5:	41                   	inc    %ecx
40ada6:	8b c2                	mov    %edx,%eax
40ada8:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40adae:	72 10                	jb     0x40adc0
40adb0:	8b 50 fc             	mov    -0x4(%eax),%edx
40adb3:	83 c1 23             	add    $0x23,%ecx
40adb6:	2b c2                	sub    %edx,%eax
40adb8:	83 c0 fc             	add    $0xfffffffc,%eax
40adbb:	83 f8 1f             	cmp    $0x1f,%eax
40adbe:	77 75                	ja     0x40ae35
40adc0:	51                   	push   %ecx
40adc1:	52                   	push   %edx
40adc2:	e8 47 0b 01 00       	call   0x41b90e
40adc7:	83 c4 08             	add    $0x8,%esp
40adca:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40adcd:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
40add4:	c7 45 d4 0f 00 00 00 	movl   $0xf,-0x2c(%ebp)
40addb:	c6 45 c0 00          	movb   $0x0,-0x40(%ebp)
40addf:	83 f9 08             	cmp    $0x8,%ecx
40ade2:	72 2e                	jb     0x40ae12
40ade4:	8b 55 d8             	mov    -0x28(%ebp),%edx
40ade7:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40adee:	8b c2                	mov    %edx,%eax
40adf0:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40adf6:	72 10                	jb     0x40ae08
40adf8:	8b 50 fc             	mov    -0x4(%eax),%edx
40adfb:	83 c1 23             	add    $0x23,%ecx
40adfe:	2b c2                	sub    %edx,%eax
40ae00:	83 c0 fc             	add    $0xfffffffc,%eax
40ae03:	83 f8 1f             	cmp    $0x1f,%eax
40ae06:	77 2d                	ja     0x40ae35
40ae08:	51                   	push   %ecx
40ae09:	52                   	push   %edx
40ae0a:	e8 ff 0a 01 00       	call   0x41b90e
40ae0f:	83 c4 08             	add    $0x8,%esp
40ae12:	8b c6                	mov    %esi,%eax
40ae14:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40ae17:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ae1e:	59                   	pop    %ecx
40ae1f:	5f                   	pop    %edi
40ae20:	5e                   	pop    %esi
40ae21:	5b                   	pop    %ebx
40ae22:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40ae25:	33 cd                	xor    %ebp,%ecx
40ae27:	e8 a4 0a 01 00       	call   0x41b8d0
40ae2c:	8b e5                	mov    %ebp,%esp
40ae2e:	5d                   	pop    %ebp
40ae2f:	c3                   	ret
40ae30:	e8 9b 0a 00 00       	call   0x40b8d0
40ae35:	e8 45 5c 01 00       	call   0x420a7f
40ae3a:	cc                   	int3
40ae3b:	cc                   	int3
40ae3c:	cc                   	int3
40ae3d:	cc                   	int3
40ae3e:	cc                   	int3
40ae3f:	cc                   	int3
40ae40:	55                   	push   %ebp
40ae41:	8b ec                	mov    %esp,%ebp
40ae43:	6a ff                	push   $0xffffffff
40ae45:	68 85 db 43 00       	push   $0x43db85
40ae4a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40ae50:	50                   	push   %eax
40ae51:	83 ec 60             	sub    $0x60,%esp
40ae54:	a1 14 40 45 00       	mov    0x454014,%eax
40ae59:	33 c5                	xor    %ebp,%eax
40ae5b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40ae5e:	53                   	push   %ebx
40ae5f:	56                   	push   %esi
40ae60:	57                   	push   %edi
40ae61:	50                   	push   %eax
40ae62:	8d 45 f4             	lea    -0xc(%ebp),%eax
40ae65:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40ae6b:	8b 55 24             	mov    0x24(%ebp),%edx
40ae6e:	8b 45 0c             	mov    0xc(%ebp),%eax
40ae71:	8b 7d 18             	mov    0x18(%ebp),%edi
40ae74:	8b 5d 20             	mov    0x20(%ebp),%ebx
40ae77:	89 45 94             	mov    %eax,-0x6c(%ebp)
40ae7a:	89 7d 9c             	mov    %edi,-0x64(%ebp)
40ae7d:	89 5d b4             	mov    %ebx,-0x4c(%ebp)
40ae80:	89 55 98             	mov    %edx,-0x68(%ebp)
40ae83:	85 d2                	test   %edx,%edx
40ae85:	74 11                	je     0x40ae98
40ae87:	8a 03                	mov    (%ebx),%al
40ae89:	3c 2b                	cmp    $0x2b,%al
40ae8b:	74 04                	je     0x40ae91
40ae8d:	3c 2d                	cmp    $0x2d,%al
40ae8f:	75 07                	jne    0x40ae98
40ae91:	b9 01 00 00 00       	mov    $0x1,%ecx
40ae96:	eb 02                	jmp    0x40ae9a
40ae98:	33 c9                	xor    %ecx,%ecx
40ae9a:	8b 47 14             	mov    0x14(%edi),%eax
40ae9d:	25 00 30 00 00       	and    $0x3000,%eax
40aea2:	89 4d b8             	mov    %ecx,-0x48(%ebp)
40aea5:	3d 00 30 00 00       	cmp    $0x3000,%eax
40aeaa:	74 07                	je     0x40aeb3
40aeac:	b8 9c dc 44 00       	mov    $0x44dc9c,%eax
40aeb1:	eb 21                	jmp    0x40aed4
40aeb3:	8d 71 02             	lea    0x2(%ecx),%esi
40aeb6:	3b f2                	cmp    %edx,%esi
40aeb8:	77 15                	ja     0x40aecf
40aeba:	80 3c 0b 30          	cmpb   $0x30,(%ebx,%ecx,1)
40aebe:	75 0f                	jne    0x40aecf
40aec0:	8a 44 0b 01          	mov    0x1(%ebx,%ecx,1),%al
40aec4:	3c 78                	cmp    $0x78,%al
40aec6:	74 04                	je     0x40aecc
40aec8:	3c 58                	cmp    $0x58,%al
40aeca:	75 03                	jne    0x40aecf
40aecc:	89 75 b8             	mov    %esi,-0x48(%ebp)
40aecf:	b8 a0 dc 44 00       	mov    $0x44dca0,%eax
40aed4:	50                   	push   %eax
40aed5:	53                   	push   %ebx
40aed6:	e8 65 9e 01 00       	call   0x424d40
40aedb:	89 45 a8             	mov    %eax,-0x58(%ebp)
40aede:	b8 2e 00 00 00       	mov    $0x2e,%eax
40aee3:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40aee7:	e8 9a 9e 01 00       	call   0x424d86
40aeec:	8b 00                	mov    (%eax),%eax
40aeee:	8a 00                	mov    (%eax),%al
40aef0:	88 45 ec             	mov    %al,-0x14(%ebp)
40aef3:	8d 45 ec             	lea    -0x14(%ebp),%eax
40aef6:	50                   	push   %eax
40aef7:	53                   	push   %ebx
40aef8:	e8 43 9e 01 00       	call   0x424d40
40aefd:	8b d8                	mov    %eax,%ebx
40aeff:	83 c4 10             	add    $0x10,%esp
40af02:	8b 47 30             	mov    0x30(%edi),%eax
40af05:	8b 78 04             	mov    0x4(%eax),%edi
40af08:	89 7d a4             	mov    %edi,-0x5c(%ebp)
40af0b:	8b 07                	mov    (%edi),%eax
40af0d:	8b 70 04             	mov    0x4(%eax),%esi
40af10:	8b ce                	mov    %esi,%ecx
40af12:	ff 15 3c f2 43 00    	call   *0x43f23c
40af18:	8b cf                	mov    %edi,%ecx
40af1a:	ff d6                	call   *%esi
40af1c:	8d 45 a0             	lea    -0x60(%ebp),%eax
40af1f:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40af26:	50                   	push   %eax
40af27:	e8 64 15 00 00       	call   0x40c490
40af2c:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
40af33:	83 c4 04             	add    $0x4,%esp
40af36:	8b 7d a4             	mov    -0x5c(%ebp),%edi
40af39:	89 45 ac             	mov    %eax,-0x54(%ebp)
40af3c:	85 ff                	test   %edi,%edi
40af3e:	74 29                	je     0x40af69
40af40:	8b 07                	mov    (%edi),%eax
40af42:	8b 70 08             	mov    0x8(%eax),%esi
40af45:	8b ce                	mov    %esi,%ecx
40af47:	ff 15 3c f2 43 00    	call   *0x43f23c
40af4d:	8b cf                	mov    %edi,%ecx
40af4f:	ff d6                	call   *%esi
40af51:	8b f8                	mov    %eax,%edi
40af53:	85 ff                	test   %edi,%edi
40af55:	74 12                	je     0x40af69
40af57:	8b 07                	mov    (%edi),%eax
40af59:	6a 01                	push   $0x1
40af5b:	8b 30                	mov    (%eax),%esi
40af5d:	8b ce                	mov    %esi,%ecx
40af5f:	ff 15 3c f2 43 00    	call   *0x43f23c
40af65:	8b cf                	mov    %edi,%ecx
40af67:	ff d6                	call   *%esi
40af69:	8b 75 98             	mov    -0x68(%ebp),%esi
40af6c:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40af6f:	56                   	push   %esi
40af70:	6a 00                	push   $0x0
40af72:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
40af79:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
40af80:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
40af87:	e8 c4 0f 00 00       	call   0x40bf50
40af8c:	8b 7d ac             	mov    -0x54(%ebp),%edi
40af8f:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40af92:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40af99:	8b 55 b4             	mov    -0x4c(%ebp),%edx
40af9c:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
40afa0:	8b 0f                	mov    (%edi),%ecx
40afa2:	0f 43 45 d4          	cmovae -0x2c(%ebp),%eax
40afa6:	50                   	push   %eax
40afa7:	8d 04 16             	lea    (%esi,%edx,1),%eax
40afaa:	8b 71 2c             	mov    0x2c(%ecx),%esi
40afad:	8b ce                	mov    %esi,%ecx
40afaf:	50                   	push   %eax
40afb0:	52                   	push   %edx
40afb1:	ff 15 3c f2 43 00    	call   *0x43f23c
40afb7:	8b cf                	mov    %edi,%ecx
40afb9:	ff d6                	call   *%esi
40afbb:	8b 55 9c             	mov    -0x64(%ebp),%edx
40afbe:	8b 42 30             	mov    0x30(%edx),%eax
40afc1:	8b 78 04             	mov    0x4(%eax),%edi
40afc4:	89 7d b4             	mov    %edi,-0x4c(%ebp)
40afc7:	8b 07                	mov    (%edi),%eax
40afc9:	8b 70 04             	mov    0x4(%eax),%esi
40afcc:	8b ce                	mov    %esi,%ecx
40afce:	ff 15 3c f2 43 00    	call   *0x43f23c
40afd4:	8b cf                	mov    %edi,%ecx
40afd6:	ff d6                	call   *%esi
40afd8:	8d 45 b0             	lea    -0x50(%ebp),%eax
40afdb:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40afdf:	50                   	push   %eax
40afe0:	e8 9b 11 00 00       	call   0x40c180
40afe5:	8b f8                	mov    %eax,%edi
40afe7:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40afeb:	8b 45 b4             	mov    -0x4c(%ebp),%eax
40afee:	83 c4 04             	add    $0x4,%esp
40aff1:	89 7d ac             	mov    %edi,-0x54(%ebp)
40aff4:	85 c0                	test   %eax,%eax
40aff6:	74 2c                	je     0x40b024
40aff8:	8b 00                	mov    (%eax),%eax
40affa:	8b 70 08             	mov    0x8(%eax),%esi
40affd:	8b ce                	mov    %esi,%ecx
40afff:	ff 15 3c f2 43 00    	call   *0x43f23c
40b005:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
40b008:	ff d6                	call   *%esi
40b00a:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40b00d:	85 c0                	test   %eax,%eax
40b00f:	74 13                	je     0x40b024
40b011:	8b 00                	mov    (%eax),%eax
40b013:	6a 01                	push   $0x1
40b015:	8b 30                	mov    (%eax),%esi
40b017:	8b ce                	mov    %esi,%ecx
40b019:	ff 15 3c f2 43 00    	call   *0x43f23c
40b01f:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
40b022:	ff d6                	call   *%esi
40b024:	8b 07                	mov    (%edi),%eax
40b026:	8d 4d bc             	lea    -0x44(%ebp),%ecx
40b029:	51                   	push   %ecx
40b02a:	8b 70 14             	mov    0x14(%eax),%esi
40b02d:	8b ce                	mov    %esi,%ecx
40b02f:	ff 15 3c f2 43 00    	call   *0x43f23c
40b035:	8b cf                	mov    %edi,%ecx
40b037:	ff d6                	call   *%esi
40b039:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40b03d:	8b 07                	mov    (%edi),%eax
40b03f:	8b 70 10             	mov    0x10(%eax),%esi
40b042:	8b ce                	mov    %esi,%ecx
40b044:	ff 15 3c f2 43 00    	call   *0x43f23c
40b04a:	8b cf                	mov    %edi,%ecx
40b04c:	ff d6                	call   *%esi
40b04e:	8b 7d 98             	mov    -0x68(%ebp),%edi
40b051:	0f b7 f0             	movzwl %ax,%esi
40b054:	89 75 b4             	mov    %esi,-0x4c(%ebp)
40b057:	3b df                	cmp    %edi,%ebx
40b059:	74 2c                	je     0x40b087
40b05b:	8b 45 ac             	mov    -0x54(%ebp),%eax
40b05e:	8b 00                	mov    (%eax),%eax
40b060:	8b 70 0c             	mov    0xc(%eax),%esi
40b063:	8b ce                	mov    %esi,%ecx
40b065:	ff 15 3c f2 43 00    	call   *0x43f23c
40b06b:	8b 4d ac             	mov    -0x54(%ebp),%ecx
40b06e:	ff d6                	call   *%esi
40b070:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
40b074:	8b 75 b4             	mov    -0x4c(%ebp),%esi
40b077:	0f b7 c8             	movzwl %ax,%ecx
40b07a:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40b07d:	0f 43 45 d4          	cmovae -0x2c(%ebp),%eax
40b081:	3b df                	cmp    %edi,%ebx
40b083:	66 89 0c 58          	mov    %cx,(%eax,%ebx,2)
40b087:	0f 44 5d a8          	cmove  -0x58(%ebp),%ebx
40b08b:	8d 7d bc             	lea    -0x44(%ebp),%edi
40b08e:	83 7d d0 10          	cmpl   $0x10,-0x30(%ebp)
40b092:	0f 43 7d bc          	cmovae -0x44(%ebp),%edi
40b096:	8a 07                	mov    (%edi),%al
40b098:	3c 7f                	cmp    $0x7f,%al
40b09a:	0f 84 8c 00 00 00    	je     0x40b12c
40b0a0:	8b 55 b8             	mov    -0x48(%ebp),%edx
40b0a3:	84 c0                	test   %al,%al
40b0a5:	0f 8e 84 00 00 00    	jle    0x40b12f
40b0ab:	0f be c8             	movsbl %al,%ecx
40b0ae:	8b c3                	mov    %ebx,%eax
40b0b0:	2b c2                	sub    %edx,%eax
40b0b2:	3b c8                	cmp    %eax,%ecx
40b0b4:	73 79                	jae    0x40b12f
40b0b6:	2b d9                	sub    %ecx,%ebx
40b0b8:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40b0bb:	3b cb                	cmp    %ebx,%ecx
40b0bd:	0f 82 3d 02 00 00    	jb     0x40b300
40b0c3:	8b 55 e8             	mov    -0x18(%ebp),%edx
40b0c6:	8b c2                	mov    %edx,%eax
40b0c8:	2b c1                	sub    %ecx,%eax
40b0ca:	83 f8 01             	cmp    $0x1,%eax
40b0cd:	72 34                	jb     0x40b103
40b0cf:	8d 41 01             	lea    0x1(%ecx),%eax
40b0d2:	83 fa 08             	cmp    $0x8,%edx
40b0d5:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40b0d8:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40b0db:	0f 43 45 d4          	cmovae -0x2c(%ebp),%eax
40b0df:	2b cb                	sub    %ebx,%ecx
40b0e1:	8d 34 58             	lea    (%eax,%ebx,2),%esi
40b0e4:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
40b0eb:	50                   	push   %eax
40b0ec:	8d 46 02             	lea    0x2(%esi),%eax
40b0ef:	56                   	push   %esi
40b0f0:	50                   	push   %eax
40b0f1:	e8 5a 23 01 00       	call   0x41d450
40b0f6:	8b 45 b4             	mov    -0x4c(%ebp),%eax
40b0f9:	83 c4 0c             	add    $0xc,%esp
40b0fc:	66 89 06             	mov    %ax,(%esi)
40b0ff:	8b f0                	mov    %eax,%esi
40b101:	eb 15                	jmp    0x40b118
40b103:	56                   	push   %esi
40b104:	6a 01                	push   $0x1
40b106:	53                   	push   %ebx
40b107:	c6 45 a8 00          	movb   $0x0,-0x58(%ebp)
40b10b:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40b10e:	ff 75 a8             	push   -0x58(%ebp)
40b111:	6a 01                	push   $0x1
40b113:	e8 b8 14 00 00       	call   0x40c5d0
40b118:	80 7f 01 00          	cmpb   $0x0,0x1(%edi)
40b11c:	8d 47 01             	lea    0x1(%edi),%eax
40b11f:	0f 4f f8             	cmovg  %eax,%edi
40b122:	8a 07                	mov    (%edi),%al
40b124:	3c 7f                	cmp    $0x7f,%al
40b126:	0f 85 74 ff ff ff    	jne    0x40b0a0
40b12c:	8b 55 b8             	mov    -0x48(%ebp),%edx
40b12f:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
40b132:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40b135:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40b138:	83 79 24 00          	cmpl   $0x0,0x24(%ecx)
40b13c:	8b 79 20             	mov    0x20(%ecx),%edi
40b13f:	7c 0e                	jl     0x40b14f
40b141:	7f 04                	jg     0x40b147
40b143:	85 ff                	test   %edi,%edi
40b145:	74 08                	je     0x40b14f
40b147:	3b f8                	cmp    %eax,%edi
40b149:	76 04                	jbe    0x40b14f
40b14b:	2b f8                	sub    %eax,%edi
40b14d:	eb 02                	jmp    0x40b151
40b14f:	33 ff                	xor    %edi,%edi
40b151:	8b 41 14             	mov    0x14(%ecx),%eax