41b9b6:	c3                   	ret
41b9b7:	8b ff                	mov    %edi,%edi
41b9b9:	55                   	push   %ebp
41b9ba:	8b ec                	mov    %esp,%ebp
41b9bc:	83 ec 40             	sub    $0x40,%esp
41b9bf:	8d 45 e4             	lea    -0x1c(%ebp),%eax
41b9c2:	6a 1c                	push   $0x1c
41b9c4:	50                   	push   %eax
41b9c5:	ff 75 08             	push   0x8(%ebp)
41b9c8:	ff 15 00 c2 41 00    	call   *0x41c200
41b9ce:	85 c0                	test   %eax,%eax
41b9d0:	75 05                	jne    0x41b9d7
41b9d2:	6a 19                	push   $0x19
41b9d4:	59                   	pop    %ecx
41b9d5:	cd 29                	int    $0x29
41b9d7:	f6 45 f8 44          	testb  $0x44,-0x8(%ebp)
41b9db:	74 45                	je     0x41ba22
41b9dd:	56                   	push   %esi
41b9de:	57                   	push   %edi
41b9df:	8d 45 c0             	lea    -0x40(%ebp),%eax
41b9e2:	50                   	push   %eax
41b9e3:	ff 15 14 c2 41 00    	call   *0x41c214
41b9e9:	8b 7d c4             	mov    -0x3c(%ebp),%edi
41b9ec:	8d 57 ff             	lea    -0x1(%edi),%edx
41b9ef:	8b c2                	mov    %edx,%eax
41b9f1:	8b f2                	mov    %edx,%esi
41b9f3:	23 45 08             	and    0x8(%ebp),%eax
41b9f6:	f7 d6                	not    %esi
41b9f8:	23 55 0c             	and    0xc(%ebp),%edx
41b9fb:	03 c7                	add    %edi,%eax
41b9fd:	4a                   	dec    %edx
41b9fe:	23 75 08             	and    0x8(%ebp),%esi
41ba01:	03 c2                	add    %edx,%eax
41ba03:	33 d2                	xor    %edx,%edx
41ba05:	f7 f7                	div    %edi
41ba07:	33 d2                	xor    %edx,%edx
41ba09:	8b c8                	mov    %eax,%ecx
41ba0b:	8b 45 0c             	mov    0xc(%ebp),%eax
41ba0e:	f7 f7                	div    %edi
41ba10:	03 c8                	add    %eax,%ecx
41ba12:	74 0c                	je     0x41ba20
41ba14:	33 c0                	xor    %eax,%eax
41ba16:	f0 09 06             	lock or %eax,(%esi)
41ba19:	03 f7                	add    %edi,%esi
41ba1b:	83 e9 01             	sub    $0x1,%ecx
41ba1e:	75 f4                	jne    0x41ba14
41ba20:	5f                   	pop    %edi
41ba21:	5e                   	pop    %esi
41ba22:	c9                   	leave
41ba23:	c2 08 00             	ret    $0x8
41ba26:	8b ff                	mov    %edi,%edi
41ba28:	55                   	push   %ebp
41ba29:	8b ec                	mov    %esp,%ebp
41ba2b:	8b 0d 3c 00 40 00    	mov    0x40003c,%ecx
41ba31:	53                   	push   %ebx
41ba32:	56                   	push   %esi
41ba33:	57                   	push   %edi
41ba34:	83 b9 74 00 40 00 0d 	cmpl   $0xd,0x400074(%ecx)
41ba3b:	76 44                	jbe    0x41ba81
41ba3d:	8b b1 e0 00 40 00    	mov    0x4000e0(%ecx),%esi
41ba43:	85 f6                	test   %esi,%esi
41ba45:	74 3a                	je     0x41ba81
41ba47:	0f b7 81 14 00 40 00 	movzwl 0x400014(%ecx),%eax
41ba4e:	8d 91 18 00 40 00    	lea    0x400018(%ecx),%edx
41ba54:	8b 9e 0c 00 40 00    	mov    0x40000c(%esi),%ebx
41ba5a:	03 d0                	add    %eax,%edx
41ba5c:	0f b7 89 06 00 40 00 	movzwl 0x400006(%ecx),%ecx
41ba63:	33 f6                	xor    %esi,%esi
41ba65:	85 c9                	test   %ecx,%ecx
41ba67:	74 18                	je     0x41ba81
41ba69:	8b 42 0c             	mov    0xc(%edx),%eax
41ba6c:	3b d8                	cmp    %eax,%ebx
41ba6e:	72 09                	jb     0x41ba79
41ba70:	8b 7a 08             	mov    0x8(%edx),%edi
41ba73:	03 c7                	add    %edi,%eax
41ba75:	3b d8                	cmp    %eax,%ebx
41ba77:	72 11                	jb     0x41ba8a
41ba79:	46                   	inc    %esi
41ba7a:	83 c2 28             	add    $0x28,%edx
41ba7d:	3b f1                	cmp    %ecx,%esi
41ba7f:	72 e8                	jb     0x41ba69
41ba81:	33 c0                	xor    %eax,%eax
41ba83:	5f                   	pop    %edi
41ba84:	5e                   	pop    %esi
41ba85:	5b                   	pop    %ebx
41ba86:	5d                   	pop    %ebp
41ba87:	c2 08 00             	ret    $0x8
41ba8a:	8b 45 08             	mov    0x8(%ebp),%eax
41ba8d:	89 38                	mov    %edi,(%eax)
41ba8f:	8b 45 0c             	mov    0xc(%ebp),%eax
41ba92:	8b 4a 24             	mov    0x24(%edx),%ecx
41ba95:	89 08                	mov    %ecx,(%eax)
41ba97:	8b 42 0c             	mov    0xc(%edx),%eax
41ba9a:	05 00 00 40 00       	add    $0x400000,%eax
41ba9f:	eb e2                	jmp    0x41ba83
41baa1:	8b ff                	mov    %edi,%edi
41baa3:	55                   	push   %ebp
41baa4:	8b ec                	mov    %esp,%ebp
41baa6:	51                   	push   %ecx
41baa7:	51                   	push   %ecx
41baa8:	56                   	push   %esi
41baa9:	8d 45 f8             	lea    -0x8(%ebp),%eax
41baac:	50                   	push   %eax
41baad:	8d 45 fc             	lea    -0x4(%ebp),%eax
41bab0:	50                   	push   %eax
41bab1:	e8 70 ff ff ff       	call   0x41ba26
41bab6:	8b f0                	mov    %eax,%esi
41bab8:	85 f6                	test   %esi,%esi
41baba:	75 0b                	jne    0x41bac7
41babc:	8b 45 0c             	mov    0xc(%ebp),%eax
41babf:	c7 00 04 00 00 00    	movl   $0x4,(%eax)
41bac5:	eb 43                	jmp    0x41bb0a
41bac7:	83 3d d4 73 42 00 00 	cmpl   $0x0,0x4273d4
41bace:	75 21                	jne    0x41baf1
41bad0:	f7 45 f8 00 00 00 80 	testl  $0x80000000,-0x8(%ebp)
41bad7:	c7 05 d4 73 42 00 01 	movl   $0x1,0x4273d4
41bade:	00 00 00
41bae1:	75 05                	jne    0x41bae8
41bae3:	6a 19                	push   $0x19
41bae5:	59                   	pop    %ecx
41bae6:	cd 29                	int    $0x29
41bae8:	ff 75 fc             	push   -0x4(%ebp)
41baeb:	56                   	push   %esi
41baec:	e8 c6 fe ff ff       	call   0x41b9b7
41baf1:	ff 75 0c             	push   0xc(%ebp)
41baf4:	ff 75 08             	push   0x8(%ebp)
41baf7:	ff 75 fc             	push   -0x4(%ebp)
41bafa:	56                   	push   %esi
41bafb:	ff 15 0c c1 41 00    	call   *0x41c10c
41bb01:	85 c0                	test   %eax,%eax
41bb03:	75 05                	jne    0x41bb0a
41bb05:	6a 19                	push   $0x19
41bb07:	59                   	pop    %ecx
41bb08:	cd 29                	int    $0x29
41bb0a:	5e                   	pop    %esi
41bb0b:	c9                   	leave
41bb0c:	c2 08 00             	ret    $0x8
41bb0f:	8b ff                	mov    %edi,%edi
41bb11:	55                   	push   %ebp
41bb12:	8b ec                	mov    %esp,%ebp
41bb14:	51                   	push   %ecx
41bb15:	f7 05 18 14 42 00 00 	testl  $0x1000,0x421418
41bb1c:	10 00 00
41bb1f:	74 22                	je     0x41bb43
41bb21:	e8 52 fe ff ff       	call   0x41b978
41bb26:	83 2d cc 73 42 00 01 	subl   $0x1,0x4273cc
41bb2d:	75 0f                	jne    0x41bb3e
41bb2f:	8d 45 fc             	lea    -0x4(%ebp),%eax
41bb32:	50                   	push   %eax
41bb33:	ff 35 d0 73 42 00    	push   0x4273d0
41bb39:	e8 63 ff ff ff       	call   0x41baa1
41bb3e:	e8 02 00 00 00       	call   0x41bb45
41bb43:	c9                   	leave
41bb44:	c3                   	ret
41bb45:	e8 b8 fd ff ff       	call   0x41b902
41bb4a:	84 c0                	test   %al,%al
41bb4c:	74 18                	je     0x41bb66
41bb4e:	56                   	push   %esi
41bb4f:	8b 35 c4 73 42 00    	mov    0x4273c4,%esi
41bb55:	8b ce                	mov    %esi,%ecx
41bb57:	68 c8 73 42 00       	push   $0x4273c8
41bb5c:	ff 15 50 c2 41 00    	call   *0x41c250
41bb62:	ff d6                	call   *%esi
41bb64:	5e                   	pop    %esi
41bb65:	c3                   	ret
41bb66:	c7 05 c8 73 42 00 00 	movl   $0x0,0x4273c8
41bb6d:	00 00 00
41bb70:	c3                   	ret
41bb71:	8b ff                	mov    %edi,%edi
41bb73:	55                   	push   %ebp
41bb74:	8b ec                	mov    %esp,%ebp
41bb76:	83 ec 34             	sub    $0x34,%esp
41bb79:	53                   	push   %ebx
41bb7a:	56                   	push   %esi
41bb7b:	57                   	push   %edi
41bb7c:	e8 4e fd ff ff       	call   0x41b8cf
41bb81:	8b 4d 08             	mov    0x8(%ebp),%ecx
41bb84:	bf 00 00 40 00       	mov    $0x400000,%edi
41bb89:	c7 45 cc 24 00 00 00 	movl   $0x24,-0x34(%ebp)
41bb90:	89 4d d0             	mov    %ecx,-0x30(%ebp)
41bb93:	8b 41 04             	mov    0x4(%ecx),%eax
41bb96:	8b 59 08             	mov    0x8(%ecx),%ebx
41bb99:	03 c7                	add    %edi,%eax
41bb9b:	8b 51 0c             	mov    0xc(%ecx),%edx
41bb9e:	03 df                	add    %edi,%ebx
41bba0:	8b 71 10             	mov    0x10(%ecx),%esi
41bba3:	03 d7                	add    %edi,%edx
41bba5:	03 f7                	add    %edi,%esi
41bba7:	89 5d fc             	mov    %ebx,-0x4(%ebp)
41bbaa:	8b 79 14             	mov    0x14(%ecx),%edi
41bbad:	81 c7 00 00 40 00    	add    $0x400000,%edi
41bbb3:	89 45 d8             	mov    %eax,-0x28(%ebp)
41bbb6:	89 7d f0             	mov    %edi,-0x10(%ebp)
41bbb9:	8b 79 1c             	mov    0x1c(%ecx),%edi
41bbbc:	89 7d f8             	mov    %edi,-0x8(%ebp)
41bbbf:	8b 7d 0c             	mov    0xc(%ebp),%edi
41bbc2:	89 7d d4             	mov    %edi,-0x2c(%ebp)
41bbc5:	33 ff                	xor    %edi,%edi
41bbc7:	f7 01 01 00 00 00    	testl  $0x1,(%ecx)
41bbcd:	89 7d dc             	mov    %edi,-0x24(%ebp)
41bbd0:	89 7d e0             	mov    %edi,-0x20(%ebp)
41bbd3:	89 7d e4             	mov    %edi,-0x1c(%ebp)
41bbd6:	89 7d e8             	mov    %edi,-0x18(%ebp)
41bbd9:	89 7d ec             	mov    %edi,-0x14(%ebp)
41bbdc:	75 24                	jne    0x41bc02
41bbde:	8d 45 cc             	lea    -0x34(%ebp),%eax
41bbe1:	89 45 fc             	mov    %eax,-0x4(%ebp)
41bbe4:	e8 26 ff ff ff       	call   0x41bb0f
41bbe9:	8d 45 fc             	lea    -0x4(%ebp),%eax
41bbec:	50                   	push   %eax
41bbed:	6a 01                	push   $0x1
41bbef:	57                   	push   %edi
41bbf0:	68 57 00 6d c0       	push   $0xc06d0057
41bbf5:	ff 15 d8 c0 41 00    	call   *0x41c0d8
41bbfb:	33 c0                	xor    %eax,%eax
41bbfd:	e9 d7 01 00 00       	jmp    0x41bdd9
41bc02:	8b 45 0c             	mov    0xc(%ebp),%eax
41bc05:	8b 3b                	mov    (%ebx),%edi
41bc07:	2b c2                	sub    %edx,%eax
41bc09:	c1 f8 02             	sar    $0x2,%eax
41bc0c:	89 45 f4             	mov    %eax,-0xc(%ebp)
41bc0f:	8b 0c 86             	mov    (%esi,%eax,4),%ecx
41bc12:	8b c1                	mov    %ecx,%eax
41bc14:	c1 e8 1f             	shr    $0x1f,%eax
41bc17:	f7 d0                	not    %eax
41bc19:	83 e0 01             	and    $0x1,%eax
41bc1c:	89 45 dc             	mov    %eax,-0x24(%ebp)
41bc1f:	8d 81 02 00 40 00    	lea    0x400002(%ecx),%eax
41bc25:	75 03                	jne    0x41bc2a
41bc27:	0f b7 c1             	movzwl %cx,%eax
41bc2a:	8b 1d b8 13 42 00    	mov    0x4213b8,%ebx
41bc30:	33 f6                	xor    %esi,%esi
41bc32:	89 45 e0             	mov    %eax,-0x20(%ebp)
41bc35:	85 db                	test   %ebx,%ebx
41bc37:	74 1f                	je     0x41bc58
41bc39:	8d 45 cc             	lea    -0x34(%ebp),%eax
41bc3c:	8b cb                	mov    %ebx,%ecx
41bc3e:	50                   	push   %eax
41bc3f:	56                   	push   %esi
41bc40:	ff 15 50 c2 41 00    	call   *0x41c250
41bc46:	ff d3                	call   *%ebx
41bc48:	8b f0                	mov    %eax,%esi
41bc4a:	85 f6                	test   %esi,%esi
41bc4c:	0f 85 5c 01 00 00    	jne    0x41bdae
41bc52:	8b 1d b8 13 42 00    	mov    0x4213b8,%ebx
41bc58:	85 ff                	test   %edi,%edi
41bc5a:	0f 85 93 00 00 00    	jne    0x41bcf3
41bc60:	85 db                	test   %ebx,%ebx
41bc62:	74 16                	je     0x41bc7a
41bc64:	8d 45 cc             	lea    -0x34(%ebp),%eax
41bc67:	8b cb                	mov    %ebx,%ecx
41bc69:	50                   	push   %eax
41bc6a:	6a 01                	push   $0x1
41bc6c:	ff 15 50 c2 41 00    	call   *0x41c250
41bc72:	ff d3                	call   *%ebx
41bc74:	8b f8                	mov    %eax,%edi
41bc76:	85 ff                	test   %edi,%edi
41bc78:	75 61                	jne    0x41bcdb
41bc7a:	33 db                	xor    %ebx,%ebx
41bc7c:	53                   	push   %ebx
41bc7d:	53                   	push   %ebx
41bc7e:	ff 75 d8             	push   -0x28(%ebp)
41bc81:	ff 15 18 c2 41 00    	call   *0x41c218
41bc87:	8b f8                	mov    %eax,%edi
41bc89:	85 ff                	test   %edi,%edi
41bc8b:	75 4e                	jne    0x41bcdb
41bc8d:	ff 15 48 c1 41 00    	call   *0x41c148
41bc93:	8b 3d bc 13 42 00    	mov    0x4213bc,%edi
41bc99:	89 45 ec             	mov    %eax,-0x14(%ebp)
41bc9c:	85 ff                	test   %edi,%edi
41bc9e:	74 16                	je     0x41bcb6
41bca0:	8d 45 cc             	lea    -0x34(%ebp),%eax
41bca3:	8b cf                	mov    %edi,%ecx
41bca5:	50                   	push   %eax
41bca6:	6a 03                	push   $0x3
41bca8:	ff 15 50 c2 41 00    	call   *0x41c250
41bcae:	ff d7                	call   *%edi
41bcb0:	8b f8                	mov    %eax,%edi
41bcb2:	85 ff                	test   %edi,%edi
41bcb4:	75 25                	jne    0x41bcdb
41bcb6:	8d 45 cc             	lea    -0x34(%ebp),%eax
41bcb9:	89 45 fc             	mov    %eax,-0x4(%ebp)
41bcbc:	e8 4e fe ff ff       	call   0x41bb0f
41bcc1:	8d 45 fc             	lea    -0x4(%ebp),%eax
41bcc4:	50                   	push   %eax
41bcc5:	6a 01                	push   $0x1
41bcc7:	53                   	push   %ebx
41bcc8:	68 7e 00 6d c0       	push   $0xc06d007e
41bccd:	ff 15 d8 c0 41 00    	call   *0x41c0d8
41bcd3:	8b 45 e8             	mov    -0x18(%ebp),%eax
41bcd6:	e9 fe 00 00 00       	jmp    0x41bdd9
41bcdb:	8b 4d fc             	mov    -0x4(%ebp),%ecx
41bcde:	8b c7                	mov    %edi,%eax
41bce0:	87 01                	xchg   %eax,(%ecx)
41bce2:	3b c7                	cmp    %edi,%eax
41bce4:	75 07                	jne    0x41bced
41bce6:	57                   	push   %edi
41bce7:	ff 15 20 c1 41 00    	call   *0x41c120
41bced:	8b 1d b8 13 42 00    	mov    0x4213b8,%ebx
41bcf3:	89 7d e4             	mov    %edi,-0x1c(%ebp)
41bcf6:	85 db                	test   %ebx,%ebx
41bcf8:	74 12                	je     0x41bd0c
41bcfa:	8d 45 cc             	lea    -0x34(%ebp),%eax
41bcfd:	8b cb                	mov    %ebx,%ecx
41bcff:	50                   	push   %eax
41bd00:	6a 02                	push   $0x2
41bd02:	ff 15 50 c2 41 00    	call   *0x41c250
41bd08:	ff d3                	call   *%ebx
41bd0a:	8b f0                	mov    %eax,%esi
41bd0c:	85 f6                	test   %esi,%esi
41bd0e:	0f 85 95 00 00 00    	jne    0x41bda9
41bd14:	8b 45 08             	mov    0x8(%ebp),%eax
41bd17:	33 db                	xor    %ebx,%ebx
41bd19:	39 58 14             	cmp    %ebx,0x14(%eax)
41bd1c:	74 2d                	je     0x41bd4b
41bd1e:	39 58 1c             	cmp    %ebx,0x1c(%eax)
41bd21:	74 28                	je     0x41bd4b
41bd23:	8b 47 3c             	mov    0x3c(%edi),%eax
41bd26:	81 3c 38 50 45 00 00 	cmpl   $0x4550,(%eax,%edi,1)
41bd2d:	75 1c                	jne    0x41bd4b
41bd2f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
41bd32:	39 4c 38 08          	cmp    %ecx,0x8(%eax,%edi,1)
41bd36:	75 13                	jne    0x41bd4b
41bd38:	3b 7c 38 34          	cmp    0x34(%eax,%edi,1),%edi
41bd3c:	75 0d                	jne    0x41bd4b
41bd3e:	8b 75 f4             	mov    -0xc(%ebp),%esi
41bd41:	8b 45 f0             	mov    -0x10(%ebp),%eax
41bd44:	8b 34 b0             	mov    (%eax,%esi,4),%esi
41bd47:	85 f6                	test   %esi,%esi
41bd49:	75 5e                	jne    0x41bda9
41bd4b:	ff 75 e0             	push   -0x20(%ebp)
41bd4e:	57                   	push   %edi
41bd4f:	ff 15 1c c1 41 00    	call   *0x41c11c
41bd55:	8b f0                	mov    %eax,%esi
41bd57:	85 f6                	test   %esi,%esi
41bd59:	75 4e                	jne    0x41bda9
41bd5b:	ff 15 48 c1 41 00    	call   *0x41c148
41bd61:	8b 35 bc 13 42 00    	mov    0x4213bc,%esi
41bd67:	89 45 ec             	mov    %eax,-0x14(%ebp)
41bd6a:	85 f6                	test   %esi,%esi
41bd6c:	74 16                	je     0x41bd84
41bd6e:	8d 45 cc             	lea    -0x34(%ebp),%eax
41bd71:	8b ce                	mov    %esi,%ecx
41bd73:	50                   	push   %eax
41bd74:	6a 04                	push   $0x4
41bd76:	ff 15 50 c2 41 00    	call   *0x41c250
41bd7c:	ff d6                	call   *%esi
41bd7e:	8b f0                	mov    %eax,%esi
41bd80:	85 f6                	test   %esi,%esi
41bd82:	75 25                	jne    0x41bda9