40ad06:	8b 08                	mov    (%eax),%ecx
40ad08:	85 c9                	test   %ecx,%ecx
40ad0a:	74 0f                	je     0x40ad1b
40ad0c:	8b 47 2c             	mov    0x2c(%edi),%eax
40ad0f:	83 38 00             	cmpl   $0x0,(%eax)
40ad12:	7e 07                	jle    0x40ad1b
40ad14:	0f b7 01             	movzwl (%ecx),%eax
40ad17:	5f                   	pop    %edi
40ad18:	5e                   	pop    %esi
40ad19:	5b                   	pop    %ebx
40ad1a:	c3                   	ret
40ad1b:	8b 07                	mov    (%edi),%eax
40ad1d:	8b 70 18             	mov    0x18(%eax),%esi
40ad20:	8b ce                	mov    %esi,%ecx
40ad22:	ff 15 5c e2 43 00    	call   *0x43e25c
40ad28:	8b cf                	mov    %edi,%ecx
40ad2a:	ff d6                	call   *%esi
40ad2c:	5f                   	pop    %edi
40ad2d:	5e                   	pop    %esi
40ad2e:	0f b7 c0             	movzwl %ax,%eax
40ad31:	5b                   	pop    %ebx
40ad32:	c3                   	ret
40ad33:	cc                   	int3
40ad34:	cc                   	int3
40ad35:	cc                   	int3
40ad36:	cc                   	int3
40ad37:	cc                   	int3
40ad38:	cc                   	int3
40ad39:	cc                   	int3
40ad3a:	cc                   	int3
40ad3b:	cc                   	int3
40ad3c:	cc                   	int3
40ad3d:	cc                   	int3
40ad3e:	cc                   	int3
40ad3f:	cc                   	int3
40ad40:	55                   	push   %ebp
40ad41:	8b ec                	mov    %esp,%ebp
40ad43:	83 ec 0c             	sub    $0xc,%esp
40ad46:	53                   	push   %ebx
40ad47:	56                   	push   %esi
40ad48:	8b f1                	mov    %ecx,%esi
40ad4a:	8b 4e 14             	mov    0x14(%esi),%ecx
40ad4d:	8b 5e 10             	mov    0x10(%esi),%ebx
40ad50:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40ad53:	3b d9                	cmp    %ecx,%ebx
40ad55:	73 24                	jae    0x40ad7b
40ad57:	8d 43 01             	lea    0x1(%ebx),%eax
40ad5a:	89 46 10             	mov    %eax,0x10(%esi)
40ad5d:	83 f9 08             	cmp    $0x8,%ecx
40ad60:	72 02                	jb     0x40ad64
40ad62:	8b 36                	mov    (%esi),%esi
40ad64:	66 8b 45 08          	mov    0x8(%ebp),%ax
40ad68:	66 89 04 5e          	mov    %ax,(%esi,%ebx,2)
40ad6c:	33 c0                	xor    %eax,%eax
40ad6e:	66 89 44 5e 02       	mov    %ax,0x2(%esi,%ebx,2)
40ad73:	5e                   	pop    %esi
40ad74:	5b                   	pop    %ebx
40ad75:	8b e5                	mov    %ebp,%esp
40ad77:	5d                   	pop    %ebp
40ad78:	c2 04 00             	ret    $0x4
40ad7b:	ba fe ff ff 7f       	mov    $0x7ffffffe,%edx
40ad80:	8b c2                	mov    %edx,%eax
40ad82:	2b c3                	sub    %ebx,%eax
40ad84:	83 f8 01             	cmp    $0x1,%eax
40ad87:	0f 82 d5 00 00 00    	jb     0x40ae62
40ad8d:	57                   	push   %edi
40ad8e:	8d 7b 01             	lea    0x1(%ebx),%edi
40ad91:	83 cf 07             	or     $0x7,%edi
40ad94:	3b fa                	cmp    %edx,%edi
40ad96:	76 04                	jbe    0x40ad9c
40ad98:	8b fa                	mov    %edx,%edi
40ad9a:	eb 18                	jmp    0x40adb4
40ad9c:	8b c1                	mov    %ecx,%eax
40ad9e:	d1 e8                	shr    $1,%eax
40ada0:	2b d0                	sub    %eax,%edx
40ada2:	3b ca                	cmp    %edx,%ecx
40ada4:	76 07                	jbe    0x40adad
40ada6:	bf fe ff ff 7f       	mov    $0x7ffffffe,%edi
40adab:	eb 07                	jmp    0x40adb4
40adad:	03 c1                	add    %ecx,%eax
40adaf:	3b f8                	cmp    %eax,%edi
40adb1:	0f 42 f8             	cmovb  %eax,%edi
40adb4:	33 c9                	xor    %ecx,%ecx
40adb6:	8b c7                	mov    %edi,%eax
40adb8:	83 c0 01             	add    $0x1,%eax
40adbb:	0f 92 c1             	setb   %cl
40adbe:	f7 d9                	neg    %ecx
40adc0:	0b c8                	or     %eax,%ecx
40adc2:	51                   	push   %ecx
40adc3:	8b ce                	mov    %esi,%ecx
40adc5:	e8 e6 82 ff ff       	call   0x4030b0
40adca:	8d 4b 01             	lea    0x1(%ebx),%ecx
40adcd:	89 7e 14             	mov    %edi,0x14(%esi)
40add0:	89 4e 10             	mov    %ecx,0x10(%esi)
40add3:	8d 0c 1b             	lea    (%ebx,%ebx,1),%ecx
40add6:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40add9:	89 45 fc             	mov    %eax,-0x4(%ebp)
40addc:	8d 3c 01             	lea    (%ecx,%eax,1),%edi
40addf:	89 7d f4             	mov    %edi,-0xc(%ebp)
40ade2:	51                   	push   %ecx
40ade3:	83 fb 08             	cmp    $0x8,%ebx
40ade6:	72 55                	jb     0x40ae3d
40ade8:	8b 3e                	mov    (%esi),%edi
40adea:	57                   	push   %edi
40adeb:	50                   	push   %eax
40adec:	e8 8f 08 01 00       	call   0x41b680
40adf1:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40adf4:	8d 1c 5d 02 00 00 00 	lea    0x2(,%ebx,2),%ebx
40adfb:	66 8b 45 08          	mov    0x8(%ebp),%ax
40adff:	83 c4 0c             	add    $0xc,%esp
40ae02:	66 89 01             	mov    %ax,(%ecx)
40ae05:	33 c0                	xor    %eax,%eax
40ae07:	66 89 41 02          	mov    %ax,0x2(%ecx)
40ae0b:	81 fb 00 10 00 00    	cmp    $0x1000,%ebx
40ae11:	72 12                	jb     0x40ae25
40ae13:	8b 4f fc             	mov    -0x4(%edi),%ecx
40ae16:	83 c3 23             	add    $0x23,%ebx
40ae19:	2b f9                	sub    %ecx,%edi
40ae1b:	8d 47 fc             	lea    -0x4(%edi),%eax
40ae1e:	83 f8 1f             	cmp    $0x1f,%eax
40ae21:	77 44                	ja     0x40ae67
40ae23:	8b f9                	mov    %ecx,%edi
40ae25:	53                   	push   %ebx
40ae26:	57                   	push   %edi
40ae27:	e8 8c ed 00 00       	call   0x419bb8
40ae2c:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ae2f:	83 c4 08             	add    $0x8,%esp
40ae32:	89 06                	mov    %eax,(%esi)
40ae34:	5f                   	pop    %edi
40ae35:	5e                   	pop    %esi
40ae36:	5b                   	pop    %ebx
40ae37:	8b e5                	mov    %ebp,%esp
40ae39:	5d                   	pop    %ebp
40ae3a:	c2 04 00             	ret    $0x4
40ae3d:	56                   	push   %esi
40ae3e:	50                   	push   %eax
40ae3f:	e8 3c 08 01 00       	call   0x41b680
40ae44:	66 8b 45 08          	mov    0x8(%ebp),%ax
40ae48:	83 c4 0c             	add    $0xc,%esp
40ae4b:	66 89 07             	mov    %ax,(%edi)
40ae4e:	33 c0                	xor    %eax,%eax
40ae50:	66 89 47 02          	mov    %ax,0x2(%edi)
40ae54:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ae57:	5f                   	pop    %edi
40ae58:	89 06                	mov    %eax,(%esi)
40ae5a:	5e                   	pop    %esi
40ae5b:	5b                   	pop    %ebx
40ae5c:	8b e5                	mov    %ebp,%esp
40ae5e:	5d                   	pop    %ebp
40ae5f:	c2 04 00             	ret    $0x4
40ae62:	e8 f9 64 ff ff       	call   0x401360
40ae67:	e8 27 4b 01 00       	call   0x41f993
40ae6c:	cc                   	int3
40ae6d:	cc                   	int3
40ae6e:	cc                   	int3
40ae6f:	cc                   	int3
40ae70:	55                   	push   %ebp
40ae71:	8b ec                	mov    %esp,%ebp
40ae73:	6a ff                	push   $0xffffffff
40ae75:	68 6d c2 43 00       	push   $0x43c26d
40ae7a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40ae80:	50                   	push   %eax
40ae81:	83 ec 18             	sub    $0x18,%esp
40ae84:	53                   	push   %ebx
40ae85:	56                   	push   %esi
40ae86:	57                   	push   %edi
40ae87:	a1 14 50 45 00       	mov    0x455014,%eax
40ae8c:	33 c5                	xor    %ebp,%eax
40ae8e:	50                   	push   %eax
40ae8f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40ae92:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40ae98:	89 65 f0             	mov    %esp,-0x10(%ebp)
40ae9b:	8b d9                	mov    %ecx,%ebx
40ae9d:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40aea0:	8b 13                	mov    (%ebx),%edx
40aea2:	8b 4a 04             	mov    0x4(%edx),%ecx
40aea5:	03 cb                	add    %ebx,%ecx
40aea7:	8b 71 0c             	mov    0xc(%ecx),%esi
40aeaa:	85 f6                	test   %esi,%esi
40aeac:	74 2f                	je     0x40aedd
40aeae:	33 c0                	xor    %eax,%eax
40aeb0:	39 41 38             	cmp    %eax,0x38(%ecx)
40aeb3:	6a 00                	push   $0x0
40aeb5:	0f 94 c0             	sete   %al
40aeb8:	8d 04 85 02 00 00 00 	lea    0x2(,%eax,4),%eax
40aebf:	0b c6                	or     %esi,%eax
40aec1:	50                   	push   %eax
40aec2:	e8 39 b1 ff ff       	call   0x406000
40aec7:	32 c0                	xor    %al,%al
40aec9:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40aecc:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40aed3:	59                   	pop    %ecx
40aed4:	5f                   	pop    %edi
40aed5:	5e                   	pop    %esi
40aed6:	5b                   	pop    %ebx
40aed7:	8b e5                	mov    %ebp,%esp
40aed9:	5d                   	pop    %ebp
40aeda:	c2 04 00             	ret    $0x4
40aedd:	8b 49 3c             	mov    0x3c(%ecx),%ecx
40aee0:	85 c9                	test   %ecx,%ecx
40aee2:	74 07                	je     0x40aeeb
40aee4:	e8 77 ec ff ff       	call   0x409b60
40aee9:	8b 13                	mov    (%ebx),%edx
40aeeb:	8b 42 04             	mov    0x4(%edx),%eax
40aeee:	c6 45 ef 00          	movb   $0x0,-0x11(%ebp)
40aef2:	f6 44 18 14 01       	testb  $0x1,0x14(%eax,%ebx,1)
40aef7:	0f 84 2f 01 00 00    	je     0x40b02c
40aefd:	8b 44 18 30          	mov    0x30(%eax,%ebx,1),%eax
40af01:	8b 78 04             	mov    0x4(%eax),%edi
40af04:	89 7d e0             	mov    %edi,-0x20(%ebp)
40af07:	8b 07                	mov    (%edi),%eax
40af09:	8b 70 04             	mov    0x4(%eax),%esi
40af0c:	8b ce                	mov    %esi,%ecx
40af0e:	ff 15 5c e2 43 00    	call   *0x43e25c
40af14:	8b cf                	mov    %edi,%ecx
40af16:	ff d6                	call   *%esi
40af18:	8d 45 dc             	lea    -0x24(%ebp),%eax
40af1b:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40af22:	50                   	push   %eax
40af23:	e8 b8 f5 ff ff       	call   0x40a4e0
40af28:	8b 7d e0             	mov    -0x20(%ebp),%edi
40af2b:	83 c4 04             	add    $0x4,%esp
40af2e:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40af31:	85 ff                	test   %edi,%edi
40af33:	74 29                	je     0x40af5e
40af35:	8b 17                	mov    (%edi),%edx
40af37:	8b 72 08             	mov    0x8(%edx),%esi
40af3a:	8b ce                	mov    %esi,%ecx
40af3c:	ff 15 5c e2 43 00    	call   *0x43e25c
40af42:	8b cf                	mov    %edi,%ecx
40af44:	ff d6                	call   *%esi
40af46:	8b f8                	mov    %eax,%edi
40af48:	85 ff                	test   %edi,%edi
40af4a:	74 12                	je     0x40af5e
40af4c:	8b 0f                	mov    (%edi),%ecx
40af4e:	6a 01                	push   $0x1
40af50:	8b 31                	mov    (%ecx),%esi
40af52:	8b ce                	mov    %esi,%ecx
40af54:	ff 15 5c e2 43 00    	call   *0x43e25c
40af5a:	8b cf                	mov    %edi,%ecx
40af5c:	ff d6                	call   *%esi
40af5e:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40af65:	8b 03                	mov    (%ebx),%eax
40af67:	8b 40 04             	mov    0x4(%eax),%eax
40af6a:	8b 7c 18 38          	mov    0x38(%eax,%ebx,1),%edi
40af6e:	8b 47 1c             	mov    0x1c(%edi),%eax
40af71:	8b 08                	mov    (%eax),%ecx
40af73:	85 c9                	test   %ecx,%ecx
40af75:	74 0d                	je     0x40af84
40af77:	8b 47 2c             	mov    0x2c(%edi),%eax
40af7a:	83 38 00             	cmpl   $0x0,(%eax)
40af7d:	7e 05                	jle    0x40af84
40af7f:	0f b7 09             	movzwl (%ecx),%ecx
40af82:	eb 16                	jmp    0x40af9a
40af84:	8b 07                	mov    (%edi),%eax
40af86:	8b 70 18             	mov    0x18(%eax),%esi
40af89:	8b ce                	mov    %esi,%ecx
40af8b:	ff 15 5c e2 43 00    	call   *0x43e25c
40af91:	8b cf                	mov    %edi,%ecx
40af93:	ff d6                	call   *%esi
40af95:	0f b7 c0             	movzwl %ax,%eax
40af98:	8b c8                	mov    %eax,%ecx
40af9a:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40af9d:	b8 ff ff 00 00       	mov    $0xffff,%eax
40afa2:	66 3b c1             	cmp    %cx,%ax
40afa5:	75 04                	jne    0x40afab
40afa7:	b0 01                	mov    $0x1,%al
40afa9:	eb 1b                	jmp    0x40afc6
40afab:	8b 07                	mov    (%edi),%eax
40afad:	51                   	push   %ecx
40afae:	6a 48                	push   $0x48
40afb0:	8b 70 10             	mov    0x10(%eax),%esi
40afb3:	8b ce                	mov    %esi,%ecx
40afb5:	ff 15 5c e2 43 00    	call   *0x43e25c
40afbb:	8b cf                	mov    %edi,%ecx
40afbd:	ff d6                	call   *%esi
40afbf:	84 c0                	test   %al,%al
40afc1:	75 31                	jne    0x40aff4
40afc3:	8a 45 ef             	mov    -0x11(%ebp),%al
40afc6:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
40afcd:	84 c0                	test   %al,%al
40afcf:	74 5b                	je     0x40b02c
40afd1:	8b 03                	mov    (%ebx),%eax
40afd3:	6a 00                	push   $0x0
40afd5:	8b 48 04             	mov    0x4(%eax),%ecx
40afd8:	33 c0                	xor    %eax,%eax
40afda:	03 cb                	add    %ebx,%ecx
40afdc:	39 41 38             	cmp    %eax,0x38(%ecx)
40afdf:	0f 94 c0             	sete   %al
40afe2:	8d 04 85 03 00 00 00 	lea    0x3(,%eax,4),%eax
40afe9:	0b 41 0c             	or     0xc(%ecx),%eax
40afec:	50                   	push   %eax
40afed:	e8 0e b0 ff ff       	call   0x406000
40aff2:	eb 38                	jmp    0x40b02c
40aff4:	8b 03                	mov    (%ebx),%eax
40aff6:	8b 48 04             	mov    0x4(%eax),%ecx
40aff9:	8b 4c 19 38          	mov    0x38(%ecx,%ebx,1),%ecx
40affd:	e8 9e fc ff ff       	call   0x40aca0
40b002:	0f b7 c0             	movzwl %ax,%eax
40b005:	8b c8                	mov    %eax,%ecx
40b007:	eb 94                	jmp    0x40af9d
40b009:	8b 55 e8             	mov    -0x18(%ebp),%edx
40b00c:	6a 01                	push   $0x1
40b00e:	6a 04                	push   $0x4
40b010:	8b 02                	mov    (%edx),%eax
40b012:	8b 48 04             	mov    0x4(%eax),%ecx
40b015:	03 ca                	add    %edx,%ecx
40b017:	e8 94 dd ff ff       	call   0x408db0
40b01c:	b8 22 b0 40 00       	mov    $0x40b022,%eax
40b021:	c3                   	ret
40b022:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40b025:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
40b02c:	8b 03                	mov    (%ebx),%eax
40b02e:	8b 40 04             	mov    0x4(%eax),%eax
40b031:	83 7c 18 0c 00       	cmpl   $0x0,0xc(%eax,%ebx,1)
40b036:	0f 94 c0             	sete   %al
40b039:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40b03c:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40b043:	59                   	pop    %ecx
40b044:	5f                   	pop    %edi
40b045:	5e                   	pop    %esi
40b046:	5b                   	pop    %ebx
40b047:	8b e5                	mov    %ebp,%esp
40b049:	5d                   	pop    %ebp
40b04a:	c2 04 00             	ret    $0x4
40b04d:	cc                   	int3
40b04e:	cc                   	int3
40b04f:	cc                   	int3
40b050:	56                   	push   %esi
40b051:	8b 31                	mov    (%ecx),%esi
40b053:	85 f6                	test   %esi,%esi
40b055:	74 1b                	je     0x40b072
40b057:	ff 76 08             	push   0x8(%esi)
40b05a:	e8 e4 89 01 00       	call   0x423a43
40b05f:	ff 76 10             	push   0x10(%esi)
40b062:	e8 dc 89 01 00       	call   0x423a43
40b067:	ff 76 14             	push   0x14(%esi)
40b06a:	e8 d4 89 01 00       	call   0x423a43
40b06f:	83 c4 0c             	add    $0xc,%esp
40b072:	5e                   	pop    %esi
40b073:	c3                   	ret
40b074:	cc                   	int3
40b075:	cc                   	int3
40b076:	cc                   	int3
40b077:	cc                   	int3
40b078:	cc                   	int3
40b079:	cc                   	int3
40b07a:	cc                   	int3
40b07b:	cc                   	int3
40b07c:	cc                   	int3