Function at 0x1005ffa0
Capabilities:
Encode data using xor
Get process heap flags
Get process heap force flags

Disassembly:
push 0xffffffffffffffff
push 0x1015bd70
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x4c
mov eax, 0x18
push ebx
mov word [esp + 0x38], ax
mov word [esp + 0x3a], ax
mov al, byte [0x1019785c]
mov word [esp + 0x30], 0x71
test al, 1
mov word [esp + 0x32], 0x15
mov word [esp + 0x34], 0x35
mov word [esp + 0x36], 0x12
mov word [esp + 0x3c], 0x22
mov word [esp + 0x3e], 0x24
mov word [esp + 0x40], 0x10
mov word [esp + 0x42], 0x10
mov word [esp + 0x44], 0x10
mov word [esp + 0x46], 0x29
mov word [esp + 0x48], 0x23
mov word [esp + 0x4a], 0xc
mov word [esp + 0x4c], 8
jne 0x10060053
mov bl, al
lea eax, [esp + 0x30]
or bl, 1
push eax
mov ecx, 0x10197860
mov byte [0x1019785c], bl
call fcn.10044190
push 0x100619b0
call fcn.1013c36b
add esp, 4
mov cl, byte [esp + 7]
push esi
xor ebx, ebx
push edi
mov edi, dword [0x10197860]
mov byte [esp + 0x18], cl
push ebx
lea ecx, [esp + 0x1c]
call fcn.1000bc70
push edi
call fcn.1013c2c2
add esp, 4
mov esi, eax
lea ecx, [esp + 0x18]
push 1
push esi
call fcn.1000c010
test al, al
je 0x100600a5
mov edx, dword [esp + 0x1c]
push esi
push edi
push edx
call fcn.100017d0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], esi
add esp, 0xc
mov word [eax + esi*2], bx
lea ecx, [esp + 0x18]
push 0xffffffffffffffff
push ecx
lea ecx, [esp + 0x18]
mov dword [esp + 0x68], ebx
call fcn.100303e0
push 1
lea ecx, [esp + 0x1c]
mov byte [esp + 0x64], 2
call fcn.1000bc70
mov eax, 0x62
mov ecx, 0x72
mov word [esp + 0x46], ax
mov word [esp + 0x4a], ax
mov al, byte [0x10197864]
mov byte [0x1018c76f], 0x5c
test al, 1
mov word [esp + 0x38], 0x73
mov word [esp + 0x3a], 0x66
mov word [esp + 0x3c], 0x74
mov word [esp + 0x3e], 0x6c
mov word [esp + 0x40], 0x58
mov word [esp + 0x42], 0x76
mov word [esp + 0x44], cx
mov word [esp + 0x48], cx
jne 0x10060181
or al, 1
push 0x16
mov byte [0x10197864], al
call fcn.1013c2df
add esp, 4
mov dword [0x10197868], eax
xor esi, esi
mov di, word [esp + esi + 0x38]
push 7
mov edx, edi
mov ecx, 0x10197868
and edx, 0xffff
push edx
call fcn.100a8ee0
mov ecx, dword [0x10197868]
add eax, 7
xor eax, edi
mov word [esi + ecx], ax
add esi, 2
cmp esi, 0x14
jb 0x10060139
mov edx, dword [0x10197868]
push 0x10061d10
mov word [edx + 0x14], bx
call fcn.1013c36b
add esp, 4
mov esi, dword [0x10197868]
mov al, byte [esp + 0xf]
push esi
mov byte [esp + 0x2c], al
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x28]
push eax
push esi
call fcn.1000bf40
mov cl, byte [esp + 0xf]
mov byte [esp + 0x60], 3
mov byte [esp + 0x18], cl
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov ecx, dword [0x10191a54]
lea edx, [esp + 0x18]
lea eax, [esp + 0x28]
push edx
push eax
mov byte [esp + 0x68], 4
call fcn.10058e60
mov ecx, eax
call fcn.10068420
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
cmp esi, edi
mov byte [esp + 0x60], 3
je 0x1006020e
push 1
mov ecx, esi
call fcn.1000bc70
add esi, 0x10
cmp esi, edi
jne 0x100601fa
mov esi, dword [esp + 0x1c]
push esi
call fcn.101307a0
mov ecx, dword [esp + 0x30]
add esp, 4
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
pop edi
cmp ecx, ebx
mov byte [esp + 0x5c], 2
pop esi
je 0x10060250
mov al, byte [ecx - 1]
cmp al, bl
je 0x10060244
cmp al, 0xff
je 0x10060244
dec al
mov byte [ecx - 1], al
jmp 0x10060250
lea eax, [ecx - 2]
push eax
call fcn.101307a0
add esp, 4
lea ecx, [esp + 8]
mov dword [esp + 0x58], 0xffffffff
call fcn.10030510
mov ecx, dword [esp + 0x50]
pop ebx
mov dword fs:[0], ecx
add esp, 0x58
ret