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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x68
mov ebp, dword [esp + 0x7c]
mov eax, 0xfffffffe
test ebp, ebp
je 0x1013040a
cmp dword [ebp + 0x20], 0
je 0x1013040a
cmp dword [ebp + 0x24], 0
je 0x1013040a
mov ecx, dword [ebp + 0x1c]
test ecx, ecx
je 0x1013040a
cmp dword [ecx], ebp
jne 0x1013040a
mov dword [esp + 8], ecx
mov esi, dword [ecx + 4]
lea ecx, [esi - 0x3f34]
cmp ecx, 0x1f
ja 0x1013040a
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x1013040a
mov edx, dword [ebp]
test edx, edx
je 0x1013015e
mov dword [esp + 0x1c], edx
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 8]
lea ebx, [eax + 4]
cmp esi, 0x3f3f
jne 0x1012e89d
mov dword [ebx], 0x3f40
mov esi, 0x3f40
mov edi, dword [ebp + 4]
mov edx, dword [ebp + 0x10]
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x3c]
mov dword [esp], eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 4], eax
mov dword [esp + 0x14], ebx
lea ebx, [ecx + 0x1c]
mov dword [esp + 0x2c], ebx
lea eax, [ecx + 0x534]
mov dword [esp + 0x5c], eax
lea eax, [ecx + 0x70]
mov dword [esp + 0x4c], eax
mov ebx, dword [esp]
lea eax, [ecx + 0x58]
mov dword [esp + 0x58], eax
lea eax, [ecx + 0x74]
mov dword [esp + 0x54], eax
lea eax, [ecx + 0x2f4]
mov dword [esp + 0x48], eax
lea eax, [ecx + 0x5c]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x80]
lea eax, [eax - 5]
mov dword [esp + 0x64], eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x50], edi
mov dword [esp], edi
mov dword [esp + 0x24], edx
mov edi, dword [esp + 0x1c]
add esi, 0xffffc0cc
cmp esi, 0x1e
ja case.default.0x1012e92f
mov ecx, 1
mov dword [esp + 0x10], edx
jmp dword [esi*4 + 0x1013be98]
mov eax, dword [esp + 8]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x1012f24f
cmp dword [esp + 4], 0xf
mov esi, dword [esp]
ja 0x1012e974
test esi, esi
je 0x1013016d
dec esi
movzx edx, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl edx, cl
add ebx, edx
mov edx, dword [esp + 0x10]
cmp ecx, 8
lea ecx, [ecx + 8]
mov dword [esp + 4], ecx
jb 0x1012e94f
test al, 2
mov dword [esp], esi
je 0x1012f37c
cmp ebx, 0x8b1f
jne 0x1012f37c
mov eax, dword [esp + 8]
cmp dword [eax + 0x28], 0
jne 0x1012e99c
mov dword [eax + 0x28], 0xf
push 0
push 0
push 0
call fcn.101314c0
add esp, 0xc
mov ebx, dword [esp + 0x2c]
mov dword [ebx], eax
mov word [esp + 0x38], 0x8b1f
lea ecx, [esp + 0x38]
push 2
push ecx
push eax
call fcn.101314c0
add esp, 0xc
mov dword [ebx], eax
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f35
xor ebx, ebx
mov dword [esp + 4], 0
mov edx, dword [esp + 0x10]
mov esi, dword [esi]
jmp 0x1012e917
mov eax, dword [esp + 4]
cmp eax, 0xf
mov esi, dword [esp]
ja 0x1012ea15
mov dword [esp + 4], eax
test esi, esi
je 0x1013016d
dec esi
movzx eax, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl eax, cl
add ebx, eax
cmp ecx, 8
lea eax, [ecx + 8]
jb 0x1012e9f4
mov ecx, dword [esp + 8]
mov dword [ecx + 0x14], ebx
cmp bl, 8
jne 0x1012f269
test ebx, 0xe000
je 0x1012f40b
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [ebp + 0x18], str.unknown_header_flags_set
jmp 0x1013005f
mov eax, dword [esp + 4]
cmp eax, 0x1f
mov esi, dword [esp]
jbe 0x1012f460
jmp 0x1012f481
mov eax, dword [esp + 4]
cmp eax, 0xf
mov esi, dword [esp]
jbe 0x1012f4d0
jmp 0x1012f4f1
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x14]
test eax, 0x400
jne 0x1012eeb1
mov ecx, ebx
mov esi, dword [esp]
jmp 0x1012f55e
mov eax, dword [esp + 4]
cmp eax, 0x1f
mov esi, dword [esp]
ja 0x1012eab7
mov dword [esp + 4], eax
test esi, esi
je 0x1013016d
dec esi
movzx eax, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl eax, cl
add ebx, eax
cmp ecx, 0x18
lea eax, [ecx + 8]
jb 0x1012ea96
mov dword [esp], esi
bswap ebx
mov eax, dword [esp + 0x2c]
mov dword [eax], ebx
mov dword [ebp + 0x30], ebx
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f3e
xor ebx, ebx
mov dword [esp + 4], 0
mov ecx, dword [esp + 8]
cmp dword [ecx + 0x10], 0
je 0x101304ca
push 0
push 0
push 0
call fcn.101310a0
add esp, 0xc
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
mov dword [ebp + 0x30], eax
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f3f
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x64], 2
jb 0x10130203
mov eax, dword [esp + 8]
cmp dword [eax + 8], 0
je 0x1012eb44
mov eax, dword [esp + 4]
mov ecx, eax
and cl, 7
shr ebx, cl
and eax, 0xfffffff8
mov dword [esp + 4], eax
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f4e
mov esi, dword [esi]
jmp 0x1012e917
mov ecx, dword [esp + 4]
cmp ecx, 2
ja 0x1012ee4e
mov esi, dword [esp]
test esi, esi
je 0x101301d7
lea eax, [ecx + 8]
dec esi
movzx edx, byte [edi]
inc edi
shl edx, cl
add ebx, edx
mov dword [esp + 4], eax
mov edx, dword [esp + 0x10]
jmp 0x1012ee51
mov eax, dword [esp + 4]
mov ecx, eax
and cl, 7
shr ebx, cl
and eax, 0xfffffff8
cmp eax, 0x1f
ja 0x1012eec4
mov dword [esp + 4], eax
mov edx, dword [esp]
mov esi, dword [esp + 8]
test edx, edx
je 0x101301d7
dec edx
movzx eax, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl eax, cl
add ebx, eax
lea eax, [ecx + 8]
cmp ecx, 0x18
mov dword [esp + 4], eax
jb 0x1012eb97
jmp 0x1012eecb
mov eax, dword [esp + 4]
cmp eax, 0xd
mov esi, dword [esp]
ja 0x1012ebea
mov dword [esp + 4], eax
test esi, esi
je 0x1013016d
dec esi
movzx eax, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl eax, cl
add ebx, eax
cmp ecx, 6
lea eax, [ecx + 8]
jb 0x1012ebc9
mov dword [esp + 4], eax
mov eax, ebx
and eax, 0x1f
mov dword [esp], eax
add eax, 0x101
mov ecx, dword [esp + 8]
mov dword [ecx + 0x64], eax
mov ebp, ebx
shr ebp, 5
and ebp, 0x1f
lea eax, [ebp + 1]
mov dword [ecx + 0x68], eax
mov eax, dword [esp + 4]
mov ecx, ebx
shr ecx, 0xa
and ecx, 0xf
add ecx, 4
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 8]
mov dword [edx + 0x60], ecx
shr ebx, 0xe
add eax, 0xfffffff2
cmp dword [esp], 0x1d
ja 0x1012f27c
cmp ebp, 0x1e
jae 0x1012f27c
mov ecx, dword [esp + 8]
mov dword [ecx + 0x6c], 0
mov dword [ecx + 4], 0x3f45
xor ecx, ecx
mov ebp, dword [esp + 0x7c]
jmp 0x1012ec76
mov eax, dword [esp + 8]
mov edx, dword [eax + 0x60]
mov ecx, dword [eax + 0x6c]
mov dword [esp + 0xc], edx
cmp ecx, edx
mov esi, dword [esp]
mov eax, dword [esp + 4]
jae 0x1012ece0
mov edx, ecx
jmp 0x1012ecb2
mov dword [esp], esi
mov esi, ebx
and esi, 7
lea ecx, [edx + 1]
mov ebp, ebx
mov ebx, dword [esp + 8]
mov dword [ebx + 0x6c], ecx
movzx edx, word [edx + edx + 0x1013bf24]
mov word [ebx + edx*2 + 0x74], si
mov ebx, ebp
shr ebx, 3
add eax, 0xfffffffd
cmp ecx, dword [esp + 0xc]
mov edx, ecx
mov esi, dword [esp]
mov ebp, dword [esp + 0x7c]
jae 0x1012ece0
cmp eax, 2
ja 0x1012ec7a
mov dword [esp + 4], eax
test esi, esi
je 0x101301d7
mov eax, esi
mov ecx, dword [esp + 4]
lea esi, [ecx + 8]
dec eax
mov dword [esp], eax
mov eax, ebx
movzx ebx, byte [edi]
inc edi
shl ebx, cl
add eax, ebx
mov ebx, eax
mov eax, esi
jmp 0x1012ec7d
mov dword [esp + 4], eax
cmp ecx, 0x12
ja 0x1012ed09
add ecx, 0xffffffed
mov edx, dword [esp + 8]
movzx eax, word [ecx + ecx + 0x1013bf4a]
mov word [edx + eax*2 + 0x74], 0
inc ecx
jne 0x1012ecf0
mov dword [edx + 0x6c], 0x13
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 8]
mov dword [ecx + 0x70], eax
mov dword [ecx + 0x50], eax
mov dword [ecx + 0x58], 7
push dword [esp + 0x48]
push dword [esp + 0x5c]
push dword [esp + 0x54]
push 0x13
push dword [esp + 0x64]
push 0
call fcn.10133b30
add esp, 0x18
mov dword [esp + 0x18], eax
test eax, eax
je 0x1012ef8e
mov dword [esp], esi
mov dword [ebp + 0x18], str.invalid_code_lengths_set
jmp 0x1012ff7c
mov dword [esp + 0xc], ebx
mov ebp, dword [esp + 8]
mov ebx, dword [ebp + 0x6c]
mov esi, dword [esp]
jmp 0x1012efb2
mov esi, dword [esp + 8]
mov ecx, dword [esi + 0x4c]
test ecx, ecx
mov eax, dword [esp + 4]
je 0x1012fcd4
cmp eax, ecx
mov dword [esp + 0xc], ebx
jae 0x1012f29f
mov edx, dword [esp]
mov esi, edi
mov dword [esp + 0x1c], ecx
test edx, edx
je 0x10130209
dec edx
movzx ebx, byte [esi]
inc esi
mov ecx, eax
shl ebx, cl
mov ecx, dword [esp + 0x1c]
add dword [esp + 0xc], ebx
add eax, 8
cmp eax, ecx
jb 0x1012ed90
jmp 0x1012f2a4
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x4c]
mov esi, dword [esp]
jmp 0x1012fe92
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x10130522
mov esi, dword [esp + 8]
mov al, byte [esi + 0x44]
mov ecx, dword [esp + 0x30]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x30], ecx
dec ebx
mov dword [esp + 0x24], ebx
mov dword [esi + 4], 0x3f48
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x14]
mov esi, dword [esi]
jmp 0x1012e917
mov eax, dword [esp + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0xc], eax
test eax, eax
je 0x1012f260
mov eax, dword [esp + 4]
cmp eax, 0x1f
ja 0x1012f303
mov esi, dword [esp]
test esi, esi
je 0x1013016d
dec esi
movzx edx, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl edx, cl
add ebx, edx
mov edx, dword [esp + 0x10]
lea eax, [ecx + 8]
cmp ecx, 0x18
mov dword [esp + 4], eax
jb 0x1012ee24
jmp 0x1012f306
mov esi, dword [esp]
mov eax, ebx
and eax, 1
mov ecx, dword [esp + 8]
mov dword [ecx + 8], eax
mov ecx, ebx
shr ecx, 1
and ecx, 3
mov eax, 0x3f41
mov dword [esp], esi
jmp dword [ecx*4 + 0x1013bf14]
cmp dword [esp + 0x80], 6
mov eax, dword [esp + 8]
mov dword [eax + 0x50], 0x1013c118
mov dword [eax + 0x58], 9
mov dword [eax + 0x54], 0x1013c918
mov dword [eax + 0x5c], 5
mov dword [eax + 4], 0x3f47
mov esi, dword [esp + 0x14]
jne 0x1012f2f4
jmp 0x1013053c
cmp dword [esp + 4], 0xf
mov esi, dword [esp]
ja 0x1012f5a1
jmp 0x1012f57c
mov edx, dword [esp]
mov esi, dword [esp + 8]
mov dword [esp], edx
movzx ecx, bx
mov edx, ebx
not edx
shr edx, 0x10
cmp ecx, edx
jne 0x1012f293
xor ebx, ebx
cmp dword [esp + 0x80], 6
mov dword [esi + 0x44], ecx
mov dword [esi + 4], 0x3f42
mov dword [esp + 4], 0
mov edx, dword [esp + 0x10]
je 0x1013052b
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f43
mov eax, dword [esp + 8]
mov esi, dword [eax + 0x44]
test esi, esi
je 0x1012ef7d
mov eax, edi
mov dword [esp + 0xc], ebx
mov edi, dword [esp]
cmp esi, edi
cmova esi, edi
mov ebx, dword [esp + 0x24]
cmp esi, ebx
cmova esi, ebx
test esi, esi
je 0x101304f5
push esi
mov dword [esp + 0x20], eax
push eax
push dword [esp + 0x38]
call fcn.101162d0
mov edx, dword [esp + 0x1c]
add esp, 0xc
sub edi, esi
mov dword [esp], edi
mov edi, dword [esp + 0x1c]
add edi, esi
sub ebx, esi
mov dword [esp + 0x24], ebx
add dword [esp + 0x30], esi
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 8]
sub dword [eax + 0x44], esi
mov esi, ecx
mov ebx, dword [esp + 0xc]
mov esi, dword [ecx]
jmp 0x1012e917
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f3f
mov esi, dword [esi]
jmp 0x1012e917
mov dword [esp + 0xc], ebx
mov ebp, dword [esp + 8]
mov dword [ebp + 0x6c], 0
mov dword [ebp + 4], 0x3f46
xor ebx, ebx
mov dword [esp + 0x18], 0
mov edx, dword [esp + 0x10]
mov eax, dword [ebp + 0x64]
mov ecx, dword [ebp + 0x68]
mov dword [esp + 0x44], eax
add ecx, eax
mov dword [esp + 0x34], ecx
cmp ebx, ecx
mov eax, dword [esp + 4]
jae 0x1012f1d3
mov edx, dword [ebp + 0x50]
mov cl, byte [ebp + 0x58]
mov ebp, 0xffffffff
shl ebp, cl
not ebp
mov dword [esp + 0x28], edi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], ebp
mov ecx, dword [esp + 0xc]
and ecx, ebp
mov ebp, edx
movzx edx, byte [edx + ecx*4 + 1]
cmp eax, edx
jae 0x1012f03c
mov dword [esp + 4], eax
mov ebp, esi
mov edi, dword [esp + 0x28]
test esi, esi
je 0x1013018f
dec esi
movzx edx, byte [edi]
inc edi
mov ecx, eax
shl edx, cl
mov ecx, dword [esp + 0xc]
add ecx, edx
add eax, 8
mov dword [esp + 0xc], ecx
and ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
movzx edx, byte [edx + ecx*4 + 1]
cmp eax, edx
jb 0x1012f004
mov dword [esp], esi
mov esi, dword [esp + 0x1c]
jmp 0x1012f045
mov edi, dword [esp + 0x28]
mov dword [esp], esi
mov esi, ebp
movzx esi, word [esi + ecx*4 + 2]
cmp si, 0xf
ja 0x1012f079
mov ecx, edx
shr dword [esp + 0xc], cl
sub eax, edx
lea ecx, [ebx + 1]
mov edx, dword [esp + 8]
mov dword [edx + 0x6c], ecx
mov word [edx + ebx*2 + 0x74], si
mov ebx, ecx
mov dword [esp + 4], eax
mov ebp, dword [esp]
mov edx, dword [esp + 0x1c]
jmp 0x1012f1b2
cmp si, 0x10
je 0x1012f0d6
cmp si, 0x11
jne 0x1012f13f
lea ecx, [edx + 3]
mov dword [esp + 4], ecx
cmp eax, ecx
mov esi, dword [esp]
jae 0x1012f0b5
test esi, esi
je 0x10130473
dec esi
movzx ebp, byte [edi]
inc edi
mov ecx, eax
shl ebp, cl
add dword [esp + 0xc], ebp
add eax, 8
cmp eax, dword [esp + 4]
jb 0x1012f097
mov ecx, edx
mov ebp, dword [esp + 0xc]
shr ebp, cl
mov ecx, ebp
and ecx, 7
add ecx, 3
shr ebp, 3
mov dword [esp + 0xc], ebp
sub eax, edx
add eax, 0xfffffffd
jmp 0x1012f187
mov esi, edi
lea ecx, [edx + 2]
mov dword [esp + 4], ecx
cmp eax, ecx
mov edi, dword [esp]
jae 0x1012f104
test edi, edi
je 0x101304a8
dec edi
movzx ebp, byte [esi]
inc esi
mov ecx, eax
shl ebp, cl
add dword [esp + 0xc], ebp
add eax, 8
cmp eax, dword [esp + 4]
jb 0x1012f0e6
mov dword [esp], edi
mov ecx, edx
mov edi, dword [esp + 0xc]
shr edi, cl
sub eax, edx
test ebx, ebx
je 0x10130134
mov ecx, dword [esp + 8]
movzx edx, word [ecx + ebx*2 + 0x72]
mov ecx, edi
and ecx, 3
add ecx, 3
shr edi, 2
mov dword [esp + 0xc], edi
add eax, 0xfffffffe
mov dword [esp + 4], eax
mov ebp, dword [esp]
mov edi, esi
jmp 0x1012f18f
lea ecx, [edx + 7]
mov dword [esp + 4], ecx
cmp eax, ecx
mov esi, dword [esp]
jae 0x1012f16b
test esi, esi
je 0x10130473
dec esi
movzx ebp, byte [edi]
inc edi
mov ecx, eax
shl ebp, cl
add dword [esp + 0xc], ebp
add eax, 8
cmp eax, dword [esp + 4]
jb 0x1012f14d
mov ecx, edx
mov ebp, dword [esp + 0xc]
shr ebp, cl
mov ecx, ebp
and ecx, 0x7f
add ecx, 0xb
shr ebp, 7
mov dword [esp + 0xc], ebp
sub eax, edx
add eax, 0xfffffff9
xor edx, edx
mov dword [esp + 4], eax
mov ebp, esi
lea eax, [ecx + ebx]
cmp eax, dword [esp + 0x34]
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x1c]
ja 0x10130102
mov word [eax + ebx*2 + 0x74], dx
inc ebx
dec ecx
jne 0x1012f1a4
mov edx, esi
mov dword [eax + 0x6c], ebx
cmp ebx, dword [esp + 0x34]
mov dword [esp], ebp
mov esi, ebp
mov dword [esp + 0x28], edi
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 4]
mov ebp, dword [esp + 0x20]
jb 0x1012efe9
jmp 0x1012f1d8
mov ecx, edx
mov dword [esp], esi
mov dword [esp + 4], eax
mov esi, dword [esp + 8]
cmp word [esi + 0x274], 0
je 0x1012f35a
mov eax, dword [esp + 0x5c]
mov dword [esi + 0x70], eax
mov dword [esi + 0x50], eax
mov dword [esi + 0x58], 9
push dword [esp + 0x48]
push dword [esp + 0x5c]
push dword [esp + 0x54]
push dword [esp + 0x50]
push dword [esp + 0x64]
push 1
call fcn.10133b30
add esp, 0x18
mov dword [esp + 0x18], eax
test eax, eax
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0xc]
je 0x1012f3c5
mov dword [ebp + 0x18], str.invalid_literal_lengths_set
mov dword [eax], 0x3f51
mov edx, dword [esp + 0x10]
mov esi, eax
mov esi, dword [eax]
jmp 0x1012e917
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f40
mov esi, dword [esi]
jmp 0x1012e917
mov esi, dword [esp + 0x14]
jmp 0x1012f97a
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [ebp + 0x18], 0x1013bf61
jmp 0x1013005f
mov dword [esp + 4], eax
mov dword [esp], esi
mov ebp, dword [esp + 0x7c]
mov dword [ebp + 0x18], 0x1013bfed
jmp 0x1012ff7c
mov dword [ebp + 0x18], 0x1013bfd0
jmp 0x1012f911
mov esi, edi
mov edx, dword [esp]
mov ebx, 0xffffffff
shl ebx, cl
not ebx
mov ebp, dword [esp + 0xc]
and ebx, ebp
mov edi, dword [esp + 8]
add ebx, dword [edi + 0x44]
mov dword [edi + 0x44], ebx
sub eax, ecx
add dword [edi + 0x1bc8], ecx
shr ebp, cl
mov ecx, ebp
mov ebp, edi
mov edi, esi
mov esi, ebp
mov dword [esp], edx
mov dword [esp + 4], eax
jmp 0x1012fcd9
mov eax, 0x3f44
jmp case.0x1012ee6c.0
mov esi, dword [esp + 0x14]
mov dword [esi], eax
shr ebx, 3
add dword [esp + 4], 0xfffffffd
mov esi, dword [esi]
jmp 0x1012e917
mov esi, dword [esp]
mov dword [esp + 0x10], eax
mov dword [esp], esi
sub edx, dword [esp + 0x24]
add dword [ebp + 0x14], edx
mov ecx, dword [esp + 8]
add dword [ecx + 0x20], edx
mov eax, dword [esp + 0xc]
and eax, 4
test edx, edx
je 0x1012f92a
test eax, eax
mov esi, dword [esp + 0x14]
je 0x1012f94b
mov ecx, dword [esp + 0x30]
sub ecx, edx
mov eax, dword [esp + 8]
cmp dword [eax + 0x14], 0
mov eax, dword [eax + 0x1c]
je 0x1012f930
push edx
push ecx
push eax
call fcn.101314c0
jmp 0x1012f938
mov ebp, dword [esp + 0x7c]
mov dword [ebp + 0x18], str.invalid_code____missing_end_of_block
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f51
mov ebx, dword [esp + 0xc]
mov edx, ecx
mov esi, dword [esi]
jmp 0x1012e917
mov ecx, dword [esp + 8]
mov dword [ecx + 0x14], 0
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x1012f395
mov dword [ecx + 0x30], 0xffffffff
test al, 1
je 0x1012f3b9
mov eax, ebx
shl eax, 8
movzx eax, ax
mov ecx, ebx
shr ecx, 8
add ecx, eax
imul eax, ecx, 0xbdef7bdf
cmp eax, 0x8421085
jb 0x10130070
mov dword [ebp + 0x18], 0x1013bf4a
jmp 0x1013005f
mov eax, dword [esi + 0x70]
mov dword [esi + 0x54], eax
mov dword [esi + 0x5c], 6
mov eax, dword [esi + 0x64]
lea eax, [esi + eax*2 + 0x74]
push dword [esp + 0x48]
push dword [esp + 0x64]
push dword [esp + 0x54]
push dword [esi + 0x68]
push eax
push 2
call fcn.10133b30
add esp, 0x18
mov dword [esp + 0x18], eax
test eax, eax
je 0x1012fa11
mov dword [ebp + 0x18], str.invalid_distances_set
jmp 0x1012ff7c
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x1012f420
mov ecx, ebx
shr ecx, 8
and ecx, 1
mov dword [eax], ecx
test ebx, 0x200
je 0x1012f452
mov eax, dword [esp + 8]
test byte [eax + 0xc], 4
je 0x1012f452
mov word [esp + 0x38], bx
lea eax, [esp + 0x38]
push 2
push eax
mov ebx, dword [esp + 0x34]
push dword [ebx]
call fcn.101314c0
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f36
xor eax, eax
xor ebx, ebx
mov dword [esp + 4], eax
test esi, esi
je 0x1013016d
dec esi
movzx eax, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl eax, cl
add ebx, eax
cmp ecx, 0x18
lea eax, [ecx + 8]
jb 0x1012f460
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x1012f48f
mov dword [eax + 4], ebx
mov eax, dword [esp + 8]
test byte [eax + 0x15], 2
je 0x1012f4c2
mov eax, dword [esp + 8]
test byte [eax + 0xc], 4
je 0x1012f4c2
mov dword [esp + 0x38], ebx
lea eax, [esp + 0x38]
push 4
push eax
mov ebx, dword [esp + 0x34]
push dword [ebx]
call fcn.101314c0
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f37
xor eax, eax
xor ebx, ebx
mov dword [esp + 4], eax
test esi, esi
je 0x1013016d
dec esi
movzx eax, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl eax, cl
add ebx, eax
cmp ecx, 8
lea eax, [ecx + 8]
jb 0x1012f4d0
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x1012f50a
movzx ecx, bl
mov dword [eax + 8], ecx
mov ecx, ebx
shr ecx, 8
mov dword [eax + 0xc], ecx
mov eax, dword [esp + 8]
test byte [eax + 0x15], 2
je 0x1012f53e
test byte [eax + 0xc], 4
je 0x1012f53e
mov word [esp + 0x38], bx
lea eax, [esp + 0x38]
push 2
push eax
mov ebx, dword [esp + 0x34]
push dword [ebx]
call fcn.101314c0
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov dword [ebx], eax
mov eax, dword [esp + 8]
mov dword [eax + 4], 0x3f38
mov eax, dword [eax + 0x14]
xor ebx, ebx
test eax, 0x400
mov dword [esp + 4], 0
mov ecx, 0
jne 0x1012f57c
mov dword [esp], esi
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x1012f604
mov dword [eax + 0x10], 0
jmp 0x1012f604
test esi, esi
je 0x101301d7
dec esi
movzx edx, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl edx, cl
add ebx, edx
cmp ecx, 8
lea ecx, [ecx + 8]
mov dword [esp + 4], ecx
jb 0x1012f57c
mov edx, dword [esp + 0x10]
mov dword [esp], esi
mov esi, edi
mov ecx, dword [esp + 8]
mov dword [ecx + 0x44], ebx
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x1012f5b9
mov edi, ebx
mov dword [ecx + 0x14], ebx
xor ecx, ecx
test eax, 0x200
jne 0x1012f5ce
mov dword [esp + 4], 0
mov edi, esi
jmp 0x1012f604
mov eax, dword [esp + 8]
test byte [eax + 0xc], 4
mov edi, esi
je 0x1012f5fc
mov word [esp + 0x38], bx
lea eax, [esp + 0x38]
push 2
push eax
mov esi, dword [esp + 0x34]
push dword [esi]
call fcn.101314c0
xor ecx, ecx
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov dword [esi], eax
mov dword [esp + 4], 0
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f39
mov ebx, ecx
mov esi, dword [esp + 8]
mov ecx, dword [esi + 0x14]
test ecx, 0x400
je 0x1012f6c6
mov dword [esp + 0x1c], edi
mov eax, dword [esi + 0x44]
mov edi, dword [esp]
cmp eax, edi
mov edx, esi
mov esi, eax
cmova esi, edi
test esi, esi
je 0x1012f6b4
mov dword [esp + 0xc], ebx
mov ebx, dword [edx + 0x24]
test ebx, ebx
mov edi, dword [esp + 0x1c]
je 0x1012f677
mov edx, dword [ebx + 0x10]
test edx, edx
je 0x1012f677
mov ecx, dword [ebx + 0x14]
mov ebx, dword [ebx + 0x18]
sub ecx, eax
add edx, ecx
mov eax, ebx
sub eax, ecx
add ecx, esi
cmp ecx, ebx
cmovbe eax, esi
push eax
push edi
push edx
call fcn.101162d0
add esp, 0xc
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x14]
test ecx, 0x200
je 0x1012f69b
mov eax, dword [esp + 8]
test byte [eax + 0xc], 4
je 0x1012f69b
push esi
push edi
mov ebx, dword [esp + 0x34]
push dword [ebx]
call fcn.101314c0
add esp, 0xc
mov dword [ebx], eax
sub dword [esp], esi
add edi, esi
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x44]
sub eax, esi
mov esi, ecx
mov dword [ecx + 0x44], eax
mov ebx, dword [esp + 0xc]
jmp 0x1012f6ba
mov esi, edx
mov edi, dword [esp + 0x1c]
test eax, eax
mov edx, dword [esp + 0x10]
jne 0x10130203
mov dword [esi + 0x44], 0
mov dword [esi + 4], 0x3f3a
mov ecx, dword [esp + 8]
test byte [ecx + 0x15], 8
jne 0x1012f6f8
mov eax, dword [ecx + 0x24]
test eax, eax
mov ebp, dword [esp]
je 0x1012f783
mov dword [eax + 0x1c], 0
jmp 0x1012f783
cmp dword [esp], 0
je 0x1013016d
mov dword [esp + 0xc], ebx
xor esi, esi
movzx ebx, byte [edi + esi]
inc esi
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x1012f738
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x1012f738
mov edx, dword [esp + 8]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x20]
jae 0x1012f738
lea ecx, [edx + 1]
mov ebp, dword [esp + 8]
mov dword [ebp + 0x44], ecx
mov byte [eax + edx], bl
mov ebp, dword [esp]
sub ebp, esi
jbe 0x1012f743
test bl, bl
jne 0x1012f708
mov eax, dword [esp + 8]
test byte [eax + 0x15], 2
je 0x1012f76d
mov eax, dword [esp + 8]
test byte [eax + 0xc], 4
je 0x1012f76d
push esi
push edi
mov eax, dword [esp + 0x34]
push dword [eax]
call fcn.101314c0
add esp, 0xc
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
test bl, bl
jne 0x10130469
add edi, esi
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
mov dword [ecx + 0x44], 0
mov dword [ecx + 4], 0x3f3b
mov dword [esp], ebp
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 8]
test byte [eax + 0x15], 0x10
jne 0x1012f7bc
mov eax, dword [eax + 0x24]
test eax, eax
mov ebp, dword [esp]
je 0x1012f7b3
mov dword [eax + 0x24], 0
mov eax, dword [esp + 0x14]
jmp 0x1012f843
cmp dword [esp], 0
je 0x1013016d
mov dword [esp + 0xc], ebx
xor esi, esi
movzx ebx, byte [edi + esi]
inc esi
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x1012f7fc
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x1012f7fc
mov edx, dword [esp + 8]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x28]
jae 0x1012f7fc
lea ecx, [edx + 1]
mov ebp, dword [esp + 8]
mov dword [ebp + 0x44], ecx
mov byte [eax + edx], bl
mov ebp, dword [esp]
sub ebp, esi
jbe 0x1012f807
test bl, bl
jne 0x1012f7cc
mov eax, dword [esp + 8]
test byte [eax + 0x15], 2
je 0x1012f831
mov eax, dword [esp + 8]
test byte [eax + 0xc], 4
je 0x1012f831
push esi
push edi
mov eax, dword [esp + 0x34]
push dword [eax]
call fcn.101314c0
add esp, 0xc
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
test bl, bl
jne 0x10130469
add edi, esi
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0xc]
mov dword [eax], 0x3f3c
mov dword [esp], ebp
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 8]
mov edx, dword [eax + 0x14]
test edx, 0x200
jne 0x1012f865
mov esi, dword [esp + 0x14]
jmp 0x1012f8cb
mov dword [esp + 0xc], edx
cmp dword [esp + 4], 0xf
ja 0x1012f896
mov esi, dword [esp]
test esi, esi
je 0x101301d7
dec esi
movzx edx, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl edx, cl
add ebx, edx
lea eax, [ecx + 8]
cmp ecx, 8
mov dword [esp + 4], eax
jb 0x1012f873
jmp 0x1012f89d
mov eax, dword [esp + 4]
mov esi, dword [esp]
mov dword [esp + 4], 0
mov ecx, dword [esp + 8]
test byte [ecx + 0xc], 4
mov dword [esp], esi
je 0x1012f8bd
mov edx, dword [esp + 0x2c]
movzx edx, word [edx]
cmp ebx, edx
jne 0x1012f90a
xor ebx, ebx
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0xc]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x1012f8e2
shr edx, 9
and edx, 1
mov dword [ecx + 0x2c], edx
mov dword [ecx + 0x30], 1
push 0
push 0
push 0
call fcn.101314c0
add esp, 0xc
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
mov dword [ebp + 0x30], eax
mov dword [esi], 0x3f3f
mov edx, dword [esp + 0x10]
mov esi, dword [esi]
jmp 0x1012e917
mov dword [ebp + 0x18], str.header_crc_mismatch
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f51
mov dword [esp + 4], eax
mov edx, dword [esp + 0x10]
mov esi, dword [esi]
jmp 0x1012e917
mov esi, dword [esp + 0x14]
jmp 0x1012f94b
push edx
push ecx
push eax
call fcn.101310a0
add esp, 0xc
mov ecx, dword [esp + 8]
mov dword [ecx + 0x1c], eax
mov dword [ebp + 0x30], eax
mov eax, dword [ecx + 0xc]
and eax, 4
mov dword [esp + 4], 0
test eax, eax
je 0x1012f96f
mov ecx, dword [esp + 8]
cmp dword [ecx + 0x14], 0
mov eax, ebx
bswap eax
cmovne eax, ebx
cmp eax, dword [ecx + 0x1c]
jne 0x1012f9f1
xor ebx, ebx
mov edx, dword [esp + 0x24]
mov ecx, 1
mov dword [esi], 0x3f4f
mov eax, dword [esp + 8]
cmp dword [eax + 0xc], 0
je 0x10130483
cmp dword [eax + 0x14], 0
mov eax, dword [esp + 4]
je 0x10130483
cmp eax, 0x1f
mov esi, dword [esp]
ja 0x1012f9c5
test esi, esi
je 0x1013016d
dec esi
movzx eax, byte [edi]
inc edi
mov ecx, dword [esp + 4]
shl eax, cl
add ebx, eax
lea eax, [ecx + 8]
cmp ecx, 0x18
mov dword [esp + 4], eax
jb 0x1012f9a4
mov dword [esp], esi
mov ecx, dword [esp + 8]
cmp ebx, dword [ecx + 0x20]
je 0x10130504
mov dword [ebp + 0x18], str.incorrect_length_check
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f51
mov dword [esp + 4], eax
mov esi, dword [esi]
jmp 0x1012e917
mov dword [ebp + 0x18], 0x1013c0eb
mov dword [esi], 0x3f51
mov eax, dword [esp + 0x10]
mov dword [esp + 4], eax
mov edx, dword [esp + 0x24]
mov esi, dword [esi]
jmp 0x1012e917
mov dword [esp + 0x18], 0
cmp dword [esp + 0x80], 6
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f47
mov edx, dword [esp + 0x10]
je 0x1013054d
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f48
cmp dword [esp + 0x24], 0x102
mov ecx, dword [esp]
jb 0x1012fac0
cmp ecx, 6
jb 0x1012fac0
mov eax, dword [esp + 0x30]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [ebp + 0x10], eax
mov dword [ebp], edi
mov dword [ebp + 4], ecx
mov esi, dword [esp + 8]
mov dword [esi + 0x3c], ebx
mov eax, dword [esp + 4]
mov dword [esi + 0x40], eax
push edx
push ebp
call fcn.10134290
add esp, 8
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x30], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x24], eax
mov edi, dword [ebp]
mov eax, dword [ebp + 4]
mov dword [esp], eax
mov ebx, dword [esi + 0x3c]
mov eax, dword [esi + 0x40]
mov dword [esp + 4], eax
cmp dword [esi + 4], 0x3f3f
jne 0x1012fab1
mov dword [esi + 0x1bc8], 0xffffffff
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov esi, dword [esi]
jmp 0x1012e917
mov dword [esp], ecx
mov eax, dword [esp + 8]
mov dword [eax + 0x1bc8], 0
mov edx, dword [eax + 0x50]
mov cl, byte [eax + 0x58]
mov esi, 0xffffffff
shl esi, cl
not esi
mov dword [esp + 0xc], ebx
mov ecx, ebx
mov dword [esp + 0x28], esi
and ecx, esi
mov dword [esp + 0x20], edx
mov dl, byte [edx + ecx*4 + 1]
movzx esi, dl
mov eax, dword [esp + 4]
mov dword [esp + 0x34], esi
cmp eax, esi
jae 0x1012fb48
mov ebx, dword [esp]
mov dword [esp + 0x1c], edi
test ebx, ebx
je 0x101301b1
dec ebx
movzx edx, byte [edi]
inc edi
mov ecx, eax
shl edx, cl
mov ecx, dword [esp + 0xc]
add ecx, edx
add eax, 8
mov dword [esp + 0xc], ecx
and ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
movzx edx, byte [edx + ecx*4 + 1]
movzx esi, dl
cmp eax, esi
jb 0x1012fb0a
mov dword [esp + 0x34], esi
mov dword [esp + 0x3c], edi
mov esi, ebx
jmp 0x1012fb4f
mov dword [esp + 0x3c], edi
mov esi, dword [esp]
mov ebx, dword [esp + 0x20]
movzx edi, word [ebx + ecx*4 + 2]
mov word [esp + 0x28], di
movzx ecx, byte [ebx + ecx*4]
mov ebx, ecx
mov byte [esp + 0x44], cl
test ecx, ecx
mov ebx, dword [esp + 0xc]
je 0x1012fc50
mov dword [esp + 0x40], esi
mov esi, ecx
and esi, 0xfffffff0
jne 0x1012fc5c
movzx edx, word [esp + 0x28]
mov edi, ebx
mov ebx, dword [esp + 0x34]
add ecx, ebx
mov esi, 0xffffffff
shl esi, cl
not esi
mov dword [esp], esi
and edi, esi
mov ecx, ebx
shr edi, cl
mov dword [esp + 4], edx
add edi, edx
mov ecx, dword [esp + 0x20]
movzx edx, byte [ecx + edi*4 + 1]
lea ecx, [ebx + edx]
cmp ecx, eax
mov ecx, dword [esp + 0x40]
jbe 0x1012fc0b
mov ebx, eax
mov ebp, ecx
mov esi, dword [esp + 0x3c]
test ebp, ebp
je 0x10130492
dec ebp
movzx edx, byte [esi]
inc esi
mov ecx, ebx
shl edx, cl
mov edi, dword [esp + 0xc]
add edi, edx
add ebx, 8
mov dword [esp + 0xc], edi
and edi, dword [esp]
mov ecx, dword [esp + 0x34]
shr edi, cl
add edi, dword [esp + 4]
mov edx, dword [esp + 0x20]
movzx edx, byte [edx + edi*4 + 1]
add ecx, edx
cmp ecx, ebx
ja 0x1012fbc3
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], ebp
mov eax, ebx
mov ebp, dword [esp + 0x7c]
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x20]
mov bl, byte [ecx + edi*4]
mov byte [esp + 0x44], bl
movzx ecx, word [ecx + edi*4 + 2]
mov word [esp + 0x28], cx
mov ecx, dword [esp + 0x34]
shr esi, cl
mov dword [esp + 0xc], esi
sub eax, ecx
mov ebx, dword [esp + 8]
mov dword [ebx + 0x1bc8], ecx
movzx edi, byte [esp + 0x44]
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov dword [esp], esi
jmp 0x1012fc71
mov dword [esp + 0x1c], ecx
xor ecx, ecx
mov edi, dword [esp + 0x3c]
jmp 0x1012fc6a
mov dword [esp + 0x1c], ecx
xor ecx, ecx
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov dword [esp], esi
mov ebx, dword [esp + 8]
movzx esi, dl
sub eax, esi
mov dword [esp + 4], eax
add ecx, esi
mov dword [ebx + 0x1bc8], ecx
movzx eax, word [esp + 0x28]
mov dword [ebx + 0x44], eax
mov ecx, edx
mov eax, dword [esp + 0xc]
shr eax, cl
cmp byte [esp + 0x44], 0
je 0x10130025
mov esi, ebx
mov ecx, dword [esp + 0x1c]
test cl, 0x20
mov edx, dword [esp + 0x10]
mov ebx, eax
jne 0x1013003c
test cl, 0x40
jne 0x10130058
and ecx, 0xf
mov dword [esi + 0x4c], ecx
mov dword [esi + 4], 0x3f49
test ecx, ecx
mov eax, dword [esp + 4]
jne 0x1012ed7b
mov ecx, ebx
mov ebx, dword [esi + 0x44]
mov dword [esi + 0x1bcc], ebx
mov dword [esi + 4], 0x3f4a
mov ebx, ecx
mov eax, dword [esp + 8]
mov esi, dword [eax + 0x54]
mov cl, byte [eax + 0x5c]
mov eax, 0xffffffff
shl eax, cl
not eax
mov dword [esp + 0xc], ebx
mov ecx, ebx
mov dword [esp + 0x20], eax
and ecx, eax
mov dword [esp + 0x1c], esi
mov bl, byte [esi + ecx*4 + 1]
movzx edx, bl
mov eax, dword [esp + 4]
mov dword [esp + 0x28], edx
cmp eax, edx
jae 0x1012fd5b
mov ebp, dword [esp]
mov esi, edi
test ebp, ebp
je 0x1013017d
dec ebp
movzx ebx, byte [esi]
inc esi
mov ecx, eax
shl ebx, cl
mov ecx, dword [esp + 0xc]
add ecx, ebx
add eax, 8
mov dword [esp + 0xc], ecx
and ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
movzx ebx, byte [ebx + ecx*4 + 1]
movzx edx, bl
cmp eax, edx
jb 0x1012fd23
mov dword [esp + 0x28], edx
jmp 0x1012fd60
mov esi, edi
mov ebp, dword [esp]
mov edi, dword [esp + 0x1c]
movzx edx, word [edi + ecx*4 + 2]
movzx ecx, byte [edi + ecx*4]
test cl, 0xf0
je 0x1012fd89
mov word [esp], dx
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 8]
mov ecx, dword [edx + 0x1bc8]
jmp 0x1012fe4e
movzx ebx, dx
add ecx, dword [esp + 0x28]
mov edx, 0xffffffff
shl edx, cl
not edx
mov edi, dword [esp + 0xc]
mov dword [esp + 0x34], edx
and edi, edx
mov ecx, dword [esp + 0x28]
shr edi, cl
mov dword [esp + 0x20], ebx
add edi, ebx
mov edx, dword [esp + 0x1c]
movzx ebx, byte [edx + edi*4 + 1]
add ecx, ebx
cmp ecx, eax
jbe 0x1012fe23
mov edx, eax
mov dword [esp + 4], ebp
mov dword [esp], esi
mov ecx, dword [esp + 4]
test ecx, ecx
je 0x10130452
dec ecx
mov dword [esp + 4], ecx
mov ecx, dword [esp]
movzx edi, byte [ecx]
inc ecx
mov dword [esp], ecx
mov ecx, edx
shl edi, cl
mov ecx, dword [esp + 0xc]
add ecx, edi
add edx, 8
mov dword [esp + 0xc], ecx
mov edi, ecx
and edi, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
shr edi, cl
add edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
movzx ebx, byte [ecx + edi*4 + 1]
mov ecx, dword [esp + 0x28]
add ecx, ebx
cmp ecx, edx
ja 0x1012fdc7
mov esi, dword [esp]
mov ebp, dword [esp + 4]
mov eax, edx
mov edx, dword [esp + 0x1c]
movzx ecx, word [edx + edi*4 + 2]
mov word [esp], cx
mov ecx, dword [esp + 0x28]
shr dword [esp + 0xc], cl
movzx edx, byte [edx + edi*4]
mov dword [esp + 0x20], edx
sub eax, ecx
mov edx, dword [esp + 8]
add ecx, dword [edx + 0x1bc8]
mov dword [edx + 0x1bc8], ecx
movzx edi, bl
add ecx, edi
mov dword [edx + 0x1bc8], ecx
mov ecx, ebx
mov ebx, dword [esp + 0xc]
shr ebx, cl
sub eax, edi
mov dword [esp + 4], eax
test byte [esp + 0x20], 0x40
jne 0x1012fed5
movzx eax, word [esp]
mov dword [edx + 0x48], eax
mov eax, dword [esp + 0x20]
and eax, 0xf
mov dword [edx + 0x4c], eax
mov dword [edx + 4], 0x3f4b
mov edi, esi
mov esi, ebp
mov ebp, dword [esp + 0x7c]
mov edx, dword [esp + 0x10]
test eax, eax
mov ecx, dword [esp + 4]
je 0x1012fefe
mov dword [esp + 0x20], eax
cmp ecx, eax
jae 0x1012ff03
mov eax, ecx
mov dword [esp], esi
mov edx, esi
mov esi, edi
mov dword [esp + 0x1c], edi
test edx, edx
je 0x101301c7
dec edx
mov edi, ebx
movzx ebx, byte [esi]
inc esi
mov ecx, eax
shl ebx, cl
add edi, ebx
mov ebx, edi
mov edi, dword [esp + 0x1c]
add eax, 8
cmp eax, dword [esp + 0x20]
jb 0x1012feaf
jmp 0x1012ff09
mov eax, dword [esp + 0x7c]
mov dword [eax + 0x18], 0x1013c0b7
mov ecx, dword [esp + 0x14]
mov dword [ecx], 0x3f51
mov edi, esi
mov esi, ecx
mov dword [esp], ebp
mov ebp, eax
mov edx, dword [esp + 0x10]
mov esi, dword [ecx]
jmp 0x1012e917
mov dword [esp], esi
jmp 0x1012ff40
mov edx, esi
mov esi, edi
mov eax, ecx
mov dword [esp + 0xc], ebx
mov edi, 0xffffffff
mov ecx, dword [esp + 0x20]
shl edi, cl
not edi
and edi, ebx
mov ebx, dword [esp + 8]
add dword [ebx + 0x48], edi
sub eax, ecx
add dword [ebx + 0x1bc8], ecx
shr dword [esp + 0xc], cl
mov edi, esi
mov ebx, dword [esp + 0xc]
mov dword [esp], edx
mov dword [esp + 4], eax
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f4c
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x10130203
mov eax, edx
sub eax, ecx
mov esi, dword [esp + 8]
mov ecx, dword [esi + 0x48]
mov edx, ecx
sub edx, eax
jbe 0x1012ff91
cmp edx, dword [esi + 0x30]
jbe 0x1012ffa2
cmp dword [esi + 0x1bc4], 0
je 0x1012ffa2
mov dword [ebp + 0x18], 0x1013c0cd
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f51
mov edx, dword [esp + 0x10]
mov esi, dword [esi]
jmp 0x1012e917
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x30]
sub eax, ecx
mov edx, dword [esi + 0x44]
mov ecx, edx
jmp 0x1012ffc5
mov eax, dword [esi + 0x34]
mov ecx, edx
sub ecx, eax
jbe 0x1012ffb2
mov eax, dword [esi + 0x2c]
sub eax, ecx
jmp 0x1012ffb6
sub eax, edx
mov ecx, edx
mov dword [esp + 0xc], ebx
add eax, dword [esi + 0x38]
mov edx, dword [esi + 0x44]
cmp ecx, edx
cmova ecx, edx
mov ebx, dword [esp + 0x24]
cmp ecx, ebx
cmova ecx, ebx
sub edx, ecx
mov dword [esi + 0x44], edx
mov dword [esp + 0x1c], ecx
mov edx, ecx
mov ecx, dword [esp + 0x30]
movzx ebx, byte [eax]
inc eax
mov byte [ecx], bl
inc ecx
dec edx
jne 0x1012ffdd
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 0x1c]
sub dword [esp + 0x24], eax
cmp dword [esi + 0x44], 0
je 0x1013000c
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0xc]
mov esi, dword [esi]
jmp 0x1012e917
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f48
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
mov esi, dword [esi]
jmp 0x1012e917
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f4d
mov edx, dword [esp + 0x10]
mov ebx, eax
mov esi, dword [esi]
jmp 0x1012e917
mov dword [esi + 0x1bc8], 0xffffffff
mov dword [esi + 4], 0x3f3f
mov esi, dword [esp + 0x14]
mov esi, dword [esi]
jmp 0x1012e917
mov dword [ebp + 0x18], 0x1013c09b
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f51
mov esi, dword [esi]
jmp 0x1012e917
mov eax, ebx
and eax, 0xf
cmp eax, 8
jne 0x101300f2
mov dword [esp + 0xc], ebx
shr ebx, 4
mov ecx, ebx
and ecx, 0xf
lea edx, [ecx + 8]
mov esi, dword [esp + 8]
mov esi, dword [esi + 0x28]
test esi, esi
jne 0x1013009d
mov esi, dword [esp + 8]
mov dword [esi + 0x28], edx
mov esi, edx
cmp ecx, 7
ja 0x1013011f
cmp edx, esi
ja 0x1013011f
mov eax, 0x100
shl eax, cl
mov esi, dword [esp + 8]
mov dword [esi + 0x18], eax
push 0
push 0
push 0
call fcn.101310a0
add esp, 0xc
mov dword [esi + 0x1c], eax
mov ebp, dword [esp + 0x7c]
mov dword [ebp + 0x30], eax
xor eax, eax
test dword [esp + 0xc], 0x2000
sete al
lea eax, [eax + eax + 0x3f3d]
mov dword [esi + 4], eax
xor ebx, ebx
mov dword [esp + 4], 0
jmp 0x1012fab1
mov ebp, dword [esp + 0x7c]
mov dword [ebp + 0x18], 0x1013bf61
jmp 0x1012ff7c
mov dword [esp], ebp
mov ebp, dword [esp + 0x7c]
mov dword [ebp + 0x18], 0x1013c02a
mov esi, dword [esp + 0x14]
mov dword [esi], 0x3f51
jmp 0x10130016
add dword [esp + 4], 0xfffffffc
mov ebp, dword [esp + 0x7c]
mov dword [ebp + 0x18], 0x1013bf7c
jmp 0x1012ff7c
mov ebp, dword [esp + 0x7c]
mov dword [ebp + 0x18], 0x1013c02a
mov ecx, dword [esp + 0x14]
mov dword [ecx], 0x3f51
mov dword [esp + 4], eax
mov edx, dword [esp + 0x10]
mov ebx, edi
mov edi, esi
mov esi, ecx
mov esi, dword [ecx]
jmp 0x1012e917
cmp dword [ebp + 4], 0
jne 0x1013040a
jmp 0x1012e87b
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
jmp case.0x1012e92f.16208
mov eax, dword [esp]
mov ecx, dword [esp + 4]
lea ecx, [ecx + eax*8]
mov dword [esp + 4], ecx
add edi, eax
jmp 0x101301a0
mov eax, dword [esp + 4]
lea eax, [eax + ebp*8]
mov dword [esp + 4], eax
mov edi, dword [esp + 0x28]
add edi, ebp
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x7c]
jmp 0x10130224
mov eax, dword [esp + 4]
mov ecx, dword [esp]
lea eax, [eax + ecx*8]
mov dword [esp + 4], eax
mov edi, dword [esp + 0x1c]
add edi, ecx
jmp 0x10130219
mov eax, dword [esp]
mov ecx, dword [esp + 4]
lea ecx, [ecx + eax*8]
mov dword [esp + 4], ecx
add edi, eax
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
jmp case.0x1012e92f.16208
mov eax, 0xfffffffe
jmp 0x1013040a
mov ecx, 0xfffffffd
jmp case.0x1012e92f.16208
mov eax, 0xfffffffc
jmp 0x1013040a
mov ecx, dword [esp + 0x18]
jmp case.0x1012e92f.16208
mov eax, dword [esp]
mov ecx, dword [esp + 4]
lea ecx, [ecx + eax*8]
mov dword [esp + 4], ecx
add edi, eax
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x30]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [ebp + 0x10], eax
mov dword [ebp], edi
mov eax, dword [esp]
mov dword [ebp + 4], eax
mov ecx, dword [esp + 8]
mov dword [ecx + 0x3c], ebx
mov eax, dword [esp + 4]
mov dword [ecx + 0x40], eax
cmp dword [ecx + 0x2c], 0
je 0x101302f9
mov esi, dword [ebp + 0x1c]
mov eax, dword [esi + 0x38]
test eax, eax
jne 0x1013028e
mov cl, byte [esi + 0x28]
mov eax, 1
shl eax, cl
push 1
push eax
push dword [ebp + 0x28]
mov edi, edx
call dword [ebp + 0x20]
mov edx, edi
add esp, 0xc
mov dword [esi + 0x38], eax
test eax, eax
je 0x10130441
mov ebp, edx
sub ebp, dword [esp + 0x24]
mov edi, dword [esi + 0x2c]
test edi, edi
jne 0x101302b6
mov cl, byte [esi + 0x28]
mov edi, 1
shl edi, cl
mov dword [esi + 0x2c], edi
mov dword [esi + 0x34], 0
mov dword [esi + 0x30], 0
mov dword [esp + 0x10], edx
cmp edi, ebp
jbe 0x10130326
mov ecx, dword [esi + 0x34]
sub edi, ecx
cmp edi, ebp
cmova edi, ebp
add eax, ecx
mov ebx, dword [esp + 0x30]
mov ecx, ebx
sub ecx, ebp
push edi
push ecx
push eax
call fcn.101162d0
add esp, 0xc
sub ebp, edi
je 0x10130412
sub ebx, ebp
push ebp
push ebx
push dword [esi + 0x38]
call fcn.101162d0
add esp, 0xc
mov dword [esi + 0x34], ebp
jmp 0x1013033e
cmp edx, dword [esp + 0x24]
je 0x1013034c
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
cmp eax, 0x3f50
ja 0x1013034c
cmp dword [esp + 0x80], 4
jne 0x1013025f
cmp eax, 0x3f4d
ja 0x1013034c
jmp 0x1013025f
mov ecx, dword [esp + 0x30]
sub ecx, edi
push edi
push ecx
push eax
call fcn.101162d0
add esp, 0xc
mov dword [esi + 0x34], 0
mov eax, dword [esi + 0x2c]
mov dword [esi + 0x30], eax
mov ebp, dword [esp + 0x7c]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x50]
sub eax, dword [ebp + 4]
sub edx, dword [ebp + 0x10]
mov dword [esp + 0x50], eax
add dword [ebp + 8], eax
add dword [ebp + 0x14], edx
mov esi, dword [esp + 8]
add dword [esi + 0x20], edx
test edx, edx
mov ebx, dword [esp + 0x80]
je 0x101303aa
mov eax, dword [esi + 0xc]
and eax, 4
je 0x101303aa
mov ecx, dword [ebp + 0xc]
sub ecx, edx
cmp dword [esi + 0x14], 0
mov eax, dword [esi + 0x1c]
mov edi, edx
je 0x10130394
push edx
push ecx
push eax
call fcn.101314c0
jmp 0x1013039c
push edx
push ecx
push eax
call fcn.101310a0
add esp, 0xc
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
mov dword [ebp + 0x30], eax
mov edx, edi
xor ecx, ecx
cmp dword [esi + 8], 0
setne cl
shl ecx, 6
add ecx, dword [esi + 0x40]
mov edi, edx
mov edx, dword [esi + 4]
xor eax, eax
cmp edx, 0x3f3f
sete al
shl eax, 7
add eax, ecx
cmp edx, 0x3f47
sete cl
cmp edx, 0x3f42
sete dl
or dl, cl
movzx ecx, dl
shl ecx, 8
add ecx, eax
mov dword [ebp + 0x2c], ecx
or edi, dword [esp + 0x50]
mov ecx, 0xfffffffb
mov edx, dword [esp + 0xc]
mov eax, edx
cmove eax, ecx
cmp ebx, 4
cmove eax, ecx
test edx, edx
cmovne eax, edx
add esp, 0x68
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esi + 0x34]
add ecx, edi
mov edx, dword [esi + 0x2c]
mov eax, dword [esi + 0x30]
xor ebp, ebp
cmp ecx, edx
cmovne ebp, ecx
mov dword [esi + 0x34], ebp
cmp eax, edx
mov ebp, dword [esp + 0x7c]
mov edx, dword [esp + 0x10]
jae 0x1013034c
add eax, edi
mov dword [esi + 0x30], eax
jmp 0x1013034c
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f52
mov eax, 0xfffffffc
jmp 0x1013040a
lea eax, [eax + ebp*8]
mov dword [esp + 4], eax
add esi, ebp
mov dword [esp], 0
mov edi, esi
jmp 0x101301a7
add edi, esi
sub dword [esp], esi
jmp 0x101301a7
mov dword [esp], 0
mov dword [esp + 4], eax
jmp 0x101301a7
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f50
jmp case.0x1012e92f.16208
mov ecx, dword [esp + 0x40]
lea eax, [eax + ecx*8]
mov dword [esp + 4], eax
mov edi, dword [esp + 0x3c]
add edi, ecx
jmp 0x101301a0
mov dword [esp], 0
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x7c]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
mov edi, esi
jmp case.0x1012e92f.16208
mov eax, dword [esp + 0x30]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [ebp + 0x10], eax
mov dword [ebp], edi
mov eax, dword [esp]
mov dword [ebp + 4], eax
mov dword [ecx + 0x3c], ebx
mov eax, dword [esp + 4]
mov dword [ecx + 0x40], eax
mov eax, 2
jmp 0x1013040a
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0xc]
mov edi, eax
jmp case.0x1012e92f.16208
mov dword [esp + 4], 0
xor ebx, ebx
mov eax, dword [esp + 0x14]
mov ecx, 1
mov dword [eax], 0x3f50
jmp case.0x1012e92f.16208
mov ecx, dword [esp + 0x18]
jmp 0x10130228
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x18]
jmp case.0x1012e92f.16208
shr ebx, 3
add dword [esp + 4], 0xfffffffd
mov ecx, dword [esp + 0x18]
jmp case.0x1012e92f.16208
xor ecx, ecx
jmp case.0x1012e92f.16208