Function at 0x486c00
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push esi
mov esi, ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x18], esi
push edi
test esi, esi
je 0x48781d
cmp dword [esi + 0x20], 0
je 0x48781d
cmp dword [esi + 0x24], 0
je 0x48781d
mov edi, dword [esi + 0x1c]
test edi, edi
je 0x48781d
cmp dword [edi], esi
jne 0x48781d
mov eax, dword [edi + 4]
cmp eax, 0x2a
je 0x486c70
cmp eax, 0x39
je 0x486c70
cmp eax, 0x45
je 0x486c70
cmp eax, 0x49
je 0x486c70
cmp eax, 0x5b
je 0x486c70
cmp eax, 0x67
je 0x486c70
cmp eax, 0x71
je 0x486c70
cmp eax, 0x29a
jne 0x48781d
cmp dword [esi + 0xc], 0
je 0x487816
cmp dword [esi + 4], 0
je 0x486c89
cmp dword [esi], 0
je 0x487816
cmp eax, 0x29a
jne 0x486c99
cmp edx, 4
jne 0x487816
cmp dword [esi + 0x10], 0
push ebx
je 0x486d3b
cmp dword [edi + 0x14], 0
mov ecx, dword [edi + 0x28]
mov dword [edi + 0x28], edx
je 0x486d05
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x14], ebx
call fcn.0048cdf0
mov ebx, dword [ebx + 0x14]
mov eax, dword [esi + 0x10]
cmp ebx, eax
jbe 0x486cc9
mov ebx, eax
test ebx, ebx
je 0x486cf9
mov eax, dword [ebp - 0x14]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov ecx, dword [ebp - 0x14]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x486cf9
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x10], 0
je 0x487806
jmp 0x486d27
cmp dword [esi + 4], 0
jne 0x486d27
xor eax, eax
cmp ecx, 4
setle al
add ecx, ecx
dec eax
and eax, 9
sub ecx, eax
lea eax, [edx + edx]
cmp eax, ecx
jg 0x486d27
cmp edx, 4
jne 0x486d3b
mov eax, dword [edi + 4]
cmp eax, 0x29a
jne 0x486d4e
cmp dword [esi + 4], 0
je 0x486ea4
pop ebx
pop edi
mov dword [esi + 0x18], str.buffer_error
mov eax, 0xfffffffb
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 0x2a
jne 0x486ea4
mov ecx, dword [edi + 0x30]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [edi + 0x88], 2
mov ebx, ecx
jge 0x486d9e
mov eax, dword [edi + 0x84]
cmp eax, 2
jl 0x486d9e
cmp eax, 6
jge 0x486d88
mov eax, 0x40
lea edx, [eax + 0x20]
jmp 0x486da3
jne 0x486d94
mov eax, 0x80
lea edx, [eax + 0x20]
jmp 0x486da3
mov eax, 0xc0
lea edx, [eax + 0x20]
jmp 0x486da3
xor eax, eax
lea edx, [eax + 0x20]
or ecx, eax
cmp dword [edi + 0x6c], 0
je 0x486daf
mov ecx, edx
or ecx, ebx
mov eax, 0x8421085
mul ecx
lea eax, [edi + 8]
sub ecx, edx
mov dword [ebp - 4], eax
mov eax, dword [eax]
shr ecx, 1
add ecx, edx
shr ecx, 4
inc ecx
mov ebx, ecx
shl ebx, 5
sub ebx, ecx
mov ecx, dword [edi + 0x14]
mov edx, ebx
shr edx, 8
mov byte [ecx + eax], dl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov byte [ecx + eax], bl
inc dword [edi + 0x14]
cmp dword [edi + 0x6c], 0
je 0x486e34
movzx edx, word [esi + 0x32]
mov esi, dword [edi + 0x14]
mov ecx, edx
mov eax, dword [edi + 8]
shr ecx, 8
mov byte [esi + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov esi, dword [ebp - 0x18]
mov byte [ecx + eax], dl
inc dword [edi + 0x14]
movzx ebx, word [esi + 0x30]
mov edx, dword [edi + 0x14]
mov ecx, ebx
mov eax, dword [edi + 8]
shr ecx, 8
mov byte [edx + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov byte [ecx + eax], bl
inc dword [edi + 0x14]
push 0
xor edx, edx
xor ecx, ecx
call fcn.004862d0
mov dword [esi + 0x30], eax
add esp, 4
mov dword [edi + 4], 0x71
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x14], ebx
call fcn.0048cdf0
mov ebx, dword [ebx + 0x14]
mov eax, dword [esi + 0x10]
cmp ebx, eax
jbe 0x486e65
mov ebx, eax
test ebx, ebx
je 0x486e95
mov eax, dword [ebp - 0x14]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov ecx, dword [ebp - 0x14]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x486e95
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x487806
lea ebx, [edi + 8]
jmp 0x486eaa
lea ebx, [edi + 8]
mov dword [ebp - 4], ebx
cmp dword [edi + 4], 0x39
jne 0x4870f4
mov dword [esi + 0x30], 0
lea ebx, [edi + 8]
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
mov dword [ebp - 4], ebx
mov byte [ecx + eax], 0x1f
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
mov byte [ecx + eax], 0x8b
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
mov byte [ecx + eax], 8
inc dword [edi + 0x14]
mov edx, dword [edi + 0x1c]
mov ecx, dword [edi + 0x14]
test edx, edx
jne 0x486fcd
mov eax, dword [ebx]
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], dl
inc dword [edi + 0x14]
mov eax, dword [edi + 0x84]
mov edx, dword [edi + 0x14]
cmp eax, 9
jne 0x486f3d
mov cl, 2
jmp 0x486f51
cmp dword [edi + 0x88], 2
jge 0x486f4f
cmp eax, 2
jl 0x486f4f
xor cl, cl
jmp 0x486f51
mov cl, 4
mov eax, dword [ebx]
mov byte [edx + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
mov byte [ecx + eax], 0xa
inc dword [edi + 0x14]
mov dword [edi + 4], 0x71
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0xc], eax
call fcn.0048cdf0
mov ecx, dword [ebp - 0xc]
mov edx, dword [esi + 0x10]
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x14], eax
cmp eax, edx
jbe 0x486f8e
mov eax, edx
mov dword [ebp - 0x14], edx
test eax, eax
je 0x486fbe
push eax
push dword [ecx + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov eax, dword [ebp - 0x14]
add esp, 0xc
mov ecx, dword [ebp - 0xc]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0x486fbe
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x487806
jmp 0x4870f4
mov ecx, dword [edx + 0x2c]
mov eax, dword [edx + 0x10]
neg ecx
sbb cl, cl
and cl, 2
neg eax
sbb al, al
and al, 4
add cl, al
mov eax, dword [edx + 0x1c]
neg eax
sbb al, al
and al, 8
add cl, al
mov eax, dword [edx + 0x24]
neg eax
sbb al, al
and al, 0x10
add cl, al
cmp dword [edx], 0
mov edx, dword [edi + 0x14]
setne al
add cl, al
mov eax, dword [ebx]
mov byte [edx + eax], cl
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebx]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 4]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebx]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 5]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebx]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 6]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebx]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 7]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov eax, dword [edi + 0x84]
mov edx, dword [edi + 0x14]
cmp eax, 9
jne 0x487069
mov cl, 2
jmp 0x48707d
cmp dword [edi + 0x88], 2
jge 0x48707b
cmp eax, 2
jl 0x48707b
xor cl, cl
jmp 0x48707d
mov cl, 4
mov eax, dword [ebx]
mov byte [edx + eax], cl
inc dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
mov al, byte [eax + 0xc]
mov byte [edx + ecx], al
mov eax, dword [edi + 0x1c]
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
cmp dword [eax + 0x10], 0
je 0x4870c3
mov ecx, dword [ebx]
movzx eax, byte [eax + 0x14]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [eax + 0x15]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x4870e3
mov eax, dword [ebx]
test eax, eax
je 0x4870e0
mov ecx, dword [esi + 0x30]
push edx
mov edx, eax
call fcn.00486550
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 0x20], 0
mov dword [edi + 4], 0x45
mov dword [ebp - 4], ebx
mov edx, dword [edi + 4]
cmp edx, 0x45
jne 0x48726a
mov edx, dword [edi + 0x1c]
lea ecx, [edi + 0x1c]
mov dword [ebp - 8], ecx
cmp dword [edx + 0x10], 0
je 0x48725c
movzx ecx, word [edx + 0x14]
sub ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x14]
mov edx, eax
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0xc], ecx
mov ecx, dword [edi + 0xc]
mov dword [ebp - 0x14], eax
add eax, dword [ebp - 0xc]
cmp eax, ecx
jbe 0x487200
mov eax, dword [edi + 0x1c]
sub ecx, edx
push ecx
mov dword [ebp - 0x1c], ecx
mov eax, dword [eax + 0x10]
add eax, dword [edi + 0x20]
push eax
mov eax, dword [ebx]
add eax, edx
push eax
call fcn.004e0f70
mov eax, dword [edi + 0x1c]
add esp, 0xc
mov ecx, dword [edi + 0xc]
mov dword [edi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x487184
mov eax, dword [ebp - 0x14]
cmp ecx, eax
jbe 0x487184
mov edx, dword [ebx]
sub ecx, eax
add edx, eax
jne 0x487175
xor eax, eax
jmp 0x487181
push ecx
mov ecx, dword [esi + 0x30]
call fcn.00486550
add esp, 4
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 0x1c]
add dword [edi + 0x20], eax
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x14], eax
call fcn.0048cdf0
mov ecx, dword [ebp - 0x14]
mov edx, dword [esi + 0x10]
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x18], eax
cmp eax, edx
jbe 0x4871ac
mov eax, edx
mov dword [ebp - 0x18], edx
test eax, eax
je 0x4871dc
push eax
push dword [ecx + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov eax, dword [ebp - 0x18]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0x4871dc
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov edx, dword [edi + 0x14]
test edx, edx
jne 0x487806
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x1c]
mov ecx, dword [edi + 0xc]
mov dword [ebp - 0xc], eax
add eax, edx
mov dword [ebp - 0x14], edx
cmp eax, ecx
ja 0x487136
mov eax, dword [edi + 0x1c]
push dword [ebp - 0xc]
mov eax, dword [eax + 0x10]
add eax, dword [edi + 0x20]
push eax
mov eax, dword [ebx]
add eax, edx
push eax
call fcn.004e0f70
mov eax, dword [ebp - 0xc]
lea ecx, [edi + 0x1c]
add dword [edi + 0x14], eax
add esp, 0xc
mov eax, dword [ecx]
mov edx, dword [edi + 0x14]
cmp dword [eax + 0x2c], 0
je 0x487255
mov eax, dword [ebp - 0x14]
cmp edx, eax
jbe 0x487255
mov ebx, dword [ebx]
sub edx, eax
add ebx, eax
jne 0x487241
xor eax, eax
jmp 0x487252
mov ecx, dword [esi + 0x30]
push edx
mov edx, ebx
call fcn.00486550
add esp, 4
lea ecx, [edi + 0x1c]
mov dword [esi + 0x30], eax
mov dword [edi + 0x20], 0
mov eax, ecx
mov dword [edi + 4], 0x49
mov dword [ebp - 0x14], eax
jmp 0x48727e
lea eax, [edi + 0x1c]
mov dword [ebp - 0x14], eax
mov ecx, eax
mov dword [ebp - 8], ecx
cmp edx, 0x49
jne 0x487393
mov eax, dword [eax]
cmp dword [eax + 0x1c], 0
je 0x48737c
mov edx, dword [edi + 0x14]
mov ebx, edx
mov ecx, dword [ebp - 4]
mov dword [ebp - 0xc], edx
cmp ebx, dword [edi + 0xc]
jne 0x487319
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
cmp dword [eax + 0x2c], 0
je 0x4872c2
cmp ebx, edx
jbe 0x4872c2
mov eax, dword [ecx]
sub ebx, edx
add eax, edx
je 0x4872bf
mov ecx, dword [esi + 0x30]
mov edx, eax
push ebx
call fcn.00486550
add esp, 4
mov dword [esi + 0x30], eax
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
call fcn.0048cdf0
mov ebx, dword [ebx + 0x14]
mov eax, dword [esi + 0x10]
cmp ebx, eax
jbe 0x4872db
mov ebx, eax
test ebx, ebx
je 0x48730b
mov eax, dword [ebp - 0x1c]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov ecx, dword [ebp - 0x1c]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x48730b
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov ebx, dword [edi + 0x14]
test ebx, ebx
jne 0x487806
mov dword [ebp - 0xc], ebx
mov eax, dword [ebp - 0x14]
mov ecx, dword [edi + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x1c]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov ecx, dword [ebp - 4]
mov dword [edi + 0x20], eax
mov eax, dword [ecx]
mov byte [ebx + eax], dl
mov ebx, dword [edi + 0x14]
inc ebx
mov dword [edi + 0x14], ebx
test dl, dl
je 0x487348
mov edx, dword [ebp - 0xc]
jmp 0x487295
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
cmp dword [eax + 0x2c], 0
je 0x487375
mov eax, dword [ebp - 0xc]
cmp ebx, eax
jbe 0x487375
mov edx, dword [ecx]
sub ebx, eax
add edx, eax
jne 0x487366
xor eax, eax
jmp 0x487372
mov ecx, dword [esi + 0x30]
push ebx
call fcn.00486550
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 0x20], 0
mov ecx, dword [ebp - 8]
mov eax, edi
add eax, 0xc
mov dword [edi + 4], 0x5b
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x1c], eax
jmp 0x4873a5
lea eax, [edi + 0xc]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0xc], eax
cmp edx, 0x5b
jne 0x4874b1
mov eax, dword [ecx]
cmp dword [eax + 0x24], 0
je 0x4874a5
mov edx, dword [edi + 0x14]
mov ebx, edx
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x14], edx
lea esp, [esp]
mov eax, dword [ebp - 0x1c]
cmp ebx, dword [eax]
jne 0x487446
mov eax, dword [ebp - 8]
mov eax, dword [eax]
cmp dword [eax + 0x2c], 0
je 0x4873ef
cmp ebx, edx
jbe 0x4873ef
mov eax, dword [ecx]
sub ebx, edx
add eax, edx
je 0x4873ec
mov ecx, dword [esi + 0x30]
mov edx, eax
push ebx
call fcn.00486550
add esp, 4
mov dword [esi + 0x30], eax
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x18], ebx
call fcn.0048cdf0
mov ebx, dword [ebx + 0x14]
mov eax, dword [esi + 0x10]
cmp ebx, eax
jbe 0x487408
mov ebx, eax
test ebx, ebx
je 0x487438
mov eax, dword [ebp - 0x18]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov ecx, dword [ebp - 0x18]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x487438
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov ebx, dword [edi + 0x14]
test ebx, ebx
jne 0x487806
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp - 8]
mov ecx, dword [edi + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x24]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov ecx, dword [ebp - 4]
mov dword [edi + 0x20], eax
mov eax, dword [ecx]
mov byte [ebx + eax], dl
mov ebx, dword [edi + 0x14]
inc ebx
mov dword [edi + 0x14], ebx
test dl, dl
je 0x487475
mov edx, dword [ebp - 0x14]
jmp 0x4873c0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
cmp dword [eax + 0x2c], 0
je 0x4874a2
mov eax, dword [ebp - 0x14]
cmp ebx, eax
jbe 0x4874a2
mov edx, dword [ecx]
sub ebx, eax
add edx, eax
jne 0x487493
xor eax, eax
jmp 0x48749f
mov ecx, dword [esi + 0x30]
push ebx
call fcn.00486550
add esp, 4
mov dword [esi + 0x30], eax
mov ecx, dword [ebp - 8]
mov ebx, dword [ebp - 4]
mov dword [edi + 4], 0x67
jmp 0x4874ba
cmp edx, 0x67
jne 0x4875b5
mov eax, dword [ecx]
cmp dword [eax + 0x2c], 0
je 0x487552
mov edx, dword [edi + 0x14]
mov ecx, dword [ebp - 0xc]
lea eax, [edx + 2]
cmp eax, dword [ecx]
jbe 0x487530
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x18], eax
call fcn.0048cdf0
mov ecx, dword [ebp - 0x18]
mov edx, dword [esi + 0x10]
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x1c], eax
cmp eax, edx
jbe 0x4874f5
mov eax, edx
mov dword [ebp - 0x1c], edx
test eax, eax
je 0x487525
push eax
push dword [ecx + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov ecx, dword [ebp - 0x18]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0x487525
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov edx, dword [edi + 0x14]
test edx, edx
jne 0x487806
mov ecx, dword [ebx]
movzx eax, byte [esi + 0x30]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 0x31]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov dword [esi + 0x30], 0
mov dword [edi + 4], 0x71
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x18], eax
call fcn.0048cdf0
mov ecx, dword [ebp - 0x18]
mov edx, dword [esi + 0x10]
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x1c], eax
cmp eax, edx
jbe 0x48757b
mov eax, edx
mov dword [ebp - 0x1c], edx
test eax, eax
je 0x4875ab
push eax
push dword [ecx + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov ecx, dword [ebp - 0x18]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0x4875ab
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x487806
cmp dword [esi + 4], 0
mov edx, dword [ebp - 0x10]
jne 0x4875d9
cmp dword [edi + 0x74], 0
jne 0x4875d9
test edx, edx
je 0x48780d
cmp dword [edi + 4], 0x29a
je 0x4876b5
mov eax, dword [edi + 0x84]
test eax, eax
jne 0x4875ec
push edx
push edi
call fcn.00487d00
jmp 0x48761c
mov ecx, dword [edi + 0x88]
cmp ecx, 2
jne 0x487600
mov ecx, edi
call fcn.00488ea0
jmp 0x48761f
cmp ecx, 3
jne 0x48760e
mov ecx, edi
call fcn.00488b30
jmp 0x48761f
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x51d578]
push edx
push edi
call eax
add esp, 8
cmp eax, 2
je 0x487629
cmp eax, 3
jne 0x487630
mov dword [edi + 4], 0x29a
test eax, eax
je 0x487800
cmp eax, 2
je 0x487800
cmp eax, 1
jne 0x4876b2
push 0
push 0
xor edx, edx
mov ecx, edi
call fcn.0048c500
mov eax, dword [esi + 0x1c]
add esp, 8
mov ecx, eax
mov dword [ebp - 0x18], eax
call fcn.0048cdf0
mov ecx, dword [ebp - 0x18]
mov edx, dword [esi + 0x10]
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x1c], eax
cmp eax, edx
jbe 0x487678
mov eax, edx
mov dword [ebp - 0x1c], edx
test eax, eax
je 0x4876a8
push eax
push dword [ecx + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov ecx, dword [ebp - 0x18]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0x4876a8
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x10], 0
je 0x487806
mov edx, dword [ebp - 0x10]
cmp edx, 4
jne 0x48780d
mov eax, dword [edi + 0x18]
test eax, eax
jg 0x4876cf
pop ebx
pop edi
lea eax, [edx - 3]
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x48774f
mov edx, dword [edi + 0x14]
movzx eax, byte [esi + 0x30]
mov ecx, dword [ebx]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 0x31]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 0x32]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 0x33]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 8]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 9]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 0xa]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 0xb]
mov byte [edx + ecx], al
jmp 0x487799
movzx ebx, word [esi + 0x32]
mov ecx, dword [edi + 0x14]
mov edx, ebx
mov eax, dword [ebp - 4]
shr edx, 8
mov eax, dword [eax]
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebp - 4]
inc ecx
mov dword [edi + 0x14], ecx
mov eax, dword [eax]
mov byte [ecx + eax], bl
mov edx, dword [edi + 0x14]
mov eax, dword [ebp - 4]
inc edx
mov dword [edi + 0x14], edx
movzx ebx, word [esi + 0x30]
mov ecx, ebx
mov eax, dword [eax]
shr ecx, 8
mov byte [edx + eax], cl
mov eax, dword [ebp - 4]
mov ecx, dword [edi + 0x14]
inc ecx
mov dword [edi + 0x14], ecx
mov eax, dword [eax]
mov byte [ecx + eax], bl
inc dword [edi + 0x14]
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
call fcn.0048cdf0
mov eax, dword [ebx + 0x14]
mov ecx, dword [esi + 0x10]
mov dword [ebp - 0x1c], eax
cmp eax, ecx
jbe 0x4877b8
mov eax, ecx
mov dword [ebp - 0x1c], ecx
test eax, eax
je 0x4877e5
push eax
push dword [ebx + 0x10]
push dword [esi + 0xc]
call fcn.004e0f70
mov eax, dword [ebp - 0x1c]
add esp, 0xc
add dword [esi + 0xc], eax
add dword [ebx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x4877e5
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov eax, dword [edi + 0x18]
test eax, eax
jle 0x4877f1
neg eax
mov dword [edi + 0x18], eax
xor eax, eax
cmp dword [edi + 0x14], eax
pop ebx
pop edi
sete al
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x10], 0
jne 0x48780d
mov dword [edi + 0x28], 0xffffffff
pop ebx
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x18], str.stream_error
pop edi
mov eax, 0xfffffffe
pop esi
mov esp, ebp
pop ebp
ret