405d08:	68 e0 15 40 00       	push   $0x4015e0
405d0d:	8d 4d ec             	lea    -0x14(%ebp),%ecx
405d10:	e8 c4 fc ff ff       	call   0x4059d9
405d15:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
405d19:	8b 16                	mov    (%esi),%edx
405d1b:	85 d2                	test   %edx,%edx
405d1d:	74 04                	je     0x405d23
405d1f:	8b 12                	mov    (%edx),%edx
405d21:	eb 02                	jmp    0x405d25
405d23:	33 d2                	xor    %edx,%edx
405d25:	8b 00                	mov    (%eax),%eax
405d27:	85 c0                	test   %eax,%eax
405d29:	74 04                	je     0x405d2f
405d2b:	8b 08                	mov    (%eax),%ecx
405d2d:	eb 02                	jmp    0x405d31
405d2f:	33 c9                	xor    %ecx,%ecx
405d31:	8b 47 04             	mov    0x4(%edi),%eax
405d34:	8b 30                	mov    (%eax),%esi
405d36:	53                   	push   %ebx
405d37:	6a 00                	push   $0x0
405d39:	6a 30                	push   $0x30
405d3b:	52                   	push   %edx
405d3c:	51                   	push   %ecx
405d3d:	50                   	push   %eax
405d3e:	8b 4e 50             	mov    0x50(%esi),%ecx
405d41:	ff 15 20 23 41 00    	call   *0x412320
405d47:	ff 56 50             	call   *0x50(%esi)
405d4a:	8b f0                	mov    %eax,%esi
405d4c:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
405d50:	8d 4d ec             	lea    -0x14(%ebp),%ecx
405d53:	e8 f7 fb ff ff       	call   0x40594f
405d58:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
405d5c:	8d 4d e8             	lea    -0x18(%ebp),%ecx
405d5f:	e8 eb fb ff ff       	call   0x40594f
405d64:	85 f6                	test   %esi,%esi
405d66:	79 0c                	jns    0x405d74
405d68:	8b ce                	mov    %esi,%ecx
405d6a:	e8 9b 1b 00 00       	call   0x40790a
405d6f:	e9 fb 00 00 00       	jmp    0x405e6f
405d74:	8b 57 0c             	mov    0xc(%edi),%edx
405d77:	8b 0b                	mov    (%ebx),%ecx
405d79:	e8 4b 18 00 00       	call   0x4075c9
405d7e:	85 c0                	test   %eax,%eax
405d80:	79 04                	jns    0x405d86
405d82:	8b c8                	mov    %eax,%ecx
405d84:	eb e4                	jmp    0x405d6a
405d86:	8b 4f 58             	mov    0x58(%edi),%ecx
405d89:	e8 0b 2d 00 00       	call   0x408a99
405d8e:	33 db                	xor    %ebx,%ebx
405d90:	89 5f 3c             	mov    %ebx,0x3c(%edi)
405d93:	8b 87 d8 00 00 00    	mov    0xd8(%edi),%eax
405d99:	83 f8 01             	cmp    $0x1,%eax
405d9c:	75 57                	jne    0x405df5
405d9e:	39 47 4c             	cmp    %eax,0x4c(%edi)
405da1:	75 42                	jne    0x405de5
405da3:	89 5d d8             	mov    %ebx,-0x28(%ebp)
405da6:	89 5d dc             	mov    %ebx,-0x24(%ebp)
405da9:	89 5d e0             	mov    %ebx,-0x20(%ebp)
405dac:	8b 47 58             	mov    0x58(%edi),%eax
405daf:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405db2:	8d 45 d8             	lea    -0x28(%ebp),%eax
405db5:	50                   	push   %eax
405db6:	68 40 65 40 00       	push   $0x406540
405dbb:	ff 15 88 21 41 00    	call   *0x412188
405dc1:	39 5d d8             	cmp    %ebx,-0x28(%ebp)
405dc4:	74 0d                	je     0x405dd3
405dc6:	ff 75 d8             	push   -0x28(%ebp)
405dc9:	ff 15 c8 22 41 00    	call   *0x4122c8
405dcf:	59                   	pop    %ecx
405dd0:	89 5d d8             	mov    %ebx,-0x28(%ebp)
405dd3:	39 5d dc             	cmp    %ebx,-0x24(%ebp)
405dd6:	74 0d                	je     0x405de5
405dd8:	ff 75 dc             	push   -0x24(%ebp)
405ddb:	ff 15 c8 22 41 00    	call   *0x4122c8
405de1:	59                   	pop    %ecx
405de2:	89 5d dc             	mov    %ebx,-0x24(%ebp)
405de5:	8b cf                	mov    %edi,%ecx
405de7:	e8 8b 00 00 00       	call   0x405e77
405dec:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405df0:	33 c0                	xor    %eax,%eax
405df2:	40                   	inc    %eax
405df3:	eb 7c                	jmp    0x405e71
405df5:	85 c0                	test   %eax,%eax
405df7:	75 ec                	jne    0x405de5
405df9:	33 db                	xor    %ebx,%ebx
405dfb:	43                   	inc    %ebx
405dfc:	39 5f 4c             	cmp    %ebx,0x4c(%edi)
405dff:	75 e4                	jne    0x405de5
405e01:	be d2 00 00 00       	mov    $0xd2,%esi
405e06:	51                   	push   %ecx
405e07:	51                   	push   %ecx
405e08:	8b ce                	mov    %esi,%ecx
405e0a:	e8 42 3c 00 00       	call   0x409a51
405e0f:	50                   	push   %eax
405e10:	8b d3                	mov    %ebx,%edx
405e12:	8b 4f 54             	mov    0x54(%edi),%ecx
405e15:	e8 71 35 00 00       	call   0x40938b
405e1a:	83 f8 ff             	cmp    $0xffffffff,%eax
405e1d:	74 0f                	je     0x405e2e
405e1f:	89 5f 3c             	mov    %ebx,0x3c(%edi)
405e22:	8b d0                	mov    %eax,%edx
405e24:	8b 4f 54             	mov    0x54(%edi),%ecx
405e27:	e8 3c 2f 00 00       	call   0x408d68
405e2c:	eb d8                	jmp    0x405e06
405e2e:	be ca 00 00 00       	mov    $0xca,%esi
405e33:	51                   	push   %ecx
405e34:	51                   	push   %ecx
405e35:	8b ce                	mov    %esi,%ecx
405e37:	e8 15 3c 00 00       	call   0x409a51
405e3c:	50                   	push   %eax
405e3d:	8b d3                	mov    %ebx,%edx
405e3f:	8b 4f 54             	mov    0x54(%edi),%ecx
405e42:	e8 44 35 00 00       	call   0x40938b
405e47:	83 f8 ff             	cmp    $0xffffffff,%eax
405e4a:	74 99                	je     0x405de5
405e4c:	89 5f 3c             	mov    %ebx,0x3c(%edi)
405e4f:	8b d0                	mov    %eax,%edx
405e51:	8b 4f 54             	mov    0x54(%edi),%ecx
405e54:	e8 0f 2f 00 00       	call   0x408d68
405e59:	eb d8                	jmp    0x405e33
405e5b:	b9 0e 00 07 80       	mov    $0x8007000e,%ecx
405e60:	e8 a5 1a 00 00       	call   0x40790a
405e65:	b8 6b 5e 40 00       	mov    $0x405e6b,%eax
405e6a:	c3                   	ret
405e6b:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405e6f:	33 c0                	xor    %eax,%eax
405e71:	e8 83 94 00 00       	call   0x40f2f9
405e76:	c3                   	ret
405e77:	6a 10                	push   $0x10
405e79:	b8 f6 f8 40 00       	mov    $0x40f8f6,%eax
405e7e:	e8 cc 94 00 00       	call   0x40f34f
405e83:	8b f9                	mov    %ecx,%edi
405e85:	33 db                	xor    %ebx,%ebx
405e87:	89 9f 90 00 00 00    	mov    %ebx,0x90(%edi)
405e8d:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405e90:	39 9f d8 00 00 00    	cmp    %ebx,0xd8(%edi)
405e96:	75 6f                	jne    0x405f07
405e98:	8b 4f 0c             	mov    0xc(%edi),%ecx
405e9b:	85 c9                	test   %ecx,%ecx
405e9d:	74 68                	je     0x405f07
405e9f:	8b c3                	mov    %ebx,%eax
405ea1:	89 45 e8             	mov    %eax,-0x18(%ebp)
405ea4:	8b 41 10             	mov    0x10(%ecx),%eax
405ea7:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405eaa:	8d 4f 2c             	lea    0x2c(%edi),%ecx
405ead:	ff 15 38 22 41 00    	call   *0x412238
405eb3:	8b 40 04             	mov    0x4(%eax),%eax
405eb6:	85 c0                	test   %eax,%eax
405eb8:	74 08                	je     0x405ec2
405eba:	8b 47 2c             	mov    0x2c(%edi),%eax
405ebd:	89 45 e8             	mov    %eax,-0x18(%ebp)
405ec0:	eb 02                	jmp    0x405ec4
405ec2:	8b c3                	mov    %ebx,%eax
405ec4:	33 f6                	xor    %esi,%esi
405ec6:	46                   	inc    %esi
405ec7:	89 b7 90 00 00 00    	mov    %esi,0x90(%edi)
405ecd:	51                   	push   %ecx
405ece:	ff 75 e4             	push   -0x1c(%ebp)
405ed1:	8b d0                	mov    %eax,%edx
405ed3:	8b 8f 8c 00 00 00    	mov    0x8c(%edi),%ecx
405ed9:	e8 10 56 00 00       	call   0x40b4ee
405ede:	85 c0                	test   %eax,%eax
405ee0:	74 11                	je     0x405ef3
405ee2:	89 9f 90 00 00 00    	mov    %ebx,0x90(%edi)
405ee8:	3d c3 04 00 00       	cmp    $0x4c3,%eax
405eed:	0f 85 65 01 00 00    	jne    0x406058
405ef3:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
405ef7:	74 06                	je     0x405eff
405ef9:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
405efd:	75 0b                	jne    0x405f0a
405eff:	89 9f 90 00 00 00    	mov    %ebx,0x90(%edi)
405f05:	eb 03                	jmp    0x405f0a
405f07:	33 f6                	xor    %esi,%esi
405f09:	46                   	inc    %esi
405f0a:	8b ce                	mov    %esi,%ecx
405f0c:	89 4d ec             	mov    %ecx,-0x14(%ebp)
405f0f:	89 9f 98 00 00 00    	mov    %ebx,0x98(%edi)
405f15:	8b c3                	mov    %ebx,%eax
405f17:	39 9f d8 00 00 00    	cmp    %ebx,0xd8(%edi)
405f1d:	75 4e                	jne    0x405f6d
405f1f:	8d b7 8c 00 00 00    	lea    0x8c(%edi),%esi
405f25:	8b ce                	mov    %esi,%ecx
405f27:	ff 15 38 22 41 00    	call   *0x412238
405f2d:	8b 40 04             	mov    0x4(%eax),%eax
405f30:	50                   	push   %eax
405f31:	8b ce                	mov    %esi,%ecx
405f33:	ff 15 18 22 41 00    	call   *0x412218
405f39:	85 c0                	test   %eax,%eax
405f3b:	74 17                	je     0x405f54
405f3d:	8b b7 bc 00 00 00    	mov    0xbc(%edi),%esi
405f43:	85 f6                	test   %esi,%esi
405f45:	74 0d                	je     0x405f54
405f47:	50                   	push   %eax
405f48:	8b ce                	mov    %esi,%ecx
405f4a:	ff 15 20 23 41 00    	call   *0x412320
405f50:	ff d6                	call   *%esi
405f52:	eb 02                	jmp    0x405f56
405f54:	8b c3                	mov    %ebx,%eax
405f56:	89 87 98 00 00 00    	mov    %eax,0x98(%edi)
405f5c:	33 f6                	xor    %esi,%esi
405f5e:	46                   	inc    %esi
405f5f:	85 c0                	test   %eax,%eax
405f61:	75 07                	jne    0x405f6a
405f63:	8b cb                	mov    %ebx,%ecx
405f65:	89 4d ec             	mov    %ecx,-0x14(%ebp)
405f68:	eb 03                	jmp    0x405f6d
405f6a:	8b 4d ec             	mov    -0x14(%ebp),%ecx
405f6d:	39 77 48             	cmp    %esi,0x48(%edi)
405f70:	0f 85 a0 00 00 00    	jne    0x406016
405f76:	3b ce                	cmp    %esi,%ecx
405f78:	0f 85 98 00 00 00    	jne    0x406016
405f7e:	89 9f 94 00 00 00    	mov    %ebx,0x94(%edi)
405f84:	8d 8f a0 00 00 00    	lea    0xa0(%edi),%ecx
405f8a:	8d 97 a4 00 00 00    	lea    0xa4(%edi),%edx
405f90:	85 d2                	test   %edx,%edx
405f92:	74 28                	je     0x405fbc
405f94:	85 c9                	test   %ecx,%ecx
405f96:	74 24                	je     0x405fbc
405f98:	8b 97 c8 00 00 00    	mov    0xc8(%edi),%edx
405f9e:	89 55 e4             	mov    %edx,-0x1c(%ebp)
405fa1:	85 d2                	test   %edx,%edx
405fa3:	74 17                	je     0x405fbc
405fa5:	51                   	push   %ecx
405fa6:	8d 8f a4 00 00 00    	lea    0xa4(%edi),%ecx
405fac:	51                   	push   %ecx
405fad:	53                   	push   %ebx
405fae:	50                   	push   %eax
405faf:	8b ca                	mov    %edx,%ecx
405fb1:	ff 15 20 23 41 00    	call   *0x412320
405fb7:	ff 55 e4             	call   *-0x1c(%ebp)
405fba:	eb 02                	jmp    0x405fbe
405fbc:	8a c3                	mov    %bl,%al
405fbe:	0f b6 c0             	movzbl %al,%eax
405fc1:	89 45 ec             	mov    %eax,-0x14(%ebp)
405fc4:	85 c0                	test   %eax,%eax
405fc6:	75 4e                	jne    0x406016
405fc8:	ff 15 48 20 41 00    	call   *0x412048
405fce:	3d d1 06 00 00       	cmp    $0x6d1,%eax
405fd3:	75 3b                	jne    0x406010
405fd5:	8d 87 a0 00 00 00    	lea    0xa0(%edi),%eax
405fdb:	85 c0                	test   %eax,%eax
405fdd:	74 1f                	je     0x405ffe
405fdf:	8b 8f d0 00 00 00    	mov    0xd0(%edi),%ecx
405fe5:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
405fe8:	85 c9                	test   %ecx,%ecx
405fea:	74 12                	je     0x405ffe
405fec:	50                   	push   %eax
405fed:	ff b7 98 00 00 00    	push   0x98(%edi)
405ff3:	ff 15 20 23 41 00    	call   *0x412320
405ff9:	ff 55 e4             	call   *-0x1c(%ebp)
405ffc:	8a d8                	mov    %al,%bl
405ffe:	0f b6 c3             	movzbl %bl,%eax
406001:	89 45 ec             	mov    %eax,-0x14(%ebp)
406004:	3b c6                	cmp    %esi,%eax
406006:	75 0e                	jne    0x406016
406008:	89 b7 94 00 00 00    	mov    %esi,0x94(%edi)
40600e:	eb 06                	jmp    0x406016
406010:	89 9f a0 00 00 00    	mov    %ebx,0xa0(%edi)
406016:	39 77 44             	cmp    %esi,0x44(%edi)
406019:	75 0e                	jne    0x406029
40601b:	8b cf                	mov    %edi,%ecx
40601d:	e8 09 03 00 00       	call   0x40632b
406022:	89 45 ec             	mov    %eax,-0x14(%ebp)
406025:	85 c0                	test   %eax,%eax
406027:	74 2f                	je     0x406058
406029:	39 77 40             	cmp    %esi,0x40(%edi)
40602c:	75 0e                	jne    0x40603c
40602e:	8b cf                	mov    %edi,%ecx
406030:	e8 2b 00 00 00       	call   0x406060
406035:	89 45 ec             	mov    %eax,-0x14(%ebp)
406038:	85 c0                	test   %eax,%eax
40603a:	74 1c                	je     0x406058
40603c:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
406040:	8b c6                	mov    %esi,%eax
406042:	eb 16                	jmp    0x40605a
406044:	b9 0e 00 07 80       	mov    $0x8007000e,%ecx
406049:	e8 bc 18 00 00       	call   0x40790a
40604e:	b8 54 60 40 00       	mov    $0x406054,%eax
406053:	c3                   	ret
406054:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
406058:	33 c0                	xor    %eax,%eax
40605a:	e8 9a 92 00 00       	call   0x40f2f9
40605f:	c3                   	ret
406060:	6a 18                	push   $0x18
406062:	b8 11 f9 40 00       	mov    $0x40f911,%eax
406067:	e8 e3 92 00 00       	call   0x40f34f
40606c:	8b f9                	mov    %ecx,%edi
40606e:	33 f6                	xor    %esi,%esi
406070:	89 75 ec             	mov    %esi,-0x14(%ebp)
406073:	39 77 40             	cmp    %esi,0x40(%edi)
406076:	0f 84 db 00 00 00    	je     0x406157
40607c:	83 bf d8 00 00 00 01 	cmpl   $0x1,0xd8(%edi)
406083:	0f 84 ce 00 00 00    	je     0x406157
406089:	89 75 fc             	mov    %esi,-0x4(%ebp)
40608c:	8d 45 ec             	lea    -0x14(%ebp),%eax
40608f:	50                   	push   %eax
406090:	68 04 00 00 80       	push   $0x80000004
406095:	ff b7 8c 00 00 00    	push   0x8c(%edi)
40609b:	ff 15 0c 20 41 00    	call   *0x41200c
4060a1:	85 c0                	test   %eax,%eax
4060a3:	74 13                	je     0x4060b8
4060a5:	50                   	push   %eax
4060a6:	ff 15 74 20 41 00    	call   *0x412074
4060ac:	e8 43 37 00 00       	call   0x4097f4
4060b1:	33 c0                	xor    %eax,%eax
4060b3:	e9 a2 00 00 00       	jmp    0x40615a
4060b8:	81 c7 b4 00 00 00    	add    $0xb4,%edi
4060be:	57                   	push   %edi
4060bf:	ba cc 16 40 00       	mov    $0x4016cc,%edx
4060c4:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4060c7:	e8 a8 03 00 00       	call   0x406474
4060cc:	85 c0                	test   %eax,%eax
4060ce:	75 0b                	jne    0x4060db
4060d0:	ff 75 ec             	push   -0x14(%ebp)
4060d3:	ff 15 10 20 41 00    	call   *0x412010
4060d9:	eb d6                	jmp    0x4060b1
4060db:	6a 04                	push   $0x4
4060dd:	56                   	push   %esi
4060de:	ba d4 16 40 00       	mov    $0x4016d4,%edx
4060e3:	8b 0f                	mov    (%edi),%ecx
4060e5:	e8 b0 43 00 00       	call   0x40a49a
4060ea:	ff 75 ec             	push   -0x14(%ebp)
4060ed:	85 c0                	test   %eax,%eax
4060ef:	74 0a                	je     0x4060fb
4060f1:	ff 15 10 20 41 00    	call   *0x412010
4060f7:	6a 05                	push   $0x5
4060f9:	eb ab                	jmp    0x4060a6
4060fb:	ff 15 10 20 41 00    	call   *0x412010
406101:	89 75 e8             	mov    %esi,-0x18(%ebp)
406104:	8b d6                	mov    %esi,%edx
406106:	89 55 e4             	mov    %edx,-0x1c(%ebp)
406109:	8b 1f                	mov    (%edi),%ebx
40610b:	8b 43 18             	mov    0x18(%ebx),%eax
40610e:	03 c3                	add    %ebx,%eax
406110:	89 45 e0             	mov    %eax,-0x20(%ebp)
406113:	8b ce                	mov    %esi,%ecx
406115:	89 4d dc             	mov    %ecx,-0x24(%ebp)
406118:	3b 4b 1c             	cmp    0x1c(%ebx),%ecx
40611b:	73 2e                	jae    0x40614b
40611d:	81 78 0c e4 02 00 00 	cmpl   $0x2e4,0xc(%eax)
406124:	75 08                	jne    0x40612e
406126:	33 f6                	xor    %esi,%esi
406128:	46                   	inc    %esi
406129:	89 75 e8             	mov    %esi,-0x18(%ebp)
40612c:	eb 0f                	jmp    0x40613d
40612e:	81 78 0c 12 03 00 00 	cmpl   $0x312,0xc(%eax)
406135:	75 06                	jne    0x40613d
406137:	33 d2                	xor    %edx,%edx
406139:	42                   	inc    %edx
40613a:	89 55 e4             	mov    %edx,-0x1c(%ebp)