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
40ce99:	5b                   	pop    %ebx
40ce9a:	8b e5                	mov    %ebp,%esp
40ce9c:	5d                   	pop    %ebp
40ce9d:	c2 20 00             	ret    $0x20
40cea0:	8b ff                	mov    %edi,%edi
40cea2:	55                   	push   %ebp
40cea3:	8b ec                	mov    %esp,%ebp
40cea5:	56                   	push   %esi
40cea6:	57                   	push   %edi
40cea7:	8b 7d 0c             	mov    0xc(%ebp),%edi
40ceaa:	33 f6                	xor    %esi,%esi
40ceac:	85 ff                	test   %edi,%edi
40ceae:	0f 84 67 82 01 00    	je     0x42511b
40ceb4:	ff 15 fc 10 45 00    	call   *0x4510fc
40ceba:	89 07                	mov    %eax,(%edi)
40cebc:	8b 0d 00 f0 44 00    	mov    0x44f000,%ecx
40cec2:	81 f9 00 f0 44 00    	cmp    $0x44f000,%ecx
40cec8:	74 0a                	je     0x40ced4
40ceca:	f6 41 1c 04          	testb  $0x4,0x1c(%ecx)
40cece:	0f 85 60 82 01 00    	jne    0x425134
40ced4:	5f                   	pop    %edi
40ced5:	8b c6                	mov    %esi,%eax
40ced7:	5e                   	pop    %esi
40ced8:	5d                   	pop    %ebp
40ced9:	c2 08 00             	ret    $0x8
40cedc:	cc                   	int3
40cedd:	cc                   	int3
40cede:	cc                   	int3
40cedf:	cc                   	int3
40cee0:	8b ff                	mov    %edi,%edi
40cee2:	55                   	push   %ebp
40cee3:	8b ec                	mov    %esp,%ebp
40cee5:	56                   	push   %esi
40cee6:	57                   	push   %edi
40cee7:	8b 7d 0c             	mov    0xc(%ebp),%edi
40ceea:	33 f6                	xor    %esi,%esi
40ceec:	85 ff                	test   %edi,%edi
40ceee:	0f 84 63 82 01 00    	je     0x425157
40cef4:	ff 15 fc 10 45 00    	call   *0x4510fc
40cefa:	89 07                	mov    %eax,(%edi)
40cefc:	8b 0d 00 f0 44 00    	mov    0x44f000,%ecx
40cf02:	81 f9 00 f0 44 00    	cmp    $0x44f000,%ecx
40cf08:	74 0a                	je     0x40cf14
40cf0a:	f6 41 1c 04          	testb  $0x4,0x1c(%ecx)
40cf0e:	0f 85 5c 82 01 00    	jne    0x425170
40cf14:	5f                   	pop    %edi
40cf15:	8b c6                	mov    %esi,%eax
40cf17:	5e                   	pop    %esi
40cf18:	5d                   	pop    %ebp
40cf19:	c2 08 00             	ret    $0x8
40cf1c:	cc                   	int3
40cf1d:	cc                   	int3
40cf1e:	cc                   	int3
40cf1f:	cc                   	int3
40cf20:	8b ff                	mov    %edi,%edi
40cf22:	55                   	push   %ebp
40cf23:	8b ec                	mov    %esp,%ebp
40cf25:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cf28:	33 c0                	xor    %eax,%eax
40cf2a:	40                   	inc    %eax
40cf2b:	f0 0f c1 41 14       	lock xadd %eax,0x14(%ecx)
40cf30:	40                   	inc    %eax
40cf31:	5d                   	pop    %ebp
40cf32:	c2 04 00             	ret    $0x4
40cf35:	cc                   	int3
40cf36:	cc                   	int3
40cf37:	cc                   	int3
40cf38:	cc                   	int3
40cf39:	cc                   	int3
40cf3a:	cc                   	int3
40cf3b:	cc                   	int3
40cf3c:	cc                   	int3
40cf3d:	cc                   	int3
40cf3e:	cc                   	int3
40cf3f:	cc                   	int3
40cf40:	6a 00                	push   $0x0
40cf42:	68 10 27 00 00       	push   $0x2710
40cf47:	ff 15 54 30 45 00    	call   *0x453054
40cf4d:	6a 02                	push   $0x2
40cf4f:	58                   	pop    %eax
40cf50:	c2 04 00             	ret    $0x4
40cf53:	cc                   	int3
40cf54:	cc                   	int3
40cf55:	cc                   	int3
40cf56:	cc                   	int3
40cf57:	cc                   	int3
40cf58:	cc                   	int3
40cf59:	cc                   	int3
40cf5a:	cc                   	int3
40cf5b:	cc                   	int3
40cf5c:	cc                   	int3
40cf5d:	cc                   	int3
40cf5e:	cc                   	int3
40cf5f:	cc                   	int3
40cf60:	8b 41 1c             	mov    0x1c(%ecx),%eax
40cf63:	c7 41 24 01 00 00 00 	movl   $0x1,0x24(%ecx)
40cf6a:	c3                   	ret
40cf6b:	83 c8 ff             	or     $0xffffffff,%eax
40cf6e:	c7 01 d0 13 40 00    	movl   $0x4013d0,(%ecx)
40cf74:	66 89 41 04          	mov    %ax,0x4(%ecx)
40cf78:	33 d2                	xor    %edx,%edx
40cf7a:	66 89 41 06          	mov    %ax,0x6(%ecx)
40cf7e:	66 89 41 08          	mov    %ax,0x8(%ecx)
40cf82:	66 89 41 0a          	mov    %ax,0xa(%ecx)
40cf86:	66 89 41 0c          	mov    %ax,0xc(%ecx)
40cf8a:	66 89 41 0e          	mov    %ax,0xe(%ecx)
40cf8e:	66 89 41 10          	mov    %ax,0x10(%ecx)
40cf92:	66 89 41 12          	mov    %ax,0x12(%ecx)
40cf96:	33 c0                	xor    %eax,%eax
40cf98:	66 89 41 14          	mov    %ax,0x14(%ecx)
40cf9c:	40                   	inc    %eax
40cf9d:	89 41 1c             	mov    %eax,0x1c(%ecx)
40cfa0:	89 41 20             	mov    %eax,0x20(%ecx)
40cfa3:	8b c1                	mov    %ecx,%eax
40cfa5:	89 51 18             	mov    %edx,0x18(%ecx)
40cfa8:	89 51 24             	mov    %edx,0x24(%ecx)
40cfab:	89 51 28             	mov    %edx,0x28(%ecx)
40cfae:	89 51 2c             	mov    %edx,0x2c(%ecx)
40cfb1:	89 51 30             	mov    %edx,0x30(%ecx)
40cfb4:	89 51 34             	mov    %edx,0x34(%ecx)
40cfb7:	c3                   	ret
40cfb8:	8b ff                	mov    %edi,%edi
40cfba:	55                   	push   %ebp
40cfbb:	8b ec                	mov    %esp,%ebp
40cfbd:	83 ec 18             	sub    $0x18,%esp
40cfc0:	53                   	push   %ebx
40cfc1:	56                   	push   %esi
40cfc2:	57                   	push   %edi
40cfc3:	8d 45 fc             	lea    -0x4(%ebp),%eax
40cfc6:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40cfc9:	50                   	push   %eax
40cfca:	68 19 00 02 00       	push   $0x20019
40cfcf:	33 f6                	xor    %esi,%esi
40cfd1:	8b fa                	mov    %edx,%edi
40cfd3:	56                   	push   %esi
40cfd4:	68 f8 63 40 00       	push   $0x4063f8
40cfd9:	68 02 00 00 80       	push   $0x80000002
40cfde:	89 7d ec             	mov    %edi,-0x14(%ebp)
40cfe1:	89 75 f8             	mov    %esi,-0x8(%ebp)
40cfe4:	ff 15 10 11 45 00    	call   *0x451110
40cfea:	33 db                	xor    %ebx,%ebx
40cfec:	43                   	inc    %ebx
40cfed:	85 c0                	test   %eax,%eax
40cfef:	75 3e                	jne    0x40d02f
40cff1:	8d 45 f8             	lea    -0x8(%ebp),%eax
40cff4:	50                   	push   %eax
40cff5:	56                   	push   %esi
40cff6:	8d 45 f4             	lea    -0xc(%ebp),%eax
40cff9:	50                   	push   %eax
40cffa:	56                   	push   %esi
40cffb:	ff 75 f0             	push   -0x10(%ebp)
40cffe:	ff 75 fc             	push   -0x4(%ebp)
40d001:	ff 15 0c 11 45 00    	call   *0x45110c
40d007:	ff 75 fc             	push   -0x4(%ebp)
40d00a:	89 45 e8             	mov    %eax,-0x18(%ebp)
40d00d:	ff 15 14 11 45 00    	call   *0x451114
40d013:	8b 45 e8             	mov    -0x18(%ebp),%eax
40d016:	85 c0                	test   %eax,%eax
40d018:	75 0e                	jne    0x40d028
40d01a:	39 5d f4             	cmp    %ebx,-0xc(%ebp)
40d01d:	75 10                	jne    0x40d02f
40d01f:	89 37                	mov    %esi,(%edi)
40d021:	33 c0                	xor    %eax,%eax
40d023:	5f                   	pop    %edi
40d024:	5e                   	pop    %esi
40d025:	5b                   	pop    %ebx
40d026:	c9                   	leave
40d027:	c3                   	ret
40d028:	3d ea 00 00 00       	cmp    $0xea,%eax
40d02d:	74 eb                	je     0x40d01a
40d02f:	8d 45 fc             	lea    -0x4(%ebp),%eax
40d032:	50                   	push   %eax
40d033:	68 19 00 02 00       	push   $0x20019
40d038:	56                   	push   %esi
40d039:	68 20 5f 40 00       	push   $0x405f20