# Pending-Template Store Management

- Target binary: `/home/jan/projects/rrt/rt3_wineprefix/drive_c/rt3/RT3.exe`
- Scope: companion pending-template dispatch store and its adjacent management helpers.

## Init

### `0x0059b710` `multiplayer_transport_init_pending_template_dispatch_store`

- Size: `40`
- Calling convention: `cdecl`
- Callers: 0x0058f1e0@0x0058f110:multiplayer_transport_worker_init
- Direct callees: 0x0059b722->0x0059e0b0:fcn.0059e0b0
- Data refs: 0x0059b713->0x0059b2d0
- Key constants: 0x00000080; 0x00000018
- Key strings: none

Entry excerpt:

```asm
  59b6f0:      	subb	-0x4ab8ffa7(%ebp), %dh
  59b6f6:      	popl	%ecx
  59b6f7:      	addb	%cl, -0x46ffa64b(%ebp)
  59b6fd:      	movb	$0x59, %ch
  59b6ff:      	addb	%cl, (%esi,%esi,4)
  59b702:      	popl	%ecx
  59b703:      	addb	%ch, 0x59(%esi,%esi,4)
  59b707:      	addb	%dl, -0x6f6f6f70(%eax)
  59b70d:      	nop
  59b70e:      	nop
  59b70f:      	nop
  59b710:      	pushl	%esi
  59b711:      	movl	%ecx, %esi
  59b713:      	pushl	$0x59b2d0               # imm = 0x59B2D0
  59b718:      	movl	$0x80, %edx
  59b71d:      	movl	$0x18, %ecx
  59b722:      	calll	0x59e0b0 <.text+0x19d0b0>
  59b727:      	xorl	%ecx, %ecx
  59b729:      	testl	%eax, %eax
  59b72b:      	setne	%cl
  59b72e:      	movl	%eax, 0x55c(%esi)
```

### `0x0059c5b0` `growable_text_buffer_init`

- Size: `40`
- Calling convention: `cdecl`
- Callers: 0x0059c68e@0x0059c670:multiplayer_transport_text_stream_init; 0x0059c69d@0x0059c670:multiplayer_transport_text_stream_init
- Direct callees: 0x0059c5c3->0x0058f380:tracked_heap_alloc_with_header
- Data refs: none
- Key constants: 0x00002001; 0x00002000
- Key strings: none

Entry excerpt:

```asm
  59c590:      	pushl	%edi
  59c591:      	pushl	%edx
  59c592:      	movl	%ecx, %edi
  59c594:      	calll	0x59c540 <.text+0x19b540>
  59c599:      	xorl	%ecx, %ecx
  59c59b:      	cmpl	$-0x1, %eax
  59c59e:      	setne	%cl
  59c5a1:      	popl	%edi
  59c5a2:      	movl	%ecx, %eax
  59c5a4:      	retl
  59c5a5:      	nop
  59c5a6:      	nop
  59c5a7:      	nop
  59c5a8:      	nop
  59c5a9:      	nop
  59c5aa:      	nop
  59c5ab:      	nop
  59c5ac:      	nop
  59c5ad:      	nop
  59c5ae:      	nop
  59c5af:      	nop
  59c5b0:      	movl	$0x2001, %ecx           # imm = 0x2001
  59c5b5:      	movl	$0x0, 0x4(%esi)
  59c5bc:      	movl	$0x2000, 0x8(%esi)      # imm = 0x2000
  59c5c3:      	calll	0x58f380 <.text+0x18e380>
  59c5c8:      	testl	%eax, %eax
  59c5ca:      	movl	%eax, (%esi)
  59c5cc:      	jne	0x59c5cf <.text+0x19b5cf>
  59c5ce:      	retl
  59c5cf:      	movb	$0x0, (%eax)
```

## Destroy

### `0x0059b2e0` `multiplayer_transport_destroy_pending_template_dispatch_record`

- Size: `929`
- Calling convention: `cdecl`
- Callers: 0x0059b76f@0x0059b740:multiplayer_transport_destroy_pending_template_dispatch_store; 0x0059c245@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c259@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c275@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c295@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c2b9@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c2d1@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c2e5@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c309@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c33a@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c356@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c382@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c3a2@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c3ca@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c3e2@0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c4c1@0x0059c470:multiplayer_transport_service_pending_template_dispatch_store
- Direct callees: 0x0059b2f9->0x0058f3c0:tracked_heap_free_with_header; 0x0059b30d->0x0058f3c0:tracked_heap_free_with_header; 0x0059b321->0x0058f3c0:tracked_heap_free_with_header; 0x0059b333->0x0058f3c0:tracked_heap_free_with_header; 0x0059b33b->0x0058f3c0:tracked_heap_free_with_header; 0x0059b343->0x0058f3c0:tracked_heap_free_with_header; 0x0059b357->0x0058f3c0:tracked_heap_free_with_header; 0x0059b35f->0x0058f3c0:tracked_heap_free_with_header; 0x0059b373->0x0058f3c0:tracked_heap_free_with_header; 0x0059b388->0x0058f3c0:tracked_heap_free_with_header; 0x0059b390->0x0058f3c0:tracked_heap_free_with_header; 0x0059b3b6->0x0058f3c0:tracked_heap_free_with_header; 0x0059b3c1->0x0058f3c0:tracked_heap_free_with_header; 0x0059b3d9->0x0058f3c0:tracked_heap_free_with_header; 0x0059b3ee->0x0058f3c0:tracked_heap_free_with_header; 0x0059b3f6->0x0058f3c0:tracked_heap_free_with_header; 0x0059b40b->0x0058f3c0:tracked_heap_free_with_header; 0x0059b426->0x0058f3c0:tracked_heap_free_with_header; 0x0059b436->0x0058f3c0:tracked_heap_free_with_header; 0x0059b43e->0x0058f3c0:tracked_heap_free_with_header; 0x0059b453->0x0058f3c0:tracked_heap_free_with_header; 0x0059b45b->0x0058f3c0:tracked_heap_free_with_header; 0x0059b463->0x0058f3c0:tracked_heap_free_with_header; 0x0059b46b->0x0058f3c0:tracked_heap_free_with_header; 0x0059b486->0x0058f3c0:tracked_heap_free_with_header; 0x0059b496->0x0058f3c0:tracked_heap_free_with_header; 0x0059b4b3->0x0058f3c0:tracked_heap_free_with_header; 0x0059b4bb->0x0058f3c0:tracked_heap_free_with_header; 0x0059b4c3->0x0058f3c0:tracked_heap_free_with_header; 0x0059b4cb->0x0058f3c0:tracked_heap_free_with_header; 0x0059b4e0->0x0058f3c0:tracked_heap_free_with_header; 0x0059b4f6->0x0058f3c0:tracked_heap_free_with_header; 0x0059b506->0x0058f3c0:tracked_heap_free_with_header; 0x0059b51b->0x0058f3c0:tracked_heap_free_with_header; 0x0059b530->0x0058f3c0:tracked_heap_free_with_header; 0x0059b538->0x0058f3c0:tracked_heap_free_with_header; 0x0059b54c->0x0058f3c0:tracked_heap_free_with_header; 0x0059b566->0x0058f3c0:tracked_heap_free_with_header; 0x0059b576->0x0058f3c0:tracked_heap_free_with_header; 0x0059b57e->0x0058f3c0:tracked_heap_free_with_header; 0x0059b592->0x0058f3c0:tracked_heap_free_with_header; 0x0059b59a->0x0058f3c0:tracked_heap_free_with_header; 0x0059b5a2->0x0058f3c0:tracked_heap_free_with_header; 0x0059b5aa->0x0058f3c0:tracked_heap_free_with_header; 0x0059b5bf->0x0058f3c0:tracked_heap_free_with_header; 0x0059b5d6->0x0058f3c0:tracked_heap_free_with_header; 0x0059b5e5->0x0058f3c0:tracked_heap_free_with_header; 0x0059b5f5->0x0058f3c0:tracked_heap_free_with_header; 0x0059b5fd->0x0058f3c0:tracked_heap_free_with_header; 0x0059b612->0x0058f3c0:tracked_heap_free_with_header; 0x0059b61a->0x0058f3c0:tracked_heap_free_with_header; 0x0059b636->0x0058f3c0:tracked_heap_free_with_header; 0x0059b645->0x0058f3c0:tracked_heap_free_with_header; 0x0059b655->0x0058f3c0:tracked_heap_free_with_header; 0x0059b65d->0x0058f3c0:tracked_heap_free_with_header; 0x0059b672->0x0058f3c0:tracked_heap_free_with_header
- Data refs: 0x0059b2ed->0x0059b684
- Key constants: 0x00000020
- Key strings: none

Entry excerpt:

```asm
  59b2c0:      	incl	%ebx
  59b2c2:      	nop
  59b2c3:      	nop
  59b2c4:      	nop
  59b2c5:      	nop
  59b2c6:      	nop
  59b2c7:      	nop
  59b2c8:      	nop
  59b2c9:      	nop
  59b2ca:      	nop
  59b2cb:      	nop
  59b2cc:      	nop
  59b2cd:      	nop
  59b2ce:      	nop
  59b2cf:      	nop
  59b2d0:      	movl	0x14(%ecx), %ecx
  59b2d3:      	jmp	0x58f3c0 <.text+0x18e3c0>
  59b2d8:      	nop
  59b2d9:      	nop
  59b2da:      	nop
  59b2db:      	nop
  59b2dc:      	nop
  59b2dd:      	nop
  59b2de:      	nop
  59b2df:      	nop
  59b2e0:      	movl	(%esi), %eax
  59b2e2:      	cmpl	$0x20, %eax
  59b2e5:      	pushl	%edi
  59b2e6:      	ja	0x59b678 <.text+0x19a678>
  59b2ec:      	pushl	%ebx
  59b2ed:      	jmpl	*0x59b684(,%eax,4)
  59b2f4:      	movl	0x8(%esi), %eax
  59b2f7:      	movl	(%eax), %ecx
  59b2f9:      	calll	0x58f3c0 <.text+0x18e3c0>
  59b2fe:      	movl	0x8(%esi), %ecx
```

### `0x0059b740` `multiplayer_transport_destroy_pending_template_dispatch_store`

- Size: `74`
- Calling convention: `cdecl`
- Callers: 0x0058e4cf@0x0058e480:multiplayer_transport_worker_shutdown_gracefully; 0x0058f214@0x0058f110:multiplayer_transport_worker_init
- Direct callees: 0x0059b76f->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059b74f->0x0059e110:generic_vector_count; 0x0059b768->0x0059e120:generic_vector_index_ptr
- Data refs: none
- Key constants: none
- Key strings: none

Entry excerpt:

```asm
  59b720:      	addb	%al, (%eax)
  59b722:      	calll	0x59e0b0 <.text+0x19d0b0>
  59b727:      	xorl	%ecx, %ecx
  59b729:      	testl	%eax, %eax
  59b72b:      	setne	%cl
  59b72e:      	movl	%eax, 0x55c(%esi)
  59b734:      	popl	%esi
  59b735:      	movl	%ecx, %eax
  59b737:      	retl
  59b738:      	nop
  59b739:      	nop
  59b73a:      	nop
  59b73b:      	nop
  59b73c:      	nop
  59b73d:      	nop
  59b73e:      	nop
  59b73f:      	nop
  59b740:      	pushl	%ebp
  59b741:      	movl	%ecx, %ebp
  59b743:      	movl	0x55c(%ebp), %ecx
  59b749:      	testl	%ecx, %ecx
  59b74b:      	je	0x59b788 <.text+0x19a788>
  59b74d:      	pushl	%ebx
  59b74e:      	pushl	%edi
  59b74f:      	calll	0x59e110 <.text+0x19d110>
  59b754:      	movl	%eax, %ebx
  59b756:      	xorl	%edi, %edi
  59b758:      	testl	%ebx, %ebx
  59b75a:      	jle	0x59b77a <.text+0x19a77a>
  59b75c:      	pushl	%esi
  59b75d:      	leal	(%ecx), %ecx
```

### `0x0059c5e0` `growable_text_buffer_free`

- Size: `7`
- Calling convention: `cdecl`
- Callers: 0x0059c6a8@0x0059c670:multiplayer_transport_text_stream_init; 0x0059c7b8@0x0059c790:multiplayer_transport_text_stream_destroy; 0x0059c7c3@0x0059c790:multiplayer_transport_text_stream_destroy
- Direct callees: none
- Data refs: none
- Key constants: none
- Key strings: none

Entry excerpt:

```asm
  59c5c0:      	andb	%al, (%eax)
  59c5c2:      	addb	%ch, %al
  59c5c4:      	movl	$0x85ffff2d, %eax       # imm = 0x85FFFF2D
  59c5c9:      	rorb	$0xc6, -0x3cfe8afa(%ecx)
  59c5d0:      	addb	%al, (%eax)
  59c5d2:      	movl	$0x1, %eax
  59c5d7:      	retl
  59c5d8:      	nop
  59c5d9:      	nop
  59c5da:      	nop
  59c5db:      	nop
  59c5dc:      	nop
  59c5dd:      	nop
  59c5de:      	nop
  59c5df:      	nop
  59c5e0:      	movl	(%eax), %ecx
  59c5e2:      	jmp	0x58f3c0 <.text+0x18e3c0>
  59c5e7:      	nop
  59c5e8:      	nop
  59c5e9:      	nop
  59c5ea:      	nop
  59c5eb:      	nop
  59c5ec:      	nop
  59c5ed:      	nop
  59c5ee:      	nop
  59c5ef:      	nop
  59c5f0:      	movl	0x8(%edi), %eax
  59c5f3:      	pushl	%esi
  59c5f4:      	movl	0x4(%edi), %esi
  59c5f7:      	addl	%ecx, %esi
  59c5f9:      	cmpl	%eax, %esi
  59c5fb:      	jle	0x59c62a <.text+0x19b62a>
  59c5fd:      	addl	$0x2000, %esi           # imm = 0x2000
```

## Lookup

### `0x0059c540` `multiplayer_transport_find_pending_template_dispatch_record_index`

- Size: `72`
- Calling convention: `cdecl`
- Callers: 0x0059c594@0x0059c590:multiplayer_transport_has_pending_template_dispatch_record
- Direct callees: 0x0059c54d->0x0059e110:generic_vector_count; 0x0059c568->0x0059e120:generic_vector_index_ptr
- Data refs: none
- Key constants: 0x000000ff
- Key strings: none

Entry excerpt:

```asm
  59c520:      	movl	0x55c(%ebx), %ecx
  59c526:      	calll	0x59e110 <.text+0x19d110>
  59c52b:      	cmpl	%ebp, %eax
  59c52d:      	jg	0x59c4a0 <.text+0x19b4a0>
  59c533:      	popl	%esi
  59c534:      	popl	%edi
  59c535:      	popl	%ebp
  59c536:      	popl	%ebx
  59c537:      	addl	$0x1c, %esp
  59c53a:      	retl
  59c53b:      	nop
  59c53c:      	nop
  59c53d:      	nop
  59c53e:      	nop
  59c53f:      	nop
  59c540:      	movl	0x55c(%edi), %ecx
  59c546:      	pushl	%ebx
  59c547:      	pushl	%ebp
  59c548:      	movl	0xc(%esp), %ebp
  59c54c:      	pushl	%esi
  59c54d:      	calll	0x59e110 <.text+0x19d110>
  59c552:      	movl	%eax, %ebx
  59c554:      	xorl	%esi, %esi
  59c556:      	testl	%ebx, %ebx
  59c558:      	jle	0x59c577 <.text+0x19b577>
  59c55a:      	leal	(%ebx), %ebx
```

### `0x0059c590` `multiplayer_transport_has_pending_template_dispatch_record`

- Size: `21`
- Calling convention: `cdecl`
- Callers: 0x0058e381@0x0058e370:multiplayer_transport_is_request_pending
- Direct callees: 0x0059c594->0x0059c540:multiplayer_transport_find_pending_template_dispatch_record_index
- Data refs: none
- Key constants: none
- Key strings: none

Entry excerpt:

```asm
  59c570:      	je	0x59c580 <.text+0x19b580>
  59c572:      	incl	%esi
  59c573:      	cmpl	%ebx, %esi
  59c575:      	jl	0x59c560 <.text+0x19b560>
  59c577:      	popl	%esi
  59c578:      	popl	%ebp
  59c579:      	orl	$-0x1, %eax
  59c57c:      	popl	%ebx
  59c57d:      	retl	$0x4
  59c580:      	movl	%esi, %eax
  59c582:      	popl	%esi
  59c583:      	popl	%ebp
  59c584:      	popl	%ebx
  59c585:      	retl	$0x4
  59c588:      	nop
  59c589:      	nop
  59c58a:      	nop
  59c58b:      	nop
  59c58c:      	nop
  59c58d:      	nop
  59c58e:      	nop
  59c58f:      	nop
  59c590:      	pushl	%edi
  59c591:      	pushl	%edx
  59c592:      	movl	%ecx, %edi
  59c594:      	calll	0x59c540 <.text+0x19b540>
  59c599:      	xorl	%ecx, %ecx
  59c59b:      	cmpl	$-0x1, %eax
  59c59e:      	setne	%cl
  59c5a1:      	popl	%edi
  59c5a2:      	movl	%ecx, %eax
  59c5a4:      	retl
  59c5a5:      	nop
  59c5a6:      	nop
  59c5a7:      	nop
  59c5a8:      	nop
  59c5a9:      	nop
  59c5aa:      	nop
  59c5ab:      	nop
  59c5ac:      	nop
  59c5ad:      	nop
  59c5ae:      	nop
  59c5af:      	nop
```

## Prune / Remove

### `0x0059c470` `multiplayer_transport_service_pending_template_dispatch_store`

- Size: `203`
- Calling convention: `cdecl`
- Callers: 0x0058e470@0x0058e3f0:multiplayer_transport_drain_request_text_queue
- Direct callees: 0x0059c4c1->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c511->0x0059c220:multiplayer_transport_dispatch_pending_template_dispatch_record; 0x0059c4b8->0x0059d8d0:multiplayer_transport_has_registered_name; 0x0059c4de->0x0059d9e0:multiplayer_transport_get_registered_name_dirty; 0x0059c486->0x0059e110:generic_vector_count; 0x0059c526->0x0059e110:generic_vector_count; 0x0059c4a8->0x0059e120:generic_vector_index_ptr; 0x0059c4ce->0x0059e3d0:generic_vector_erase_with_callback; 0x0059c506->0x0059e3d0:generic_vector_erase_with_callback
- Data refs: none
- Key constants: 0x0000001c
- Key strings: none

Entry excerpt:

```asm
  59c450:      	movl	%ebx, %eax
  59c452:      	popl	%ecx
  59c453:      	addb	%dl, %bl
  59c455:      	retl
  59c456:      	popl	%ecx
  59c457:      	addb	%ah, -0x3e(%edx)
  59c45a:      	popl	%ecx
  59c45b:      	addb	%cl, 0x7e0059c3(%ebx)
  59c461:      	retl	$0x59
  59c464:      	sahf
  59c465:      	retl	$0x59
  59c468:      	stosl	%eax, %es:(%edi)
  59c469:      	retl
  59c46a:      	popl	%ecx
  59c46b:      	addb	%dl, %bl
  59c46d:      	retl
  59c46e:      	popl	%ecx
  59c46f:      	addb	%al, 0x55531cec(%ebx)
  59c475:      	pushl	%edi
  59c476:      	movl	%ecx, %ebx
  59c478:      	movl	0x55c(%ebx), %ecx
  59c47e:      	movl	%edx, %edi
  59c480:      	movl	%edi, 0xc(%esp)
  59c484:      	xorl	%ebp, %ebp
  59c486:      	calll	0x59e110 <.text+0x19d110>
  59c48b:      	testl	%eax, %eax
  59c48d:      	jle	0x59c534 <.text+0x19b534>
```

## Dispatch / Update

### `0x0059c220` `multiplayer_transport_dispatch_pending_template_dispatch_record`

- Size: `459`
- Calling convention: `cdecl`
- Callers: 0x0059c511@0x0059c470:multiplayer_transport_service_pending_template_dispatch_store
- Direct callees: 0x0059c245->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c259->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c275->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c295->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c2b9->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c2d1->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c2e5->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c309->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c33a->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c356->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c382->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c3a2->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c3ca->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c3e2->0x0059b2e0:multiplayer_transport_destroy_pending_template_dispatch_record; 0x0059c322->0x0059d9c0:multiplayer_transport_mark_registered_name_dirty
- Data refs: 0x0059c233->0x0059c3ec
- Key constants: 0x00000020; 0x00000018
- Key strings: none

Entry excerpt:

```asm
  59c200:      	xchgl	%edi, %eax
  59c201:      	movl	$0xc1800059, %ebp       # imm = 0xC1800059
  59c206:      	popl	%ecx
  59c207:      	addb	%bh, 0x610059be
  59c20d:      	movl	$0xbf1d0059, %esi       # imm = 0xBF1D0059
  59c212:      	popl	%ecx
  59c213:      	addb	%al, -0x41(%eax)
  59c216:      	popl	%ecx
  59c217:      	addb	%dl, -0x40(%eax)
  59c21a:      	popl	%ecx
  59c21b:      	addb	%al, 0x510059c1(%eax)
  59c221:      	pushl	%ebx
  59c222:      	pushl	%esi
  59c223:      	movl	%eax, %esi
  59c225:      	movl	(%esi), %eax
  59c227:      	cmpl	$0x20, %eax
  59c22a:      	movl	0xc(%esi), %ebx
  59c22d:      	ja	0x59c3e2 <.text+0x19b3e2>
  59c233:      	jmpl	*0x59c3ec(,%eax,4)
  59c23a:      	movl	0x8(%esi), %eax
  59c23d:      	movl	(%eax), %edx
  59c23f:      	pushl	%ebx
```

### `0x0059c5f0` `growable_text_buffer_reserve_append`

- Size: `65`
- Calling convention: `cdecl`
- Callers: 0x0059ca47@0x0059ca10:multiplayer_transport_text_stream_recv_pump; 0x0059cb31@0x0059caf0:multiplayer_transport_text_stream_append_crlf_line
- Direct callees: 0x0059c61a->0x0058f3f0:tracked_heap_resize_with_header
- Data refs: none
- Key constants: 0x00002000
- Key strings: none

Entry excerpt:

```asm
  59c5d0:      	addb	%al, (%eax)
  59c5d2:      	movl	$0x1, %eax
  59c5d7:      	retl
  59c5d8:      	nop
  59c5d9:      	nop
  59c5da:      	nop
  59c5db:      	nop
  59c5dc:      	nop
  59c5dd:      	nop
  59c5de:      	nop
  59c5df:      	nop
  59c5e0:      	movl	(%eax), %ecx
  59c5e2:      	jmp	0x58f3c0 <.text+0x18e3c0>
  59c5e7:      	nop
  59c5e8:      	nop
  59c5e9:      	nop
  59c5ea:      	nop
  59c5eb:      	nop
  59c5ec:      	nop
  59c5ed:      	nop
  59c5ee:      	nop
  59c5ef:      	nop
  59c5f0:      	movl	0x8(%edi), %eax
  59c5f3:      	pushl	%esi
  59c5f4:      	movl	0x4(%edi), %esi
  59c5f7:      	addl	%ecx, %esi
  59c5f9:      	cmpl	%eax, %esi
  59c5fb:      	jle	0x59c62a <.text+0x19b62a>
  59c5fd:      	addl	$0x2000, %esi           # imm = 0x2000
  59c603:      	movl	%esi, %eax
  59c605:      	andl	$0x80001fff, %eax       # imm = 0x80001FFF
  59c60a:      	jns	0x59c613 <.text+0x19b613>
  59c60c:      	decl	%eax
  59c60d:      	orl	$0xffffe000, %eax       # imm = 0xFFFFE000
```

