40caf0:	8b 45 10             	mov    0x10(%ebp),%eax
40caf3:	89 08                	mov    %ecx,(%eax)
40caf5:	89 79 20             	mov    %edi,0x20(%ecx)
40caf8:	89 4f 1c             	mov    %ecx,0x1c(%edi)
40cafb:	ff 46 04             	incl   0x4(%esi)
40cafe:	33 c0                	xor    %eax,%eax
40cb00:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40cb03:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40cb0a:	59                   	pop    %ecx
40cb0b:	5f                   	pop    %edi
40cb0c:	5e                   	pop    %esi
40cb0d:	5b                   	pop    %ebx
40cb0e:	8b e5                	mov    %ebp,%esp
40cb10:	5d                   	pop    %ebp
40cb11:	c2 0c 00             	ret    $0xc
40cb14:	8b 46 08             	mov    0x8(%esi),%eax
40cb17:	8b 48 08             	mov    0x8(%eax),%ecx
40cb1a:	83 e1 05             	and    $0x5,%ecx
40cb1d:	83 c9 08             	or     $0x8,%ecx
40cb20:	33 ff                	xor    %edi,%edi
40cb22:	8b 40 04             	mov    0x4(%eax),%eax
40cb25:	85 c0                	test   %eax,%eax
40cb27:	0f 84 59 85 01 00    	je     0x425086
40cb2d:	6a 28                	push   $0x28
40cb2f:	51                   	push   %ecx
40cb30:	50                   	push   %eax
40cb31:	ff 15 78 10 45 00    	call   *0x451078
40cb37:	8b d0                	mov    %eax,%edx
40cb39:	89 55 e8             	mov    %edx,-0x18(%ebp)
40cb3c:	85 d2                	test   %edx,%edx
40cb3e:	0f 84 f9 84 01 00    	je     0x42503d
40cb44:	89 7a 20             	mov    %edi,0x20(%edx)
40cb47:	89 7a 1c             	mov    %edi,0x1c(%edx)
40cb4a:	89 7a 18             	mov    %edi,0x18(%edx)
40cb4d:	c7 45 fc 08 00 00 00 	movl   $0x8,-0x4(%ebp)
40cb54:	8b 45 0c             	mov    0xc(%ebp),%eax
40cb57:	8b 00                	mov    (%eax),%eax
40cb59:	89 02                	mov    %eax,(%edx)
40cb5b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cb5e:	8b 01                	mov    (%ecx),%eax
40cb60:	89 42 08             	mov    %eax,0x8(%edx)
40cb63:	8b 41 04             	mov    0x4(%ecx),%eax
40cb66:	89 42 0c             	mov    %eax,0xc(%edx)
40cb69:	8b 41 08             	mov    0x8(%ecx),%eax
40cb6c:	89 42 10             	mov    %eax,0x10(%edx)
40cb6f:	8b 41 0c             	mov    0xc(%ecx),%eax
40cb72:	89 42 14             	mov    %eax,0x14(%edx)
40cb75:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
40cb7c:	8b 45 10             	mov    0x10(%ebp),%eax
40cb7f:	89 10                	mov    %edx,(%eax)
40cb81:	89 16                	mov    %edx,(%esi)
40cb83:	ff 46 04             	incl   0x4(%esi)
40cb86:	8b c7                	mov    %edi,%eax
40cb88:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40cb8b:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40cb92:	59                   	pop    %ecx
40cb93:	5f                   	pop    %edi
40cb94:	5e                   	pop    %esi
40cb95:	5b                   	pop    %ebx
40cb96:	8b e5                	mov    %ebp,%esp
40cb98:	5d                   	pop    %ebp
40cb99:	c2 0c 00             	ret    $0xc
40cb9c:	8b 47 18             	mov    0x18(%edi),%eax
40cb9f:	85 c0                	test   %eax,%eax
40cba1:	0f 85 06 84 01 00    	jne    0x424fad
40cba7:	8b 46 08             	mov    0x8(%esi),%eax
40cbaa:	8b 48 08             	mov    0x8(%eax),%ecx
40cbad:	83 e1 05             	and    $0x5,%ecx
40cbb0:	83 c9 08             	or     $0x8,%ecx
40cbb3:	8b 40 04             	mov    0x4(%eax),%eax
40cbb6:	85 c0                	test   %eax,%eax
40cbb8:	0f 84 3b 84 01 00    	je     0x424ff9
40cbbe:	6a 28                	push   $0x28
40cbc0:	51                   	push   %ecx
40cbc1:	50                   	push   %eax
40cbc2:	ff 15 78 10 45 00    	call   *0x451078
40cbc8:	8b c8                	mov    %eax,%ecx
40cbca:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40cbcd:	85 c9                	test   %ecx,%ecx
40cbcf:	0f 84 df 83 01 00    	je     0x424fb4
40cbd5:	c7 41 20 00 00 00 00 	movl   $0x0,0x20(%ecx)
40cbdc:	c7 41 1c 00 00 00 00 	movl   $0x0,0x1c(%ecx)
40cbe3:	c7 41 18 00 00 00 00 	movl   $0x0,0x18(%ecx)
40cbea:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40cbf1:	8b 45 0c             	mov    0xc(%ebp),%eax
40cbf4:	8b 00                	mov    (%eax),%eax
40cbf6:	89 01                	mov    %eax,(%ecx)
40cbf8:	8b 03                	mov    (%ebx),%eax
40cbfa:	89 41 08             	mov    %eax,0x8(%ecx)
40cbfd:	8b 43 04             	mov    0x4(%ebx),%eax
40cc00:	89 41 0c             	mov    %eax,0xc(%ecx)
40cc03:	8b 43 08             	mov    0x8(%ebx),%eax
40cc06:	89 41 10             	mov    %eax,0x10(%ecx)
40cc09:	8b 43 0c             	mov    0xc(%ebx),%eax
40cc0c:	89 41 14             	mov    %eax,0x14(%ecx)
40cc0f:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
40cc16:	8b 45 10             	mov    0x10(%ebp),%eax
40cc19:	89 08                	mov    %ecx,(%eax)
40cc1b:	89 79 20             	mov    %edi,0x20(%ecx)
40cc1e:	89 4f 18             	mov    %ecx,0x18(%edi)
40cc21:	ff 46 04             	incl   0x4(%esi)
40cc24:	33 c0                	xor    %eax,%eax
40cc26:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40cc29:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40cc30:	59                   	pop    %ecx
40cc31:	5f                   	pop    %edi
40cc32:	5e                   	pop    %esi
40cc33:	5b                   	pop    %ebx
40cc34:	8b e5                	mov    %ebp,%esp
40cc36:	5d                   	pop    %ebp
40cc37:	c2 0c 00             	ret    $0xc
40cc3a:	cc                   	int3
40cc3b:	cc                   	int3
40cc3c:	cc                   	int3
40cc3d:	cc                   	int3
40cc3e:	cc                   	int3
40cc3f:	cc                   	int3
40cc40:	8b ff                	mov    %edi,%edi
40cc42:	55                   	push   %ebp
40cc43:	8b ec                	mov    %esp,%ebp
40cc45:	83 79 04 00          	cmpl   $0x0,0x4(%ecx)
40cc49:	75 09                	jne    0x40cc54
40cc4b:	b8 02 00 00 80       	mov    $0x80000002,%eax
40cc50:	5d                   	pop    %ebp
40cc51:	c2 08 00             	ret    $0x8
40cc54:	56                   	push   %esi
40cc55:	8b 31                	mov    (%ecx),%esi
40cc57:	85 f6                	test   %esi,%esi
40cc59:	74 07                	je     0x40cc62
40cc5b:	8b 46 18             	mov    0x18(%esi),%eax
40cc5e:	85 c0                	test   %eax,%eax
40cc60:	75 2e                	jne    0x40cc90
40cc62:	8b 55 08             	mov    0x8(%ebp),%edx
40cc65:	8b 46 08             	mov    0x8(%esi),%eax
40cc68:	89 02                	mov    %eax,(%edx)
40cc6a:	33 c0                	xor    %eax,%eax
40cc6c:	8b 4e 0c             	mov    0xc(%esi),%ecx
40cc6f:	89 4a 04             	mov    %ecx,0x4(%edx)
40cc72:	8b 4e 10             	mov    0x10(%esi),%ecx
40cc75:	89 4a 08             	mov    %ecx,0x8(%edx)
40cc78:	8b 4e 14             	mov    0x14(%esi),%ecx
40cc7b:	89 4a 0c             	mov    %ecx,0xc(%edx)
40cc7e:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40cc81:	8b 16                	mov    (%esi),%edx
40cc83:	5e                   	pop    %esi
40cc84:	89 11                	mov    %edx,(%ecx)
40cc86:	5d                   	pop    %ebp
40cc87:	c2 08 00             	ret    $0x8
40cc8a:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40cc90:	8b f0                	mov    %eax,%esi
40cc92:	8b 46 18             	mov    0x18(%esi),%eax
40cc95:	85 c0                	test   %eax,%eax
40cc97:	74 c9                	je     0x40cc62
40cc99:	eb f5                	jmp    0x40cc90
40cc9b:	cc                   	int3
40cc9c:	cc                   	int3
40cc9d:	cc                   	int3
40cc9e:	cc                   	int3
40cc9f:	cc                   	int3
40cca0:	8b ff                	mov    %edi,%edi
40cca2:	55                   	push   %ebp
40cca3:	8b ec                	mov    %esp,%ebp
40cca5:	53                   	push   %ebx
40cca6:	56                   	push   %esi
40cca7:	8b 75 08             	mov    0x8(%ebp),%esi
40ccaa:	83 cb ff             	or     $0xffffffff,%ebx
40ccad:	f0 0f c1 5e 0c       	lock xadd %ebx,0xc(%esi)
40ccb2:	4b                   	dec    %ebx
40ccb3:	75 19                	jne    0x40ccce
40ccb5:	85 f6                	test   %esi,%esi
40ccb7:	74 15                	je     0x40ccce
40ccb9:	8b 0e                	mov    (%esi),%ecx
40ccbb:	57                   	push   %edi
40ccbc:	6a 01                	push   $0x1
40ccbe:	8b 79 0c             	mov    0xc(%ecx),%edi
40ccc1:	8b cf                	mov    %edi,%ecx
40ccc3:	ff 15 c4 12 45 00    	call   *0x4512c4
40ccc9:	8b ce                	mov    %esi,%ecx
40cccb:	ff d7                	call   *%edi
40cccd:	5f                   	pop    %edi
40ccce:	5e                   	pop    %esi
40cccf:	8b c3                	mov    %ebx,%eax
40ccd1:	5b                   	pop    %ebx
40ccd2:	5d                   	pop    %ebp
40ccd3:	c2 04 00             	ret    $0x4
40ccd6:	cc                   	int3
40ccd7:	cc                   	int3
40ccd8:	cc                   	int3
40ccd9:	cc                   	int3
40ccda:	cc                   	int3
40ccdb:	cc                   	int3
40ccdc:	cc                   	int3
40ccdd:	cc                   	int3
40ccde:	cc                   	int3
40ccdf:	cc                   	int3
40cce0:	8b ff                	mov    %edi,%edi
40cce2:	55                   	push   %ebp
40cce3:	8b ec                	mov    %esp,%ebp
40cce5:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40cce9:	56                   	push   %esi
40ccea:	be 31 10 04 80       	mov    $0x80041031,%esi
40ccef:	0f 85 9b 83 01 00    	jne    0x425090
40ccf5:	83 7d 1c 00          	cmpl   $0x0,0x1c(%ebp)
40ccf9:	0f 85 91 83 01 00    	jne    0x425090
40ccff:	8b 45 08             	mov    0x8(%ebp),%eax
40cd02:	8b 4d 20             	mov    0x20(%ebp),%ecx
40cd05:	8b 80 e4 00 00 00    	mov    0xe4(%eax),%eax
40cd0b:	f6 80 80 07 00 00 08 	testb  $0x8,0x780(%eax)
40cd12:	75 2f                	jne    0x40cd43
40cd14:	33 c0                	xor    %eax,%eax
40cd16:	ba 0b 00 00 00       	mov    $0xb,%edx
40cd1b:	33 f6                	xor    %esi,%esi
40cd1d:	66 89 11             	mov    %dx,(%ecx)
40cd20:	66 89 41 08          	mov    %ax,0x8(%ecx)
40cd24:	8b 0d 00 f0 44 00    	mov    0x44f000,%ecx
40cd2a:	81 f9 00 f0 44 00    	cmp    $0x44f000,%ecx
40cd30:	74 0a                	je     0x40cd3c
40cd32:	f6 41 1c 04          	testb  $0x4,0x1c(%ecx)
40cd36:	0f 85 6c 83 01 00    	jne    0x4250a8
40cd3c:	8b c6                	mov    %esi,%eax
40cd3e:	5e                   	pop    %esi
40cd3f:	5d                   	pop    %ebp
40cd40:	c2 1c 00             	ret    $0x1c
40cd43:	83 c8 ff             	or     $0xffffffff,%eax
40cd46:	eb ce                	jmp    0x40cd16
40cd48:	cc                   	int3
40cd49:	cc                   	int3
40cd4a:	cc                   	int3
40cd4b:	cc                   	int3
40cd4c:	cc                   	int3
40cd4d:	cc                   	int3
40cd4e:	cc                   	int3
40cd4f:	cc                   	int3
40cd50:	8b ff                	mov    %edi,%edi
40cd52:	55                   	push   %ebp
40cd53:	8b ec                	mov    %esp,%ebp
40cd55:	51                   	push   %ecx
40cd56:	8b 45 1c             	mov    0x1c(%ebp),%eax
40cd59:	53                   	push   %ebx
40cd5a:	56                   	push   %esi
40cd5b:	33 db                	xor    %ebx,%ebx
40cd5d:	57                   	push   %edi
40cd5e:	8b 7d 08             	mov    0x8(%ebp),%edi
40cd61:	85 c0                	test   %eax,%eax
40cd63:	0f 84 bc 00 00 00    	je     0x40ce25
40cd69:	8b f0                	mov    %eax,%esi
40cd6b:	8d 4e 02             	lea    0x2(%esi),%ecx
40cd6e:	8b ff                	mov    %edi,%edi
40cd70:	66 8b 06             	mov    (%esi),%ax
40cd73:	83 c6 02             	add    $0x2,%esi
40cd76:	66 85 c0             	test   %ax,%ax
40cd79:	75 f5                	jne    0x40cd70
40cd7b:	a1 80 0b 45 00       	mov    0x450b80,%eax
40cd80:	2b f1                	sub    %ecx,%esi
40cd82:	d1 fe                	sar    $1,%esi
40cd84:	8b 58 08             	mov    0x8(%eax),%ebx
40cd87:	8b 40 04             	mov    0x4(%eax),%eax
40cd8a:	83 e3 05             	and    $0x5,%ebx
40cd8d:	83 cb 08             	or     $0x8,%ebx
40cd90:	89 45 fc             	mov    %eax,-0x4(%ebp)
40cd93:	85 c0                	test   %eax,%eax
40cd95:	0f 84 38 83 01 00    	je     0x4250d3
40cd9b:	33 c9                	xor    %ecx,%ecx
40cd9d:	8d 46 01             	lea    0x1(%esi),%eax
40cda0:	ba 02 00 00 00       	mov    $0x2,%edx
40cda5:	f7 e2                	mul    %edx
40cda7:	0f 90 c1             	seto   %cl
40cdaa:	f7 d9                	neg    %ecx
40cdac:	0b c8                	or     %eax,%ecx
40cdae:	51                   	push   %ecx
40cdaf:	53                   	push   %ebx
40cdb0:	ff 75 fc             	push   -0x4(%ebp)
40cdb3:	ff 15 78 10 45 00    	call   *0x451078
40cdb9:	8b d8                	mov    %eax,%ebx
40cdbb:	85 db                	test   %ebx,%ebx
40cdbd:	0f 84 0a 83 01 00    	je     0x4250cd
40cdc3:	8d 34 75 02 00 00 00 	lea    0x2(,%esi,2),%esi
40cdca:	56                   	push   %esi
40cdcb:	8b 75 1c             	mov    0x1c(%ebp),%esi
40cdce:	56                   	push   %esi
40cdcf:	53                   	push   %ebx
40cdd0:	e8 70 29 01 00       	call   0x41f745
40cdd5:	83 c4 0c             	add    $0xc,%esp
40cdd8:	89 5f 18             	mov    %ebx,0x18(%edi)
40cddb:	85 db                	test   %ebx,%ebx
40cddd:	0f 84 fa 82 01 00    	je     0x4250dd
40cde3:	8d 47 1c             	lea    0x1c(%edi),%eax
40cde6:	50                   	push   %eax
40cde7:	68 9c 5f 40 00       	push   $0x405f9c
40cdec:	6a 01                	push   $0x1
40cdee:	6a 00                	push   $0x0
40cdf0:	68 8c 5f 40 00       	push   $0x405f8c
40cdf5:	ff 15 48 30 45 00    	call   *0x453048
40cdfb:	8b d8                	mov    %eax,%ebx
40cdfd:	85 db                	test   %ebx,%ebx
40cdff:	0f 88 dd 82 01 00    	js     0x4250e2
40ce05:	8b 47 1c             	mov    0x1c(%edi),%eax
40ce08:	56                   	push   %esi
40ce09:	6a 0c                	push   $0xc
40ce0b:	50                   	push   %eax
40ce0c:	8b 08                	mov    (%eax),%ecx
40ce0e:	8b 71 0c             	mov    0xc(%ecx),%esi
40ce11:	8b ce                	mov    %esi,%ecx
40ce13:	ff 15 c4 12 45 00    	call   *0x4512c4
40ce19:	ff d6                	call   *%esi
40ce1b:	8b d8                	mov    %eax,%ebx
40ce1d:	85 db                	test   %ebx,%ebx
40ce1f:	0f 88 bd 82 01 00    	js     0x4250e2
40ce25:	8b 45 14             	mov    0x14(%ebp),%eax
40ce28:	8b 55 18             	mov    0x18(%ebp),%edx
40ce2b:	8b 4d 20             	mov    0x20(%ebp),%ecx
40ce2e:	89 47 10             	mov    %eax,0x10(%edi)
40ce31:	8b 45 24             	mov    0x24(%ebp),%eax
40ce34:	89 57 14             	mov    %edx,0x14(%edi)
40ce37:	89 4f 20             	mov    %ecx,0x20(%edi)
40ce3a:	89 47 24             	mov    %eax,0x24(%edi)
40ce3d:	85 d2                	test   %edx,%edx
40ce3f:	74 13                	je     0x40ce54
40ce41:	8b 02                	mov    (%edx),%eax
40ce43:	52                   	push   %edx
40ce44:	8b 70 04             	mov    0x4(%eax),%esi
40ce47:	8b ce                	mov    %esi,%ecx
40ce49:	ff 15 c4 12 45 00    	call   *0x4512c4
40ce4f:	ff d6                	call   *%esi
40ce51:	8b 4f 20             	mov    0x20(%edi),%ecx
40ce54:	85 c9                	test   %ecx,%ecx
40ce56:	74 10                	je     0x40ce68
40ce58:	8b 01                	mov    (%ecx),%eax
40ce5a:	51                   	push   %ecx
40ce5b:	8b 70 04             	mov    0x4(%eax),%esi
40ce5e:	8b ce                	mov    %esi,%ecx
40ce60:	ff 15 c4 12 45 00    	call   *0x4512c4
40ce66:	ff d6                	call   *%esi
40ce68:	8b 4f 24             	mov    0x24(%edi),%ecx
40ce6b:	85 c9                	test   %ecx,%ecx
40ce6d:	74 10                	je     0x40ce7f
40ce6f:	8b 01                	mov    (%ecx),%eax
40ce71:	51                   	push   %ecx
40ce72:	8b 70 04             	mov    0x4(%eax),%esi
40ce75:	8b ce                	mov    %esi,%ecx
40ce77:	ff 15 c4 12 45 00    	call   *0x4512c4
40ce7d:	ff d6                	call   *%esi
40ce7f:	a1 00 f0 44 00       	mov    0x44f000,%eax
40ce84:	3d 00 f0 44 00       	cmp    $0x44f000,%eax
40ce89:	74 0a                	je     0x40ce95
40ce8b:	f6 40 1c 04          	testb  $0x4,0x1c(%eax)
40ce8f:	0f 85 61 82 01 00    	jne    0x4250f6
40ce95:	5f                   	pop    %edi
40ce96:	5e                   	pop    %esi
40ce97:	8b c3                	mov    %ebx,%eax