56beb6:	7f 05                	jg     0x56bebd
56beb8:	39 7d f4             	cmp    %edi,-0xc(%ebp)
56bebb:	76 12                	jbe    0x56becf
56bebd:	8b 46 40             	mov    0x40(%esi),%eax
56bec0:	53                   	push   %ebx
56bec1:	57                   	push   %edi
56bec2:	50                   	push   %eax
56bec3:	8b 08                	mov    (%eax),%ecx
56bec5:	8b 41 10             	mov    0x10(%ecx),%eax
56bec8:	ff d0                	call   *%eax
56beca:	83 c4 0c             	add    $0xc,%esp
56becd:	8b c8                	mov    %eax,%ecx
56becf:	5f                   	pop    %edi
56bed0:	5b                   	pop    %ebx
56bed1:	8b c1                	mov    %ecx,%eax
56bed3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
56bed6:	33 cd                	xor    %ebp,%ecx
56bed8:	5e                   	pop    %esi
56bed9:	e8 fc 55 07 00       	call   0x5e14da
56bede:	8b e5                	mov    %ebp,%esp
56bee0:	5d                   	pop    %ebp
56bee1:	c3                   	ret
56bee2:	cc                   	int3
56bee3:	cc                   	int3
56bee4:	cc                   	int3
56bee5:	cc                   	int3
56bee6:	cc                   	int3
56bee7:	cc                   	int3
56bee8:	cc                   	int3
56bee9:	cc                   	int3
56beea:	cc                   	int3
56beeb:	cc                   	int3
56beec:	cc                   	int3
56beed:	cc                   	int3
56beee:	cc                   	int3
56beef:	cc                   	int3
56bef0:	55                   	push   %ebp
56bef1:	8b ec                	mov    %esp,%ebp
56bef3:	83 ec 08             	sub    $0x8,%esp
56bef6:	53                   	push   %ebx
56bef7:	56                   	push   %esi
56bef8:	57                   	push   %edi
56bef9:	8b 7d 08             	mov    0x8(%ebp),%edi
56befc:	8b 47 34             	mov    0x34(%edi),%eax
56beff:	8a 4f 09             	mov    0x9(%edi),%cl
56bf02:	8b 5f 38             	mov    0x38(%edi),%ebx
56bf05:	89 5d f8             	mov    %ebx,-0x8(%ebp)
56bf08:	f6 40 16 0c          	testb  $0xc,0x16(%eax)
56bf0c:	89 45 fc             	mov    %eax,-0x4(%ebp)
56bf0f:	88 4d 0b             	mov    %cl,0xb(%ebp)
56bf12:	74 1a                	je     0x56bf2e
56bf14:	8b 40 24             	mov    0x24(%eax),%eax
56bf17:	0f b6 c9             	movzbl %cl,%ecx
56bf1a:	2b c1                	sub    %ecx,%eax
56bf1c:	50                   	push   %eax
56bf1d:	6a 00                	push   $0x0
56bf1f:	8d 04 19             	lea    (%ecx,%ebx,1),%eax
56bf22:	50                   	push   %eax
56bf23:	e8 d8 7a 07 00       	call   0x5e3a00
56bf28:	8a 4d 0b             	mov    0xb(%ebp),%cl
56bf2b:	83 c4 0c             	add    $0xc,%esp
56bf2e:	0f b6 c1             	movzbl %cl,%eax
56bf31:	8d 14 18             	lea    (%eax,%ebx,1),%edx
56bf34:	8b 5d 0c             	mov    0xc(%ebp),%ebx
56bf37:	8a 45 0b             	mov    0xb(%ebp),%al
56bf3a:	8b cb                	mov    %ebx,%ecx
56bf3c:	d1 e9                	shr    $1,%ecx
56bf3e:	f7 d1                	not    %ecx
56bf40:	0f b6 c0             	movzbl %al,%eax
56bf43:	83 e1 04             	and    $0x4,%ecx
56bf46:	88 1a                	mov    %bl,(%edx)
56bf48:	83 c9 08             	or     $0x8,%ecx
56bf4b:	c7 42 01 00 00 00 00 	movl   $0x0,0x1(%edx)
56bf52:	66 03 c8             	add    %ax,%cx
56bf55:	c6 42 07 00          	movb   $0x0,0x7(%edx)
56bf59:	0f b7 f1             	movzwl %cx,%esi
56bf5c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
56bf5f:	53                   	push   %ebx
56bf60:	57                   	push   %edi
56bf61:	8b 41 24             	mov    0x24(%ecx),%eax
56bf64:	c1 e8 08             	shr    $0x8,%eax
56bf67:	88 42 05             	mov    %al,0x5(%edx)
56bf6a:	0f b6 41 24          	movzbl 0x24(%ecx),%eax
56bf6e:	88 42 06             	mov    %al,0x6(%edx)
56bf71:	0f b7 41 24          	movzwl 0x24(%ecx),%eax
56bf75:	66 2b c6             	sub    %si,%ax
56bf78:	0f b7 c0             	movzwl %ax,%eax
56bf7b:	89 47 14             	mov    %eax,0x14(%edi)
56bf7e:	e8 5d 13 f9 ff       	call   0x4fd2e0
56bf83:	8b 4d fc             	mov    -0x4(%ebp),%ecx
56bf86:	83 c4 08             	add    $0x8,%esp
56bf89:	8b 55 f8             	mov    -0x8(%ebp),%edx
56bf8c:	66 89 77 12          	mov    %si,0x12(%edi)
56bf90:	03 f2                	add    %edx,%esi
56bf92:	8b 41 24             	mov    0x24(%ecx),%eax
56bf95:	03 c2                	add    %edx,%eax
56bf97:	89 77 40             	mov    %esi,0x40(%edi)
56bf9a:	89 47 3c             	mov    %eax,0x3c(%edi)
56bf9d:	0f b6 47 0a          	movzbl 0xa(%edi),%eax
56bfa1:	03 c2                	add    %edx,%eax
56bfa3:	c6 47 0c 00          	movb   $0x0,0xc(%edi)
56bfa7:	89 47 44             	mov    %eax,0x44(%edi)
56bfaa:	0f b7 41 20          	movzwl 0x20(%ecx),%eax
56bfae:	66 48                	dec    %ax
56bfb0:	c6 07 01             	movb   $0x1,(%edi)
56bfb3:	66 89 47 1a          	mov    %ax,0x1a(%edi)
56bfb7:	33 c0                	xor    %eax,%eax
56bfb9:	66 89 47 18          	mov    %ax,0x18(%edi)
56bfbd:	5f                   	pop    %edi
56bfbe:	5e                   	pop    %esi
56bfbf:	5b                   	pop    %ebx
56bfc0:	8b e5                	mov    %ebp,%esp
56bfc2:	5d                   	pop    %ebp
56bfc3:	c3                   	ret
56bfc4:	55                   	push   %ebp
56bfc5:	8b ec                	mov    %esp,%ebp
56bfc7:	53                   	push   %ebx
56bfc8:	56                   	push   %esi
56bfc9:	8b f1                	mov    %ecx,%esi
56bfcb:	33 db                	xor    %ebx,%ebx
56bfcd:	57                   	push   %edi
56bfce:	8b 7d 08             	mov    0x8(%ebp),%edi
56bfd1:	57                   	push   %edi
56bfd2:	89 1e                	mov    %ebx,(%esi)
56bfd4:	89 5e 04             	mov    %ebx,0x4(%esi)
56bfd7:	89 5e 08             	mov    %ebx,0x8(%esi)
56bfda:	e8 c2 01 00 00       	call   0x56c1a1
56bfdf:	84 c0                	test   %al,%al
56bfe1:	74 0f                	je     0x56bff2
56bfe3:	57                   	push   %edi
56bfe4:	53                   	push   %ebx
56bfe5:	ff 36                	push   (%esi)
56bfe7:	e8 14 7a 07 00       	call   0x5e3a00
56bfec:	83 c4 0c             	add    $0xc,%esp
56bfef:	01 7e 04             	add    %edi,0x4(%esi)
56bff2:	5f                   	pop    %edi
56bff3:	8b c6                	mov    %esi,%eax
56bff5:	5e                   	pop    %esi
56bff6:	5b                   	pop    %ebx
56bff7:	5d                   	pop    %ebp
56bff8:	c2 04 00             	ret    $0x4
56bffb:	55                   	push   %ebp
56bffc:	8b ec                	mov    %esp,%ebp
56bffe:	53                   	push   %ebx
56bfff:	56                   	push   %esi
56c000:	8b 75 08             	mov    0x8(%ebp),%esi
56c003:	33 db                	xor    %ebx,%ebx
56c005:	57                   	push   %edi
56c006:	8b f9                	mov    %ecx,%edi
56c008:	56                   	push   %esi
56c009:	89 1f                	mov    %ebx,(%edi)
56c00b:	89 5f 04             	mov    %ebx,0x4(%edi)
56c00e:	89 5f 08             	mov    %ebx,0x8(%edi)
56c011:	e8 c7 01 00 00       	call   0x56c1dd
56c016:	84 c0                	test   %al,%al
56c018:	74 11                	je     0x56c02b
56c01a:	03 f6                	add    %esi,%esi
56c01c:	56                   	push   %esi
56c01d:	53                   	push   %ebx
56c01e:	ff 37                	push   (%edi)
56c020:	e8 db 79 07 00       	call   0x5e3a00
56c025:	83 c4 0c             	add    $0xc,%esp
56c028:	01 77 04             	add    %esi,0x4(%edi)
56c02b:	8b c7                	mov    %edi,%eax
56c02d:	5f                   	pop    %edi
56c02e:	5e                   	pop    %esi
56c02f:	5b                   	pop    %ebx
56c030:	5d                   	pop    %ebp
56c031:	c2 04 00             	ret    $0x4
56c034:	e9 f5 01 00 00       	jmp    0x56c22e
56c039:	e9 16 02 00 00       	jmp    0x56c254
56c03e:	6a 10                	push   $0x10
56c040:	b8 41 c4 65 00       	mov    $0x65c441,%eax
56c045:	e8 71 5f 07 00       	call   0x5e1fbb
56c04a:	33 d2                	xor    %edx,%edx
56c04c:	89 55 f0             	mov    %edx,-0x10(%ebp)
56c04f:	8b 75 08             	mov    0x8(%ebp),%esi
56c052:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
56c059:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
56c05d:	89 56 10             	mov    %edx,0x10(%esi)
56c060:	72 04                	jb     0x56c066
56c062:	8b 06                	mov    (%esi),%eax
56c064:	eb 02                	jmp    0x56c068
56c066:	8b c6                	mov    %esi,%eax
56c068:	33 c9                	xor    %ecx,%ecx
56c06a:	66 89 08             	mov    %cx,(%eax)
56c06d:	8b 7d 0c             	mov    0xc(%ebp),%edi
56c070:	33 db                	xor    %ebx,%ebx
56c072:	43                   	inc    %ebx
56c073:	89 55 fc             	mov    %edx,-0x4(%ebp)
56c076:	89 5d f0             	mov    %ebx,-0x10(%ebp)
56c079:	39 4f 10             	cmp    %ecx,0x10(%edi)
56c07c:	74 6b                	je     0x56c0e9
56c07e:	83 7f 14 10          	cmpl   $0x10,0x14(%edi)
56c082:	72 04                	jb     0x56c088
56c084:	8b 07                	mov    (%edi),%eax
56c086:	eb 02                	jmp    0x56c08a
56c088:	8b c7                	mov    %edi,%eax
56c08a:	52                   	push   %edx
56c08b:	52                   	push   %edx
56c08c:	ff 77 10             	push   0x10(%edi)
56c08f:	50                   	push   %eax
56c090:	52                   	push   %edx
56c091:	68 e9 fd 00 00       	push   $0xfde9
56c096:	ff 15 fc 20 68 00    	call   *0x6820fc
56c09c:	85 c0                	test   %eax,%eax
56c09e:	74 49                	je     0x56c0e9
56c0a0:	50                   	push   %eax
56c0a1:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
56c0a4:	e8 52 ff ff ff       	call   0x56bffb
56c0a9:	8b 47 10             	mov    0x10(%edi),%eax
56c0ac:	89 5d fc             	mov    %ebx,-0x4(%ebp)
56c0af:	8b 5d e8             	mov    -0x18(%ebp),%ebx
56c0b2:	2b 5d e4             	sub    -0x1c(%ebp),%ebx
56c0b5:	d1 fb                	sar    $1,%ebx
56c0b7:	83 7f 14 10          	cmpl   $0x10,0x14(%edi)
56c0bb:	72 02                	jb     0x56c0bf
56c0bd:	8b 3f                	mov    (%edi),%edi
56c0bf:	53                   	push   %ebx
56c0c0:	ff 75 e4             	push   -0x1c(%ebp)
56c0c3:	50                   	push   %eax
56c0c4:	57                   	push   %edi
56c0c5:	6a 00                	push   $0x0
56c0c7:	68 e9 fd 00 00       	push   $0xfde9
56c0cc:	ff 15 fc 20 68 00    	call   *0x6820fc
56c0d2:	85 c0                	test   %eax,%eax
56c0d4:	74 0b                	je     0x56c0e1
56c0d6:	53                   	push   %ebx
56c0d7:	ff 75 e4             	push   -0x1c(%ebp)
56c0da:	8b ce                	mov    %esi,%ecx
56c0dc:	e8 0f c7 ec ff       	call   0x4387f0
56c0e1:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
56c0e4:	e8 6b 01 00 00       	call   0x56c254
56c0e9:	8b c6                	mov    %esi,%eax
56c0eb:	e8 a5 5e 07 00       	call   0x5e1f95
56c0f0:	c3                   	ret
56c0f1:	6a 10                	push   $0x10
56c0f3:	b8 81 c4 65 00       	mov    $0x65c481,%eax
56c0f8:	e8 be 5e 07 00       	call   0x5e1fbb
56c0fd:	33 c9                	xor    %ecx,%ecx
56c0ff:	89 4d f0             	mov    %ecx,-0x10(%ebp)
56c102:	8b 75 08             	mov    0x8(%ebp),%esi
56c105:	c7 46 14 0f 00 00 00 	movl   $0xf,0x14(%esi)
56c10c:	83 7e 14 10          	cmpl   $0x10,0x14(%esi)
56c110:	89 4e 10             	mov    %ecx,0x10(%esi)
56c113:	72 04                	jb     0x56c119
56c115:	8b 06                	mov    (%esi),%eax
56c117:	eb 02                	jmp    0x56c11b
56c119:	8b c6                	mov    %esi,%eax
56c11b:	88 08                	mov    %cl,(%eax)
56c11d:	8b 7d 0c             	mov    0xc(%ebp),%edi
56c120:	33 db                	xor    %ebx,%ebx
56c122:	43                   	inc    %ebx
56c123:	89 4d fc             	mov    %ecx,-0x4(%ebp)
56c126:	89 5d f0             	mov    %ebx,-0x10(%ebp)
56c129:	83 7f 10 00          	cmpl   $0x0,0x10(%edi)
56c12d:	74 6a                	je     0x56c199
56c12f:	83 7f 14 08          	cmpl   $0x8,0x14(%edi)
56c133:	72 04                	jb     0x56c139
56c135:	8b 07                	mov    (%edi),%eax
56c137:	eb 02                	jmp    0x56c13b
56c139:	8b c7                	mov    %edi,%eax
56c13b:	51                   	push   %ecx
56c13c:	51                   	push   %ecx
56c13d:	51                   	push   %ecx
56c13e:	51                   	push   %ecx
56c13f:	ff 77 10             	push   0x10(%edi)
56c142:	50                   	push   %eax
56c143:	51                   	push   %ecx
56c144:	68 e9 fd 00 00       	push   $0xfde9
56c149:	ff 15 b4 21 68 00    	call   *0x6821b4
56c14f:	50                   	push   %eax
56c150:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
56c153:	e8 6c fe ff ff       	call   0x56bfc4
56c158:	8b 47 10             	mov    0x10(%edi),%eax
56c15b:	89 5d fc             	mov    %ebx,-0x4(%ebp)
56c15e:	8b 5d e8             	mov    -0x18(%ebp),%ebx
56c161:	2b 5d e4             	sub    -0x1c(%ebp),%ebx
56c164:	83 7f 14 08          	cmpl   $0x8,0x14(%edi)
56c168:	72 02                	jb     0x56c16c
56c16a:	8b 3f                	mov    (%edi),%edi
56c16c:	33 c9                	xor    %ecx,%ecx
56c16e:	51                   	push   %ecx
56c16f:	51                   	push   %ecx
56c170:	53                   	push   %ebx
56c171:	ff 75 e4             	push   -0x1c(%ebp)
56c174:	50                   	push   %eax
56c175:	57                   	push   %edi
56c176:	51                   	push   %ecx
56c177:	68 e9 fd 00 00       	push   $0xfde9
56c17c:	ff 15 b4 21 68 00    	call   *0x6821b4
56c182:	85 c0                	test   %eax,%eax
56c184:	74 0b                	je     0x56c191
56c186:	53                   	push   %ebx
56c187:	ff 75 e4             	push   -0x1c(%ebp)
56c18a:	8b ce                	mov    %esi,%ecx
56c18c:	e8 ff c9 ec ff       	call   0x438b90
56c191:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
56c194:	e8 95 00 00 00       	call   0x56c22e
56c199:	8b c6                	mov    %esi,%eax
56c19b:	e8 f5 5d 07 00       	call   0x5e1f95
56c1a0:	c3                   	ret
56c1a1:	55                   	push   %ebp
56c1a2:	8b ec                	mov    %esp,%ebp
56c1a4:	56                   	push   %esi
56c1a5:	8b f1                	mov    %ecx,%esi
56c1a7:	33 c0                	xor    %eax,%eax
56c1a9:	89 06                	mov    %eax,(%esi)
56c1ab:	89 46 04             	mov    %eax,0x4(%esi)
56c1ae:	89 46 08             	mov    %eax,0x8(%esi)
56c1b1:	39 45 08             	cmp    %eax,0x8(%ebp)
56c1b4:	75 04                	jne    0x56c1ba
56c1b6:	32 c0                	xor    %al,%al
56c1b8:	eb 1e                	jmp    0x56c1d8
56c1ba:	6a 01                	push   $0x1
56c1bc:	6a 01                	push   $0x1
56c1be:	ff 75 08             	push   0x8(%ebp)
56c1c1:	e8 da b5 ec ff       	call   0x4377a0
56c1c6:	89 06                	mov    %eax,(%esi)
56c1c8:	83 c4 0c             	add    $0xc,%esp
56c1cb:	89 46 04             	mov    %eax,0x4(%esi)
56c1ce:	b0 01                	mov    $0x1,%al
56c1d0:	8b 0e                	mov    (%esi),%ecx
56c1d2:	03 4d 08             	add    0x8(%ebp),%ecx
56c1d5:	89 4e 08             	mov    %ecx,0x8(%esi)
56c1d8:	5e                   	pop    %esi
56c1d9:	5d                   	pop    %ebp
56c1da:	c2 04 00             	ret    $0x4
56c1dd:	55                   	push   %ebp
56c1de:	8b ec                	mov    %esp,%ebp
56c1e0:	56                   	push   %esi
56c1e1:	8b f1                	mov    %ecx,%esi
56c1e3:	33 c0                	xor    %eax,%eax
56c1e5:	57                   	push   %edi
56c1e6:	8b 7d 08             	mov    0x8(%ebp),%edi
56c1e9:	89 06                	mov    %eax,(%esi)
56c1eb:	89 46 04             	mov    %eax,0x4(%esi)
56c1ee:	89 46 08             	mov    %eax,0x8(%esi)
56c1f1:	85 ff                	test   %edi,%edi
56c1f3:	75 04                	jne    0x56c1f9
56c1f5:	32 c0                	xor    %al,%al
56c1f7:	eb 24                	jmp    0x56c21d
56c1f9:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
56c1ff:	77 22                	ja     0x56c223
56c201:	6a 01                	push   $0x1
56c203:	6a 02                	push   $0x2
56c205:	57                   	push   %edi
56c206:	e8 95 b5 ec ff       	call   0x4377a0
56c20b:	89 06                	mov    %eax,(%esi)
56c20d:	83 c4 0c             	add    $0xc,%esp