Function at 0x5aae80
Capabilities:
Decompress data using quicklz

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x65a2c8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3c
mov eax, dword [0x8267b0]
push ebx
push esi
push edi
xor edi, edi
mov esi, ecx
cmp eax, edi
je 0x5aaec6
cmp dword [esi + 0x1f4], edi
jne 0x5ab4b1
cmp dword [esi + 0x1f0], edi
je 0x5ab4b1
cmp dword [esi + 0x756f], edi
jne 0x5ab4b1
cmp dword [esi + 0x7375], edi
jle 0x5ab4b1
cmp word [esi + 0x4d4], di
jle 0x5ab4b1
mov eax, dword [ebp + 8]
mov ecx, esi
push eax
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [esi + 0x739d]
fild dword [ebp + 8]
add eax, ecx
mov ecx, dword [esi + 0x7375]
mov dword [esp + 0x18], eax
fild dword [edx + ecx*4 - 4]
fld qword [esi + 0x738d]
fmul qword [0x65f9a0]
faddp st(1)
fcompp
fnstsw ax
test ah, 1
jne 0x5ab4b1
lea ecx, [esp + 0xc]
call fcn.00643d62
lea ecx, [esp + 0xc]
mov dword [esp + 0x50], edi
call fcn.00644560
cmp word [esi + 0x4bb], di
mov ebx, dword [ebp + 0xc]
jle 0x5aaf9a
lea eax, [esi + 0x4d6]
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x38]
push ecx
push edx
call dword [fcn.0065f51c]
mov eax, dword [ebp + 8]
push ebx
lea ecx, [esp + 0x3c]
push eax
push ecx
call dword [fcn.0065f520]
test eax, eax
jne 0x5aaf9a
movsx edx, word [esi + 0x4bb]
mov ecx, dword [esp + 0x24]
inc edi
add ecx, 0x6b5
cmp edi, edx
mov dword [esp + 0x24], ecx
jl 0x5aaf5c
movsx eax, word [esi + 0x4bb]
cmp edi, eax
je 0x5ab4a0
lea ecx, [esi + 0x2d8]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], ecx
call fcn.00644560
lea eax, [edi + edi*8]
lea edx, [esi + edi]
shl eax, 4
sub eax, edi
mov dword [esp + 0x20], 0
lea ecx, [eax + eax*2]
cmp word [edx + ecx*4 + 0x4f6], 0
lea eax, [edx + ecx*4]
mov dword [esp + 0x34], eax
jbe 0x5ab4a0
mov ecx, dword [esp + 0x18]
shl ecx, 5
add eax, 0x545
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov ecx, dword [eax]
mov eax, dword [ecx + 0x1a]
add edi, eax
mov dword [esp + 0x14], ecx
mov al, byte [ecx + 2]
lea edx, [ecx + 0x1a]
cmp al, 0x20
mov dword [esp + 0x30], edx
jne 0x5ab07a
mov ecx, dword [ebp + 8]
xor edx, edx
lea eax, [ecx - 4]
mov ecx, esi
test eax, eax
setl dl
dec edx
and eax, edx
push eax
call fcn.005b7260
mov edi, eax
mov eax, dword [esi + 0x737d]
add edi, eax
mov eax, dword [ebp + 8]
inc eax
mov ecx, esi
push eax
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [esi + 0x768b]
add eax, ecx
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, dword [esi + 0xc875]
push edx
push eax
push edi
push ebx
call fcn.00505f90
test eax, eax
jne 0x5ab93c
jmp 0x5ab477
cmp al, 0x23
jne 0x5ab0f6
mov ecx, dword [esp + 0x18]
mov eax, dword [edi + 0x18]
push ecx
mov ecx, esi
mov dword [esp + 0x34], eax
call fcn.005aa080
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
fld dword [edi + 0xc]
push edx
mov ecx, esi
sub esp, 8
fstp qword [esp]
push eax
call fcn.005b6eb0
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
fld dword [edi + 8]
push ecx
mov ecx, esi
sub esp, 8
mov dword [esp + 0x30], eax
fstp qword [esp]
push edx
call fcn.005b6eb0
mov ecx, dword [esp + 0x24]
cmp eax, ecx
mov ecx, eax
jg 0x5ab0d7
mov ecx, dword [esp + 0x24]
cmp ebx, ecx
jge 0x5ab477
mov ecx, dword [esp + 0x24]
cmp eax, ecx
jl 0x5ab0e9
mov eax, ecx
cmp ebx, eax
jg 0x5ab4c7
jmp 0x5ab477
cmp al, 0x1f
jne 0x5ab157
mov eax, dword [ebp + 8]
xor ecx, ecx
add eax, 0xfffffffc
test eax, eax
setl cl
dec ecx
and eax, ecx
mov ecx, esi
push eax
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [ebp + 8]
mov edi, eax
add edi, ecx
inc edx
push edx
mov ecx, esi
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [esi + 0x768b]
add eax, ecx
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, dword [esi + 0xc869]
push edx
push eax
push edi
push ebx
call fcn.00505f90
test eax, eax
jne 0x5ab93c
jmp 0x5ab477
cmp al, 0x22
jne 0x5ab1b8
mov eax, dword [ebp + 8]
xor ecx, ecx
add eax, 0xfffffffc
test eax, eax
setl cl
dec ecx
and eax, ecx
mov ecx, esi
push eax
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [ebp + 8]
mov edi, eax
add edi, ecx
inc edx
push edx
mov ecx, esi
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [esi + 0x768b]
add eax, ecx
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, dword [esi + 0xc871]
push edx
push eax
push edi
push ebx
call fcn.00505f90
test eax, eax
jne 0x5ab93c
jmp 0x5ab477
cmp al, 0x21
jne 0x5ab219
mov eax, dword [ebp + 8]
xor ecx, ecx
add eax, 0xfffffffc
test eax, eax
setl cl
dec ecx
and eax, ecx
mov ecx, esi
push eax
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [ebp + 8]
mov edi, eax
add edi, ecx
inc edx
push edx
mov ecx, esi
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [esi + 0x768b]
add eax, ecx
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, dword [esi + 0xc86d]
push edx
push eax
push edi
push ebx
call fcn.00505f90
test eax, eax
jne 0x5ab93c
jmp 0x5ab477
cmp al, 0x24
jne 0x5ab27a
mov eax, dword [ebp + 8]
xor ecx, ecx
add eax, 0xfffffffc
test eax, eax
setl cl
dec ecx
and eax, ecx
mov ecx, esi
push eax
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [ebp + 8]
mov edi, eax
add edi, ecx
inc edx
push edx
mov ecx, esi
call fcn.005b7260
mov ecx, dword [esi + 0x737d]
mov edx, dword [esi + 0x768b]
add eax, ecx
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, dword [esi + 0xc879]
push edx
push eax
push edi
push ebx
call fcn.00505f90
test eax, eax
jne 0x5ab93c
jmp 0x5ab477
test al, al
jne 0x5ab2ee
mov al, byte [ecx + 0x19]
mov dword [esp + 0x24], 0
test al, al
jbe 0x5ab2d8
mov edi, edx
mov eax, dword [esp + 0x20]
mov ecx, dword [edi]
mov edx, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x20]
sub esp, 8
fld dword [ecx + edx*4]
mov ecx, esi
fstp qword [esp]
push eax
call fcn.005b6eb0
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, 5
jle 0x5ab2d4
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
xor ecx, ecx
inc eax
mov cl, byte [edx + 0x19]
add edi, 4
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x5ab28f
mov ecx, dword [esp + 0x14]
xor eax, eax
mov al, byte [ecx + 0x19]
mov ecx, dword [esp + 0x24]
cmp ecx, eax
jl 0x5ab884
jmp 0x5ab477
mov ecx, dword [esi + 0x72f1]
test ecx, ecx
je 0x5ab477
cmp al, 3
je 0x5ab308
cmp al, 2
jne 0x5ab477
mov ecx, dword [esi + 0x4b7]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
push 0
mov edi, dword [ecx + 0x1a]
sub esp, 8
add edi, eax
mov ecx, esi
fld dword [edi + 8]
fstp qword [esp]
push edx
call fcn.005b6eb0
mov ecx, eax
mov eax, dword [esi + 0x7305]
sub ecx, 8
test eax, eax
je 0x5ab381
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 0x1e]
mov eax, dword [esp + 0x18]
lea eax, [edx + eax*4]
mov edx, 0x6a2cfc
mov dword [esp + 0x24], eax
mov eax, dword [eax]
cmp eax, dword [edx]
je 0x5ab381
mov edx, dword [esp + 0x24]
fld dword [edx]
fabs
fcomp qword [0x665668]
fnstsw ax
test ah, 0x41
jne 0x5ab381
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 5
jle 0x5ab8fb
mov eax, dword [esi + 0x7341]
test eax, eax
je 0x5ab3cf
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 0x1e]
mov eax, dword [esp + 0x18]
lea eax, [edx + eax*4]
mov edx, 0x6a2cfc
mov dword [esp + 0x24], eax
mov eax, dword [eax]
cmp eax, dword [edx]
je 0x5ab3cf
mov edx, dword [esp + 0x24]
fld dword [edx]
fabs
fcomp qword [0x665668]
fnstsw ax
test ah, 0x41
jne 0x5ab3cf
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 5
jle 0x5ab923
fld dword [edi + 0xc]
mov eax, dword [esp + 0x1c]
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
push eax
call fcn.005b6eb0
mov ecx, eax
mov eax, dword [esi + 0x7305]
add ecx, 8
test eax, eax
je 0x5ab431
mov edx, dword [esp + 0x30]
mov eax, dword [edx]
mov edx, dword [esp + 0x18]
mov edi, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, 0x6a2cfc
cmp edi, dword [edx]
je 0x5ab431
fld dword [eax]
fabs
fcomp qword [0x665668]
fnstsw ax
test ah, 0x41
jne 0x5ab431
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 5
jle 0x5ab91c
mov eax, dword [esi + 0x7341]
test eax, eax
je 0x5ab477
mov eax, dword [esp + 0x30]
mov edx, dword [eax]
mov eax, dword [esp + 0x18]
mov edi, dword [edx + eax*4]
lea eax, [edx + eax*4]
mov edx, 0x6a2cfc
cmp edi, dword [edx]
je 0x5ab477
fld dword [eax]
fabs
fcomp qword [0x665668]
fnstsw ax
test ah, 0x41
jne 0x5ab477
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 5
jle 0x5ab923
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
xor ecx, ecx
mov cx, word [edx + 0x4f6]
inc eax
add edi, 4
cmp eax, ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], edi
jl 0x5aaffc
lea ecx, [esp + 0xc]
mov dword [esp + 0x50], 0xffffffff
call fcn.00643d26
xor eax, eax
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [esp + 0x14]
mov ebx, 0x732a64
mov cx, word [eax]
push ecx
mov ecx, dword [0x826818]
call fcn.004466b0
add eax, 0x18
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [ebx]
jne 0x5ab506
test cl, cl
je 0x5ab502
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [ebx + 1]
jne 0x5ab506
add eax, 2
add ebx, 2
test cl, cl
jne 0x5ab4e2
xor eax, eax
jmp 0x5ab50b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5ab7bf
lea ecx, [esp + 0x20]
call fcn.00643d62
mov eax, dword [esi + 0x4e]
mov byte [esp + 0x50], 1
push eax
push eax
push eax
push eax
lea eax, [esp + 0x30]
push 0x6bfdb4
push eax
call fcn.00643d50
mov eax, dword [esi + 0x2dc]
add esp, 0x18
test eax, eax
je 0x5ab56d
mov ecx, dword [esp + 0x14]
mov dx, word [ecx]
mov ecx, dword [0x826818]
push edx
call fcn.004466b0
add eax, 0x18
push eax
lea eax, [esp + 0x10]
push 0x6bfdb0
push eax
call fcn.00643d50
add esp, 0xc
mov al, byte [esi + 0x4b5]
cmp al, 4
jb 0x5ab683
cmp al, 8
je 0x5ab683
cmp al, 7
je 0x5ab683
lea ecx, [esp + 0xc]
push 0x6a0a74
lea edx, [esp + 0x2c]
push ecx
push edx
call fcn.00643ea6
lea ecx, [esp + 0x20]
lea edx, [esp + 0x2c]
push ecx
push eax
push edx
mov byte [esp + 0x5c], 6
call fcn.00644050
push 0x6bfda4
push eax
lea eax, [esp + 0x3c]
mov byte [esp + 0x58], 7
push eax
call fcn.00643ea6
mov ecx, dword [edi]
mov ebx, dword [eax]
mov eax, ecx
mov esi, 0x64
cdq
fld dword [edi + 0x10]
idiv esi
mov eax, ecx
mov byte [esp + 0x50], 8
mov esi, edx
mov edx, dword [esp + 0x30]
push edx
sub esp, 8
cdq
fstp qword [esp]
fld dword [edi + 0xc]
sub esp, 8
fstp qword [esp]
fld dword [edi + 8]
sub esp, 8
fstp qword [esp]
fld dword [edi + 4]
mov edi, 0x2710
sub esp, 8
idiv edi
fstp qword [esp]
mov eax, 0x51eb851f
push esi
sub edx, esi
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
mov edx, dword [esp + 0x40]
push ebx
push edx
call fcn.00643d50
add esp, 0x38
lea ecx, [esp + 0x34]
mov byte [esp + 0x50], 7
call fcn.00643d26
lea ecx, [esp + 0x2c]
mov byte [esp + 0x50], 6
call fcn.00643d26
lea ecx, [esp + 0x28]
mov byte [esp + 0x50], 1
call fcn.00643d26
lea ecx, [esp + 0x20]
mov byte [esp + 0x50], 0
call fcn.00643d26
jmp 0x5ab93c
mov si, word [edi]
lea ecx, [esp + 0x28]
and esi, 0x7ff
call fcn.00643d62
xor ecx, ecx
mov ebx, 0x3c
mov cx, word [edi + 2]
mov byte [esp + 0x50], 2
mov eax, ecx
cdq
idiv ebx
mov eax, 0x88888889
push edx
imul ecx
add edx, ecx
mov ecx, 0x64
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, esi
push edx
push 0x6b48b0
cdq
idiv ecx
mov eax, 0x51eb851f
lea ecx, [esp + 0x34]
push edx
imul esi
sar edx, 5
mov eax, edx
push 0x6bfda0
shr eax, 0x1f
add edx, eax
push edx
push 0x6bfd8c
push ecx
call fcn.00643d50
add esp, 0x20
lea edx, [esp + 0x28]
lea eax, [esp + 0xc]
lea ecx, [esp + 0x24]
push edx
push eax
push ecx
call fcn.00644050
lea edx, [esp + 0x20]
mov byte [esp + 0x50], 3
push edx
push eax
lea eax, [esp + 0x34]
push eax
call fcn.00644050
push 0x6bfda4
lea ecx, [esp + 0x38]
mov bl, 4
push eax
push ecx
mov byte [esp + 0x5c], bl
call fcn.00643ea6
mov edx, dword [esp + 0x30]
mov eax, dword [eax]
fld dword [edi + 0x10]
push edx
mov byte [esp + 0x54], 5
sub esp, 8
fstp qword [esp]
fld dword [edi + 0xc]
sub esp, 8
fstp qword [esp]
fld dword [edi + 8]
sub esp, 8
fstp qword [esp]
fld dword [edi + 4]
sub esp, 8
fstp qword [esp]
push eax
mov eax, dword [esp + 0x38]
push eax
call fcn.00643d50
add esp, 0x2c
lea ecx, [esp + 0x34]
mov byte [esp + 0x50], bl
call fcn.00643d26
lea ecx, [esp + 0x2c]
mov byte [esp + 0x50], 3
call fcn.00643d26
lea ecx, [esp + 0x24]
mov byte [esp + 0x50], 2
call fcn.00643d26
lea ecx, [esp + 0x28]
mov byte [esp + 0x50], 1
call fcn.00643d26
lea ecx, [esp + 0x20]
mov byte [esp + 0x50], 0
call fcn.00643d26
jmp 0x5ab93c
push 0x6bfd40
lea ecx, [esp + 0x34]
call fcn.00643d2c
mov eax, dword [esi + 0x2dc]
mov bl, 9
test eax, eax
mov byte [esp + 0x50], bl
je 0x5ab806
mov ecx, dword [esp + 0x14]
mov dx, word [ecx]
mov ecx, dword [0x826818]
push edx
call fcn.004466b0
add eax, 0x18
push eax
lea eax, [esp + 0x10]
push 0x6bfdb0
push eax
call fcn.00643d50
add esp, 0xc
lea ecx, [esp + 0x30]
lea edx, [esp + 0xc]
push ecx
lea eax, [esp + 0x20]
push edx
push eax
call fcn.00644050
mov eax, dword [eax]
push 0x732b51
push 0x732b3d
mov ecx, dword [esp + 0x18]
push 0x732b01
push 0x732b8d
push 0x732aed
push 0x732ad9
push 0x732ac5
push 0x732ab1
push 0x732a9d
push 0x732a75
push eax
push ecx
mov byte [esp + 0x80], 0xa
call fcn.00643d50
add esp, 0x30
lea ecx, [esp + 0x1c]
mov byte [esp + 0x50], bl
call fcn.00643d26
lea ecx, [esp + 0x30]
mov byte [esp + 0x50], 0
call fcn.00643d26
jmp 0x5ab93c
mov edi, dword [esp + 0x14]
mov ecx, dword [0x8267e8]
mov edx, dword [edi + 3]
mov al, byte [edi + 2]
push edx
push eax
call dword [sym.imp.TCalc.dll_public:_struct_tag_INDEXINFO____thiscall_CalcInterface::GetIndexInfo_unsigned_char__long_int_const]
mov edx, dword [esp + 0x24]
mov ecx, dword [edi + edx*4 + 0x1a]
mov edi, dword [esp + 0x18]
mov ebx, dword [ecx + edi*4]
lea ecx, [ecx + edi*4]
mov edi, 0x6a2cfc
cmp ebx, dword [edi]
je 0x5ab8f0
mov edi, dword [esi + 0x4e]
mov esi, 0x6bfd30
cmp edi, 3
je 0x5ab8c9
mov esi, 0x6bfd20
imul edx, edx, 0x1c
fld dword [ecx]
sub esp, 8
lea edx, [edx + eax + 0x54a]
add eax, 3
fstp qword [esp]
push edx
push eax
mov eax, dword [esp + 0x20]
push esi
push eax
call fcn.00643d50
add esp, 0x18
jmp 0x5ab93c
mov ecx, dword [esp + 0x10]
call fcn.00644560
jmp 0x5ab93c
push 0x6bfd14
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
add ecx, 7
push ecx
push 0x6bfd0c
push edx
call fcn.00643d50
add esp, 0x10
jmp 0x5ab93c
push 0x6bfd00
jmp 0x5ab900
mov eax, dword [esp + 0x10]
add esi, 0x7345
push esi
push 0x69a8e4
push eax
call fcn.00643d50
add esp, 0xc
lea ecx, [esp + 0xc]
mov dword [esp + 0x50], 0xffffffff
call fcn.00643d26
mov ecx, dword [esp + 0x48]
pop edi
pop esi
mov eax, 1
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8