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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
mov esi, ecx
mov ebx, edx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x10], esi
test esi, esi
je 0x42542c
cmp dword [esi + 0x20], 0
je 0x42542c
cmp dword [esi + 0x24], 0
je 0x42542c
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x42542c
cmp dword [eax], esi
jne 0x42542c
mov eax, dword [eax + 4]
cmp eax, 0x2a
je 0x4247c2
cmp eax, 0x39
je 0x4247c2
cmp eax, 0x45
je 0x4247c2
cmp eax, 0x49
je 0x4247c2
cmp eax, 0x5b
je 0x4247c2
cmp eax, 0x67
je 0x4247c2
cmp eax, 0x71
je 0x4247c2
cmp eax, 0x29a
jne 0x42542c
cmp ebx, 5
ja 0x42542c
cmp dword [esi + 0xc], 0
push edi
mov edi, dword [esi + 0x1c]
je 0x425419
cmp dword [esi + 4], 0
je 0x4247e8
cmp dword [esi], 0
je 0x425419
cmp dword [edi + 4], 0x29a
jne 0x4247fa
cmp ebx, 4
jne 0x425419
cmp dword [esi + 0x10], 0
je 0x4248aa
cmp dword [edi + 0x14], 0
mov edx, dword [edi + 0x28]
mov dword [edi + 0x28], ebx
je 0x424864
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x14], ebx
call fcn.00427b30
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x424858
mov eax, dword [ebp - 0x14]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
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 0x424858
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x10], 0
je 0x425409
jmp 0x424896
cmp dword [esi + 4], 0
jne 0x424896
xor eax, eax
mov ecx, 9
cmp edx, 4
cmovg eax, ecx
add edx, edx
sub edx, eax
xor ecx, ecx
cmp ebx, 4
mov eax, 9
cmovg ecx, eax
lea eax, [ebx + ebx]
sub eax, ecx
cmp eax, edx
jg 0x424896
cmp ebx, 4
jne 0x4248aa
mov eax, dword [edi + 4]
cmp eax, 0x29a
jne 0x4248bd
cmp dword [esi + 4], 0
je 0x424a21
pop edi
mov dword [esi + 0x18], str.buffer_error
mov eax, 0xfffffffb
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 0x2a
jne 0x424a21
cmp dword [edi + 0x18], 0
jne 0x4248d8
mov dword [edi + 4], 0x71
jmp 0x424a21
mov ecx, dword [edi + 0x30]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [edi + 0x88], 2
mov ebx, ecx
jge 0x42491f
mov eax, dword [edi + 0x84]
cmp eax, 2
jl 0x42491f
cmp eax, 6
jge 0x424909
mov eax, 0x40
lea edx, [eax + 0x20]
jmp 0x424924
jne 0x424915
mov eax, 0x80
lea edx, [eax + 0x20]
jmp 0x424924
mov eax, 0xc0
lea edx, [eax + 0x20]
jmp 0x424924
xor eax, eax
lea edx, [eax + 0x20]
or ecx, eax
cmp dword [edi + 0x6c], 0
je 0x424930
mov ecx, ebx
or ecx, edx
mov eax, 0x8421085
mul ecx
mov eax, dword [edi + 8]
sub ecx, edx
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
mov eax, dword [edi + 0x14]
inc eax
cmp dword [edi + 0x6c], 0
mov dword [ebp - 0x1c], eax
mov dword [edi + 0x14], eax
je 0x4249b7
movzx edx, word [esi + 0x32]
mov eax, dword [edi + 8]
mov ecx, edx
mov esi, dword [ebp - 0x1c]
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 - 0x10]
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.004230e0
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.00427b30
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x424a17
mov eax, dword [ebp - 0x14]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
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 0x424a17
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x425409
cmp dword [edi + 4], 0x39
lea ebx, [edi + 8]
mov dword [ebp - 4], ebx
jne 0x424cb5
push 0
xor edx, edx
xor ecx, ecx
call fcn.00423cb0
mov dword [esi + 0x30], eax
lea edx, [edi + 8]
mov ecx, dword [edi + 0x14]
add esp, 4
mov eax, dword [edx]
mov dword [ebp - 4], edx
mov byte [ecx + eax], 0x1f
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
mov byte [ecx + eax], 0x8b
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
mov byte [ecx + eax], 8
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
mov dword [edi + 0x14], ecx
test eax, eax
jne 0x424b62
mov eax, dword [edx]
mov byte [ecx + eax], 0
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], 0
mov eax, dword [edi + 0x14]
inc eax
mov dword [ebp - 0x1c], eax
mov dword [edi + 0x14], eax
mov eax, dword [edi + 0x84]
cmp eax, 9
jne 0x424ad1
mov cl, 2
jmp 0x424ae5
cmp dword [edi + 0x88], 2
jge 0x424ae3
cmp eax, 2
jl 0x424ae3
xor cl, cl
jmp 0x424ae5
mov cl, 4
mov eax, dword [edx]
mov esi, dword [ebp - 0x1c]
mov byte [esi + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
mov esi, dword [ebp - 0x10]
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 - 0x14], eax
call fcn.00427b30
mov edx, dword [ebp - 0x14]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x1c], ecx
test ecx, ecx
je 0x424b53
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
mov eax, dword [ebp - 0x1c]
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 0x424b53
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x425409
jmp 0x424cb5
mov ecx, dword [eax + 0x24]
mov eax, dword [eax + 0x2c]
neg ecx
sbb cl, cl
and cl, 0x10
neg eax
sbb al, al
and al, 2
add cl, al
mov eax, dword [edi + 0x1c]
mov eax, dword [eax + 0x1c]
neg eax
sbb al, al
and al, 8
add cl, al
mov eax, dword [edi + 0x1c]
mov eax, dword [eax + 0x10]
neg eax
sbb al, al
and al, 4
add cl, al
mov eax, dword [edi + 0x1c]
cmp dword [eax], 0
setne al
add cl, al
mov eax, dword [edx]
mov edx, dword [ebp - 0x1c]
mov byte [edx + eax], cl
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebp - 4]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 4]
mov ecx, dword [ecx]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebp - 4]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 5]
mov ecx, dword [ecx]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebp - 4]
inc edx
mov eax, dword [edi + 0x1c]
mov dword [edi + 0x14], edx
mov ecx, dword [ecx]
movzx eax, byte [eax + 6]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebp - 4]
inc edx
mov eax, dword [edi + 0x1c]
mov dword [edi + 0x14], edx
mov ecx, dword [ecx]
movzx eax, byte [eax + 7]
mov byte [edx + ecx], al
mov eax, dword [edi + 0x14]
inc eax
mov dword [ebp - 0x1c], eax
mov dword [edi + 0x14], eax
mov eax, dword [edi + 0x84]
cmp eax, 9
jne 0x424c17
mov dl, 2
jmp 0x424c2b
cmp dword [edi + 0x88], 2
jge 0x424c29
cmp eax, 2
jl 0x424c29
xor dl, dl
jmp 0x424c2b
mov dl, 4
mov ecx, dword [ebp - 4]
mov esi, dword [ebp - 0x1c]
mov eax, dword [ecx]
mov byte [esi + eax], dl
inc dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x14]
mov ecx, dword [ecx]
mov esi, dword [ebp - 0x10]
mov al, byte [eax + 0xc]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov dword [edi + 0x14], edx
cmp dword [eax + 0x10], 0
je 0x424c84
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
mov eax, dword [edi + 0x1c]
movzx eax, byte [eax + 0x14]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov ecx, dword [ebp - 4]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x14]
mov ecx, dword [ecx]
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 0x424ca1
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 0x30]
push edx
mov edx, dword [eax]
call fcn.00423cb0
add esp, 4
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 4]
mov dword [edi + 0x20], 0
mov dword [edi + 4], 0x45
mov dword [ebp - 4], eax
mov ecx, dword [edi + 4]
lea edx, [edi + 0x1c]
mov dword [ebp - 8], edx
cmp ecx, 0x45
jne 0x424e30
mov eax, dword [edx]
cmp dword [eax + 0x10], 0
je 0x424e27
movzx eax, word [eax + 0x14]
sub eax, dword [edi + 0x20]
mov ecx, dword [edi + 0x14]
mov ebx, dword [edi + 0xc]
mov dword [ebp - 0x10], eax
add eax, ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], ecx
cmp eax, ebx
jbe 0x424dcf
mov eax, ecx
lea ecx, [edi + 8]
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], ecx
jmp 0x424d05
mov ecx, dword [ebp - 4]
xor eax, eax
sub ebx, eax
mov eax, dword [edx]
push ebx
mov dword [ebp - 0x20], ebx
mov eax, dword [eax + 0x10]
add eax, dword [edi + 0x20]
push eax
mov eax, dword [ecx]
add eax, dword [ebp - 0x18]
push eax
call fcn.004faeb0
mov eax, dword [edi + 0x1c]
add esp, 0xc
mov ecx, dword [edi + 0xc]
mov dword [edi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x424d50
mov eax, dword [ebp - 0x14]
cmp ecx, eax
jbe 0x424d50
sub ecx, eax
push ecx
mov ecx, dword [ebp - 4]
mov edx, dword [ecx]
mov ecx, dword [esi + 0x30]
add edx, eax
call fcn.00423cb0
add esp, 4
mov dword [esi + 0x30], eax
add dword [edi + 0x20], ebx
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x14], ebx
call fcn.00427b30
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x424d9b
mov eax, dword [ebp - 0x14]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
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 0x424d9b
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x1c], eax
test eax, eax
jne 0x425409
mov ebx, dword [edi + 0xc]
lea edx, [edi + 0x1c]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x18], 0
cmp eax, ebx
ja 0x424d00
lea edx, [edi + 0x1c]
jmp 0x424dd2
mov eax, dword [ebp - 0x10]
mov ebx, dword [ebp - 4]
push eax
mov eax, dword [edx]
mov eax, dword [eax + 0x10]
add eax, dword [edi + 0x20]
push eax
mov eax, dword [ebx]
add eax, dword [ebp - 0x1c]
push eax
call fcn.004faeb0
mov ecx, dword [ebp - 0x10]
lea edx, [edi + 0x1c]
mov eax, dword [edx]
add esp, 0xc
add ecx, dword [edi + 0x14]
mov dword [edi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x424e20
mov eax, dword [ebp - 0x14]
cmp ecx, eax
jbe 0x424e20
mov edx, dword [ebx]
sub ecx, eax
push ecx
mov ecx, dword [esi + 0x30]
add edx, eax
call fcn.00423cb0
add esp, 4
mov dword [esi + 0x30], eax
lea edx, [edi + 0x1c]
mov dword [edi + 0x20], 0
mov dword [edi + 4], 0x49
jmp 0x424e39
cmp ecx, 0x49
jne 0x424f45
mov eax, dword [edx]
cmp dword [eax + 0x1c], 0
je 0x424f34
mov eax, dword [edi + 0x14]
lea ecx, [edi + 8]
mov dword [ebp - 0x14], eax
mov ebx, eax
cmp ebx, dword [edi + 0xc]
jne 0x424edb
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x424e7d
mov eax, dword [ebp - 0x14]
cmp ebx, eax
jbe 0x424e7d
mov edx, dword [ecx]
sub ebx, eax
mov ecx, dword [esi + 0x30]
add edx, eax
push ebx
call fcn.00423cb0
add esp, 4
mov dword [esi + 0x30], eax
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
call fcn.00427b30
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x424ec5
mov eax, dword [ebp - 0x1c]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
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 0x424ec5
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x425409
mov edx, dword [ebp - 8]
xor ebx, ebx
mov dword [ebp - 0x14], 0
mov eax, dword [edx]
mov ecx, dword [edi + 0x20]
mov eax, dword [eax + 0x1c]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [edi + 0x20], eax
lea ecx, [edi + 8]
mov eax, dword [ecx]
mov byte [ebx + eax], dl
mov ebx, dword [edi + 0x14]
inc ebx
test dl, dl
mov edx, dword [ebp - 8]
mov dword [edi + 0x14], ebx
jne 0x424e50
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x424f2d
mov eax, dword [ebp - 0x14]
cmp ebx, eax
jbe 0x424f2d
mov edx, dword [ecx]
sub ebx, eax
mov ecx, dword [esi + 0x30]
add edx, eax
push ebx
call fcn.00423cb0
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 0x20], 0
mov eax, edi
mov dword [edi + 4], 0x5b
add eax, 0xc
mov dword [ebp - 0x10], eax
jmp 0x424f54
lea eax, [edi + 0xc]
mov dword [ebp - 0x10], eax
cmp ecx, 0x5b
jne 0x42505c
mov eax, dword [edx]
cmp dword [eax + 0x24], 0
je 0x425050
mov ecx, dword [edi + 0x14]
mov ebx, ecx
mov dword [ebp - 0x14], ecx
nop dword [eax + eax]
mov eax, dword [ebp - 0x10]
cmp ebx, dword [eax]
jne 0x424ffb
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x424f9d
cmp ebx, ecx
jbe 0x424f9d
mov edx, dword [edi + 8]
sub ebx, ecx
add edx, ecx
mov ecx, dword [esi + 0x30]
push ebx
call fcn.00423cb0
add esp, 4
mov dword [esi + 0x30], eax
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
call fcn.00427b30
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x424fe5
mov eax, dword [ebp - 0x1c]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
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 0x424fe5
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x425409
mov edx, dword [ebp - 8]
xor ebx, ebx
mov dword [ebp - 0x14], 0
mov eax, dword [edx]
mov ecx, dword [edi + 0x20]
mov eax, dword [eax + 0x24]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [edi + 0x20], eax
mov eax, dword [edi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [edi + 0x14]
inc ebx
test dl, dl
mov edx, dword [ebp - 8]
mov dword [edi + 0x14], ebx
je 0x425028
mov ecx, dword [ebp - 0x14]
jmp 0x424f70
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x425050
mov eax, dword [ebp - 0x14]
cmp ebx, eax
jbe 0x425050
mov edx, dword [edi + 8]
sub ebx, eax
mov ecx, dword [esi + 0x30]
add edx, eax
push ebx
call fcn.00423cb0
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 4], 0x67
lea ebx, [edi + 8]
jmp 0x425065
cmp ecx, 0x67
jne 0x425160
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x425102
mov edx, dword [edi + 0x14]
mov ecx, dword [ebp - 0x10]
lea eax, [edx + 2]
cmp eax, dword [ecx]
jbe 0x4250d6
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x1c], eax
call fcn.00427b30
mov edx, dword [ebp - 0x1c]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x20], ecx
test ecx, ecx
je 0x4250cb
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
mov eax, dword [ebp - 0x20]
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
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 0x4250cb
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov edx, dword [edi + 0x14]
test edx, edx
jne 0x425409
mov ecx, dword [ebx]
movzx eax, byte [esi + 0x30]
push 0
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
xor edx, edx
inc dword [edi + 0x14]
xor ecx, ecx
call fcn.00423cb0
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 4], 0x71
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x1c], eax
call fcn.00427b30
mov edx, dword [ebp - 0x1c]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x20], ecx
test ecx, ecx
je 0x425156
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
mov eax, dword [ebp - 0x20]
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
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 0x425156
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x425409
cmp dword [esi + 4], 0
mov edx, dword [ebp - 0xc]
jne 0x425184
cmp dword [edi + 0x74], 0
jne 0x425184
test edx, edx
je 0x425410
cmp dword [edi + 4], 0x29a
je 0x4252bd
mov eax, dword [edi + 0x84]
test eax, eax
jne 0x425197
push edx
push edi
call fcn.004256c0
jmp 0x4251c7
mov ecx, dword [edi + 0x88]
cmp ecx, 2
jne 0x4251ab
mov ecx, edi
call fcn.00426900
jmp 0x4251ca
cmp ecx, 3
jne 0x4251b9
mov ecx, edi
call fcn.00426580
jmp 0x4251ca
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x585b20]
push edx
push edi
call eax
add esp, 8
cmp eax, 2
je 0x4251d4
cmp eax, 3
jne 0x4251db
mov dword [edi + 4], 0x29a
test eax, eax
je 0x425403
cmp eax, 2
je 0x425403
cmp eax, 1
jne 0x4252ba
mov eax, dword [ebp - 0xc]
cmp eax, 1
jne 0x425206
mov ecx, edi
call fcn.00427bb0
jmp 0x425263
cmp eax, 5
je 0x425263
push 0
push 0
xor edx, edx
mov ecx, edi
call fcn.004279f0
add esp, 8
cmp dword [ebp - 0xc], 3
jne 0x425263
mov eax, dword [edi + 0x44]
xor edx, edx
mov ecx, dword [edi + 0x4c]
mov word [eax + ecx*2 - 2], dx
mov eax, dword [edi + 0x4c]
lea eax, [eax*2 - 2]
push eax
push edx
push dword [edi + 0x44]
call fcn.004fb430
add esp, 0xc
cmp dword [edi + 0x74], 0
jne 0x425263
mov dword [edi + 0x6c], 0
mov dword [edi + 0x5c], 0
mov dword [edi + 0x16b4], 0
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x1c], eax
call fcn.00427b30
mov edx, dword [ebp - 0x1c]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x20], ecx
test ecx, ecx
je 0x4252b0
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
mov eax, dword [ebp - 0x20]
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
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 0x4252b0
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x10], 0
je 0x425409
mov edx, dword [ebp - 0xc]
cmp edx, 4
jne 0x425410
mov eax, dword [edi + 0x18]
test eax, eax
jg 0x4252d7
pop edi
pop esi
lea eax, [edx - 3]
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x42535b
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 0x42539d
movzx ebx, word [esi + 0x32]
mov ecx, dword [edi + 0x14]
mov edx, ebx
mov eax, dword [edi + 8]
shr edx, 8
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], bl
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 8]
inc edx
mov dword [edi + 0x14], edx
movzx ebx, word [esi + 0x30]
mov ecx, ebx
shr ecx, 8
mov byte [edx + eax], cl
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], bl
inc dword [edi + 0x14]
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
call fcn.00427b30
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x4253e8
mov eax, dword [ebp - 0x1c]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.004faeb0
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 0x4253e8
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 0x18]
test eax, eax
jle 0x4253f4
neg eax
mov dword [edi + 0x18], eax
xor eax, eax
cmp dword [edi + 0x14], eax
pop edi
pop esi
sete al
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x10], 0
jne 0x425410
mov dword [edi + 0x28], 0xffffffff
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
mov dword [esi + 0x18], str.stream_error
mov eax, 0xfffffffe
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop esi
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret