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

Disassembly:
sub esp, 0x44
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0x30], esi
call fcn.00444be7
test eax, eax
jne case.default.0x444eef
mov eax, dword [esi + 0xc]
mov dword [esp + 0x2c], eax
test eax, eax
je case.default.0x444eef
mov eax, dword [esi]
mov dword [esp + 0x14], eax
test eax, eax
jne 0x444e71
cmp dword [esi + 4], eax
jne case.default.0x444eef
mov ebp, dword [esi + 0x1c]
mov edx, 0x3f40
mov ecx, dword [ebp + 4]
cmp ecx, 0x3f3f
jne 0x444e96
mov dword [ebp + 4], edx
mov ecx, edx
mov eax, dword [esi + 0xc]
mov dword [esp + 0x2c], eax
mov eax, dword [esi]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 4]
mov edx, dword [ebp + 0x3c]
mov ebx, dword [ebp + 0x40]
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], eax
xor eax, eax
mov dword [esp + 0x38], eax
lea eax, [ecx - 0x3f34]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x44], edi
cmp eax, 0x1e
ja case.default.0x444eef
mov dword [esp + 0x3c], 0x1f
mov dword [esp + 0x48], 0x3f51
mov dword [esp + 0x4c], 1
mov dword [esp + 0x50], 0x3f46
jmp dword [eax*4 + 0x446385]
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x444f09
mov dword [ebp + 4], 0x3f40
jmp 0x44551c
push 0x10
pop ecx
cmp ebx, ecx
jae 0x444f46
mov eax, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
inc eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], ebx
cmp ebx, 0x10
jb 0x444f14
mov eax, dword [ebp + 0xc]
test al, 2
je 0x444fa3
cmp edx, 0x8b1f
jne 0x444fa3
xor ebx, ebx
cmp dword [ebp + 0x28], ebx
jne 0x444f60
mov dword [ebp + 0x28], 0xf
push ebx
xor edx, edx
xor ecx, ecx
call fcn.00446eb5
mov dword [ebp + 0x1c], eax
lea edx, [esp + 0x28]
mov eax, dword [esp + 0x40]
mov byte [esp + 0x28], al
mov byte [esp + 0x29], 0x8b
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.00446eb5
pop ecx
mov edx, ebx
mov dword [ebp + 0x1c], eax
pop ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 4], 0x3f35
jmp 0x44551c
and dword [ebp + 0x14], 0
mov ecx, dword [ebp + 0x24]
test ecx, ecx
je 0x444fb5
or dword [ecx + 0x30], 0xffffffff
mov eax, dword [ebp + 0xc]
test al, 1
je 0x445060
movzx ecx, dl
mov eax, edx
shr eax, 8
xor edx, edx
shl ecx, 8
add eax, ecx
div dword [esp + 0x3c]
test edx, edx
mov edx, dword [esp + 0x18]
jne 0x445060
mov eax, edx
and al, 0xf
cmp al, 8
je 0x444fed
mov dword [esi + 0x18], str.unknown_compression_method
jmp 0x445067
mov eax, dword [ebp + 0x28]
sub ebx, 4
shr edx, 4
mov ecx, edx
mov dword [esp + 0x18], edx
and ecx, 0xf
mov dword [esp + 0x20], ebx
add ecx, 8
test eax, eax
jne 0x44500f
mov dword [ebp + 0x28], ecx
mov eax, ecx
cmp ecx, 0xf
ja 0x445057
cmp ecx, eax
ja 0x445057
xor eax, eax
xor ebx, ebx
inc eax
xor edx, edx
shl eax, cl
xor ecx, ecx
push ebx
mov dword [ebp + 0x18], eax
call fcn.00446455
mov edx, dword [esp + 0x1c]
shr edx, 8
not edx
mov dword [ebp + 0x1c], eax
and edx, 2
mov dword [esi + 0x30], eax
or edx, 0x3f3d
mov dword [ebp + 4], edx
mov edx, ebx
pop ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jmp 0x44551c
mov dword [esi + 0x18], str.invalid_window_size
jmp 0x445067
mov dword [esi + 0x18], str.incorrect_header_check
mov dword [ebp + 4], 0x3f51
jmp 0x44551c
push 0x10
pop eax
cmp ebx, eax
jae 0x4450af
mov eax, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
push 0x10
inc eax
mov dword [esp + 0x1c], edx
pop ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], ebx
cmp ebx, ecx
jb 0x44507e
mov dword [ebp + 0x14], edx
cmp dl, 8
jne 0x444fe4
test edx, 0xe000
je 0x4450cc
mov dword [esi + 0x18], str.unknown_header_flags_set
jmp 0x445067
mov edi, dword [ebp + 0x24]
mov ecx, edx
shr ecx, 8
mov eax, edx
test edi, edi
je 0x4450e4
mov eax, ecx
and eax, 1
mov dword [edi], eax
mov eax, dword [ebp + 0x14]
test eax, 0x200
je 0x44510b
test byte [ebp + 0xc], 4
je 0x44510b
mov byte [esp + 0x24], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x25], cl
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.00446eb5
pop ecx
mov dword [ebp + 0x1c], eax
mov edi, dword [esp + 0x1c]
xor eax, eax
mov edx, eax
mov dword [ebp + 4], 0x3f36
mov dword [esp + 0x18], edx
mov ebx, eax
cmp ebx, 0x20
jae 0x445154
mov eax, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
inc eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
cmp ebx, 0x20
jb 0x445129
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x44515e
mov dword [eax + 4], edx
test dword [ebp + 0x14], 0x200
je 0x44519c
test byte [ebp + 0xc], 4
je 0x44519c
mov eax, edx
mov byte [esp + 0x24], dl
shr eax, 8
mov byte [esp + 0x25], al
mov eax, edx
shr edx, 0x18
shr eax, 0x10
mov byte [esp + 0x27], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x26], al
mov ecx, dword [ebp + 0x1c]
push 4
call fcn.00446eb5
pop ecx
mov dword [ebp + 0x1c], eax
xor eax, eax
mov dword [ebp + 4], 0x3f37
mov edx, eax
mov ebx, eax
mov dword [esp + 0x18], edx
push 0x10
pop eax
cmp ebx, eax
jae 0x4451e5
mov eax, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
push 0x10
inc eax
mov dword [esp + 0x1c], edx
pop ecx
mov dword [esp + 0x14], eax
cmp ebx, ecx
jb 0x4451b8
mov edi, dword [ebp + 0x24]
mov ecx, edx
shr ecx, 8
test edi, edi
je 0x4451fd
movzx eax, dl
mov dword [edi + 8], eax
mov eax, dword [ebp + 0x24]
mov dword [eax + 0xc], ecx
test dword [ebp + 0x14], 0x200
je 0x445226
test byte [ebp + 0xc], 4
je 0x445226
mov byte [esp + 0x24], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x25], cl
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.00446eb5
pop ecx
mov dword [ebp + 0x1c], eax
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov edx, ecx
mov dword [ebp + 4], 0x3f38
mov ebx, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jmp 0x445243
xor ecx, ecx
test dword [ebp + 0x14], 0x400
je 0x4452cb
push 0x10
pop eax
cmp ebx, eax
jae 0x445284
mov eax, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
push 0x10
inc eax
mov dword [esp + 0x1c], edx
pop ecx
mov dword [esp + 0x14], eax
cmp ebx, ecx
jb 0x445257
mov eax, dword [ebp + 0x24]
mov dword [ebp + 0x44], edx
test eax, eax
je 0x445291
mov dword [eax + 0x14], edx
test dword [ebp + 0x14], 0x200
je 0x4452bd
test byte [ebp + 0xc], 4
je 0x4452bd
mov byte [esp + 0x24], dl
shr edx, 8
mov byte [esp + 0x25], dl
lea edx, [esp + 0x24]
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.00446eb5
pop ecx
mov dword [ebp + 0x1c], eax
xor eax, eax
mov ebx, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ebx
jmp 0x4452d5
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x4452d5
mov dword [eax + 0x10], ecx
mov dword [ebp + 4], 0x3f39
mov eax, dword [ebp + 0x14]
test eax, 0x400
je 0x445371
mov ecx, dword [ebp + 0x44]
cmp ecx, dword [esp + 0x1c]
cmovbe edi, ecx
test edi, edi
je 0x445369
mov edx, dword [ebp + 0x24]
test edx, edx
je 0x44533d
mov esi, dword [edx + 0x10]
test esi, esi
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x30]
je 0x44533d
mov edx, dword [edx + 0x14]
sub edx, ecx
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx + 0x18]
lea eax, [edi + edx]
cmp eax, ecx
jbe 0x445324
sub ecx, edx
jmp 0x445326
mov ecx, edi
mov eax, dword [esp + 0x40]
push ecx
push dword [esp + 0x18]
add eax, edx
push eax
call fcn.0044a8d0
mov eax, dword [ebp + 0x14]
add esp, 0xc
test eax, 0x200
je 0x44535b
test byte [ebp + 0xc], 4
je 0x44535b
mov edx, dword [esp + 0x14]
mov ecx, dword [ebp + 0x1c]
push edi
call fcn.00446eb5
pop ecx
mov dword [ebp + 0x1c], eax
sub dword [esp + 0x1c], edi
add dword [esp + 0x14], edi
sub dword [ebp + 0x44], edi
mov ecx, dword [ebp + 0x44]
test ecx, ecx
jne 0x446278
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov dword [ebp + 0x44], ecx
mov dword [ebp + 4], 0x3f3a
jmp 0x445385
xor ecx, ecx
test dword [ebp + 0x14], 0x800
je 0x445412
test edi, edi
je 0x446278
mov esi, dword [esp + 0x1c]
mov edi, ecx
mov edx, dword [esp + 0x14]
mov al, byte [edi + edx]
inc edi
mov byte [esp + 0x13], al
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x4453d0
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x4453cc
mov ecx, dword [ebp + 0x44]
cmp ecx, dword [eax + 0x20]
jae 0x4453cc
mov al, byte [esp + 0x13]
mov byte [ecx + edx], al
inc dword [ebp + 0x44]
mov edx, dword [esp + 0x14]
mov cl, byte [esp + 0x13]
test cl, cl
je 0x4453dc
cmp edi, esi
jb 0x4453a4
test dword [ebp + 0x14], 0x200
mov esi, dword [esp + 0x30]
je 0x445400
test byte [ebp + 0xc], 4
je 0x445400
mov ecx, dword [ebp + 0x1c]
push edi
call fcn.00446eb5
pop ecx
mov cl, byte [esp + 0x13]
mov dword [ebp + 0x1c], eax
sub dword [esp + 0x1c], edi
add dword [esp + 0x14], edi
test cl, cl
jne 0x446278
jmp 0x44541c
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x44541c
mov dword [eax + 0x1c], ecx
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov dword [ebp + 0x44], ecx
mov dword [ebp + 4], 0x3f3b
jmp 0x445430
xor ecx, ecx
test dword [ebp + 0x14], 0x1000
je 0x4454bd
test edi, edi
je 0x446278
mov esi, dword [esp + 0x1c]
mov edi, ecx
mov edx, dword [esp + 0x14]
mov al, byte [edi + edx]
inc edi
mov byte [esp + 0x13], al
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x44547b
mov edx, dword [eax + 0x24]
test edx, edx
je 0x445477
mov ecx, dword [ebp + 0x44]
cmp ecx, dword [eax + 0x28]
jae 0x445477
mov al, byte [esp + 0x13]
mov byte [ecx + edx], al
inc dword [ebp + 0x44]
mov edx, dword [esp + 0x14]
mov cl, byte [esp + 0x13]
test cl, cl
je 0x445487
cmp edi, esi
jb 0x44544f
test dword [ebp + 0x14], 0x200
mov esi, dword [esp + 0x30]
je 0x4454ab
test byte [ebp + 0xc], 4
je 0x4454ab
mov ecx, dword [ebp + 0x1c]
push edi
call fcn.00446eb5
pop ecx
mov cl, byte [esp + 0x13]
mov dword [ebp + 0x1c], eax
sub dword [esp + 0x1c], edi
add dword [esp + 0x14], edi
test cl, cl
jne 0x446278
jmp 0x4454c7
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x4454c7
mov dword [eax + 0x24], ecx
mov edx, dword [esp + 0x18]
mov dword [ebp + 4], 0x3f3c
mov edi, dword [ebp + 0x14]
test edi, 0x200
jne 0x445566
xor ecx, ecx
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x4454fc
mov edx, dword [esp + 0x4c]
sar edi, 9
and edi, edx
mov dword [eax + 0x2c], edi
mov eax, dword [ebp + 0x24]
mov dword [eax + 0x30], edx
push ecx
xor edx, edx
xor ecx, ecx
call fcn.00446eb5
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
pop ecx
mov dword [ebp + 4], 0x3f3f
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov ecx, dword [ebp + 4]
lea eax, [ecx - 0x3f34]
cmp eax, 0x1e
jbe switch.0x00444eef
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x446278
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
add ebx, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
push 0x10
pop eax
cmp ebx, eax
jb 0x445539
test byte [ebp + 0xc], 4
je 0x44558b
movzx eax, word [ebp + 0x1c]
cmp edx, eax
je 0x44558b
mov dword [esi + 0x18], str.header_crc_mismatch
mov dword [ebp + 4], 0x3f51
jmp 0x445518
xor ecx, ecx
mov ebx, ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], ebx
jmp 0x4454e3
cmp ebx, 0x20
jae 0x4455d0
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 0x20
jb 0x4455a5
mov ecx, edx
mov ebx, 0xff00
mov eax, edx
and ecx, ebx
shl eax, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
and eax, ebx
shl ecx, 8
shr edx, 0x18
add eax, ecx
add eax, edx
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
xor eax, eax
mov edx, eax
mov dword [ebp + 4], 0x3f3e
mov dword [esp + 0x18], edx
mov ebx, eax
jmp 0x44560c
xor eax, eax
cmp dword [ebp + 0x10], eax
je 0x44623b
push eax
xor edx, edx
xor ecx, ecx
call fcn.00446455
mov edx, dword [esp + 0x1c]
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
pop ecx
mov dword [ebp + 4], 0x3f3f
cmp dword [ebp + 8], 0
je 0x445654
mov ecx, ebx
mov dword [ebp + 4], 0x3f4e
and ecx, 7
shr edx, cl
sub ebx, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jmp 0x44551c
cmp ebx, 3
jae 0x445688
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 3
jb 0x44565d
mov eax, edx
shr edx, 1
and eax, 1
mov dword [ebp + 8], eax
mov eax, edx
and eax, 3
sub eax, 0
je 0x4456e9
sub eax, 1
je 0x4456c4
sub eax, 1
je 0x4456bb
sub eax, 1
jne 0x4456f0
mov dword [esi + 0x18], str.invalid_block_type
mov dword [ebp + 4], 0x3f51
jmp 0x4456f0
mov dword [ebp + 4], 0x3f44
jmp 0x4456f0
mov dword [ebp + 0x50], 0x48ad30
mov dword [ebp + 0x58], 9
mov dword [ebp + 0x54], 0x48b530
mov dword [ebp + 0x5c], 5
mov dword [ebp + 4], 0x3f47
jmp 0x4456f0
mov dword [ebp + 4], 0x3f41
shr edx, 2
sub ebx, 3
jmp 0x44504a
mov ecx, ebx
and ecx, 7
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jae 0x445744
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jb 0x445715
mov eax, edx
movzx ecx, dx
not eax
shr eax, 0x10
cmp ecx, eax
je 0x44575e
mov dword [esi + 0x18], str.invalid_stored_block_lengths
jmp 0x445067
xor eax, eax
mov dword [ebp + 0x44], ecx
mov edx, eax
mov ebx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 4], 0x3f43
mov ecx, dword [ebp + 0x44]
test ecx, ecx
je 0x4457bf
cmp ecx, edi
mov eax, edi
mov edi, dword [esp + 0x28]
cmovbe eax, ecx
cmp eax, edi
cmovbe edi, eax
test edi, edi
je 0x446278
mov ecx, dword [esp + 0x2c]
push edi
push dword [esp + 0x18]
push ecx
call fcn.0044a8d0
sub dword [esp + 0x28], edi
add esp, 0xc
add dword [esp + 0x14], edi
sub dword [esp + 0x28], edi
add dword [esp + 0x2c], edi
sub dword [ebp + 0x44], edi
jmp 0x445514
mov dword [ebp + 4], 0x3f3f
jmp 0x44551c
cmp ebx, 0xe
jae 0x4457ff
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 0xe
jb 0x4457d4
mov edi, dword [esp + 0x3c]
mov ecx, edx
shr edx, 5
and ecx, edi
and edi, edx
add ecx, 0x101
shr edx, 5
inc edi
mov eax, edx
mov dword [ebp + 0x64], ecx
and eax, 0xf
shr edx, 4
add eax, 4
mov dword [ebp + 0x68], edi
sub ebx, 0xe
mov dword [ebp + 0x60], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
cmp ecx, 0x11e
ja 0x445853
cmp edi, 0x1e
ja 0x445853
and dword [ebp + 0x6c], 0
mov edi, dword [esp + 0x1c]
mov dword [ebp + 4], 0x3f45
jmp case.0x444eef.16197
mov dword [esi + 0x18], str.too_many_length_or_distance_symbols
jmp 0x445582
cmp ebx, 3
jae 0x445893
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 3
jb 0x445868
mov eax, dword [ebp + 0x6c]
mov ecx, edx
and ecx, 7
shr edx, 3
mov dword [esp + 0x18], edx
movzx eax, word [eax*2 + 0x48b5b0]
mov word [ebp + eax*2 + 0x74], cx
inc dword [ebp + 0x6c]
sub ebx, 3
mov dword [esp + 0x20], ebx
mov eax, dword [ebp + 0x6c]
cmp eax, dword [ebp + 0x60]
jb 0x44585f
cmp eax, 0x13
jae 0x4458e1
mov eax, dword [ebp + 0x6c]
xor ecx, ecx
movzx eax, word [eax*2 + 0x48b5b0]
mov word [ebp + eax*2 + 0x74], cx
inc dword [ebp + 0x6c]
cmp dword [ebp + 0x6c], 0x13
jb 0x4458c6
lea eax, [ebp + 0x534]
lea edx, [ebp + 0x70]
mov dword [ebp + 0x50], eax
mov dword [edx], eax
lea ecx, [ebp + 0x58]
lea eax, [ebp + 0x2f4]
mov dword [ecx], 7
push eax
push ecx
push edx
push 0x13
lea edx, [ebp + 0x74]
xor ecx, ecx
call fcn.00446682
mov edx, dword [esp + 0x28]
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
je 0x445928
mov dword [esi + 0x18], str.invalid_code_lengths_set
jmp 0x445067
mov eax, dword [esp + 0x50]
mov ecx, eax
and dword [ebp + 0x6c], 0
mov dword [ebp + 4], eax
mov eax, dword [ebp + 0x68]
add eax, dword [ebp + 0x64]
cmp dword [ebp + 0x6c], eax
jae 0x445b4b
mov ecx, dword [ebp + 0x58]
xor eax, eax
lea edi, [eax + 1]
shl edi, cl
jmp 0x445979
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x446278
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
add ebx, 8
mov ecx, dword [ebp + 0x50]
lea eax, [edi - 1]
and eax, edx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [esp + 0x40], eax
cmp ecx, ebx
ja 0x445950
mov edi, eax
push 0x10
shr edi, 0x10
pop ecx
cmp di, cx
jae 0x4459c6
shr eax, 8
movzx ecx, al
mov eax, dword [ebp + 0x6c]
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov word [ebp + eax*2 + 0x74], di
inc dword [ebp + 0x6c]
mov ecx, dword [ebp + 0x6c]
jmp 0x445b1e
jne 0x445a3c
mov ecx, eax
shr ecx, 8
movzx edi, cl
add edi, 2
cmp ebx, edi
jae 0x445a06
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x446278
dec ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x14]
movzx edx, byte [ecx]
mov ecx, ebx
shl edx, cl
add ebx, 8
add dword [esp + 0x18], edx
inc dword [esp + 0x14]
cmp ebx, edi
jb 0x4459d7
mov edx, dword [esp + 0x18]
movzx ecx, ah
mov eax, dword [ebp + 0x6c]
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
test eax, eax
je 0x445b31
movzx eax, word [ebp + eax*2 + 0x72]
mov edi, edx
and edi, 3
shr edx, 2
add edi, 3
mov dword [esp + 0x40], eax
sub ebx, 2
jmp 0x445ae9
cmp word [esp + 0x42], 0x11
movzx ecx, ah
jne 0x445a94
lea edi, [ecx + 3]
mov dword [esp + 0x40], ecx
cmp ebx, edi
jae 0x445a83
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x446278
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
add ebx, 8
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
cmp ebx, edi
jb 0x445a52
mov ecx, dword [esp + 0x40]
shr edx, cl
mov edi, edx
and edi, 7
add edi, 3
shr edx, 3
push 0xfffffffffffffffd
jmp 0x445adf
lea edi, [ecx + 7]
mov dword [esp + 0x40], ecx
cmp ebx, edi
jae 0x445ad0
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x446278
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
add ebx, 8
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
cmp ebx, edi
jb 0x445a9f
mov ecx, dword [esp + 0x40]
shr edx, cl
mov edi, edx
and edi, 0x7f
add edi, 0xb
shr edx, 7
push 0xfffffffffffffff9
pop eax
sub eax, ecx
add ebx, eax
and dword [esp + 0x40], 0
mov ecx, dword [ebp + 0x6c]
mov eax, dword [ebp + 0x68]
add ecx, edi
add eax, dword [ebp + 0x64]
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
cmp ecx, eax
ja 0x445b3d
mov esi, dword [esp + 0x40]
mov eax, dword [ebp + 0x6c]
mov word [ebp + eax*2 + 0x74], si
mov ecx, dword [ebp + 0x6c]
lea ecx, [ecx + 1]
mov dword [ebp + 0x6c], ecx
sub edi, 1
jne 0x445b04
mov esi, dword [esp + 0x30]
mov eax, dword [ebp + 0x68]
add eax, dword [ebp + 0x64]
cmp ecx, eax
jb 0x445944
mov ecx, dword [ebp + 4]
jmp 0x445b4b
mov dword [esi + 0x18], str.invalid_bit_length_repeat
jmp 0x445582
mov ecx, dword [esp + 0x48]
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [ebp + 4], ecx
mov edi, dword [esp + 0x48]
cmp ecx, edi
je 0x445518
xor eax, eax
cmp word [ebp + 0x274], ax
jne 0x445b71
mov dword [esi + 0x18], str.invalid_code____missing_end_of_block
mov dword [ebp + 4], edi
jmp 0x445518
lea eax, [ebp + 0x534]
lea edi, [ebp + 0x70]
mov dword [ebp + 0x50], eax
lea ecx, [ebp + 0x2f4]
mov dword [edi], eax
push ecx
lea eax, [ebp + 0x58]
xor ecx, ecx
push eax
push edi
push dword [ebp + 0x64]
lea edx, [ebp + 0x74]
mov dword [eax], 9
inc ecx
call fcn.00446682
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
je 0x445bbd
mov dword [esi + 0x18], str.invalid_literal_lengths_set
mov dword [ebp + 4], 0x3f51
jmp 0x445514
mov eax, dword [edi]
lea ecx, [ebp + 0x2f4]
push ecx
mov dword [ebp + 0x54], eax
lea eax, [ebp + 0x5c]
push eax
mov dword [eax], 6
mov eax, dword [ebp + 0x64]
push edi
push dword [ebp + 0x68]
lea edx, [eax*2 + 0x74]
push 2
add edx, ebp
pop ecx
call fcn.00446682
mov edx, dword [esp + 0x28]
add esp, 0x10
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x38], eax
test eax, eax
je case.0x444eef.16199
mov dword [esi + 0x18], str.invalid_distances_set
jmp 0x445067
mov dword [ebp + 4], 0x3f48
cmp edi, 6
jb 0x445c87
mov eax, dword [esp + 0x28]
cmp eax, 0x102
jb 0x445c87
mov ecx, dword [esp + 0x2c]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 0xc], ecx
mov ecx, esi
mov dword [esi], eax
mov dword [esi + 4], edi
mov dword [ebp + 0x3c], edx
mov edx, dword [esp + 0x34]
mov dword [ebp + 0x40], ebx
call fcn.00446a97
cmp dword [ebp + 4], 0x3f3f
mov eax, dword [esi + 0xc]
mov edi, dword [esi + 4]
mov edx, dword [ebp + 0x3c]
mov ebx, dword [ebp + 0x40]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x10]
mov dword [esp + 0x28], eax
mov eax, dword [esi]
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jne 0x44551c
or dword [ebp + 0x1bc8], 0xffffffff
jmp 0x44551c
and dword [ebp + 0x1bc8], 0
xor eax, eax
mov ecx, dword [ebp + 0x58]
lea edi, [eax + 1]
shl edi, cl
jmp 0x445cc7
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x446278
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
add ebx, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov ecx, dword [ebp + 0x50]
lea eax, [edi - 1]
and eax, edx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, ebx
ja 0x445c9a
test al, al
je 0x445d9d
test al, 0xf0
jne 0x445d9d
mov ebx, eax
movzx ecx, al
shr ebx, 8
xor edi, edi
movzx esi, bl
inc edi
add ecx, esi
mov edx, eax
shl edi, cl
mov ecx, esi
dec edi
shr eax, 0x10
and edi, dword [esp + 0x18]
shr edi, cl
mov ecx, dword [ebp + 0x50]
add edi, eax
mov dword [esp + 0x40], edx
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx esi, cl
movzx ecx, bl
mov ebx, dword [esp + 0x20]
add esi, ecx
cmp esi, ebx
jbe 0x445d88
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x446278
dec esi
movzx edi, dh
mov dword [esp + 0x1c], esi
mov ecx, ebx
mov esi, dword [esp + 0x14]
add ebx, 8
movzx eax, byte [esi]
shl eax, cl
add dword [esp + 0x18], eax
inc esi
movzx eax, word [esp + 0x42]
mov dword [esp + 0x14], esi
xor esi, esi
inc esi
movzx ecx, dl
add ecx, edi
shl esi, cl
mov ecx, edi
dec esi
and esi, dword [esp + 0x18]
shr esi, cl
add esi, eax
mov eax, dword [ebp + 0x50]
mov eax, dword [eax + esi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, edi
cmp ecx, ebx
ja 0x445d2f
mov esi, dword [esp + 0x30]
movzx ecx, dh
mov edx, dword [esp + 0x18]
shr edx, cl
sub ebx, ecx
mov dword [ebp + 0x1bc8], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [ebp + 0x1bc8], ecx
sub ebx, ecx
shr edx, cl
mov ecx, eax
shr ecx, 0x10
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 0x44], ecx
test al, al
jne 0x445dcf
mov dword [ebp + 4], 0x3f4d
jmp 0x445518
test al, 0x20
je 0x445de6
or dword [ebp + 0x1bc8], 0xffffffff
mov dword [ebp + 4], 0x3f3f
jmp 0x445518
mov edi, dword [esp + 0x1c]
test al, 0x40
je 0x445dfa
mov dword [esi + 0x18], str.invalid_literal_length_code
jmp 0x445067
movzx eax, al
and eax, 0xf
mov dword [ebp + 4], 0x3f49
mov dword [ebp + 0x4c], eax
mov esi, dword [ebp + 0x4c]
test esi, esi
je 0x445e62
cmp ebx, esi
jae 0x445e43
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, esi
jb 0x445e19
xor eax, eax
mov ecx, esi
inc eax
sub ebx, esi
shl eax, cl
dec eax
mov dword [esp + 0x20], ebx
and eax, edx
shr edx, cl
add dword [ebp + 0x44], eax
add dword [ebp + 0x1bc8], esi
mov dword [esp + 0x18], edx
mov eax, dword [ebp + 0x44]
mov dword [ebp + 0x1bcc], eax
mov dword [ebp + 4], 0x3f4a
mov ecx, dword [ebp + 0x5c]
xor eax, eax
mov edi, dword [ebp + 0x54]
lea esi, [eax + 1]
shl esi, cl
jmp 0x445eae
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x446278
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
add ebx, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
lea eax, [esi - 1]
and eax, edx
mov eax, dword [edi + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, ebx
ja 0x445e81
test al, 0xf0
jne 0x445f75
mov ebx, eax
movzx ecx, al
shr ebx, 8
xor edi, edi
movzx esi, bl
inc edi
add ecx, esi
mov edx, eax
shl edi, cl
mov ecx, esi
dec edi
shr eax, 0x10
and edi, dword [esp + 0x18]
shr edi, cl
mov ecx, dword [ebp + 0x54]
add edi, eax
mov dword [esp + 0x40], edx
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx esi, cl
movzx ecx, bl
mov ebx, dword [esp + 0x20]
add esi, ecx
cmp esi, ebx
jbe 0x445f64
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x446278
dec esi
movzx edi, dh
mov dword [esp + 0x1c], esi
mov ecx, ebx
mov esi, dword [esp + 0x14]
add ebx, 8
movzx eax, byte [esi]
shl eax, cl
add dword [esp + 0x18], eax
inc esi
movzx eax, word [esp + 0x42]
mov dword [esp + 0x14], esi
xor esi, esi
inc esi
movzx ecx, dl
add ecx, edi
shl esi, cl
mov ecx, edi
dec esi
and esi, dword [esp + 0x18]
shr esi, cl
add esi, eax
mov eax, dword [ebp + 0x54]
mov eax, dword [eax + esi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, edi
cmp ecx, ebx
ja 0x445f0b
movzx ecx, dh
mov edx, dword [esp + 0x18]
sub ebx, ecx
shr edx, cl
add dword [ebp + 0x1bc8], ecx
mov esi, dword [esp + 0x30]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [ebp + 0x1bc8], ecx
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
test al, 0x40
je 0x445fa3
mov dword [esi + 0x18], str.invalid_distance_code
jmp 0x445582
mov ecx, eax
mov dword [ebp + 4], 0x3f4b
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [ebp + 0x48], ecx
mov dword [ebp + 0x4c], eax
mov edi, dword [ebp + 0x4c]
test edi, edi
je 0x446010
jmp 0x445fed
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x446278
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
add ebx, 8
cmp ebx, edi
jb 0x445fc4
xor eax, eax
mov ecx, edi
inc eax
sub ebx, edi
shl eax, cl
dec eax
mov dword [esp + 0x20], ebx
and eax, edx
shr edx, cl
add dword [ebp + 0x48], eax
add dword [ebp + 0x1bc8], edi
mov dword [esp + 0x18], edx
mov edi, dword [esp + 0x1c]
mov dword [ebp + 4], 0x3f4c
mov eax, dword [esp + 0x28]
test eax, eax
je 0x446278
mov ecx, dword [esp + 0x34]
sub ecx, eax
mov eax, dword [ebp + 0x48]
cmp eax, ecx
jbe 0x44607e
sub eax, ecx
cmp eax, dword [ebp + 0x30]
jbe 0x446050
cmp dword [ebp + 0x1bc4], 0
je 0x446050
mov dword [esi + 0x18], str.invalid_distance_too_far_back
jmp 0x445067
cmp eax, dword [ebp + 0x34]
jbe 0x446062
sub eax, dword [ebp + 0x34]
mov ecx, dword [ebp + 0x2c]
sub ecx, eax
add ecx, dword [ebp + 0x38]
jmp 0x44606a
mov ecx, dword [ebp + 0x38]
sub ecx, eax
add ecx, dword [ebp + 0x34]
mov edi, dword [ebp + 0x44]
cmp eax, edi
mov edx, edi
cmovbe edx, eax
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x18]
jmp 0x44608b
mov ecx, dword [esp + 0x2c]
mov edi, dword [ebp + 0x44]
sub ecx, eax
mov dword [esp + 0x40], edi
mov esi, dword [esp + 0x28]
mov eax, esi
cmp dword [esp + 0x40], esi
cmovbe eax, dword [esp + 0x40]
sub esi, eax
mov dword [esp + 0x40], eax
sub edi, eax
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x2c]
sub ecx, esi
mov dword [ebp + 0x44], edi
mov edi, eax
mov al, byte [ecx + esi]
mov byte [esi], al
inc esi
sub edi, 1
jne 0x4460b1
cmp dword [ebp + 0x44], 0
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x30]
jne 0x44551c
mov dword [ebp + 4], 0x3f48
jmp 0x44551c
cmp dword [esp + 0x28], 0
je 0x446278
mov ecx, dword [esp + 0x2c]
mov al, byte [ebp + 0x44]
mov byte [ecx], al
inc ecx
dec dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
jmp 0x4460d2
cmp dword [ebp + 0xc], 0
je 0x4461e1
cmp ebx, 0x20
jae 0x44613f
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jb 0x446110
mov ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x28]
add dword [esi + 0x14], ecx
add dword [ebp + 0x20], ecx
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x34], ecx
test al, 4
je 0x446189
test ecx, ecx
je 0x446189
mov edx, dword [esp + 0x2c]
push dword [esp + 0x34]
sub edx, ecx
cmp dword [ebp + 0x14], 0
mov ecx, dword [ebp + 0x1c]
je 0x446176
call fcn.00446eb5
jmp 0x44617b
call fcn.00446455
mov edx, dword [esp + 0x1c]
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
mov eax, dword [ebp + 0xc]
pop ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
test al, 4
je 0x4461d3
mov ecx, edx
mov eax, edx
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, edx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
mov eax, edx
shr eax, 0x18
add ecx, eax
xor eax, eax
cmp dword [ebp + 0x14], eax
cmovne ecx, edx
cmp ecx, dword [ebp + 0x1c]
je 0x4461d5
mov dword [esi + 0x18], str.incorrect_data_check
jmp 0x445067
xor eax, eax
mov edx, eax
mov ebx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 4], 0x3f4f
xor eax, eax
cmp dword [ebp + 0xc], eax
je 0x446265
cmp dword [ebp + 0x14], eax
je 0x446265
cmp ebx, 0x20
jae 0x44622a
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x446278
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jb 0x4461fd
xor eax, eax
cmp edx, dword [ebp + 0x20]
je 0x44625f
mov dword [esi + 0x18], str.incorrect_length_check
jmp 0x445067
mov eax, dword [esp + 0x2c]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x14]
mov dword [esi], eax
mov dword [esi + 4], edi
mov dword [ebp + 0x3c], edx
mov dword [ebp + 0x40], ebx
push 2
jmp 0x445530
mov dword [esp + 0x18], eax
mov ebx, eax
mov dword [ebp + 4], 0x3f50
xor eax, eax
inc eax
jmp 0x446274
push 0xfffffffffffffffd
pop eax
mov dword [esp + 0x38], eax
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 4], edi
mov edi, dword [esp + 0x34]
mov dword [esi], ecx
mov dword [ebp + 0x40], ebx
xor ebx, ebx
mov dword [ebp + 0x3c], eax
cmp dword [ebp + 0x2c], ebx
jne 0x4462ba
cmp edi, dword [esi + 0x10]
je 0x4462dd
cmp dword [ebp + 4], 0x3f51
jge 0x4462dd
mov edx, dword [esi + 0xc]
mov eax, edi
sub eax, dword [esi + 0x10]
mov ecx, esi
push eax
call fcn.00444d71
pop ecx
test eax, eax
je 0x4462dd
mov dword [ebp + 4], 0x3f52
push 0xfffffffffffffffc
jmp 0x445530
mov edx, dword [esp + 0x44]
sub edx, dword [esi + 4]
sub edi, dword [esi + 0x10]
add dword [esi + 8], edx
add dword [esi + 0x14], edi
add dword [ebp + 0x20], edi
test byte [ebp + 0xc], 4
mov dword [esp + 0x44], edx
je 0x446323
test edi, edi
je 0x446323
mov edx, dword [esi + 0xc]
mov ecx, dword [ebp + 0x1c]
sub edx, edi
push edi
cmp dword [ebp + 0x14], ebx
je 0x446313
call fcn.00446eb5
jmp 0x446318
call fcn.00446455
mov edx, dword [esp + 0x48]
mov dword [ebp + 0x1c], eax
pop ecx
mov dword [esi + 0x30], eax
cmp dword [ebp + 4], 0x3f47
je 0x446335
cmp dword [ebp + 4], 0x3f42
jne 0x44633a
mov ebx, 0x100
mov ecx, dword [ebp + 8]
neg ecx
mov dword [esp + 0x50], 0x80
sbb ecx, ecx
xor eax, eax
and ecx, 0x40
cmp dword [ebp + 4], 0x3f3f
cmove eax, dword [esp + 0x50]
add ecx, eax
mov eax, dword [esp + 0x38]
add ecx, dword [ebp + 0x40]
add ecx, ebx
mov dword [esi + 0x2c], ecx
test edx, edx
jne 0x445531
test edi, edi
jne 0x445531
push 0xfffffffffffffffb
test eax, eax
pop ecx
cmove eax, ecx
jmp 0x445531