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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x7c
mov eax, dword [ebp + 8]
call fcn.00585bc0
mov dword [ebp - 0x50], eax
test eax, eax
jne case.default.0x58427d
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x40], eax
test eax, eax
je case.default.0x58427d
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 8]
cmp dword [ebp - 0x38], 0
mov eax, dword [eax + 4]
mov dword [ebp - 0x54], eax
jne 0x584234
test eax, eax
jne case.default.0x58427d
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x1c]
cmp dword [ebx + 4], 0x3f3f
jne 0x58424a
mov dword [ebx + 4], 0x3f40
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebx + 0x3c]
mov dword [ebp - 0x30], eax
mov eax, dword [ebx + 0x40]
mov dword [ebp - 0x2c], eax
xor eax, eax
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x34], eax
mov eax, dword [ebx + 4]
sub eax, 0x3f34
cmp eax, 0x1e
ja case.default.0x58427d
jmp dword [eax*4 + 0x6d5a54]
mov dword [ebp - 0x44], 0xfffffffd
jmp 0x58548b
mov dword [ebp - 0x44], 0xfffffffe
jmp 0x5855b5
mov eax, dword [ebx + 0xc]
test eax, eax
jne 0x5842cf
mov dword [ebx + 4], 0x3f40
jmp 0x584270
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov esi, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx edx, byte [esi - 1]
add dword [ebp - 0x2c], 8
shl edx, cl
add dword [ebp - 0x30], edx
cmp dword [ebp - 0x2c], 0xf
jbe 0x5842ac
test al, 2
je 0x584330
cmp dword [ebp - 0x30], 0x8b1f
jne 0x584330
cmp dword [ebx + 0x28], 0
jne 0x5842ef
mov dword [ebx + 0x28], 0xf
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 4], eax
mov dword [esp], eax
call fcn.00577f54
lea edx, [ebp - 0x1c]
mov word [ebp - 0x1c], 0x8b1f
mov dword [ebx + 0x1c], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00577f54
mov dword [ebx + 4], 0x3f35
mov dword [ebx + 0x1c], eax
jmp 0x584402
mov edx, dword [ebx + 0x24]
test edx, edx
je 0x58433e
mov dword [edx + 0x30], 0xffffffff
test al, 1
je 0x584360
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x30]
mov ecx, 0x1f
shl eax, 8
shr edx, 8
movzx eax, ax
add eax, edx
xor edx, edx
div ecx
test edx, edx
je 0x584376
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [ebx + 4], 0x3f51
jmp 0x584270
mov eax, dword [ebp - 0x30]
and eax, 0xf
cmp eax, 8
je 0x58438d
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.unknown_compression_method
jmp 0x58436a
shr dword [ebp - 0x30], 4
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebx + 0x28]
sub dword [ebp - 0x2c], 4
and ecx, 0xf
add ecx, 8
test eax, eax
jne 0x5843b9
mov dword [ebx + 0x28], ecx
cmp ecx, 0xf
jbe 0x5843c2
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_window_size
jmp 0x58436a
cmp ecx, 0xf
ja 0x5843ad
cmp eax, ecx
jb 0x5843ad
mov eax, 1
shl eax, cl
mov dword [ebx + 0x18], eax
xor eax, eax
mov dword [ebx + 0x14], eax
mov dword [esp + 8], eax
mov dword [esp + 4], eax
mov dword [esp], eax
call fcn.0057693c
mov edi, dword [ebp + 8]
mov dword [ebx + 0x1c], eax
mov dword [edi + 0x30], eax
mov eax, dword [ebp - 0x30]
and eax, 0x200
cmp eax, 1
sbb eax, eax
and eax, 2
add eax, 0x3f3d
mov dword [ebx + 4], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], eax
jmp 0x584270
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
cmp dword [ebp - 0x2c], 0xf
jbe 0x58440f
mov eax, dword [ebp - 0x30]
cmp byte [ebp - 0x30], 8
mov dword [ebx + 0x14], eax
mov eax, str.unknown_compression_method
je 0x584454
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], eax
jmp 0x58436a
mov eax, str.unknown_header_flags_set
test dword [ebp - 0x30], 0xe000
jne 0x584449
mov edx, dword [ebx + 0x24]
test edx, edx
je 0x584474
mov eax, dword [ebp - 0x30]
shr eax, 8
and eax, 1
mov dword [edx], eax
bt dword [ebp - 0x30], 9
jae 0x5844a5
test byte [ebx + 0xc], 4
je 0x5844a5
mov eax, dword [ebp - 0x30]
mov word [ebp - 0x1c], ax
lea eax, [ebp - 0x1c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call fcn.00577f54
mov dword [ebx + 0x1c], eax
xor eax, eax
mov dword [ebx + 4], 0x3f36
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], eax
jmp case.0x58427d.16182
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
cmp dword [ebp - 0x2c], 0x1f
jbe 0x5844b6
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x5844ec
mov edi, dword [ebp - 0x30]
mov dword [eax + 4], edi
test byte [ebx + 0x15], 2
je 0x58451b
test byte [ebx + 0xc], 4
je 0x58451b
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1c]
mov dword [esp + 8], 4
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call fcn.00577f54
mov dword [ebx + 0x1c], eax
xor edi, edi
mov dword [ebx + 4], 0x3f37
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x30], edi
jmp case.0x58427d.16183
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
cmp dword [ebp - 0x2c], 0xf
jbe 0x58452c
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x58456c
movzx edx, byte [ebp - 0x30]
mov dword [eax + 8], edx
mov edx, dword [ebp - 0x30]
shr edx, 8
mov dword [eax + 0xc], edx
test byte [ebx + 0x15], 2
je 0x58459c
test byte [ebx + 0xc], 4
je 0x58459c
mov eax, dword [ebp - 0x30]
mov word [ebp - 0x1c], ax
lea eax, [ebp - 0x1c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call fcn.00577f54
mov dword [ebx + 0x1c], eax
xor esi, esi
mov dword [ebx + 4], 0x3f38
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x30], esi
mov edx, dword [ebx + 0x14]
bt edx, 0xa
jae 0x58462e
cmp dword [ebp - 0x2c], 0xf
ja 0x5845df
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x5845b4
mov eax, dword [ebp - 0x30]
mov dword [ebx + 0x44], eax
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x5845f2
mov esi, dword [ebp - 0x30]
mov dword [eax + 0x14], esi
bt edx, 9
jb 0x584602
xor ecx, ecx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x30], ecx
jmp 0x58463a
test byte [ebx + 0xc], 4
je 0x5845f8
mov eax, dword [ebp - 0x30]
mov word [ebp - 0x1c], ax
lea eax, [ebp - 0x1c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call fcn.00577f54
mov dword [ebx + 0x1c], eax
jmp 0x5845f8
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x58463a
xor edx, edx
mov dword [eax + 0x10], edx
mov dword [ebx + 4], 0x3f39
test byte [ebx + 0x15], 4
je 0x5846e2
mov edx, dword [ebx + 0x44]
mov esi, dword [ebp - 0x34]
cmp dword [ebp - 0x34], edx
cmova esi, edx
test esi, esi
je 0x5846d8
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x5846aa
mov edi, dword [eax + 0x10]
mov dword [ebp - 0x4c], edi
test edi, edi
je 0x5846aa
mov edi, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x58], edi
sub edi, edx
cmp edi, eax
jae 0x5846aa
lea ecx, [esi + edi]
mov dword [ebp - 0x5c], esi
cmp eax, ecx
jae 0x58468f
add eax, edx
mov edx, dword [ebp - 0x58]
sub eax, edx
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x5c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x38]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x4c]
add eax, edi
mov dword [esp], eax
call fcn.0058fd94
test byte [ebx + 0x15], 2
je 0x5846cf
test byte [ebx + 0xc], 4
je 0x5846cf
mov dword [esp + 8], esi
mov eax, dword [ebp - 0x38]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call fcn.00577f54
mov dword [ebx + 0x1c], eax
sub dword [ebp - 0x34], esi
add dword [ebp - 0x38], esi
sub dword [ebx + 0x44], esi
cmp dword [ebx + 0x44], 0
jne 0x58548b
xor eax, eax
mov dword [ebx + 4], 0x3f3a
mov dword [ebx + 0x44], eax
test byte [ebx + 0x15], 8
je 0x58476c
cmp dword [ebp - 0x34], 0
je 0x58548b
xor esi, esi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebx + 0x24]
inc esi
mov dl, byte [eax + esi - 1]
test ecx, ecx
je 0x584727
mov edi, dword [ecx + 0x1c]
test edi, edi
je 0x584727
mov eax, dword [ebx + 0x44]
cmp eax, dword [ecx + 0x20]
jae 0x584727
lea ecx, [eax + 1]
mov dword [ebx + 0x44], ecx
mov byte [edi + eax], dl
test dl, dl
je 0x584732
mov eax, dword [ebp - 0x34]
cmp esi, eax
jb 0x584700
test byte [ebx + 0x15], 2
je 0x58475d
test byte [ebx + 0xc], 4
je 0x58475d
mov byte [ebp - 0x4c], dl
mov dword [esp + 8], esi
mov eax, dword [ebp - 0x38]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call fcn.00577f54
mov dl, byte [ebp - 0x4c]
mov dword [ebx + 0x1c], eax
sub dword [ebp - 0x34], esi
add dword [ebp - 0x38], esi
test dl, dl
je 0x584778
jmp 0x58548b
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x584778
xor edi, edi
mov dword [eax + 0x1c], edi
xor esi, esi
mov dword [ebx + 4], 0x3f3b
mov dword [ebx + 0x44], esi
test byte [ebx + 0x15], 0x10
je 0x584802
cmp dword [ebp - 0x34], 0
je 0x58548b
xor esi, esi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebx + 0x24]
inc esi
mov dl, byte [eax + esi - 1]
test ecx, ecx
je 0x5847bd
mov edi, dword [ecx + 0x24]
test edi, edi
je 0x5847bd
mov eax, dword [ebx + 0x44]
cmp eax, dword [ecx + 0x28]
jae 0x5847bd
lea ecx, [eax + 1]
mov dword [ebx + 0x44], ecx
mov byte [edi + eax], dl
test dl, dl
je 0x5847c8
mov eax, dword [ebp - 0x34]
cmp esi, eax
jb 0x584796
test byte [ebx + 0x15], 2
je 0x5847f3
test byte [ebx + 0xc], 4
je 0x5847f3
mov byte [ebp - 0x4c], dl
mov dword [esp + 8], esi
mov eax, dword [ebp - 0x38]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call fcn.00577f54
mov dl, byte [ebp - 0x4c]
mov dword [ebx + 0x1c], eax
sub dword [ebp - 0x34], esi
add dword [ebp - 0x38], esi
test dl, dl
je 0x58480e
jmp 0x58548b
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x58480e
xor ecx, ecx
mov dword [eax + 0x24], ecx
mov dword [ebx + 4], 0x3f3c
mov eax, dword [ebx + 0x14]
bt eax, 9
jae 0x584871
cmp dword [ebp - 0x2c], 0xf
ja 0x584849
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov esi, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx edx, byte [esi - 1]
add dword [ebp - 0x2c], 8
shl edx, cl
add dword [ebp - 0x30], edx
jmp 0x58481e
test byte [ebx + 0xc], 4
je 0x584869
movzx edx, word [ebx + 0x1c]
mov esi, dword [ebp - 0x30]
cmp edx, esi
je 0x584869
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.header_crc_mismatch
jmp 0x58436a
xor edx, edx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], edx
mov edx, dword [ebx + 0x24]
test edx, edx
je 0x584888
sar eax, 9
mov dword [edx + 0x30], 1
and eax, 1
mov dword [edx + 0x2c], eax
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 4], eax
mov dword [esp], eax
call fcn.00577f54
mov edi, dword [ebp + 8]
mov dword [ebx + 0x1c], eax
mov dword [edi + 0x30], eax
jmp 0x584aee
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
cmp dword [ebp - 0x2c], 0x1f
jbe 0x5848a8
mov eax, dword [ebp - 0x30]
mov esi, dword [ebp + 8]
bswap eax
mov dword [ebx + 0x1c], eax
mov dword [esi + 0x30], eax
xor eax, eax
mov dword [ebx + 4], 0x3f3e
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], eax
cmp dword [ebx + 0x10], 0
jne 0x584926
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x44], 2
mov esi, dword [ebp - 0x3c]
mov dword [eax + 0xc], edi
mov edi, dword [ebp - 0x38]
mov dword [eax + 0x10], esi
mov esi, dword [ebp - 0x34]
mov dword [eax], edi
mov dword [eax + 4], esi
mov eax, dword [ebp - 0x30]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 0x40], eax
jmp 0x5855b5
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 4], eax
mov dword [esp], eax
call fcn.0057693c
mov edi, dword [ebp + 8]
mov dword [ebx + 0x1c], eax
mov dword [edi + 0x30], eax
mov dword [ebx + 4], 0x3f3f
mov eax, dword [ebp + 0xc]
sub eax, 5
cmp eax, 1
jbe 0x58548b
cmp dword [ebx + 8], 0
je 0x584999
mov ecx, dword [ebp - 0x2c]
mov dword [ebx + 4], 0x3f4e
and dword [ebp - 0x2c], 0xfffffff8
and ecx, 7
shr dword [ebp - 0x30], cl
jmp 0x584270
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
cmp dword [ebp - 0x2c], 2
jbe 0x584976
mov eax, dword [ebp - 0x30]
and eax, 1
mov dword [ebx + 8], eax
mov eax, dword [ebp - 0x30]
shr eax, 1
and eax, 3
cmp eax, 2
je 0x5849fc
cmp eax, 3
je 0x584a05
dec eax
je 0x5849c6
mov dword [ebx + 4], 0x3f41
jmp 0x584a16
cmp dword [ebp + 0xc], 6
mov dword [ebx + 0x50], 0x6d8080
mov dword [ebx + 0x58], 9
mov dword [ebx + 0x54], 0x6d7300
mov dword [ebx + 0x5c], 5
mov dword [ebx + 4], 0x3f47
jne 0x584a16
sub dword [ebp - 0x2c], 3
shr dword [ebp - 0x30], 3
jmp 0x58548b
mov dword [ebx + 4], 0x3f44
jmp 0x584a16
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_block_type
mov dword [ebx + 4], 0x3f51
sub dword [ebp - 0x2c], 3
shr dword [ebp - 0x30], 3
jmp 0x584270
mov ecx, dword [ebp - 0x2c]
and dword [ebp - 0x2c], 0xfffffff8
and ecx, 7
shr dword [ebp - 0x30], cl
cmp dword [ebp - 0x2c], 0x1f
ja 0x584a5b
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x584a30
mov eax, dword [ebp - 0x30]
movzx edx, word [ebp - 0x30]
shr eax, 0x10
xor eax, 0xffff
cmp edx, eax
je 0x584a7d
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
jmp 0x58436a
cmp dword [ebp + 0xc], 6
mov dword [ebx + 0x44], edx
mov dword [ebx + 4], 0x3f42
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x30], 0
je 0x58548b
mov dword [ebx + 4], 0x3f43
mov esi, dword [ebx + 0x44]
test esi, esi
je 0x584aee
mov eax, dword [ebp - 0x34]
cmp dword [ebp - 0x3c], esi
cmovbe esi, dword [ebp - 0x3c]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x58548b
mov dword [esp + 8], esi
mov eax, dword [ebp - 0x38]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call fcn.0058fd94
sub dword [ebp - 0x34], esi
add dword [ebp - 0x38], esi
sub dword [ebp - 0x3c], esi
add dword [ebp - 0x40], esi
sub dword [ebx + 0x44], esi
jmp 0x584270
mov dword [ebx + 4], 0x3f3f
jmp 0x584270
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
cmp dword [ebp - 0x2c], 0xd
jbe 0x584afa
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x30]
sub dword [ebp - 0x2c], 0xe
shr eax, 5
shr edx, 0xa
and ecx, 0x1f
and eax, 0x1f
and edx, 0xf
shr dword [ebp - 0x30], 0xe
add ecx, 0x101
inc eax
add edx, 4
mov dword [ebx + 0x64], ecx
mov dword [ebx + 0x68], eax
mov dword [ebx + 0x60], edx
cmp eax, 0x1e
ja 0x584b63
cmp ecx, 0x11e
jbe 0x584b72
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
jmp 0x58436a
xor eax, eax
mov dword [ebx + 4], 0x3f45
mov dword [ebx + 0x6c], eax
mov esi, dword [ebx + 0x60]
mov eax, dword [ebx + 0x6c]
cmp eax, esi
jae 0x584bd6
cmp dword [ebp - 0x2c], 2
ja 0x584bb3
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov edi, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx edx, byte [edi - 1]
add dword [ebp - 0x2c], 8
shl edx, cl
add dword [ebp - 0x30], edx
jmp 0x584b88
lea edx, [eax + 1]
movzx eax, word [eax + eax + 0x6d88c0]
sub dword [ebp - 0x2c], 3
mov dword [ebx + 0x6c], edx
mov edx, dword [ebp - 0x30]
shr dword [ebp - 0x30], 3
and edx, 7
mov word [ebx + eax*2 + 0x74], dx
jmp 0x584b81
mov eax, dword [ebx + 0x6c]
cmp eax, 0x12
ja 0x584bf5
lea edx, [eax + 1]
movzx eax, word [eax + eax + 0x6d88c0]
mov dword [ebx + 0x6c], edx
mov word [ebx + eax*2 + 0x74], 0
jmp 0x584bd6
lea eax, [ebx + 0x534]
mov dword [ebx + 0x58], 7
xor edi, edi
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x50], eax
lea eax, [ebx + 0x2f4]
mov dword [esp + 0x14], eax
lea eax, [ebx + 0x58]
mov dword [esp + 0x10], eax
lea eax, [ebx + 0x70]
mov dword [esp + 0xc], eax
lea eax, [ebx + 0x74]
mov dword [esp + 8], 0x13
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00586208
mov dword [ebp - 0x44], eax
test eax, eax
je 0x584c4f
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_code_lengths_set
jmp 0x58436a
xor esi, esi
mov dword [ebx + 4], 0x3f46
mov dword [ebx + 0x6c], esi
mov eax, dword [ebx + 0x64]
mov dword [ebp - 0x58], eax
add eax, dword [ebx + 0x68]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebx + 0x6c]
mov edi, dword [ebp - 0x5c]
mov dword [ebp - 0x4c], eax
cmp eax, edi
jae 0x584e28
mov ecx, dword [ebx + 0x58]
or eax, 0xffffffff
mov edi, dword [ebx + 0x50]
shl eax, cl
not eax
mov dword [ebp - 0x60], eax
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x60]
and eax, esi
lea eax, [edi + eax*4]
mov dl, byte [eax + 1]
mov si, word [eax + 2]
movzx eax, dl
cmp dword [ebp - 0x2c], eax
jae 0x584cc7
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x584c88
cmp si, 0xf
ja 0x584ce6
sub dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x4c]
mov ecx, edx
shr dword [ebp - 0x30], cl
inc eax
mov dword [ebx + 0x6c], eax
mov eax, dword [ebp - 0x4c]
mov word [ebx + eax*2 + 0x74], si
jmp 0x584c67
lea edi, [eax + 2]
cmp si, 0x10
jne 0x584d49
cmp dword [ebp - 0x2c], edi
jae 0x584d19
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov esi, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx esi, byte [esi - 1]
add dword [ebp - 0x2c], 8
shl esi, cl
add dword [ebp - 0x30], esi
jmp 0x584cef
sub dword [ebp - 0x2c], eax
mov ecx, edx
shr dword [ebp - 0x30], cl
cmp dword [ebp - 0x4c], 0
je 0x584e00
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x4c]
shr dword [ebp - 0x30], 2
sub dword [ebp - 0x2c], 2
and edx, 3
movzx eax, word [ebx + eax*2 + 0x72]
add edx, 3
jmp 0x584dec
lea edi, [eax + 3]
cmp si, 0x11
je 0x584d7a
lea edi, [eax + 7]
jmp 0x584dc3
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov esi, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx esi, byte [esi - 1]
add dword [ebp - 0x2c], 8
shl esi, cl
add dword [ebp - 0x30], esi
cmp dword [ebp - 0x2c], edi
jb 0x584d57
mov edi, dword [ebp - 0x30]
mov ecx, edx
shr edi, cl
mov ecx, edi
mov edx, edi
shr ecx, 3
and edx, 7
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x2c]
add edx, 3
sub ecx, eax
lea eax, [ecx - 3]
jmp 0x584de7
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov esi, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx esi, byte [esi - 1]
add dword [ebp - 0x2c], 8
shl esi, cl
add dword [ebp - 0x30], esi
cmp dword [ebp - 0x2c], edi
jb 0x584da0
mov edi, dword [ebp - 0x30]
mov ecx, edx
shr edi, cl
mov ecx, edi
mov edx, edi
shr ecx, 7
and edx, 0x7f
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x2c]
add edx, 0xb
sub ecx, eax
lea eax, [ecx - 7]
mov dword [ebp - 0x2c], eax
xor eax, eax
mov edi, dword [ebp - 0x4c]
lea ecx, [edi + edx]
cmp dword [ebp - 0x5c], ecx
jb 0x584e00
mov esi, edi
dec edx
add esi, edi
add esi, ebx
jmp 0x584e13
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [ebx + 4], 0x3f51
jmp 0x584e28
dec edx
mov word [esi + 0x74], ax
add esi, 2
cmp edx, 0xffffffff
jne 0x584e13
mov dword [ebx + 0x6c], ecx
jmp 0x584c67
cmp dword [ebx + 4], 0x3f51
je 0x584270
cmp word [ebx + 0x274], 0
jne 0x584e4e
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
jmp 0x58436a
lea eax, [ebx + 0x534]
lea edx, [ebx + 0x2f4]
mov dword [ebx + 0x58], 9
mov dword [ebx + 0x70], eax
lea edi, [ebx + 0x70]
lea esi, [ebx + 0x74]
mov dword [ebx + 0x50], eax
lea eax, [ebx + 0x58]
mov dword [esp + 0x14], edx
mov dword [ebp - 0x4c], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [ebp - 0x58]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov dword [esp], 1
call fcn.00586208
mov edx, dword [ebp - 0x4c]
test eax, eax
mov dword [ebp - 0x44], eax
je 0x584eaf
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_literal_lengths_set
jmp 0x58436a
mov eax, dword [ebx + 0x70]
mov dword [ebx + 0x5c], 6
mov dword [ebx + 0x54], eax
lea eax, [ebx + 0x5c]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [ebx + 0x68]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x64]
mov dword [esp], 2
add eax, eax
add esi, eax
mov dword [esp + 4], esi
call fcn.00586208
mov dword [ebp - 0x44], eax
test eax, eax
je 0x584eff
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_distances_set
jmp 0x58436a
cmp dword [ebp + 0xc], 6
mov dword [ebx + 4], 0x3f47
je 0x58548b
mov dword [ebx + 4], 0x3f48
cmp dword [ebp - 0x34], 5
jbe 0x584fb1
cmp dword [ebp - 0x3c], 0x101
jbe 0x584fb1
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x40]
mov esi, dword [ebp - 0x34]
mov dword [eax + 0xc], edi
mov edi, dword [ebp - 0x3c]
mov dword [eax + 4], esi
mov dword [eax + 0x10], edi
mov edi, dword [ebp - 0x38]
mov dword [eax], edi
mov eax, dword [ebp - 0x30]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 0x40], eax
mov eax, dword [ebp - 0x48]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.00585d94
mov eax, dword [ebp + 8]
cmp dword [ebx + 4], 0x3f3f
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
mov dword [ebp - 0x34], eax
mov eax, dword [ebx + 0x3c]
mov dword [ebp - 0x30], eax
mov eax, dword [ebx + 0x40]
mov dword [ebp - 0x2c], eax
jne 0x584270
mov dword [ebx + 0x1bc8], 0xffffffff
jmp 0x584270
mov eax, dword [ebx + 0x50]
xor ecx, ecx
mov dword [ebx + 0x1bc8], ecx
mov ecx, dword [ebx + 0x58]
mov dword [ebp - 0x4c], eax
or eax, 0xffffffff
shl eax, cl
not eax
mov dword [ebp - 0x58], eax
mov edi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp - 0x4c]
and eax, edi
lea ecx, [esi + eax*4]
movzx edi, byte [ecx + 1]
mov al, byte [ecx]
movzx esi, word [ecx + 2]
mov edx, edi
cmp dword [ebp - 0x2c], edi
jae 0x585010
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x584fcc
test al, al
je 0x585088
cmp al, 0xf
ja 0x585088
lea ecx, [eax + edi]
or edx, 0xffffffff
movzx eax, si
shl edx, cl
mov dword [ebp - 0x5c], eax
not edx
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x58]
mov ecx, edi
mov esi, dword [ebp - 0x5c]
and eax, edx
mov edx, dword [ebp - 0x4c]
shr eax, cl
add eax, esi
lea ecx, [edx + eax*4]
mov dl, byte [ecx + 1]
mov al, byte [ecx]
movzx esi, word [ecx + 2]
movzx ecx, dl
add ecx, edi
cmp dword [ebp - 0x2c], ecx
jae 0x58507a
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x58502b
sub dword [ebp - 0x2c], edi
mov ecx, edi
mov dword [ebx + 0x1bc8], edi
shr dword [ebp - 0x30], cl
movzx edi, dl
mov ecx, edx
sub dword [ebp - 0x2c], edi
add dword [ebx + 0x1bc8], edi
mov dword [ebx + 0x44], esi
shr dword [ebp - 0x30], cl
test al, al
je 0x5850b5
test al, 0x20
je 0x5850c2
mov dword [ebx + 0x1bc8], 0xffffffff
mov eax, 0x3f3f
jmp 0x5850ba
mov eax, 0x3f4d
mov dword [ebx + 4], eax
jmp 0x584270
test al, 0x40
je 0x5850d7
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], 0x6d59d5
mov eax, 0x3f51
jmp 0x5850ba
and eax, 0xf
mov dword [ebx + 4], 0x3f49
mov dword [ebx + 0x4c], eax
mov edx, dword [ebx + 0x4c]
test edx, edx
je 0x585132
cmp dword [ebp - 0x2c], edx
jae 0x585115
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x5850eb
mov ecx, edx
or eax, 0xffffffff
mov edi, dword [ebp - 0x30]
sub dword [ebp - 0x2c], edx
shl eax, cl
add dword [ebx + 0x1bc8], edx
not eax
shr dword [ebp - 0x30], cl
and eax, edi
add dword [ebx + 0x44], eax
mov eax, dword [ebx + 0x44]
mov dword [ebx + 4], 0x3f4a
mov dword [ebx + 0x1bcc], eax
mov eax, dword [ebx + 0x54]
mov ecx, dword [ebx + 0x5c]
mov dword [ebp - 0x4c], eax
or eax, 0xffffffff
shl eax, cl
not eax
mov dword [ebp - 0x58], eax
mov edi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp - 0x4c]
and eax, edi
lea ecx, [esi + eax*4]
movzx edi, byte [ecx + 1]
mov al, byte [ecx]
movzx esi, word [ecx + 2]
mov edx, edi
cmp dword [ebp - 0x2c], edi
jae 0x585199
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x585155
cmp al, 0xf
ja 0x58520d
lea ecx, [eax + edi]
or edx, 0xffffffff
movzx eax, si
shl edx, cl
mov dword [ebp - 0x5c], eax
not edx
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x58]
mov ecx, edi
mov esi, dword [ebp - 0x5c]
and eax, edx
mov edx, dword [ebp - 0x4c]
shr eax, cl
add eax, esi
lea ecx, [edx + eax*4]
mov dl, byte [ecx + 1]
mov al, byte [ecx]
movzx esi, word [ecx + 2]
movzx ecx, dl
add ecx, edi
cmp dword [ebp - 0x2c], ecx
jae 0x5851ff
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x5851b0
sub dword [ebp - 0x2c], edi
mov ecx, edi
add dword [ebx + 0x1bc8], edi
shr dword [ebp - 0x30], cl
movzx edi, dl
mov ecx, edx
sub dword [ebp - 0x2c], edi
add dword [ebx + 0x1bc8], edi
shr dword [ebp - 0x30], cl
test al, 0x40
je 0x585231
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], 0x6d59f1
jmp 0x58436a
and eax, 0xf
mov dword [ebx + 0x48], esi
mov dword [ebx + 0x4c], eax
mov dword [ebx + 4], 0x3f4b
mov edx, dword [ebx + 0x4c]
test edx, edx
je 0x58528f
cmp dword [ebp - 0x2c], edx
jae 0x585272
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x585248
mov ecx, edx
or eax, 0xffffffff
mov edi, dword [ebp - 0x30]
sub dword [ebp - 0x2c], edx
shl eax, cl
add dword [ebx + 0x1bc8], edx
not eax
shr dword [ebp - 0x30], cl
and eax, edi
add dword [ebx + 0x48], eax
mov dword [ebx + 4], 0x3f4c
cmp dword [ebp - 0x3c], 0
je 0x58548b
mov eax, dword [ebp - 0x48]
mov edi, dword [ebp - 0x3c]
mov ecx, dword [ebx + 0x48]
sub eax, edi
cmp eax, ecx
jae 0x5852f7
mov esi, dword [ebp - 0x48]
add ecx, edi
mov eax, ecx
sub eax, esi
cmp dword [ebx + 0x30], eax
jae 0x5852d5
cmp dword [ebx + 0x1bc4], 0
je 0x5852d5
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], 0x6d5a07
jmp 0x58436a
mov edi, dword [ebp - 0x48]
mov edx, dword [ebx + 0x34]
mov esi, dword [ebx + 0x38]
sub edi, ecx
cmp edx, eax
jae 0x5852e9
sub eax, edx
add edx, dword [ebx + 0x2c]
add edx, edi
add esi, edx
mov edx, dword [ebx + 0x44]
cmp eax, edx
cmova eax, edx
jmp 0x5852ff
mov esi, dword [ebp - 0x40]
mov eax, dword [ebx + 0x44]
sub esi, ecx
cmp dword [ebp - 0x3c], eax
mov edi, dword [ebp - 0x40]
cmovbe eax, dword [ebp - 0x3c]
sub dword [ebp - 0x3c], eax
sub dword [ebx + 0x44], eax
add eax, edi
mov edi, dword [ebp - 0x40]
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x40], edi
cmp edi, eax
jne 0x585311
cmp dword [ebx + 0x44], 0
jne 0x584270
mov dword [ebx + 4], 0x3f48
jmp 0x584270
cmp dword [ebp - 0x3c], 0
je 0x58548b
mov esi, dword [ebp - 0x40]
mov eax, dword [ebx + 0x44]
dec dword [ebp - 0x3c]
mov byte [esi], al
mov eax, esi
inc eax
mov dword [ebx + 4], 0x3f48
mov dword [ebp - 0x40], eax
jmp 0x584270
mov edx, dword [ebx + 0xc]
test edx, edx
je 0x58541e
cmp dword [ebp - 0x2c], 0x1f
ja 0x58538f
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x585364
mov eax, dword [ebp - 0x48]
mov esi, dword [ebp - 0x3c]
mov edi, dword [ebp + 8]
sub eax, esi
add dword [edi + 0x14], eax
add dword [ebx + 0x20], eax
and dl, 4
je 0x5853de
test eax, eax
je 0x5853de
mov edx, esi
mov esi, dword [ebp - 0x48]
mov edi, dword [ebp - 0x40]
mov ecx, dword [ebx + 0x1c]
sub edx, esi
add edx, edi
cmp dword [ebx + 0x14], 0
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
je 0x5853d0
call fcn.00577f54
jmp 0x5853d5
call fcn.0057693c
mov edx, dword [ebp + 8]
mov dword [ebx + 0x1c], eax
mov dword [edx + 0x30], eax
test byte [ebx + 0xc], 4
je 0x585410
cmp dword [ebx + 0x14], 0
mov eax, dword [ebp - 0x30]
jne 0x5853ef
bswap eax
cmp dword [ebx + 0x1c], eax
je 0x585410
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [ebp - 0x3c]
mov dword [ebx + 4], 0x3f51
mov dword [ebp - 0x48], eax
jmp 0x584270
mov eax, dword [ebp - 0x3c]
xor edx, edx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x30], edx
mov dword [ebx + 4], 0x3f4f
mov edx, dword [ebx + 0xc]
test edx, edx
je 0x58547d
cmp dword [ebx + 0x14], 0
je 0x58547d
cmp dword [ebp - 0x2c], 0x1f
ja 0x585459
cmp dword [ebp - 0x34], 0
je 0x58548b
inc dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x2c]
dec dword [ebp - 0x34]
movzx eax, byte [eax - 1]
add dword [ebp - 0x2c], 8
shl eax, cl
add dword [ebp - 0x30], eax
jmp 0x585432
and dl, 4
je 0x585475
mov eax, dword [ebp - 0x30]
cmp dword [ebx + 0x20], eax
je 0x585475
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_length_check
jmp 0x58436a
xor eax, eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], eax
mov dword [ebx + 4], 0x3f50
mov dword [ebp - 0x44], 1
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x38]
mov dword [eax + 0xc], edx
mov edx, dword [ebp - 0x34]
mov dword [eax + 0x10], esi
cmp dword [ebx + 0x2c], 0
mov dword [eax], edi
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x30]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 0x40], eax
jne 0x5854d3
cmp dword [ebp - 0x48], esi
je 0x5854fd
mov eax, dword [ebx + 4]
cmp eax, 0x3f50
ja 0x5854fd
cmp dword [ebp + 0xc], 4
jne 0x5854d3
cmp eax, 0x3f4d
ja 0x5854fd
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x40]
sub ecx, eax
mov eax, dword [ebp + 8]
call fcn.0058f840
test eax, eax
je 0x5854fd
mov dword [ebx + 4], 0x3f52
mov dword [ebp - 0x44], 0xfffffffc
jmp 0x5855b5
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 0x54]
mov edi, dword [ebp - 0x48]
sub esi, dword [eax + 4]
mov eax, dword [eax + 0x10]
mov ecx, edx
add dword [edx + 8], esi
sub edi, eax
add dword [edx + 0x14], edi
add dword [ebx + 0x20], edi
test byte [ebx + 0xc], 4
je 0x585557
test edi, edi
je 0x585557
mov edx, dword [ebp - 0x48]
sub eax, edx
mov edx, dword [ebx + 0x1c]
add eax, dword [ecx + 0xc]
cmp dword [ebx + 0x14], 0
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [esp], edx
je 0x585549
call fcn.00577f54
jmp 0x58554e
call fcn.0057693c
mov edx, dword [ebp + 8]
mov dword [ebx + 0x1c], eax
mov dword [edx + 0x30], eax
xor eax, eax
mov ecx, dword [ebx + 4]
cmp dword [ebx + 8], 0
setne al
shl eax, 6
add eax, dword [ebx + 0x40]
cmp ecx, 0x3f3f
jne 0x585576
sub eax, 0xffffff80
jmp 0x585593
cmp ecx, 0x3f47
sete dl
cmp ecx, 0x3f42
sete cl
or edx, ecx
movzx edx, dl
shl edx, 8
mov dword [ebp - 0x50], edx
mov ecx, dword [ebp - 0x50]
mov edx, dword [ebp + 8]
add eax, ecx
or edi, esi
mov dword [edx + 0x2c], eax
je 0x5855a8
cmp dword [ebp + 0xc], 4
jne 0x5855b5
cmp dword [ebp - 0x44], 0
jne 0x5855b5
mov dword [ebp - 0x44], 0xfffffffb
mov eax, dword [ebp - 0x44]
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret