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

Disassembly:
sub esp, 0x44
push ebx
push ebp
mov eax, ecx
mov dword [esp + 0x14], eax
push esi
push edi
test eax, eax
je case.0x46b352.31
mov edi, dword [eax + 0x1c]
mov dword [esp + 0x38], edi
test edi, edi
je case.0x46b352.31
cmp dword [eax + 0xc], 0
lea ecx, [eax + 0xc]
je case.0x46b352.31
cmp dword [eax], 0
jne 0x46b2e5
cmp dword [eax + 4], 0
jne case.0x46b352.31
lea edx, [eax + 0xc]
jmp 0x46b2e7
mov edx, ecx
mov eax, dword [edi]
mov dword [esp + 0x44], ecx
cmp eax, 0xb
jne 0x46b301
mov dword [edi], 0xc
mov eax, 0xc
mov dword [esp + 0x44], edx
mov ecx, dword [ecx]
mov esi, dword [edi + 0x3c]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x20], esi
mov dword [esp + 0x34], 0
mov edx, dword [ecx + 0x10]
mov ebx, dword [ecx]
mov ebp, dword [ecx + 4]
mov dword [esp + 0x24], edx
mov edx, dword [edi + 0x38]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x14], edx
mov dword [esp + 0x48], ebp
cmp eax, 0x1f
ja case.0x46b352.31
mov dword [esp + 0x50], 0x1f
jmp dword [eax*4 + 0x46c904]
cmp dword [edi + 8], 0
jne 0x46b36a
mov dword [edi], 0xc
jmp 0x46bc01
cmp esi, 0x10
jae 0x46b39b
nop
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
add esi, 8
add edx, eax
mov dword [esp + 0x20], esi
inc ebx
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, 0x10
jb 0x46b370
mov ecx, dword [esp + 0x1c]
test byte [edi + 8], 2
je 0x46b3f0
cmp edx, 0x8b1f
jne 0x46b3f0
push 0
xor edx, edx
xor ecx, ecx
call fcn.00468980
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x2c]
mov byte [esp + 0x2c], cl
shr ecx, 8
mov byte [esp + 0x2d], cl
mov ecx, eax
push 2
mov dword [edi + 0x18], eax
call fcn.00468990
xor edx, edx
mov dword [edi + 0x18], eax
add esp, 8
mov dword [esp + 0x14], edx
xor esi, esi
mov dword [edi], 1
mov dword [esp + 0x20], esi
jmp 0x46bbfd
mov eax, dword [edi + 0x20]
mov dword [edi + 0x10], 0
test eax, eax
je 0x46b405
mov dword [eax + 0x30], 0xffffffff
test byte [edi + 8], 1
je 0x46b4ce
movzx eax, dl
mov ecx, edx
shl eax, 8
xor edx, edx
shr ecx, 8
add eax, ecx
div dword [esp + 0x50]
test edx, edx
mov edx, dword [esp + 0x14]
jne 0x46b4ca
mov eax, edx
and al, 0xf
cmp al, 8
je 0x46b44c
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [edi], 0x1d
jmp 0x46bc01
mov eax, dword [edi + 0x24]
sub esi, 4
shr edx, 4
mov ecx, edx
mov dword [esp + 0x14], edx
and ecx, 0xf
mov dword [esp + 0x20], esi
add ecx, 8
test eax, eax
jne 0x46b4b0
mov dword [edi + 0x24], ecx
mov eax, 1
xor edx, edx
shl eax, cl
xor ecx, ecx
push 0
mov dword [edi + 0x14], eax
call fcn.0046e3d0
mov edx, dword [esp + 0x18]
add esp, 4
mov ecx, dword [esp + 0x1c]
shr edx, 8
not edx
mov dword [edi + 0x18], eax
and edx, 2
or edx, 9
mov dword [ecx + 0x30], eax
mov dword [edi], edx
xor edx, edx
xor esi, esi
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
jmp 0x46bc01
cmp ecx, eax
jbe 0x46b46c
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [edi], 0x1d
jmp 0x46bc01
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.incorrect_header_check
mov dword [edi], 0x1d
jmp 0x46bc01
cmp esi, 0x10
jae 0x46b510
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
add esi, 8
add edx, eax
mov dword [esp + 0x20], esi
inc ebx
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, 0x10
jb 0x46b4e5
mov ecx, dword [esp + 0x1c]
mov dword [edi + 0x10], edx
cmp dl, 8
je 0x46b52a
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [edi], 0x1d
jmp 0x46bc01
test edx, 0xe000
je 0x46b544
mov dword [ecx + 0x18], str.unknown_header_flags_set
mov dword [edi], 0x1d
jmp 0x46bc01
mov ecx, dword [edi + 0x20]
test ecx, ecx
je 0x46b555
mov eax, edx
shr eax, 8
and eax, 1
mov dword [ecx], eax
test dword [edi + 0x10], 0x200
je 0x46b57d
mov ecx, dword [edi + 0x18]
mov byte [esp + 0x28], dl
shr edx, 8
mov byte [esp + 0x29], dl
lea edx, [esp + 0x28]
push 2
call fcn.00468990
add esp, 4
mov dword [edi + 0x18], eax
xor edx, edx
mov dword [edi], 2
mov dword [esp + 0x14], edx
xor esi, esi
jmp 0x46b592
cmp esi, 0x20
jae 0x46b5b5
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x20
jb 0x46b592
mov eax, dword [edi + 0x20]
test eax, eax
je 0x46b5bf
mov dword [eax + 4], edx
test dword [edi + 0x10], 0x200
je 0x46b5f9
mov ecx, dword [edi + 0x18]
mov eax, edx
shr eax, 8
mov byte [esp + 0x29], al
mov eax, edx
mov byte [esp + 0x28], dl
shr edx, 0x18
shr eax, 0x10
mov byte [esp + 0x2b], dl
lea edx, [esp + 0x28]
push 4
mov byte [esp + 0x2e], al
call fcn.00468990
add esp, 4
mov dword [edi + 0x18], eax
xor edx, edx
mov dword [edi], 3
mov dword [esp + 0x14], edx
xor esi, esi
jmp 0x46b610
cmp esi, 0x10
jae 0x46b633
nop
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x10
jb 0x46b610
mov esi, dword [edi + 0x20]
mov ecx, edx
shr ecx, 8
test esi, esi
je 0x46b64b
movzx eax, dl
mov dword [esi + 8], eax
mov eax, dword [edi + 0x20]
mov dword [eax + 0xc], ecx
test dword [edi + 0x10], 0x200
je 0x46b670
mov byte [esp + 0x28], dl
lea edx, [esp + 0x28]
mov byte [esp + 0x29], cl
mov ecx, dword [edi + 0x18]
push 2
call fcn.00468990
add esp, 4
mov dword [edi + 0x18], eax
xor edx, edx
mov dword [edi], 4
xor esi, esi
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
test dword [edi + 0x10], 0x400
je 0x46b6f8
cmp esi, 0x10
jae 0x46b6b3
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x10
jb 0x46b690
mov eax, dword [edi + 0x20]
mov dword [edi + 0x40], edx
test eax, eax
je 0x46b6c0
mov dword [eax + 0x14], edx
test dword [edi + 0x10], 0x200
je 0x46b6e8
mov ecx, dword [edi + 0x18]
mov byte [esp + 0x28], dl
shr edx, 8
mov byte [esp + 0x29], dl
lea edx, [esp + 0x28]
push 2
call fcn.00468990
add esp, 4
mov dword [edi + 0x18], eax
xor esi, esi
mov dword [esp + 0x14], 0
mov dword [esp + 0x20], esi
jmp 0x46b706
mov eax, dword [edi + 0x20]
test eax, eax
je 0x46b706
mov dword [eax + 0x10], 0
mov dword [edi], 5
test dword [edi + 0x10], 0x400
je 0x46b7bb
mov eax, dword [edi + 0x40]
mov ecx, ebp
cmp eax, ebp
cmovbe ecx, eax
mov dword [esp + 0x3c], ecx
test ecx, ecx
je 0x46b7b3
mov edx, dword [edi + 0x20]
test edx, edx
je 0x46b77d
mov ebx, dword [edx + 0x10]
test ebx, ebx
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x18]
je 0x46b77d
mov ebx, dword [edx + 0x14]
mov edi, dword [edx + 0x18]
sub ebx, eax
mov eax, dword [esp + 0x3c]
add ecx, ebx
mov edx, edi
sub edx, ebx
cmp ecx, edi
cmova eax, edx
push eax
mov eax, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x54]
add eax, ebx
push eax
call fcn.00488550
mov ebx, dword [esp + 0x24]
add esp, 0xc
mov edi, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
test dword [edi + 0x10], 0x200
je 0x46b79f
test ebx, ebx
jne 0x46b78e
xor eax, eax
jmp 0x46b79c
push ecx
mov ecx, dword [edi + 0x18]
mov edx, ebx
call fcn.00468990
add esp, 4
mov dword [edi + 0x18], eax
mov ecx, dword [esp + 0x3c]
sub ebp, ecx
mov eax, dword [edi + 0x40]
add ebx, ecx
sub eax, ecx
mov dword [esp + 0x18], ebx
mov dword [edi + 0x40], eax
test eax, eax
jne 0x46c7f8
mov dword [edi + 0x40], 0
mov dword [edi], 6
test dword [edi + 0x10], 0x800
je 0x46b860
test ebp, ebp
je 0x46c7f8
xor ecx, ecx
nop
mov al, byte [ecx + ebx]
inc ecx
mov byte [esp + 0x13], al
mov eax, dword [edi + 0x20]
test eax, eax
je 0x46b80e
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x46b80e
mov esi, dword [edi + 0x40]
cmp esi, dword [eax + 0x20]
jae 0x46b80e
mov bl, byte [esp + 0x13]
mov eax, esi
mov byte [edx + eax], bl
inc dword [edi + 0x40]
mov ebx, dword [esp + 0x18]
mov al, byte [esp + 0x13]
test al, al
je 0x46b81a
cmp ecx, ebp
jb 0x46b7e0
test dword [edi + 0x10], 0x200
mov esi, dword [esp + 0x20]
mov dword [esp + 0x4c], ecx
je 0x46b84e
test ebx, ebx
jne 0x46b833
xor edx, edx
jmp 0x46b84b
push ecx
mov ecx, dword [edi + 0x18]
mov edx, ebx
call fcn.00468990
mov ecx, dword [esp + 0x50]
mov edx, eax
mov al, byte [esp + 0x17]
add esp, 4
mov dword [edi + 0x18], edx
add ebx, ecx
sub ebp, ecx
mov dword [esp + 0x18], ebx
test al, al
jne 0x46c7f8
jmp 0x46b86e
mov eax, dword [edi + 0x20]
test eax, eax
je 0x46b86e
mov dword [eax + 0x1c], 0
mov dword [edi + 0x40], 0
mov dword [edi], 7
test dword [edi + 0x10], 0x1000
je 0x46b912
test ebp, ebp
je 0x46c7f8
xor ecx, ecx
mov al, byte [ecx + ebx]
inc ecx
mov byte [esp + 0x13], al
mov eax, dword [edi + 0x20]
test eax, eax
je 0x46b8c0
mov edx, dword [eax + 0x24]
test edx, edx
je 0x46b8c0
mov esi, dword [edi + 0x40]
cmp esi, dword [eax + 0x28]
jae 0x46b8c0
mov bl, byte [esp + 0x13]
mov eax, esi
mov byte [edx + eax], bl
inc dword [edi + 0x40]
mov ebx, dword [esp + 0x18]
mov al, byte [esp + 0x13]
test al, al
je 0x46b8cc
cmp ecx, ebp
jb 0x46b892
test dword [edi + 0x10], 0x200
mov esi, dword [esp + 0x20]
mov dword [esp + 0x4c], ecx
je 0x46b900
test ebx, ebx
jne 0x46b8e5
xor edx, edx
jmp 0x46b8fd
push ecx
mov ecx, dword [edi + 0x18]
mov edx, ebx
call fcn.00468990
mov ecx, dword [esp + 0x50]
mov edx, eax
mov al, byte [esp + 0x17]
add esp, 4
mov dword [edi + 0x18], edx
add ebx, ecx
sub ebp, ecx
mov dword [esp + 0x18], ebx
test al, al
jne 0x46c7f8
jmp 0x46b920
mov eax, dword [edi + 0x20]
test eax, eax
je 0x46b920
mov dword [eax + 0x24], 0
mov edx, dword [esp + 0x14]
mov dword [edi], 8
test dword [edi + 0x10], 0x200
je 0x46b98b
cmp esi, 0x10
jae 0x46b95f
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
add esi, 8
add edx, eax
mov dword [esp + 0x20], esi
inc ebx
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, 0x10
jb 0x46b938
movzx eax, word [edi + 0x18]
cmp edx, eax
je 0x46b97d
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.header_crc_mismatch
mov dword [edi], 0x1d
jmp 0x46bc01
xor esi, esi
mov dword [esp + 0x14], 0
mov dword [esp + 0x20], esi
mov ecx, dword [edi + 0x20]
test ecx, ecx
je 0x46b9a8
mov eax, dword [edi + 0x10]
sar eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [edi + 0x20]
mov dword [eax + 0x30], 1
push 0
xor edx, edx
xor ecx, ecx
call fcn.00468980
mov ecx, dword [esp + 0x20]
add esp, 4
mov edx, dword [esp + 0x14]
mov dword [edi + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edi], 0xb
jmp 0x46bc01
cmp esi, 0x20
jae 0x46b9fb
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x20
jb 0x46b9d4
mov ecx, dword [esp + 0x1c]
bswap edx
mov dword [edi + 0x18], edx
mov dword [ecx + 0x30], edx
xor edx, edx
mov dword [esp + 0x14], edx
xor esi, esi
mov dword [edi], 0xa
cmp dword [edi + 0xc], 0
je 0x46c7aa
push 0
xor edx, edx
xor ecx, ecx
call fcn.0046e3d0
mov ecx, dword [esp + 0x20]
add esp, 4
mov edx, dword [esp + 0x14]
mov dword [edi + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edi], 0xb
cmp dword [edi + 4], 0
je 0x46ba5f
mov ecx, esi
mov dword [edi], 0x1a
and ecx, 7
shr edx, cl
sub esi, ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
jmp 0x46bbfd
cmp esi, 3
jae 0x46ba87
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 3
jb case.default.0x46ba96
mov eax, edx
shr edx, 1
and eax, 1
mov dword [edi + 4], eax
mov eax, edx
and eax, 3
jmp dword [eax*4 + 0x46c984]
mov dword [edi], 0xd
mov ecx, dword [esp + 0x1c]
shr edx, 2
sub esi, 3
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
jmp 0x46bc01
mov ecx, dword [esp + 0x1c]
shr edx, 2
sub esi, 3
mov dword [edi + 0x4c], 0x4d5f88
mov dword [edi + 0x54], 9
mov dword [edi + 0x50], 0x4d6788
mov dword [edi + 0x58], 5
mov dword [edi], 0x13
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
jmp 0x46bc01
mov ecx, dword [esp + 0x1c]
shr edx, 2
sub esi, 3
mov dword [edi], 0x10
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
jmp 0x46bc01
mov ecx, dword [esp + 0x1c]
shr edx, 2
sub esi, 3
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
mov dword [ecx + 0x18], str.invalid_block_type
mov dword [edi], 0x1d
jmp 0x46bc01
mov ecx, esi
and ecx, 7
sub esi, ecx
shr edx, cl
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
cmp esi, 0x20
jae 0x46bb77
nop word [eax + eax]
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
add esi, 8
add edx, eax
mov dword [esp + 0x20], esi
inc ebx
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, 0x20
jb 0x46bb50
mov eax, edx
movzx ecx, dx
not eax
shr eax, 0x10
cmp ecx, eax
je 0x46bb98
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_stored_block_lengths
mov dword [edi], 0x1d
jmp 0x46bc01
xor edx, edx
mov dword [edi + 0x40], ecx
xor esi, esi
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
mov dword [edi], 0xf
mov ecx, dword [edi + 0x40]
test ecx, ecx
je 0x46c2fe
cmp ecx, ebp
mov eax, ebp
cmovbe eax, ecx
cmp eax, dword [esp + 0x24]
cmova eax, dword [esp + 0x24]
mov dword [esp + 0x4c], eax
test eax, eax
je 0x46c7f8
push eax
push ebx
push dword [esp + 0x34]
call fcn.00488550
mov eax, dword [esp + 0x58]
add esp, 0xc
sub dword [esp + 0x24], eax
add ebx, eax
add dword [esp + 0x2c], eax
sub ebp, eax
sub dword [edi + 0x40], eax
mov dword [esp + 0x18], ebx
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov eax, dword [edi]
cmp eax, 0x1f
jbe switch.0x0046b352
mov eax, 0xfffffffe
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
cmp esi, 0xe
jae 0x46bc43
nop
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0xe
jb 0x46bc20
mov ecx, edx
sub esi, 0xe
shr edx, 5
and ecx, 0x1f
mov eax, edx
mov dword [esp + 0x20], esi
and eax, 0x1f
shr edx, 5
inc eax
add ecx, 0x101
mov dword [esp + 0x4c], eax
mov dword [edi + 0x64], eax
mov eax, edx
and eax, 0xf
shr edx, 4
add eax, 4
mov dword [edi + 0x60], ecx
mov dword [edi + 0x5c], eax
mov dword [esp + 0x14], edx
cmp ecx, 0x11e
ja 0x46bd7d
cmp dword [esp + 0x4c], 0x1e
ja 0x46bd7d
mov dword [edi + 0x68], 0
mov dword [edi], 0x11
mov eax, dword [edi + 0x68]
cmp eax, dword [edi + 0x5c]
jae 0x46bd07
nop dword [eax]
cmp esi, 3
jae 0x46bcd8
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 3
jb 0x46bcb5
mov eax, dword [edi + 0x68]
mov ecx, edx
and ecx, 7
shr edx, 3
sub esi, 3
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
movzx eax, word [eax*2 + 0x4d6808]
mov word [edi + eax*2 + 0x70], cx
mov eax, dword [edi + 0x68]
inc eax
mov dword [edi + 0x68], eax
cmp eax, dword [edi + 0x5c]
jb 0x46bcb0
cmp eax, 0x13
jae 0x46bd2b
nop dword [eax]
movzx eax, word [eax*2 + 0x4d6808]
xor ecx, ecx
mov word [edi + eax*2 + 0x70], cx
mov eax, dword [edi + 0x68]
inc eax
mov dword [edi + 0x68], eax
cmp eax, 0x13
jb 0x46bd10
lea eax, [edi + 0x530]
mov dword [edi + 0x54], 7
lea edx, [edi + 0x6c]
mov dword [edi + 0x4c], eax
mov dword [edx], eax
lea ecx, [edi + 0x54]
lea eax, [edi + 0x2f0]
push eax
push ecx
push edx
push 0x13
lea edx, [edi + 0x70]
xor ecx, ecx
call fcn.0046e640
mov edx, dword [esp + 0x24]
add esp, 0x10
mov dword [esp + 0x34], eax
test eax, eax
je 0x46bd93
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_code_lengths_set
mov dword [edi], 0x1d
jmp 0x46bc01
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.too_many_length_or_distance_symbols
mov dword [edi], 0x1d
jmp 0x46bc01
mov dword [edi + 0x68], 0
mov dword [edi], 0x12
mov eax, dword [edi + 0x64]
mov ecx, dword [edi + 0x60]
add eax, ecx
cmp dword [edi + 0x68], eax
jae 0x46c014
mov ecx, dword [edi + 0x54]
mov eax, 1
mov ebx, dword [edi + 0x4c]
shl eax, cl
dec eax
and eax, edx
mov eax, dword [ebx + eax*4]
mov ecx, eax
shr ecx, 8
mov ebx, eax
shr ebx, 0x10
mov dword [esp + 0x4c], ecx
movzx ecx, cl
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x18]
cmp ecx, esi
jbe 0x46be3c
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [edi + 0x54]
add edx, eax
mov eax, 1
mov dword [esp + 0x14], edx
shl eax, cl
add esi, 8
mov ecx, dword [edi + 0x4c]
dec eax
and eax, edx
mov dword [esp + 0x18], ebx
dec ebp
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x3c], eax
shr dword [esp + 0x3c], 0x10
movzx ecx, cl
cmp ecx, esi
ja 0x46bde1
mov ecx, dword [esp + 0x3c]
movzx ecx, cx
mov dword [esp + 0x3c], ecx
mov cl, byte [esp + 0x4c]
jmp 0x46be40
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
cmp di, 0x10
movzx ebx, di
mov edi, dword [esp + 0x38]
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x18]
jae 0x46be83
shr edx, cl
mov ecx, eax
shr ecx, 8
movzx ecx, cl
sub esi, ecx
shr eax, 0x10
mov ecx, dword [edi + 0x68]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
mov word [edi + ecx*2 + 0x70], ax
inc dword [edi + 0x68]
mov ecx, dword [edi + 0x68]
jmp 0x46bffb
cmp word [esp + 0x4c], 0x10
movzx ecx, cl
jne 0x46bf00
add ecx, 2
mov dword [esp + 0x4c], ecx
cmp esi, ecx
jae 0x46bec6
nop dword [eax]
test ebp, ebp
je 0x46c7f8
movzx edx, byte [ebx]
mov ecx, esi
shl edx, cl
inc ebx
add dword [esp + 0x14], edx
add esi, 8
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, dword [esp + 0x4c]
jb 0x46bea0
mov edx, dword [esp + 0x14]
movzx ecx, ah
shr edx, cl
sub esi, ecx
mov ecx, dword [edi + 0x68]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
test ecx, ecx
je 0x46c03d
movzx ecx, word [edi + ecx*2 + 0x6e]
mov eax, edx
and eax, 3
shr edx, 2
add eax, 3
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], eax
sub esi, 2
jmp 0x46bfaf
cmp word [esp + 0x3c], 0x11
jne 0x46bf54
add ecx, 3
mov dword [esp + 0x4c], ecx
cmp esi, ecx
jae 0x46bf39
test ebp, ebp
je 0x46c7f8
movzx edx, byte [ebx]
mov ecx, esi
shl edx, cl
inc ebx
add dword [esp + 0x14], edx
add esi, 8
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, dword [esp + 0x4c]
jb 0x46bf13
mov edx, dword [esp + 0x14]
movzx ecx, ah
shr edx, cl
mov eax, edx
and eax, 7
add eax, 3
shr edx, 3
mov dword [esp + 0x3c], eax
mov eax, 0xfffffffd
jmp 0x46bf9f
add ecx, 7
mov dword [esp + 0x4c], ecx
cmp esi, ecx
jae 0x46bf86
nop
test ebp, ebp
je 0x46c7f8
movzx edx, byte [ebx]
mov ecx, esi
shl edx, cl
inc ebx
add dword [esp + 0x14], edx
add esi, 8
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, dword [esp + 0x4c]
jb 0x46bf60
mov edx, dword [esp + 0x14]
movzx ecx, ah
shr edx, cl
mov eax, edx
and eax, 0x7f
add eax, 0xb
shr edx, 7
mov dword [esp + 0x3c], eax
mov eax, 0xfffffff9
sub eax, ecx
mov dword [esp + 0x40], 0
add esi, eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [edi + 0x68]
mov dword [esp + 0x4c], ecx
add ecx, eax
mov eax, dword [edi + 0x60]
add eax, dword [edi + 0x64]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
cmp ecx, eax
ja 0x46c03d
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x40]
nop word [eax + eax]
mov word [edi + ecx*2 + 0x70], dx
mov ecx, dword [edi + 0x68]
lea ecx, [ecx + 1]
mov dword [edi + 0x68], ecx
sub ebx, 1
jne 0x46bfe0
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, dword [edi + 0x60]
mov dword [esp + 0x4c], eax
mov eax, dword [edi + 0x64]
add eax, dword [esp + 0x4c]
cmp ecx, eax
jb 0x46bdb1
mov ecx, dword [edi + 0x60]
cmp dword [edi], 0x1d
je 0x46bbfd
cmp word [edi + 0x270], 0
jne 0x46c053
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_code____missing_end_of_block
mov dword [edi], 0x1d
jmp 0x46bc01
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1d
jmp 0x46bc01
lea eax, [edi + 0x530]
mov dword [edi + 0x54], 9
lea edx, [edi + 0x6c]
mov dword [edi + 0x4c], eax
mov dword [edx], eax
lea ebx, [edi + 0x2f0]
lea eax, [edi + 0x54]
push ebx
push eax
push edx
push ecx
lea edx, [edi + 0x70]
mov ecx, 1
call fcn.0046e640
mov ebx, dword [esp + 0x28]
add esp, 0x10
mov dword [esp + 0x34], eax
test eax, eax
je 0x46c0ab
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_literal_lengths_set
mov dword [edi], 0x1d
jmp 0x46bc01
mov eax, dword [edi + 0x6c]
lea ecx, [edi + 0x6c]
mov dword [edi + 0x50], eax
lea edx, [edi + 0x2f0]
push edx
lea eax, [edi + 0x58]
mov dword [eax], 6
push eax
mov eax, dword [edi + 0x60]
add eax, 0x38
push ecx
push dword [edi + 0x64]
mov ecx, 2
lea edx, [edi + eax*2]
call fcn.0046e640
mov ecx, dword [esp + 0x2c]
add esp, 0x10
mov edx, dword [esp + 0x14]
mov dword [esp + 0x34], eax
test eax, eax
je case.0x46b352.19
mov dword [ecx + 0x18], str.invalid_distances_set
mov dword [edi], 0x1d
jmp 0x46bc01
mov dword [edi], 0x14
cmp ebp, 6
jb 0x46c18b
cmp dword [esp + 0x24], 0x102
jb 0x46c18b
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x2c]
push dword [esp + 0x30]
mov dword [ecx + 4], ebp
mov dword [ebx], eax
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x1c]
mov dword [ecx + 0x10], eax
mov dword [ecx], ebx
push ecx
mov dword [edi + 0x38], edx
mov dword [edi + 0x3c], esi
call fcn.004aeb00
mov eax, dword [esp + 0x4c]
add esp, 8
cmp dword [edi], 0xb
mov ecx, dword [esp + 0x1c]
mov edx, dword [edi + 0x38]
mov eax, dword [eax]
mov esi, dword [edi + 0x3c]
mov ebx, dword [ecx]
mov ebp, dword [ecx + 4]
mov dword [esp + 0x2c], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
jne 0x46bc01
mov dword [edi + 0x1bc4], 0xffffffff
jmp 0x46bc01
mov eax, dword [edi + 0x4c]
mov ecx, dword [edi + 0x54]
mov dword [esp + 0x3c], eax
mov eax, 1
shl eax, cl
mov ecx, dword [edi + 0x4c]
dec eax
and eax, edx
mov dword [edi + 0x1bc4], 0
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x46c201
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x3c], eax
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [edi + 0x54]
add edx, eax
mov eax, 1
mov dword [esp + 0x14], edx
shl eax, cl
add esi, 8
mov ecx, dword [esp + 0x3c]
dec eax
and eax, edx
mov dword [esp + 0x18], ebx
dec ebp
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x46c1c3
test al, al
je 0x46c2bb
test al, 0xf0
jne 0x46c2bb
mov ecx, eax
mov edi, 1
shr ecx, 8
mov edx, eax
movzx ebx, cl
movzx ecx, al
add ecx, ebx
shr eax, 0x10
shl edi, cl
mov ecx, ebx
dec edi
mov dword [esp + 0x40], edx
and edi, dword [esp + 0x14]
shr edi, cl
mov ecx, dword [esp + 0x3c]
add edi, eax
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
jbe 0x46c2a4
nop
test ebp, ebp
je 0x46c7f4
mov ebx, dword [esp + 0x18]
mov ecx, esi
mov edi, 1
add esi, 8
dec ebp
movzx eax, byte [ebx]
inc ebx
shl eax, cl
add dword [esp + 0x14], eax
movzx eax, word [esp + 0x42]
mov dword [esp + 0x18], ebx
movzx ebx, dh
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [esp + 0x14]
shr edi, cl
add edi, eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
ja 0x46c250
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x18]
movzx ecx, dh
shr dword [esp + 0x14], cl
sub esi, ecx
mov dword [edi + 0x1bc4], ecx
mov ecx, eax
shr ecx, 8
movzx edx, cl
add dword [edi + 0x1bc4], edx
mov ecx, edx
shr dword [esp + 0x14], cl
sub esi, edx
mov ecx, eax
mov dword [esp + 0x20], esi
shr ecx, 0x10
mov dword [edi + 0x40], ecx
test al, al
jne 0x46c2ec
mov dword [edi], 0x19
jmp 0x46bbf9
mov edx, dword [esp + 0x14]
test al, 0x20
je 0x46c309
mov dword [edi + 0x1bc4], 0xffffffff
mov dword [edi], 0xb
jmp 0x46bbfd
test al, 0x40
je 0x46c323
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_literal_length_code
mov dword [edi], 0x1d
jmp 0x46bc01
movzx eax, al
and eax, 0xf
mov dword [edi], 0x15
mov dword [edi + 0x48], eax
mov ecx, dword [edi + 0x48]
test ecx, ecx
je 0x46c382
cmp esi, ecx
jae 0x46c367
mov dword [esp + 0x4c], ecx
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [esp + 0x4c]
add edx, eax
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, ecx
jb 0x46c341
mov eax, 1
sub esi, ecx
shl eax, cl
dec eax
and eax, edx
shr edx, cl
add dword [edi + 0x40], eax
add dword [edi + 0x1bc4], ecx
mov dword [esp + 0x14], edx
mov eax, dword [edi + 0x40]
mov dword [edi + 0x1bc8], eax
mov dword [edi], 0x16
mov eax, dword [edi + 0x50]
mov ecx, dword [edi + 0x58]
mov dword [esp + 0x3c], eax
mov eax, 1
shl eax, cl
mov ecx, dword [edi + 0x50]
dec eax
and eax, edx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x46c3fe
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x3c], eax
nop
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [edi + 0x58]
add edx, eax
mov eax, 1
mov dword [esp + 0x14], edx
shl eax, cl
add esi, 8
mov ecx, dword [esp + 0x3c]
dec eax
and eax, edx
mov dword [esp + 0x18], ebx
dec ebp
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x46c3c0
test al, 0xf0
jne 0x46c4ac
mov ecx, eax
mov edi, 1
shr ecx, 8
mov edx, eax
movzx ebx, cl
movzx ecx, al
add ecx, ebx
shr eax, 0x10
shl edi, cl
mov ecx, ebx
dec edi
mov dword [esp + 0x40], edx
and edi, dword [esp + 0x14]
shr edi, cl
mov ecx, dword [esp + 0x3c]
add edi, eax
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
jbe 0x46c497
test ebp, ebp
je 0x46c7f4
mov ebx, dword [esp + 0x18]
mov ecx, esi
mov edi, 1
add esi, 8
dec ebp
movzx eax, byte [ebx]
inc ebx
shl eax, cl
add dword [esp + 0x14], eax
movzx eax, word [esp + 0x42]
mov dword [esp + 0x18], ebx
movzx ebx, dh
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [esp + 0x14]
shr edi, cl
add edi, eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
ja 0x46c443
mov edi, dword [esp + 0x38]
movzx ecx, dh
mov edx, dword [esp + 0x14]
sub esi, ecx
shr edx, cl
add dword [edi + 0x1bc4], ecx
mov ebx, dword [esp + 0x18]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [edi + 0x1bc4], ecx
sub esi, ecx
shr edx, cl
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
test al, 0x40
je 0x46c4e4
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_distance_code
mov dword [edi], 0x1d
jmp 0x46bc01
mov ecx, eax
mov dword [edi], 0x17
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [edi + 0x44], ecx
mov dword [edi + 0x48], eax
mov ecx, dword [edi + 0x48]
test ecx, ecx
je 0x46c555
cmp esi, ecx
jae 0x46c536
mov dword [esp + 0x4c], ecx
nop word [eax + eax]
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [esp + 0x4c]
add edx, eax
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, ecx
jb 0x46c510
mov eax, 1
sub esi, ecx
shl eax, cl
dec eax
mov dword [esp + 0x20], esi
and eax, edx
shr edx, cl
add dword [edi + 0x44], eax
add dword [edi + 0x1bc4], ecx
mov dword [esp + 0x14], edx
mov dword [edi], 0x18
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x46c7f8
mov eax, dword [esp + 0x30]
sub eax, ecx
mov ecx, dword [edi + 0x44]
cmp ecx, eax
jbe 0x46c5cf
sub ecx, eax
mov dword [esp + 0x3c], ecx
cmp ecx, dword [edi + 0x2c]
jbe 0x46c59e
cmp dword [edi + 0x1bc0], 0
je 0x46c59e
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_distance_too_far_back
mov dword [edi], 0x1d
jmp 0x46bc01
mov eax, dword [edi + 0x30]
cmp ecx, eax
jbe 0x46c5ae
sub ecx, eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0x3c], ecx
sub eax, ecx
add eax, dword [edi + 0x34]
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x40]
mov ecx, eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x3c]
cmp eax, ecx
cmovbe ecx, eax
mov eax, dword [esp + 0x4c]
jmp 0x46c5de
mov eax, dword [esp + 0x2c]
sub eax, ecx
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x40]
mov ecx, eax
mov edx, dword [esp + 0x24]
cmp ecx, edx
mov ebx, dword [esp + 0x40]
cmova ecx, edx
sub edx, ecx
sub eax, ecx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x2c]
sub ebx, edx
mov dword [edi + 0x40], eax
nop dword [eax]
mov al, byte [ebx + edx]
mov byte [edx], al
inc edx
sub ecx, 1
jne 0x46c600
cmp dword [edi + 0x40], 0
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x14]
jne 0x46bc01
mov dword [edi], 0x14
jmp 0x46bc01
cmp dword [esp + 0x24], 0
je 0x46c7f8
mov edx, dword [esp + 0x2c]
mov al, byte [edi + 0x40]
inc dword [esp + 0x2c]
dec dword [esp + 0x24]
mov byte [edx], al
mov edx, dword [esp + 0x14]
mov dword [edi], 0x14
jmp 0x46bc01
cmp dword [edi + 8], 0
je 0x46c749
cmp esi, 0x20
jae 0x46c69b
nop word [eax + eax]
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
add esi, 8
add edx, eax
mov dword [esp + 0x20], esi
inc ebx
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, 0x20
jb 0x46c670
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x24]
add dword [ecx + 0x14], eax
add dword [edi + 0x1c], eax
mov dword [esp + 0x30], eax
test eax, eax
je 0x46c6ef
mov eax, dword [esp + 0x2c]
sub eax, dword [esp + 0x30]
cmp dword [edi + 0x10], 0
mov ecx, dword [edi + 0x18]
je 0x46c6d3
test eax, eax
je 0x46c6e5
push dword [esp + 0x30]
mov edx, eax
call fcn.00468990
jmp 0x46c6de
push dword [esp + 0x30]
mov edx, eax
call fcn.0046e3d0
mov edx, dword [esp + 0x18]
add esp, 4
mov ecx, dword [esp + 0x1c]
mov dword [edi + 0x18], eax
mov dword [ecx + 0x30], eax
cmp dword [edi + 0x10], 0
mov ecx, edx
mov eax, dword [esp + 0x24]
mov dword [esp + 0x30], eax
jne 0x46c722
and ecx, 0xff00
mov eax, edx
shl eax, 0x10
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
cmp ecx, dword [edi + 0x18]
je 0x46c73d
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.incorrect_data_check
mov dword [edi], 0x1d
jmp 0x46bc01
xor edx, edx
xor esi, esi
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
mov dword [edi], 0x1b
cmp dword [edi + 8], 0
je 0x46c7da
cmp dword [edi + 0x10], 0
je 0x46c7da
cmp esi, 0x20
jae 0x46c78f
test ebp, ebp
je 0x46c7f8
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
add esi, 8
add edx, eax
mov dword [esp + 0x20], esi
inc ebx
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, 0x20
jb 0x46c768
cmp edx, dword [edi + 0x1c]
je 0x46c7d0
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.incorrect_length_check
mov dword [edi], 0x1d
jmp 0x46bc01
mov eax, dword [esp + 0x2c]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [ecx + 0x10], eax
mov eax, 2
mov dword [ecx], ebx
mov dword [ecx + 4], ebp
mov dword [edi + 0x3c], esi
mov dword [edi + 0x38], edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
mov dword [esp + 0x14], 0
xor esi, esi
mov dword [edi], 0x1c
mov dword [esp + 0x34], 1
jmp 0x46c7f8
mov dword [esp + 0x34], 0xfffffffd
jmp 0x46c7f8
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x2c]
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
mov dword [ebx + 4], ebp
cmp dword [edi + 0x28], 0
mov ebp, dword [esp + 0x30]
mov dword [edi + 0x38], eax
mov dword [edi + 0x3c], esi
jne 0x46c831
cmp ebp, dword [ebx + 0x10]
je 0x46c851
cmp dword [edi], 0x1d
jge 0x46c851
mov edx, ebp
mov ecx, ebx
call fcn.0046b190
test eax, eax
je 0x46c851
mov dword [edi], 0x1e
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x44
ret
mov eax, dword [esp + 0x48]
sub eax, dword [ebx + 4]
sub ebp, dword [ebx + 0x10]
add dword [ebx + 8], eax
add dword [ebx + 0x14], ebp
add dword [edi + 0x1c], ebp
cmp dword [edi + 8], 0
mov dword [esp + 0x48], eax
je 0x46c89f
test ebp, ebp
je 0x46c89f
cmp dword [edi + 0x10], 0
mov edx, dword [ebx + 0xc]
mov ecx, dword [edi + 0x18]
je 0x46c88e
sub edx, ebp
jne 0x46c886
xor eax, eax
jmp 0x46c899
push ebp
call fcn.00468990
jmp 0x46c896
push ebp
sub edx, ebp
call fcn.0046e3d0
add esp, 4
mov dword [edi + 0x18], eax
mov dword [ebx + 0x30], eax
mov edx, dword [edi]
cmp edx, 0x13
je 0x46c8af
cmp edx, 0xe
je 0x46c8af
xor esi, esi
jmp 0x46c8b4
mov esi, 0x100
mov ecx, dword [edi + 4]
neg ecx
mov dword [esp + 0x50], 0x80
sbb ecx, ecx
xor eax, eax
and ecx, 0x40
cmp edx, 0xb
cmove eax, dword [esp + 0x50]
add ecx, eax
mov eax, dword [esp + 0x34]
add ecx, dword [edi + 0x3c]
add ecx, esi
cmp dword [esp + 0x48], 0
mov dword [ebx + 0x2c], ecx
jne 0x46bc11
test ebp, ebp
jne 0x46bc11
pop edi
pop esi
test eax, eax
mov ecx, 0xfffffffb
pop ebp
cmove eax, ecx
pop ebx
add esp, 0x44
ret