40bee9:	8b 40 10             	mov    0x10(%eax),%eax
40beec:	90                   	nop
40beed:	50                   	push   %eax
40beee:	e8 08 3a 00 00       	call   0x40f8fb
40bef3:	8b f0                	mov    %eax,%esi
40bef5:	59                   	pop    %ecx
40bef6:	83 fe ff             	cmp    $0xffffffff,%esi
40bef9:	74 3c                	je     0x40bf37
40befb:	33 db                	xor    %ebx,%ebx
40befd:	8d 45 f8             	lea    -0x8(%ebp),%eax
40bf00:	43                   	inc    %ebx
40bf01:	53                   	push   %ebx
40bf02:	50                   	push   %eax
40bf03:	6a 00                	push   $0x0
40bf05:	6a 00                	push   $0x0
40bf07:	56                   	push   %esi
40bf08:	ff 15 f0 90 41 00    	call   *0x4190f0
40bf0e:	85 c0                	test   %eax,%eax
40bf10:	74 25                	je     0x40bf37
40bf12:	8d 45 f0             	lea    -0x10(%ebp),%eax
40bf15:	50                   	push   %eax
40bf16:	56                   	push   %esi
40bf17:	ff 15 ec 90 41 00    	call   *0x4190ec
40bf1d:	85 c0                	test   %eax,%eax
40bf1f:	74 16                	je     0x40bf37
40bf21:	8b 45 f8             	mov    -0x8(%ebp),%eax
40bf24:	3b 45 f0             	cmp    -0x10(%ebp),%eax
40bf27:	75 08                	jne    0x40bf31
40bf29:	8b 45 fc             	mov    -0x4(%ebp),%eax
40bf2c:	3b 45 f4             	cmp    -0xc(%ebp),%eax
40bf2f:	74 02                	je     0x40bf33
40bf31:	32 db                	xor    %bl,%bl
40bf33:	8a c3                	mov    %bl,%al
40bf35:	eb 02                	jmp    0x40bf39
40bf37:	32 c0                	xor    %al,%al
40bf39:	5e                   	pop    %esi
40bf3a:	5b                   	pop    %ebx
40bf3b:	c9                   	leave
40bf3c:	c3                   	ret
40bf3d:	8b ff                	mov    %edi,%edi
40bf3f:	55                   	push   %ebp
40bf40:	8b ec                	mov    %esp,%ebp
40bf42:	5d                   	pop    %ebp
40bf43:	e9 a8 fd ff ff       	jmp    0x40bcf0
40bf48:	8b ff                	mov    %edi,%edi
40bf4a:	55                   	push   %ebp
40bf4b:	8b ec                	mov    %esp,%ebp
40bf4d:	6a 02                	push   $0x2
40bf4f:	e8 37 a7 ff ff       	call   0x40668b
40bf54:	59                   	pop    %ecx
40bf55:	39 45 08             	cmp    %eax,0x8(%ebp)
40bf58:	74 28                	je     0x40bf82
40bf5a:	6a 01                	push   $0x1
40bf5c:	e8 2a a7 ff ff       	call   0x40668b
40bf61:	59                   	pop    %ecx
40bf62:	39 45 08             	cmp    %eax,0x8(%ebp)
40bf65:	75 17                	jne    0x40bf7e
40bf67:	ff 75 08             	push   0x8(%ebp)
40bf6a:	e8 54 f2 ff ff       	call   0x40b1c3
40bf6f:	50                   	push   %eax
40bf70:	e8 8c 4c 00 00       	call   0x410c01
40bf75:	85 c0                	test   %eax,%eax
40bf77:	59                   	pop    %ecx
40bf78:	59                   	pop    %ecx
40bf79:	0f 95 c0             	setne  %al
40bf7c:	5d                   	pop    %ebp
40bf7d:	c3                   	ret
40bf7e:	32 c0                	xor    %al,%al
40bf80:	5d                   	pop    %ebp
40bf81:	c3                   	ret
40bf82:	b0 01                	mov    $0x1,%al
40bf84:	5d                   	pop    %ebp
40bf85:	c3                   	ret
40bf86:	8b ff                	mov    %edi,%edi
40bf88:	55                   	push   %ebp
40bf89:	8b ec                	mov    %esp,%ebp
40bf8b:	53                   	push   %ebx
40bf8c:	56                   	push   %esi
40bf8d:	8b 75 08             	mov    0x8(%ebp),%esi
40bf90:	57                   	push   %edi
40bf91:	56                   	push   %esi
40bf92:	e8 b1 ff ff ff       	call   0x40bf48
40bf97:	59                   	pop    %ecx
40bf98:	84 c0                	test   %al,%al
40bf9a:	0f 84 8a 00 00 00    	je     0x40c02a
40bfa0:	6a 01                	push   $0x1
40bfa2:	e8 e4 a6 ff ff       	call   0x40668b
40bfa7:	59                   	pop    %ecx
40bfa8:	6a 02                	push   $0x2
40bfaa:	5b                   	pop    %ebx
40bfab:	3b f0                	cmp    %eax,%esi
40bfad:	75 07                	jne    0x40bfb6
40bfaf:	bf ac 23 42 00       	mov    $0x4223ac,%edi
40bfb4:	eb 10                	jmp    0x40bfc6
40bfb6:	53                   	push   %ebx
40bfb7:	e8 cf a6 ff ff       	call   0x40668b
40bfbc:	59                   	pop    %ecx
40bfbd:	3b f0                	cmp    %eax,%esi
40bfbf:	75 69                	jne    0x40c02a
40bfc1:	bf b0 23 42 00       	mov    $0x4223b0,%edi
40bfc6:	ff 05 44 1e 42 00    	incl   0x421e44
40bfcc:	8d 4e 0c             	lea    0xc(%esi),%ecx
40bfcf:	8b 01                	mov    (%ecx),%eax
40bfd1:	90                   	nop
40bfd2:	a9 c0 04 00 00       	test   $0x4c0,%eax
40bfd7:	75 51                	jne    0x40c02a
40bfd9:	b8 82 02 00 00       	mov    $0x282,%eax
40bfde:	f0 09 01             	lock or %eax,(%ecx)
40bfe1:	83 3f 00             	cmpl   $0x0,(%edi)
40bfe4:	75 15                	jne    0x40bffb
40bfe6:	68 00 10 00 00       	push   $0x1000
40bfeb:	e8 e2 0f 00 00       	call   0x40cfd2
40bff0:	6a 00                	push   $0x0
40bff2:	89 07                	mov    %eax,(%edi)
40bff4:	e8 a6 e7 ff ff       	call   0x40a79f
40bff9:	59                   	pop    %ecx
40bffa:	59                   	pop    %ecx
40bffb:	8b 0f                	mov    (%edi),%ecx
40bffd:	85 c9                	test   %ecx,%ecx
40bfff:	75 12                	jne    0x40c013
40c001:	8d 4e 14             	lea    0x14(%esi),%ecx
40c004:	89 5e 08             	mov    %ebx,0x8(%esi)
40c007:	89 4e 04             	mov    %ecx,0x4(%esi)
40c00a:	89 0e                	mov    %ecx,(%esi)
40c00c:	89 5e 18             	mov    %ebx,0x18(%esi)
40c00f:	b0 01                	mov    $0x1,%al
40c011:	eb 19                	jmp    0x40c02c
40c013:	89 4e 04             	mov    %ecx,0x4(%esi)
40c016:	8b 07                	mov    (%edi),%eax
40c018:	89 06                	mov    %eax,(%esi)
40c01a:	c7 46 08 00 10 00 00 	movl   $0x1000,0x8(%esi)
40c021:	c7 46 18 00 10 00 00 	movl   $0x1000,0x18(%esi)
40c028:	eb e5                	jmp    0x40c00f
40c02a:	32 c0                	xor    %al,%al
40c02c:	5f                   	pop    %edi
40c02d:	5e                   	pop    %esi
40c02e:	5b                   	pop    %ebx
40c02f:	5d                   	pop    %ebp
40c030:	c3                   	ret
40c031:	8b ff                	mov    %edi,%edi
40c033:	55                   	push   %ebp
40c034:	8b ec                	mov    %esp,%ebp
40c036:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
40c03a:	74 31                	je     0x40c06d
40c03c:	56                   	push   %esi
40c03d:	8b 75 0c             	mov    0xc(%ebp),%esi
40c040:	57                   	push   %edi
40c041:	8d 7e 0c             	lea    0xc(%esi),%edi
40c044:	8b 07                	mov    (%edi),%eax
40c046:	90                   	nop
40c047:	c1 e8 09             	shr    $0x9,%eax
40c04a:	a8 01                	test   $0x1,%al
40c04c:	74 1d                	je     0x40c06b
40c04e:	ff 75 10             	push   0x10(%ebp)
40c051:	56                   	push   %esi
40c052:	e8 63 ee ff ff       	call   0x40aeba
40c057:	59                   	pop    %ecx
40c058:	59                   	pop    %ecx
40c059:	b8 7f fd ff ff       	mov    $0xfffffd7f,%eax
40c05e:	f0 21 07             	lock and %eax,(%edi)
40c061:	33 c0                	xor    %eax,%eax
40c063:	89 46 18             	mov    %eax,0x18(%esi)
40c066:	89 46 04             	mov    %eax,0x4(%esi)
40c069:	89 06                	mov    %eax,(%esi)
40c06b:	5f                   	pop    %edi
40c06c:	5e                   	pop    %esi
40c06d:	5d                   	pop    %ebp
40c06e:	c3                   	ret
40c06f:	6a 08                	push   $0x8
40c071:	68 e8 00 42 00       	push   $0x4200e8
40c076:	e8 25 7e ff ff       	call   0x403ea0
40c07b:	8b 45 08             	mov    0x8(%ebp),%eax
40c07e:	ff 30                	push   (%eax)
40c080:	e8 07 1f 00 00       	call   0x40df8c
40c085:	59                   	pop    %ecx
40c086:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c08a:	8b 45 0c             	mov    0xc(%ebp),%eax
40c08d:	8b 00                	mov    (%eax),%eax
40c08f:	8b 00                	mov    (%eax),%eax
40c091:	8b 40 48             	mov    0x48(%eax),%eax
40c094:	f0 ff 00             	lock incl (%eax)
40c097:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c09e:	e8 12 00 00 00       	call   0x40c0b5
40c0a3:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c0a6:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c0ad:	59                   	pop    %ecx
40c0ae:	5f                   	pop    %edi
40c0af:	5e                   	pop    %esi
40c0b0:	5b                   	pop    %ebx
40c0b1:	c9                   	leave
40c0b2:	c2 0c 00             	ret    $0xc
40c0b5:	8b 45 10             	mov    0x10(%ebp),%eax
40c0b8:	ff 30                	push   (%eax)
40c0ba:	e8 15 1f 00 00       	call   0x40dfd4
40c0bf:	59                   	pop    %ecx
40c0c0:	c3                   	ret
40c0c1:	6a 08                	push   $0x8
40c0c3:	68 28 01 42 00       	push   $0x420128
40c0c8:	e8 d3 7d ff ff       	call   0x403ea0
40c0cd:	8b 45 08             	mov    0x8(%ebp),%eax
40c0d0:	ff 30                	push   (%eax)
40c0d2:	e8 b5 1e 00 00       	call   0x40df8c
40c0d7:	59                   	pop    %ecx
40c0d8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c0dc:	8b 45 0c             	mov    0xc(%ebp),%eax
40c0df:	8b 00                	mov    (%eax),%eax
40c0e1:	8b 00                	mov    (%eax),%eax
40c0e3:	8b 48 48             	mov    0x48(%eax),%ecx
40c0e6:	85 c9                	test   %ecx,%ecx
40c0e8:	74 18                	je     0x40c102
40c0ea:	83 c8 ff             	or     $0xffffffff,%eax
40c0ed:	f0 0f c1 01          	lock xadd %eax,(%ecx)
40c0f1:	75 0f                	jne    0x40c102
40c0f3:	81 f9 f0 12 42 00    	cmp    $0x4212f0,%ecx
40c0f9:	74 07                	je     0x40c102
40c0fb:	51                   	push   %ecx
40c0fc:	e8 9e e6 ff ff       	call   0x40a79f
40c101:	59                   	pop    %ecx
40c102:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c109:	e8 12 00 00 00       	call   0x40c120
40c10e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c111:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c118:	59                   	pop    %ecx
40c119:	5f                   	pop    %edi
40c11a:	5e                   	pop    %esi
40c11b:	5b                   	pop    %ebx
40c11c:	c9                   	leave
40c11d:	c2 0c 00             	ret    $0xc
40c120:	8b 45 10             	mov    0x10(%ebp),%eax
40c123:	ff 30                	push   (%eax)
40c125:	e8 aa 1e 00 00       	call   0x40dfd4
40c12a:	59                   	pop    %ecx
40c12b:	c3                   	ret
40c12c:	6a 08                	push   $0x8
40c12e:	68 48 01 42 00       	push   $0x420148
40c133:	e8 68 7d ff ff       	call   0x403ea0
40c138:	8b 45 08             	mov    0x8(%ebp),%eax
40c13b:	ff 30                	push   (%eax)
40c13d:	e8 4a 1e 00 00       	call   0x40df8c
40c142:	59                   	pop    %ecx
40c143:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c147:	6a 00                	push   $0x0
40c149:	8b 45 0c             	mov    0xc(%ebp),%eax
40c14c:	8b 00                	mov    (%eax),%eax
40c14e:	ff 30                	push   (%eax)
40c150:	e8 0d 02 00 00       	call   0x40c362
40c155:	59                   	pop    %ecx
40c156:	59                   	pop    %ecx
40c157:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c15e:	e8 12 00 00 00       	call   0x40c175
40c163:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c166:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c16d:	59                   	pop    %ecx
40c16e:	5f                   	pop    %edi
40c16f:	5e                   	pop    %esi
40c170:	5b                   	pop    %ebx
40c171:	c9                   	leave
40c172:	c2 0c 00             	ret    $0xc
40c175:	8b 45 10             	mov    0x10(%ebp),%eax
40c178:	ff 30                	push   (%eax)
40c17a:	e8 55 1e 00 00       	call   0x40dfd4
40c17f:	59                   	pop    %ecx
40c180:	c3                   	ret
40c181:	6a 08                	push   $0x8
40c183:	68 08 01 42 00       	push   $0x420108
40c188:	e8 13 7d ff ff       	call   0x403ea0
40c18d:	8b 45 08             	mov    0x8(%ebp),%eax
40c190:	ff 30                	push   (%eax)
40c192:	e8 f5 1d 00 00       	call   0x40df8c
40c197:	59                   	pop    %ecx
40c198:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c19c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c19f:	8b 41 04             	mov    0x4(%ecx),%eax
40c1a2:	8b 00                	mov    (%eax),%eax
40c1a4:	ff 30                	push   (%eax)
40c1a6:	8b 01                	mov    (%ecx),%eax
40c1a8:	ff 30                	push   (%eax)
40c1aa:	e8 b3 01 00 00       	call   0x40c362
40c1af:	59                   	pop    %ecx
40c1b0:	59                   	pop    %ecx
40c1b1:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c1b8:	e8 12 00 00 00       	call   0x40c1cf
40c1bd:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c1c0:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c1c7:	59                   	pop    %ecx
40c1c8:	5f                   	pop    %edi
40c1c9:	5e                   	pop    %esi
40c1ca:	5b                   	pop    %ebx
40c1cb:	c9                   	leave
40c1cc:	c2 0c 00             	ret    $0xc
40c1cf:	8b 45 10             	mov    0x10(%ebp),%eax
40c1d2:	ff 30                	push   (%eax)
40c1d4:	e8 fb 1d 00 00       	call   0x40dfd4
40c1d9:	59                   	pop    %ecx
40c1da:	c3                   	ret
40c1db:	8b ff                	mov    %edi,%edi
40c1dd:	55                   	push   %ebp
40c1de:	8b ec                	mov    %esp,%ebp
40c1e0:	83 ec 14             	sub    $0x14,%esp
40c1e3:	8b 45 08             	mov    0x8(%ebp),%eax
40c1e6:	33 c9                	xor    %ecx,%ecx
40c1e8:	41                   	inc    %ecx
40c1e9:	6a 43                	push   $0x43
40c1eb:	89 48 18             	mov    %ecx,0x18(%eax)
40c1ee:	8b 45 08             	mov    0x8(%ebp),%eax
40c1f1:	c7 00 d0 a1 41 00    	movl   $0x41a1d0,(%eax)
40c1f7:	8b 45 08             	mov    0x8(%ebp),%eax
40c1fa:	89 88 50 03 00 00    	mov    %ecx,0x350(%eax)
40c200:	8b 45 08             	mov    0x8(%ebp),%eax
40c203:	59                   	pop    %ecx
40c204:	6a 05                	push   $0x5
40c206:	c7 40 48 f0 12 42 00 	movl   $0x4212f0,0x48(%eax)
40c20d:	8b 45 08             	mov    0x8(%ebp),%eax
40c210:	66 89 48 6c          	mov    %cx,0x6c(%eax)
40c214:	8b 45 08             	mov    0x8(%ebp),%eax
40c217:	66 89 88 72 01 00 00 	mov    %cx,0x172(%eax)
40c21e:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40c221:	8b 45 08             	mov    0x8(%ebp),%eax
40c224:	83 a0 4c 03 00 00 00 	andl   $0x0,0x34c(%eax)
40c22b:	8d 45 08             	lea    0x8(%ebp),%eax
40c22e:	89 45 f0             	mov    %eax,-0x10(%ebp)
40c231:	58                   	pop    %eax
40c232:	89 45 f8             	mov    %eax,-0x8(%ebp)
40c235:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c238:	8d 45 f8             	lea    -0x8(%ebp),%eax
40c23b:	50                   	push   %eax
40c23c:	8d 45 f0             	lea    -0x10(%ebp),%eax
40c23f:	50                   	push   %eax
40c240:	8d 45 ec             	lea    -0x14(%ebp),%eax
40c243:	50                   	push   %eax
40c244:	e8 26 fe ff ff       	call   0x40c06f
40c249:	8d 45 08             	lea    0x8(%ebp),%eax
40c24c:	89 45 f4             	mov    %eax,-0xc(%ebp)
40c24f:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40c252:	6a 04                	push   $0x4
40c254:	8d 45 0c             	lea    0xc(%ebp),%eax
40c257:	89 45 f8             	mov    %eax,-0x8(%ebp)
40c25a:	58                   	pop    %eax
40c25b:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c25e:	89 45 f0             	mov    %eax,-0x10(%ebp)
40c261:	8d 45 ec             	lea    -0x14(%ebp),%eax
40c264:	50                   	push   %eax
40c265:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c268:	50                   	push   %eax
40c269:	8d 45 f0             	lea    -0x10(%ebp),%eax
40c26c:	50                   	push   %eax
40c26d:	e8 0f ff ff ff       	call   0x40c181
40c272:	c9                   	leave
40c273:	c3                   	ret
40c274:	8b ff                	mov    %edi,%edi