40d993:	ff 75 58             	push   0x58(%ebp)
40d996:	ff 75 54             	push   0x54(%ebp)
40d999:	ff 75 08             	push   0x8(%ebp)
40d99c:	56                   	push   %esi
40d99d:	ff 15 20 a5 43 00    	call   *0x43a520
40d9a3:	ff 53 20             	call   *0x20(%ebx)
40d9a6:	8b d8                	mov    %eax,%ebx
40d9a8:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40d9ab:	81 fb 01 40 00 80    	cmp    $0x80004001,%ebx
40d9b1:	0f 84 80 01 00 00    	je     0x40db37
40d9b7:	ff 75 e8             	push   -0x18(%ebp)
40d9ba:	8b 4d 48             	mov    0x48(%ebp),%ecx
40d9bd:	c6 45 f3 01          	movb   $0x1,-0xd(%ebp)
40d9c1:	e8 f3 e9 ff ff       	call   0x40c3b9
40d9c6:	8b 4d 48             	mov    0x48(%ebp),%ecx
40d9c9:	56                   	push   %esi
40d9ca:	8d 49 04             	lea    0x4(%ecx),%ecx
40d9cd:	e8 e7 e9 ff ff       	call   0x40c3b9
40d9d2:	8a 4d f3             	mov    -0xd(%ebp),%cl
40d9d5:	85 db                	test   %ebx,%ebx
40d9d7:	78 08                	js     0x40d9e1
40d9d9:	84 c9                	test   %cl,%cl
40d9db:	0f 84 42 01 00 00    	je     0x40db23
40d9e1:	c6 45 fc 07          	movb   $0x7,-0x4(%ebp)
40d9e5:	8b 45 d8             	mov    -0x28(%ebp),%eax
40d9e8:	85 c0                	test   %eax,%eax
40d9ea:	0f 85 d8 00 00 00    	jne    0x40dac8
40d9f0:	c6 45 fc 08          	movb   $0x8,-0x4(%ebp)
40d9f4:	8b 45 e8             	mov    -0x18(%ebp),%eax
40d9f7:	85 c0                	test   %eax,%eax
40d9f9:	74 10                	je     0x40da0b
40d9fb:	8b 08                	mov    (%eax),%ecx
40d9fd:	50                   	push   %eax
40d9fe:	8b 59 08             	mov    0x8(%ecx),%ebx
40da01:	8b cb                	mov    %ebx,%ecx
40da03:	ff 15 20 a5 43 00    	call   *0x43a520
40da09:	ff d3                	call   *%ebx
40da0b:	c6 45 fc 09          	movb   $0x9,-0x4(%ebp)
40da0f:	85 f6                	test   %esi,%esi
40da11:	74 10                	je     0x40da23
40da13:	8b 06                	mov    (%esi),%eax
40da15:	56                   	push   %esi
40da16:	8b 70 08             	mov    0x8(%eax),%esi
40da19:	8b ce                	mov    %esi,%ecx
40da1b:	ff 15 20 a5 43 00    	call   *0x43a520
40da21:	ff d6                	call   *%esi
40da23:	c6 45 fc 0a          	movb   $0xa,-0x4(%ebp)
40da27:	85 ff                	test   %edi,%edi
40da29:	0f 85 9f 01 00 00    	jne    0x40dbce
40da2f:	c6 45 fc 0b          	movb   $0xb,-0x4(%ebp)
40da33:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40da36:	85 c0                	test   %eax,%eax
40da38:	0f 85 00 2d 01 00    	jne    0x42073e
40da3e:	8b 75 c8             	mov    -0x38(%ebp),%esi
40da41:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40da44:	8d 46 28             	lea    0x28(%esi),%eax
40da47:	85 c0                	test   %eax,%eax
40da49:	74 07                	je     0x40da52
40da4b:	50                   	push   %eax
40da4c:	ff 15 9c a2 43 00    	call   *0x43a29c
40da52:	8b c3                	mov    %ebx,%eax
40da54:	e8 83 d3 00 00       	call   0x41addc
40da59:	c2 54 00             	ret    $0x54
40da5c:	8b 5d dc             	mov    -0x24(%ebp),%ebx
40da5f:	53                   	push   %ebx
40da60:	ff 75 50             	push   0x50(%ebp)
40da63:	e8 a1 fd ff ff       	call   0x40d809
40da68:	89 45 ec             	mov    %eax,-0x14(%ebp)
40da6b:	85 c0                	test   %eax,%eax
40da6d:	0f 88 6e ff ff ff    	js     0x40d9e1
40da73:	83 65 dc 00          	andl   $0x0,-0x24(%ebp)
40da77:	8d 45 dc             	lea    -0x24(%ebp),%eax
40da7a:	c6 45 fc 06          	movb   $0x6,-0x4(%ebp)
40da7e:	50                   	push   %eax
40da7f:	8b cb                	mov    %ebx,%ecx
40da81:	e8 98 d4 ff ff       	call   0x40af1e
40da86:	ff 75 58             	push   0x58(%ebp)
40da89:	8d 45 e8             	lea    -0x18(%ebp),%eax
40da8c:	ff 75 54             	push   0x54(%ebp)
40da8f:	50                   	push   %eax
40da90:	ff 75 dc             	push   -0x24(%ebp)
40da93:	ff 75 d8             	push   -0x28(%ebp)
40da96:	ff 75 48             	push   0x48(%ebp)
40da99:	ff 75 44             	push   0x44(%ebp)
40da9c:	51                   	push   %ecx
40da9d:	ff 75 34             	push   0x34(%ebp)
40daa0:	51                   	push   %ecx
40daa1:	ff 75 2c             	push   0x2c(%ebp)
40daa4:	ff 75 28             	push   0x28(%ebp)
40daa7:	83 ec 0c             	sub    $0xc,%esp
40daaa:	ff 75 18             	push   0x18(%ebp)
40daad:	83 ec 0c             	sub    $0xc,%esp
40dab0:	ff 75 08             	push   0x8(%ebp)
40dab3:	e8 88 ce ff ff       	call   0x40a940
40dab8:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40dabb:	89 45 ec             	mov    %eax,-0x14(%ebp)
40dabe:	e8 3c e7 ff ff       	call   0x40c1ff
40dac3:	e9 19 ff ff ff       	jmp    0x40d9e1
40dac8:	8b 08                	mov    (%eax),%ecx
40daca:	50                   	push   %eax
40dacb:	8b 59 08             	mov    0x8(%ecx),%ebx
40dace:	8b cb                	mov    %ebx,%ecx
40dad0:	ff 15 20 a5 43 00    	call   *0x43a520
40dad6:	ff d3                	call   *%ebx
40dad8:	e9 13 ff ff ff       	jmp    0x40d9f0
40dadd:	ff 35 80 8d 43 00    	push   0x438d80
40dae3:	a3 38 8a 43 00       	mov    %eax,0x438a38
40dae8:	ff 15 b0 a2 43 00    	call   *0x43a2b0
40daee:	85 c0                	test   %eax,%eax
40daf0:	0f 84 41 2b 01 00    	je     0x420637
40daf6:	6a ff                	push   $0xffffffff
40daf8:	ff 35 74 8d 43 00    	push   0x438d74
40dafe:	ff 15 d0 a2 43 00    	call   *0x43a2d0
40db04:	85 c0                	test   %eax,%eax
40db06:	0f 85 f7 2a 01 00    	jne    0x420603
40db0c:	83 25 38 8a 43 00 00 	andl   $0x0,0x438a38
40db13:	85 db                	test   %ebx,%ebx
40db15:	0f 88 29 ff ff ff    	js     0x40da44
40db1b:	8b 45 dc             	mov    -0x24(%ebp),%eax
40db1e:	e9 ce fd ff ff       	jmp    0x40d8f1
40db23:	8b 45 30             	mov    0x30(%ebp),%eax
40db26:	25 00 04 00 00       	and    $0x400,%eax
40db2b:	89 45 d0             	mov    %eax,-0x30(%ebp)
40db2e:	8b 45 30             	mov    0x30(%ebp),%eax
40db31:	83 e0 10             	and    $0x10,%eax
40db34:	89 45 cc             	mov    %eax,-0x34(%ebp)
40db37:	8b 5d dc             	mov    -0x24(%ebp),%ebx
40db3a:	8d 45 e0             	lea    -0x20(%ebp),%eax
40db3d:	50                   	push   %eax
40db3e:	8b cb                	mov    %ebx,%ecx
40db40:	e8 5e dc ff ff       	call   0x40b7a3
40db45:	85 c0                	test   %eax,%eax
40db47:	0f 88 76 2b 01 00    	js     0x4206c3
40db4d:	53                   	push   %ebx
40db4e:	ff 75 50             	push   0x50(%ebp)
40db51:	e8 b3 fc ff ff       	call   0x40d809
40db56:	8b 7d e0             	mov    -0x20(%ebp),%edi
40db59:	89 45 ec             	mov    %eax,-0x14(%ebp)
40db5c:	85 c0                	test   %eax,%eax
40db5e:	0f 88 7d fe ff ff    	js     0x40d9e1
40db64:	8d 45 e8             	lea    -0x18(%ebp),%eax
40db67:	8b 1f                	mov    (%edi),%ebx
40db69:	50                   	push   %eax
40db6a:	ff 75 34             	push   0x34(%ebp)
40db6d:	33 c0                	xor    %eax,%eax
40db6f:	39 45 d0             	cmp    %eax,-0x30(%ebp)
40db72:	8b 4b 18             	mov    0x18(%ebx),%ecx
40db75:	0f 95 c0             	setne  %al
40db78:	50                   	push   %eax
40db79:	33 c0                	xor    %eax,%eax
40db7b:	39 45 cc             	cmp    %eax,-0x34(%ebp)
40db7e:	0f 95 c0             	setne  %al
40db81:	50                   	push   %eax
40db82:	ff 75 2c             	push   0x2c(%ebp)
40db85:	b8 cc 3f 40 00       	mov    $0x403fcc,%eax
40db8a:	ff 75 28             	push   0x28(%ebp)
40db8d:	ff 75 24             	push   0x24(%ebp)
40db90:	ff 75 20             	push   0x20(%ebp)
40db93:	ff 75 1c             	push   0x1c(%ebp)
40db96:	ff 75 58             	push   0x58(%ebp)
40db99:	ff 75 54             	push   0x54(%ebp)
40db9c:	ff 75 18             	push   0x18(%ebp)
40db9f:	50                   	push   %eax
40dba0:	50                   	push   %eax
40dba1:	6a 00                	push   $0x0
40dba3:	ff 75 08             	push   0x8(%ebp)
40dba6:	57                   	push   %edi
40dba7:	ff 15 20 a5 43 00    	call   *0x43a520
40dbad:	ff 53 18             	call   *0x18(%ebx)
40dbb0:	ff 75 e8             	push   -0x18(%ebp)
40dbb3:	8b 5d 48             	mov    0x48(%ebp),%ebx
40dbb6:	8b cb                	mov    %ebx,%ecx
40dbb8:	89 45 ec             	mov    %eax,-0x14(%ebp)
40dbbb:	e8 f9 e7 ff ff       	call   0x40c3b9
40dbc0:	57                   	push   %edi
40dbc1:	8d 4b 04             	lea    0x4(%ebx),%ecx
40dbc4:	e8 f0 e7 ff ff       	call   0x40c3b9
40dbc9:	e9 13 fe ff ff       	jmp    0x40d9e1
40dbce:	8b 07                	mov    (%edi),%eax
40dbd0:	57                   	push   %edi
40dbd1:	8b 70 08             	mov    0x8(%eax),%esi
40dbd4:	8b ce                	mov    %esi,%ecx
40dbd6:	ff 15 20 a5 43 00    	call   *0x43a520
40dbdc:	ff d6                	call   *%esi
40dbde:	e9 4c fe ff ff       	jmp    0x40da2f
40dbe3:	8b ff                	mov    %edi,%edi
40dbe5:	55                   	push   %ebp
40dbe6:	8b ec                	mov    %esp,%ebp
40dbe8:	56                   	push   %esi
40dbe9:	8b f1                	mov    %ecx,%esi
40dbeb:	8b 46 04             	mov    0x4(%esi),%eax
40dbee:	8d 50 07             	lea    0x7(%eax),%edx
40dbf1:	83 e2 f8             	and    $0xfffffff8,%edx
40dbf4:	8b ca                	mov    %edx,%ecx
40dbf6:	2b c8                	sub    %eax,%ecx
40dbf8:	8b 46 08             	mov    0x8(%esi),%eax
40dbfb:	74 0a                	je     0x40dc07
40dbfd:	01 0e                	add    %ecx,(%esi)
40dbff:	2b c1                	sub    %ecx,%eax
40dc01:	89 46 08             	mov    %eax,0x8(%esi)
40dc04:	89 56 04             	mov    %edx,0x4(%esi)
40dc07:	83 f8 08             	cmp    $0x8,%eax
40dc0a:	72 21                	jb     0x40dc2d
40dc0c:	8b 16                	mov    (%esi),%edx
40dc0e:	8b 4d 08             	mov    0x8(%ebp),%ecx
40dc11:	8b 02                	mov    (%edx),%eax
40dc13:	89 01                	mov    %eax,(%ecx)
40dc15:	8b 42 04             	mov    0x4(%edx),%eax
40dc18:	89 41 04             	mov    %eax,0x4(%ecx)
40dc1b:	83 06 08             	addl   $0x8,(%esi)
40dc1e:	83 46 08 f8          	addl   $0xfffffff8,0x8(%esi)
40dc22:	83 46 04 08          	addl   $0x8,0x4(%esi)
40dc26:	33 c0                	xor    %eax,%eax
40dc28:	5e                   	pop    %esi
40dc29:	5d                   	pop    %ebp
40dc2a:	c2 04 00             	ret    $0x4
40dc2d:	b8 12 0d 04 80       	mov    $0x80040d12,%eax
40dc32:	eb f4                	jmp    0x40dc28
40dc34:	8b ff                	mov    %edi,%edi
40dc36:	55                   	push   %ebp
40dc37:	8b ec                	mov    %esp,%ebp
40dc39:	83 e4 f8             	and    $0xfffffff8,%esp
40dc3c:	83 ec 14             	sub    $0x14,%esp
40dc3f:	53                   	push   %ebx
40dc40:	56                   	push   %esi
40dc41:	8b f1                	mov    %ecx,%esi
40dc43:	57                   	push   %edi
40dc44:	8b 46 18             	mov    0x18(%esi),%eax
40dc47:	85 c0                	test   %eax,%eax
40dc49:	0f 85 0e 2b 01 00    	jne    0x42075d
40dc4f:	8b 7e 04             	mov    0x4(%esi),%edi
40dc52:	8b 5d 08             	mov    0x8(%ebp),%ebx
40dc55:	53                   	push   %ebx
40dc56:	81 ff b0 df 40 00    	cmp    $0x40dfb0,%edi
40dc5c:	0f 85 0e 2b 01 00    	jne    0x420770
40dc62:	e8 49 03 00 00       	call   0x40dfb0
40dc67:	33 d2                	xor    %edx,%edx
40dc69:	f7 76 0c             	divl   0xc(%esi)
40dc6c:	8b 46 24             	mov    0x24(%esi),%eax
40dc6f:	8b ca                	mov    %edx,%ecx
40dc71:	c1 e1 04             	shl    $0x4,%ecx
40dc74:	03 c1                	add    %ecx,%eax
40dc76:	89 4c 24 10          	mov    %ecx,0x10(%esp)
40dc7a:	83 64 24 1c 00       	andl   $0x0,0x1c(%esp)
40dc7f:	89 44 24 14          	mov    %eax,0x14(%esp)
40dc83:	89 44 24 18          	mov    %eax,0x18(%esp)
40dc87:	8d 4c 24 14          	lea    0x14(%esp),%ecx
40dc8b:	e8 88 02 00 00       	call   0x40df18
40dc90:	85 c0                	test   %eax,%eax
40dc92:	0f 85 e7 2a 01 00    	jne    0x42077f
40dc98:	ff 75 0c             	push   0xc(%ebp)
40dc9b:	8b 7e 24             	mov    0x24(%esi),%edi
40dc9e:	03 7c 24 14          	add    0x14(%esp),%edi
40dca2:	53                   	push   %ebx
40dca3:	e8 27 00 00 00       	call   0x40dccf
40dca8:	85 c0                	test   %eax,%eax
40dcaa:	74 14                	je     0x40dcc0
40dcac:	8b 57 08             	mov    0x8(%edi),%edx
40dcaf:	8b 0a                	mov    (%edx),%ecx
40dcb1:	89 08                	mov    %ecx,(%eax)
40dcb3:	89 02                	mov    %eax,(%edx)
40dcb5:	3b 57 08             	cmp    0x8(%edi),%edx
40dcb8:	75 03                	jne    0x40dcbd
40dcba:	89 47 08             	mov    %eax,0x8(%edi)
40dcbd:	ff 47 0c             	incl   0xc(%edi)
40dcc0:	ff 46 10             	incl   0x10(%esi)
40dcc3:	33 c0                	xor    %eax,%eax
40dcc5:	40                   	inc    %eax
40dcc6:	5f                   	pop    %edi
40dcc7:	5e                   	pop    %esi
40dcc8:	5b                   	pop    %ebx
40dcc9:	8b e5                	mov    %ebp,%esp
40dccb:	5d                   	pop    %ebp
40dccc:	c2 08 00             	ret    $0x8
40dccf:	8b ff                	mov    %edi,%edi
40dcd1:	55                   	push   %ebp
40dcd2:	8b ec                	mov    %esp,%ebp
40dcd4:	51                   	push   %ecx
40dcd5:	56                   	push   %esi
40dcd6:	8b 35 3c 1a 40 00    	mov    0x401a3c,%esi
40dcdc:	8b ce                	mov    %esi,%ecx
40dcde:	6a 0c                	push   $0xc
40dce0:	ff 15 20 a5 43 00    	call   *0x43a520
40dce6:	ff d6                	call   *%esi
40dce8:	89 45 fc             	mov    %eax,-0x4(%ebp)
40dceb:	85 c0                	test   %eax,%eax
40dced:	74 23                	je     0x40dd12
40dcef:	33 c9                	xor    %ecx,%ecx
40dcf1:	89 08                	mov    %ecx,(%eax)
40dcf3:	89 48 04             	mov    %ecx,0x4(%eax)
40dcf6:	89 48 08             	mov    %ecx,0x8(%eax)
40dcf9:	85 c0                	test   %eax,%eax
40dcfb:	0f 84 b3 2a 01 00    	je     0x4207b4
40dd01:	8b 4d 08             	mov    0x8(%ebp),%ecx
40dd04:	89 48 08             	mov    %ecx,0x8(%eax)
40dd07:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40dd0a:	89 48 04             	mov    %ecx,0x4(%eax)
40dd0d:	5e                   	pop    %esi
40dd0e:	c9                   	leave
40dd0f:	c2 08 00             	ret    $0x8
40dd12:	33 c0                	xor    %eax,%eax
40dd14:	eb e3                	jmp    0x40dcf9
40dd16:	8b ff                	mov    %edi,%edi
40dd18:	55                   	push   %ebp
40dd19:	8b ec                	mov    %esp,%ebp
40dd1b:	8b 55 08             	mov    0x8(%ebp),%edx
40dd1e:	85 d2                	test   %edx,%edx
40dd20:	74 23                	je     0x40dd45
40dd22:	56                   	push   %esi
40dd23:	8d 71 04             	lea    0x4(%ecx),%esi
40dd26:	57                   	push   %edi
40dd27:	89 16                	mov    %edx,(%esi)
40dd29:	8b 39                	mov    (%ecx),%edi
40dd2b:	3b fa                	cmp    %edx,%edi
40dd2d:	0f 85 99 2a 01 00    	jne    0x4207cc
40dd33:	8b c1                	mov    %ecx,%eax
40dd35:	89 36                	mov    %esi,(%esi)
40dd37:	2b c6                	sub    %esi,%eax
40dd39:	f7 d8                	neg    %eax
40dd3b:	5f                   	pop    %edi
40dd3c:	1b c0                	sbb    %eax,%eax
40dd3e:	23 c1                	and    %ecx,%eax
40dd40:	5e                   	pop    %esi
40dd41:	5d                   	pop    %ebp
40dd42:	c2 04 00             	ret    $0x4
40dd45:	33 c0                	xor    %eax,%eax
40dd47:	eb f8                	jmp    0x40dd41
40dd49:	8b ff                	mov    %edi,%edi
40dd4b:	55                   	push   %ebp
40dd4c:	8b ec                	mov    %esp,%ebp
40dd4e:	53                   	push   %ebx
40dd4f:	56                   	push   %esi
40dd50:	8b f1                	mov    %ecx,%esi
40dd52:	57                   	push   %edi
40dd53:	8b 7d 08             	mov    0x8(%ebp),%edi
40dd56:	57                   	push   %edi
40dd57:	8b 5e 04             	mov    0x4(%esi),%ebx
40dd5a:	81 fb b0 df 40 00    	cmp    $0x40dfb0,%ebx
40dd60:	0f 85 75 2a 01 00    	jne    0x4207db
40dd66:	e8 45 02 00 00       	call   0x40dfb0
40dd6b:	33 d2                	xor    %edx,%edx
40dd6d:	f7 76 0c             	divl   0xc(%esi)
40dd70:	57                   	push   %edi
40dd71:	c1 e2 04             	shl    $0x4,%edx
40dd74:	03 56 24             	add    0x24(%esi),%edx
40dd77:	8b ca                	mov    %edx,%ecx
40dd79:	e8 f9 03 00 00       	call   0x40e177
40dd7e:	85 c0                	test   %eax,%eax
40dd80:	74 03                	je     0x40dd85
40dd82:	ff 4e 10             	decl   0x10(%esi)