410f61:	e8 b6 2c 00 00       	call   0x413c1c
410f66:	c2 14 00             	ret    $0x14
410f69:	8b ff                	mov    %edi,%edi
410f6b:	55                   	push   %ebp
410f6c:	8b ec                	mov    %esp,%ebp
410f6e:	83 ec 1c             	sub    $0x1c,%esp
410f71:	66 8b 41 06          	mov    0x6(%ecx),%ax
410f75:	33 d2                	xor    %edx,%edx
410f77:	66 89 45 e4          	mov    %ax,-0x1c(%ebp)
410f7b:	8a 41 08             	mov    0x8(%ecx),%al
410f7e:	53                   	push   %ebx
410f7f:	8b 5d 08             	mov    0x8(%ebp),%ebx
410f82:	56                   	push   %esi
410f83:	8b 75 0c             	mov    0xc(%ebp),%esi
410f86:	88 45 e6             	mov    %al,-0x1a(%ebp)
410f89:	33 c0                	xor    %eax,%eax
410f8b:	89 4d f8             	mov    %ecx,-0x8(%ebp)
410f8e:	89 55 e8             	mov    %edx,-0x18(%ebp)
410f91:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
410f95:	89 55 f0             	mov    %edx,-0x10(%ebp)
410f98:	89 55 f4             	mov    %edx,-0xc(%ebp)
410f9b:	85 f6                	test   %esi,%esi
410f9d:	74 47                	je     0x410fe6
410f9f:	57                   	push   %edi
410fa0:	8b 41 0c             	mov    0xc(%ecx),%eax
410fa3:	8b fe                	mov    %esi,%edi
410fa5:	ff 71 14             	push   0x14(%ecx)
410fa8:	d1 ef                	shr    $1,%edi
410faa:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
410fad:	0f af c7             	imul   %edi,%eax
410fb0:	03 c3                	add    %ebx,%eax
410fb2:	89 45 fc             	mov    %eax,-0x4(%ebp)
410fb5:	8d 45 fc             	lea    -0x4(%ebp),%eax
410fb8:	50                   	push   %eax
410fb9:	e8 5c fb ff ff       	call   0x410b1a
410fbe:	ff 75 14             	push   0x14(%ebp)
410fc1:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
410fc4:	ff 75 10             	push   0x10(%ebp)
410fc7:	e8 fe f9 ff ff       	call   0x4109ca
410fcc:	85 c0                	test   %eax,%eax
410fce:	7e 0c                	jle    0x410fdc
410fd0:	8b 5d fc             	mov    -0x4(%ebp),%ebx
410fd3:	83 c8 ff             	or     $0xffffffff,%eax
410fd6:	2b c7                	sub    %edi,%eax
410fd8:	03 f0                	add    %eax,%esi
410fda:	eb 02                	jmp    0x410fde
410fdc:	8b f7                	mov    %edi,%esi
410fde:	8b 4d f8             	mov    -0x8(%ebp),%ecx
410fe1:	85 f6                	test   %esi,%esi
410fe3:	75 bb                	jne    0x410fa0
410fe5:	5f                   	pop    %edi
410fe6:	5e                   	pop    %esi
410fe7:	8b c3                	mov    %ebx,%eax
410fe9:	5b                   	pop    %ebx
410fea:	c9                   	leave
410feb:	c2 10 00             	ret    $0x10
410fee:	8b ff                	mov    %edi,%edi
410ff0:	55                   	push   %ebp
410ff1:	8b ec                	mov    %esp,%ebp
410ff3:	83 ec 20             	sub    $0x20,%esp
410ff6:	83 4d f8 ff          	orl    $0xffffffff,-0x8(%ebp)
410ffa:	53                   	push   %ebx
410ffb:	56                   	push   %esi
410ffc:	8b 75 08             	mov    0x8(%ebp),%esi
410fff:	57                   	push   %edi
411000:	8b f9                	mov    %ecx,%edi
411002:	33 c9                	xor    %ecx,%ecx
411004:	66 89 4d e8          	mov    %cx,-0x18(%ebp)
411008:	66 8b 47 06          	mov    0x6(%edi),%ax
41100c:	8b 4f 0c             	mov    0xc(%edi),%ecx
41100f:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
411013:	8a 47 08             	mov    0x8(%edi),%al
411016:	88 45 e2             	mov    %al,-0x1e(%ebp)
411019:	33 c0                	xor    %eax,%eax
41101b:	89 45 e4             	mov    %eax,-0x1c(%ebp)
41101e:	89 45 ec             	mov    %eax,-0x14(%ebp)
411021:	89 45 f0             	mov    %eax,-0x10(%ebp)
411024:	85 c9                	test   %ecx,%ecx
411026:	74 64                	je     0x41108c
411028:	8b 47 14             	mov    0x14(%edi),%eax
41102b:	33 d2                	xor    %edx,%edx
41102d:	2b 45 0c             	sub    0xc(%ebp),%eax
411030:	f7 f1                	div    %ecx
411032:	8b 56 04             	mov    0x4(%esi),%edx
411035:	3b d0                	cmp    %eax,%edx
411037:	76 0e                	jbe    0x411047
411039:	50                   	push   %eax
41103a:	8b ce                	mov    %esi,%ecx
41103c:	e8 b0 f9 ff ff       	call   0x4109f1
411041:	8b 56 04             	mov    0x4(%esi),%edx
411044:	8b 4f 0c             	mov    0xc(%edi),%ecx
411047:	ff 75 14             	push   0x14(%ebp)
41104a:	8b f2                	mov    %edx,%esi
41104c:	ff 75 10             	push   0x10(%ebp)
41104f:	0f af f1             	imul   %ecx,%esi
411052:	8b cf                	mov    %edi,%ecx
411054:	52                   	push   %edx
411055:	ff 75 0c             	push   0xc(%ebp)
411058:	03 75 0c             	add    0xc(%ebp),%esi
41105b:	e8 09 ff ff ff       	call   0x410f69
411060:	8b d8                	mov    %eax,%ebx
411062:	3b de                	cmp    %esi,%ebx
411064:	0f 83 ac 00 00 00    	jae    0x411116
41106a:	ff 77 14             	push   0x14(%edi)
41106d:	8d 45 f4             	lea    -0xc(%ebp),%eax
411070:	89 5d f4             	mov    %ebx,-0xc(%ebp)
411073:	50                   	push   %eax
411074:	8d 4d e0             	lea    -0x20(%ebp),%ecx
411077:	e8 9e fa ff ff       	call   0x410b1a
41107c:	ff 75 14             	push   0x14(%ebp)
41107f:	8d 4d e0             	lea    -0x20(%ebp),%ecx
411082:	ff 75 10             	push   0x10(%ebp)
411085:	e8 40 f9 ff ff       	call   0x4109ca
41108a:	eb 55                	jmp    0x4110e1
41108c:	8b 5d 0c             	mov    0xc(%ebp),%ebx
41108f:	89 45 fc             	mov    %eax,-0x4(%ebp)
411092:	39 46 04             	cmp    %eax,0x4(%esi)
411095:	76 7f                	jbe    0x411116
411097:	ff 77 14             	push   0x14(%edi)
41109a:	8d 45 f4             	lea    -0xc(%ebp),%eax
41109d:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4110a0:	50                   	push   %eax
4110a1:	8d 4d e0             	lea    -0x20(%ebp),%ecx
4110a4:	e8 71 fa ff ff       	call   0x410b1a
4110a9:	84 c0                	test   %al,%al
4110ab:	74 26                	je     0x4110d3
4110ad:	ff 75 14             	push   0x14(%ebp)
4110b0:	8d 4d e0             	lea    -0x20(%ebp),%ecx
4110b3:	ff 75 10             	push   0x10(%ebp)
4110b6:	e8 0f f9 ff ff       	call   0x4109ca
4110bb:	89 45 f8             	mov    %eax,-0x8(%ebp)
4110be:	85 c0                	test   %eax,%eax
4110c0:	7e 21                	jle    0x4110e3
4110c2:	8b 45 fc             	mov    -0x4(%ebp),%eax
4110c5:	8b 5d f4             	mov    -0xc(%ebp),%ebx
4110c8:	40                   	inc    %eax
4110c9:	89 45 fc             	mov    %eax,-0x4(%ebp)
4110cc:	3b 46 04             	cmp    0x4(%esi),%eax
4110cf:	72 c6                	jb     0x411097
4110d1:	eb 0b                	jmp    0x4110de
4110d3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4110d6:	51                   	push   %ecx
4110d7:	8b ce                	mov    %esi,%ecx
4110d9:	e8 13 f9 ff ff       	call   0x4109f1
4110de:	8b 45 f8             	mov    -0x8(%ebp),%eax
4110e1:	85 c0                	test   %eax,%eax
4110e3:	75 31                	jne    0x411116
4110e5:	8a 45 e2             	mov    -0x1e(%ebp),%al
4110e8:	84 c0                	test   %al,%al
4110ea:	0f 95 c3             	setne  %bl
4110ed:	84 c0                	test   %al,%al
4110ef:	74 0f                	je     0x411100
4110f1:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4110f4:	8d 4d e0             	lea    -0x20(%ebp),%ecx
4110f7:	03 45 18             	add    0x18(%ebp),%eax
4110fa:	50                   	push   %eax
4110fb:	e8 f1 f8 ff ff       	call   0x4109f1
411100:	84 db                	test   %bl,%bl
411102:	75 09                	jne    0x41110d
411104:	38 5f 20             	cmp    %bl,0x20(%edi)
411107:	75 04                	jne    0x41110d
411109:	33 c0                	xor    %eax,%eax
41110b:	eb 02                	jmp    0x41110f
41110d:	b0 01                	mov    $0x1,%al
41110f:	88 47 20             	mov    %al,0x20(%edi)
411112:	33 c0                	xor    %eax,%eax
411114:	eb 02                	jmp    0x411118
411116:	8b c3                	mov    %ebx,%eax
411118:	5f                   	pop    %edi
411119:	5e                   	pop    %esi
41111a:	5b                   	pop    %ebx
41111b:	c9                   	leave
41111c:	c2 14 00             	ret    $0x14
41111f:	8b ff                	mov    %edi,%edi
411121:	55                   	push   %ebp
411122:	8b ec                	mov    %esp,%ebp
411124:	83 ec 14             	sub    $0x14,%esp
411127:	53                   	push   %ebx
411128:	8b d9                	mov    %ecx,%ebx
41112a:	56                   	push   %esi
41112b:	57                   	push   %edi
41112c:	8b 7d 08             	mov    0x8(%ebp),%edi
41112f:	8b 73 0c             	mov    0xc(%ebx),%esi
411132:	85 f6                	test   %esi,%esi
411134:	74 29                	je     0x41115f
411136:	8b 43 14             	mov    0x14(%ebx),%eax
411139:	33 d2                	xor    %edx,%edx
41113b:	2b 43 10             	sub    0x10(%ebx),%eax
41113e:	f7 f6                	div    %esi
411140:	8b 4f 04             	mov    0x4(%edi),%ecx
411143:	3b c8                	cmp    %eax,%ecx
411145:	76 0e                	jbe    0x411155
411147:	50                   	push   %eax
411148:	8b cf                	mov    %edi,%ecx
41114a:	e8 a2 f8 ff ff       	call   0x4109f1
41114f:	8b 4f 04             	mov    0x4(%edi),%ecx
411152:	8b 73 0c             	mov    0xc(%ebx),%esi
411155:	8b 45 0c             	mov    0xc(%ebp),%eax
411158:	0f af f1             	imul   %ecx,%esi
41115b:	03 c6                	add    %esi,%eax
41115d:	eb 48                	jmp    0x4111a7
41115f:	66 8b 43 06          	mov    0x6(%ebx),%ax
411163:	33 f6                	xor    %esi,%esi
411165:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
411169:	8a 43 08             	mov    0x8(%ebx),%al
41116c:	88 45 ee             	mov    %al,-0x12(%ebp)
41116f:	33 c0                	xor    %eax,%eax
411171:	89 75 f0             	mov    %esi,-0x10(%ebp)
411174:	66 89 45 f4          	mov    %ax,-0xc(%ebp)
411178:	89 75 f8             	mov    %esi,-0x8(%ebp)
41117b:	89 75 fc             	mov    %esi,-0x4(%ebp)
41117e:	39 77 04             	cmp    %esi,0x4(%edi)
411181:	76 19                	jbe    0x41119c
411183:	ff 73 14             	push   0x14(%ebx)
411186:	8d 45 0c             	lea    0xc(%ebp),%eax
411189:	50                   	push   %eax
41118a:	8d 4d ec             	lea    -0x14(%ebp),%ecx
41118d:	e8 88 f9 ff ff       	call   0x410b1a
411192:	84 c0                	test   %al,%al
411194:	74 06                	je     0x41119c
411196:	46                   	inc    %esi
411197:	3b 77 04             	cmp    0x4(%edi),%esi
41119a:	72 e7                	jb     0x411183
41119c:	56                   	push   %esi
41119d:	8b cf                	mov    %edi,%ecx
41119f:	e8 4d f8 ff ff       	call   0x4109f1
4111a4:	8b 45 0c             	mov    0xc(%ebp),%eax
4111a7:	5f                   	pop    %edi
4111a8:	5e                   	pop    %esi
4111a9:	5b                   	pop    %ebx
4111aa:	c9                   	leave
4111ab:	c2 08 00             	ret    $0x8
4111ae:	8b ff                	mov    %edi,%edi
4111b0:	55                   	push   %ebp
4111b1:	8b ec                	mov    %esp,%ebp
4111b3:	83 ec 30             	sub    $0x30,%esp
4111b6:	53                   	push   %ebx
4111b7:	56                   	push   %esi
4111b8:	8b f1                	mov    %ecx,%esi
4111ba:	57                   	push   %edi
4111bb:	8b 7e 10             	mov    0x10(%esi),%edi
4111be:	85 ff                	test   %edi,%edi
4111c0:	0f 84 75 01 00 00    	je     0x41133b
4111c6:	66 8b 46 02          	mov    0x2(%esi),%ax
4111ca:	33 c9                	xor    %ecx,%ecx
4111cc:	66 89 45 e4          	mov    %ax,-0x1c(%ebp)
4111d0:	83 c7 0a             	add    $0xa,%edi
4111d3:	8a 46 04             	mov    0x4(%esi),%al
4111d6:	8a f9                	mov    %cl,%bh
4111d8:	88 45 e6             	mov    %al,-0x1a(%ebp)
4111db:	33 c0                	xor    %eax,%eax
4111dd:	89 4d e8             	mov    %ecx,-0x18(%ebp)
4111e0:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
4111e4:	89 4d f0             	mov    %ecx,-0x10(%ebp)
4111e7:	89 4d f4             	mov    %ecx,-0xc(%ebp)
4111ea:	88 7d ff             	mov    %bh,-0x1(%ebp)
4111ed:	eb 2c                	jmp    0x41121b
4111ef:	ff 75 0c             	push   0xc(%ebp)
4111f2:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4111f5:	ff 75 08             	push   0x8(%ebp)
4111f8:	e8 cd f7 ff ff       	call   0x4109ca
4111fd:	85 c0                	test   %eax,%eax
4111ff:	0f 88 fe 00 00 00    	js     0x411303
411205:	8d 45 e4             	lea    -0x1c(%ebp),%eax
411208:	8b ce                	mov    %esi,%ecx
41120a:	0f 84 cd 00 00 00    	je     0x4112dd
411210:	ff 75 f8             	push   -0x8(%ebp)
411213:	50                   	push   %eax
411214:	e8 06 ff ff ff       	call   0x41111f
411219:	8b f8                	mov    %eax,%edi
41121b:	ff 76 14             	push   0x14(%esi)
41121e:	8d 45 f8             	lea    -0x8(%ebp),%eax
411221:	89 7d f8             	mov    %edi,-0x8(%ebp)
411224:	50                   	push   %eax
411225:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
411228:	e8 ed f8 ff ff       	call   0x410b1a
41122d:	8a d8                	mov    %al,%bl
41122f:	84 db                	test   %bl,%bl
411231:	75 bc                	jne    0x4111ef
411233:	8b 7d f8             	mov    -0x8(%ebp),%edi
411236:	89 7e 14             	mov    %edi,0x14(%esi)
411239:	33 d2                	xor    %edx,%edx
41123b:	84 ff                	test   %bh,%bh
41123d:	75 21                	jne    0x411260
41123f:	8b 45 0c             	mov    0xc(%ebp),%eax
411242:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
411245:	21 55 f0             	and    %edx,-0x10(%ebp)
411248:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
41124c:	8b 45 08             	mov    0x8(%ebp),%eax
41124f:	c7 45 e8 01 00 00 00 	movl   $0x1,-0x18(%ebp)
411256:	89 45 f4             	mov    %eax,-0xc(%ebp)
411259:	e8 d8 f7 ff ff       	call   0x410a36
41125e:	8b d0                	mov    %eax,%edx
411260:	66 8b 4e 06          	mov    0x6(%esi),%cx
411264:	8b 45 18             	mov    0x18(%ebp),%eax
411267:	83 65 dc 00          	andl   $0x0,-0x24(%ebp)
41126b:	66 89 4d d0          	mov    %cx,-0x30(%ebp)
41126f:	8a 4e 08             	mov    0x8(%esi),%cl
411272:	89 45 d4             	mov    %eax,-0x2c(%ebp)
411275:	8b 45 14             	mov    0x14(%ebp),%eax
411278:	88 4d d2             	mov    %cl,-0x2e(%ebp)
41127b:	8d 4d d0             	lea    -0x30(%ebp),%ecx
41127e:	66 89 45 d8          	mov    %ax,-0x28(%ebp)
411282:	8b 45 10             	mov    0x10(%ebp),%eax
411285:	89 45 e0             	mov    %eax,-0x20(%ebp)
411288:	e8 a9 f7 ff ff       	call   0x410a36
41128d:	8d 1c 02             	lea    (%edx,%eax,1),%ebx
411290:	8b 46 18             	mov    0x18(%esi),%eax
411293:	8b d0                	mov    %eax,%edx
411295:	2b 56 14             	sub    0x14(%esi),%edx
411298:	39 46 14             	cmp    %eax,0x14(%esi)
41129b:	1b c9                	sbb    %ecx,%ecx
41129d:	23 ca                	and    %edx,%ecx
41129f:	3b cb                	cmp    %ebx,%ecx
4112a1:	0f 82 94 00 00 00    	jb     0x41133b
4112a7:	8b 4e 14             	mov    0x14(%esi),%ecx
4112aa:	2b c3                	sub    %ebx,%eax
4112ac:	2b cf                	sub    %edi,%ecx
4112ae:	2b c7                	sub    %edi,%eax
4112b0:	51                   	push   %ecx
4112b1:	57                   	push   %edi
4112b2:	50                   	push   %eax
4112b3:	8d 04 3b             	lea    (%ebx,%edi,1),%eax
4112b6:	50                   	push   %eax
4112b7:	ff 15 c0 b2 41 00    	call   *0x41b2c0
4112bd:	8b 46 14             	mov    0x14(%esi),%eax
4112c0:	83 c4 10             	add    $0x10,%esp
4112c3:	03 c3                	add    %ebx,%eax
4112c5:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
4112c9:	89 46 14             	mov    %eax,0x14(%esi)
4112cc:	75 45                	jne    0x411313
4112ce:	50                   	push   %eax
4112cf:	8d 45 f8             	lea    -0x8(%ebp),%eax
4112d2:	50                   	push   %eax
4112d3:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4112d6:	e8 7f f7 ff ff       	call   0x410a5a
4112db:	eb 49                	jmp    0x411326
4112dd:	ff 75 18             	push   0x18(%ebp)
4112e0:	ff 75 14             	push   0x14(%ebp)
4112e3:	ff 75 10             	push   0x10(%ebp)
4112e6:	ff 75 f8             	push   -0x8(%ebp)
4112e9:	50                   	push   %eax
4112ea:	e8 ff fc ff ff       	call   0x410fee
4112ef:	8b f8                	mov    %eax,%edi
4112f1:	89 7d f8             	mov    %edi,-0x8(%ebp)
4112f4:	85 ff                	test   %edi,%edi
4112f6:	75 04                	jne    0x4112fc
4112f8:	b0 01                	mov    $0x1,%al
4112fa:	eb 41                	jmp    0x41133d
4112fc:	b7 01                	mov    $0x1,%bh