Function at 0x401800
Capabilities:
Check for time delay via gettickcount
Decompress data using quicklz

Disassembly:
mov eax, dword [0x8e5524]
test eax, eax
je 0x401816
push 0x14
push eax
call fcn.004c0440
add esp, 8
jmp 0x401820
push 0x14
call fcn.004c0d20
add esp, 4
call fcn.004b1760
cmp byte [0x8e5528], 1
jne 0x401833
jmp 0x436d50
ret
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [0x8e4a3c]
xor eax, esp
mov dword [esp + 0x1c], eax
call sub.KERNEL32.dll_GetTickCount
mov dword [esp + 4], eax
push dword [0x8eb030]
call fcn.00414f00
add esp, 4
test eax, eax
jle 0x43746c
xor ecx, ecx
nop word cs:[eax + eax]
movzx edi, cl
and edi, 1
push edi
push 0x100
push 0x8ea92c
push dword [0x8eb030]
call fcn.00435930
add esp, 0x10
test eax, eax
je 0x437450
mov dword [esp], edi
jmp 0x436df1
mov byte [eax + 0x8ea92a], 0
push 0x8ea92f
call fcn.00438a30
add esp, 4
push edi
push 0x100
push 0x8ea92c
push dword [0x8eb030]
call fcn.00435930
add esp, 0x10
test eax, eax
je 0x437450
movzx ecx, byte [0x8ea92e]
cmp ecx, 0x25
je 0x436e06
cmp ecx, 6
jne 0x436ece
cmp eax, 9
jl 0x436ece
mov dword [esp + 8], eax
lea ebp, [eax - 5]
shr ebp, 2
mov esi, 0x8ea931
jmp 0x436e2a
add esi, 4
dec ebp
je 0x436ec0
lea eax, [esi - 2]
push eax
call fcn.00402440
add esp, 4
movzx eax, ax
push eax
call fcn.00402420
add esp, 4
mov ebx, eax
push esi
call fcn.00402440
add esp, 4
movzx eax, ax
push eax
call fcn.00402420
add esp, 4
movzx ebx, bx
cmp ebx, 0x8d6
ja 0x436e20
mov ecx, ebx
shr ecx, 5
mov dword [esp + 0xc], ecx
mov edx, dword [ecx*4 + 0x8e9564]
mov edi, 1
mov ecx, ebx
shl edi, cl
bt edx, ebx
jb 0x436e20
mov byte [0x8eb040], 1
mov word [ebx + ebx + 0x8e973e], ax
movzx eax, ax
push eax
push ebx
call fcn.004353b0
add esp, 8
not edi
mov eax, dword [esp + 0xc]
and dword [eax*4 + 0x8e8298], edi
and byte [ebx + 0x8e8c8c], 0xc0
mov byte [0x8eb040], 0
jmp 0x436e20
movzx ecx, byte [0x8ea92e]
mov edi, dword [esp]
mov eax, dword [esp + 8]
cmp cl, 0x71
ja case.0x436eda.2
movzx ecx, cl
jmp dword [ecx*4 + 0x4fcae0]
movzx eax, byte [0x8ea933]
movzx ecx, byte [0x8ea932]
movzx edx, word [0x8ea930]
rol dx, 8
movzx edx, dx
push eax
push ecx
push edx
call fcn.00402410
add esp, 0xc
jmp case.0x436eda.2
movzx eax, byte [0x8ea92f]
test eax, eax
je case.0x436eda.2
cmp dword [0x8e8294], eax
jne case.0x436eda.2
mov dword [0x8e8294], 0
mov byte [0x8e9681], 0
mov byte [0x8e9680], 0
mov byte [0x8e8172], 0
call fcn.00438890
cmp byte [0x8e5504], 0
setne cl
cmp dword [0x8e8294], 0
movzx eax, byte [0x8e54f8]
setne dl
or dl, cl
xor ecx, ecx
jmp 0x436f9d
or dword [esi*4 + 0x8e8298], edi
mov byte [0x8e83b4], 1
mov ah, byte [ecx + 0x8e8c8c]
and ah, 0xc0
or ah, 0x20
mov byte [ecx + 0x8e8c8c], ah
inc ecx
cmp ecx, 0x8d7
je 0x4373ec
mov esi, ecx
shr esi, 5
mov edi, 1
shl edi, cl
mov ebx, 0xfffffffe
rol ebx, cl
and esi, 0x7ff
and dword [esi*4 + 0x8e8174], ebx
lea ebx, [ecx - 2]
test al, al
je 0x436fd0
cmp bx, 0x34
jae 0x436f70
jmp 0x436f7e
cmp bx, 0x34
setb ah
test dl, ah
jne 0x436f7e
jmp 0x436f70
cmp eax, 9
jl case.0x436eda.2
add eax, 0xfffffffb
shr eax, 2
mov esi, 0x8ea931
jmp 0x43700c
add esi, 4
mov eax, ebp
dec eax
je case.0x436eda.2
mov ebp, eax
lea eax, [esi - 2]
push eax
call fcn.00402440
add esp, 4
movzx eax, ax
push eax
call fcn.00402420
add esp, 4
mov ebx, eax
push esi
call fcn.00402440
add esp, 4
movzx eax, ax
push eax
call fcn.00402420
add esp, 4
movzx ecx, bx
cmp ecx, 0x8d6
ja 0x437000
cmp word [ecx + ecx + 0x8e973e], ax
jne 0x437000
mov eax, 0xfffffffe
rol eax, cl
mov edx, ecx
shr edx, 5
and dword [edx*4 + 0x8e8174], eax
and byte [ecx + 0x8e83b5], 0xc0
jmp 0x437000
movzx ebx, byte [0x8ea92f]
mov ecx, ebx
add cl, 0xef
cmp cl, 0xf0
jb case.0x436eda.2
dec ebx
mov edx, 0xfffffffe
mov ecx, ebx
rol edx, cl
and dword [0x8e96b4], edx
cmp eax, 0x25
mov esi, 0x25
cmovl esi, eax
add esi, 0xfffffffa
cmp eax, 6
mov eax, 0
cmovl esi, eax
shl ebx, 5
lea eax, [ebx + 0x8eaa2c]
push esi
push 0x8ea930
push eax
call fcn.004c3690
add esp, 0xc
mov byte [ebx + esi + 0x8eaa2c], 0
jmp case.0x436eda.2
mov esi, eax
call sub.KERNEL32.dll_GetTickCount
mov ecx, esi
mov dword [0x8e54f4], eax
mov byte [0x8e54f0], 1
cmp esi, 7
jne 0x437415
cmp dword [0x65e008], 1
jne 0x437415
mov eax, dword [0x8ea92c]
mov ecx, 0x60580
xor eax, ecx
mov ecx, dword [0x8ea92f]
mov edx, 0xc5130000
xor ecx, edx
or ecx, eax
jne case.0x436eda.2
mov byte [esp + 0x18], 0x13
mov dword [esp + 0x14], 0x7f000000
mov dword [esp + 0x10], 0x60780
push 9
lea eax, [esp + 0x14]
push eax
call fcn.00414ea0
add esp, 8
jmp case.0x436eda.2
movzx ecx, byte [0x8ea92f]
mov eax, ecx
dec al
cmp al, 0x1f
ja case.0x436eda.2
dec cl
mov eax, 0xfffffffe
rol eax, cl
and dword [0x8e96d0], eax
jmp case.0x436eda.2
mov dword [0x8e9684], 0
mov byte [0x8e9683], 0
mov byte [0x8e9682], 0
mov byte [0x8e8171], 1
call fcn.00438c70
push str.save_mode_success_
call fcn.004cfe43
jmp 0x436dcd
push eax
push 0x8ea92c
mov esi, eax
call fcn.00414ea0
add esp, 8
mov ecx, esi
mov edx, 1
call fcn.00437ea0
jmp case.0x436eda.2
movzx ebx, byte [0x8ea92f]
cmp ebx, 0x1f
ja case.0x436eda.2
mov edx, 0xfffffffe
mov ecx, ebx
rol edx, cl
shr cl, 5
movzx ecx, cl
and dword [ecx*4 + 0x8e96e8], edx
cmp eax, 0x25
mov esi, 0x25
cmovl esi, eax
add esi, 0xfffffffa
cmp eax, 6
mov eax, 0
cmovl esi, eax
shl ebx, 5
lea eax, [ebx + 0x8eac2c]
push esi
push 0x8ea930
push eax
call fcn.004c3690
add esp, 0xc
mov byte [ebx + esi + 0x8eac2c], 0
jmp case.0x436eda.2
movzx ecx, byte [0x8ea92f]
cmp ecx, 0x3f
ja case.0x436eda.2
mov eax, 0xfffffffe
rol eax, cl
shr ecx, 5
and dword [ecx*4 + 0x8e9714], eax
jmp case.0x436eda.2
movzx eax, byte [0x8ea92f]
push eax
push 0x8ea930
call fcn.00438900
add esp, 8
jmp case.0x436eda.2
mov byte [eax + 0x8ea92a], 0
push 0x8ea92f
call fcn.00438910
jmp 0x436dcd
push eax
push 0x8ea92c
mov esi, eax
call fcn.00414ea0
add esp, 8
cmp esi, 9
jl case.0x436eda.2
mov ecx, esi
add ecx, 0xfffffffb
shr ecx, 2
mov ebp, 0x8ea931
jmp 0x4372c8
movzx eax, ax
push eax
call fcn.004351d0
add esp, 4
mov ecx, esi
add ebp, 4
dec ecx
je case.0x436eda.2
mov esi, ecx
lea eax, [ebp - 2]
push eax
call fcn.00402440
add esp, 4
movzx eax, ax
push eax
call fcn.00402420
add esp, 4
mov ebx, eax
push ebp
call fcn.00402440
add esp, 4
movzx eax, ax
push eax
call fcn.00402420
add esp, 4
cmp bx, 1
je 0x4372b0
lea ecx, [ebx - 1]
cmp cx, 0x20
ja 0x437320
add ebx, 0xfffffffe
movzx eax, ax
movzx ecx, bx
push eax
push ecx
call fcn.004352a0
add esp, 8
jmp 0x4372bc
add ebx, 0xffffffde
cmp bx, 0x1f
mov ecx, esi
ja 0x4372be
movzx eax, ax
movzx ecx, bx
push eax
push ecx
call fcn.00435320
mov ecx, esi
add esp, 8
jmp 0x4372be
cmp eax, 9
jl case.0x436eda.2
add eax, 0xfffffffb
shr eax, 2
mov esi, 0x8ea931
jmp 0x43736c
add esi, 4
mov eax, ebp
dec eax
je case.0x436eda.2
mov ebp, eax
lea eax, [esi - 2]
push eax
call fcn.00402440
add esp, 4
movzx eax, ax
push eax
call fcn.00402420
add esp, 4
mov ebx, eax
push esi
call fcn.00402440
add esp, 4
movzx eax, ax
push eax
call fcn.00402420
add esp, 4
add ebx, 0xffffffbe
cmp bx, 0x1f
ja 0x437360
movzx ecx, bx
cmp word [ecx + ecx + 0x8ea8ec], ax
jne 0x437360
mov eax, 0xfffffffe
rol eax, cl
mov edx, ecx
shr edx, 5
and dword [edx*4 + 0x8e9688], eax
and byte [ecx + 0x8e9691], 0xc0
jmp 0x437360
mov esi, eax
call fcn.00433430
mov byte [eax], 0
push esi
push 0x8ea92c
call fcn.004331b0
add esp, 8
jmp case.0x436eda.2
mov byte [0x8e8170], 1
call fcn.00438c70
movzx eax, byte [0x8ea92f]
push eax
push str.call_mode__d_success__n
call fcn.00401220
add esp, 8
mov edi, dword [esp]
jmp case.0x436eda.2
xor edx, edx
call fcn.00437ea0
cmp byte [0x8e8290], 1
je case.0x436eda.2
cmp dword [0x8e8294], 0
jne case.0x436eda.2
cmp dword [0x8e9684], 0
jne case.0x436eda.2
call fcn.00401840
jmp case.0x436eda.2
push dword [0x8eb030]
call fcn.00402580
add esp, 4
test edi, edi
jne 0x43746c
mov cl, 1
test eax, eax
jne 0x436d90
cmp byte [0x8eb034], 0
je 0x437483
cmp byte [0x8e83b4], 0
jne 0x437483
call fcn.004388a0
movzx eax, byte [0x8e83b4]
mov byte [0x8eb034], al
cmp byte [0x8eb035], 0
je 0x4374a6
cmp byte [0x8e8290], 0
jne 0x4374a6
call fcn.004388f0
movzx eax, byte [0x8e8290]
mov byte [0x8eb035], al
cmp byte [0x8eb036], 0
je 0x4374c9
cmp byte [0x8e96f0], 0
jne 0x4374c9
call fcn.00402410
movzx eax, byte [0x8e96f0]
mov byte [0x8eb036], al
call fcn.00435c90
mov ecx, dword [esp + 4]
mov eax, ecx
sub eax, dword [0x8eb02c]
cmp eax, 0x14
jb 0x437519
mov dword [0x8eb02c], ecx
call fcn.00435ec0
call fcn.00436090
call fcn.00436310
call fcn.00436460
call fcn.004365b0
call fcn.00436730
call fcn.004368c0
call fcn.00436b10
call fcn.00432b10
mov ecx, dword [esp + 0x1c]
xor ecx, esp
call fcn.004c0e60
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret