Function at 0x1002d3f0
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x10158f06
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x78
mov al, byte [esp + 3]
push ebx
push ebp
push esi
mov esi, ecx
xor ebx, ebx
push edi
push ebx
mov dword [esp + 0x20], esi
mov byte [esi], al
call fcn.1000bc70
mov cl, byte [esp + 0x13]
lea edi, [esi + 0x10]
mov dword [esp + 0x90], ebx
push ebx
mov byte [edi], cl
mov ecx, edi
call fcn.1000bc70
lea ecx, [esi + 0x30]
mov byte [esp + 0x90], 1
call fcn.10050460
mov byte [esp + 0x90], 2
call fcn.1002d090
lea edx, [esp + 0x30]
push edx
call fcn.1002d150
add esp, 4
mov ecx, dword [0x1016a210]
mov byte [esp + 0x90], 3
push ecx
push ebx
push eax
mov ecx, esi
call fcn.1000ba60
push 1
lea ecx, [esp + 0x34]
mov byte [esp + 0x94], 2
call fcn.1000bc70
mov dl, byte [0x1018c50f]
mov al, byte [0x1018c50e]
add dl, al
lea eax, [esp + 0x30]
push esi
push eax
mov byte [0x1018c512], dl
call fcn.10053830
add esp, 8
mov ecx, dword [0x1016a210]
mov byte [esp + 0x90], 4
push ecx
push ebx
push eax
mov ecx, edi
call fcn.1000ba60
push 1
lea ecx, [esp + 0x34]
mov byte [esp + 0x94], 2
call fcn.1000bc70
mov eax, 0xa
mov ecx, 2
mov word [esp + 0x42], ax
mov word [esp + 0x44], ax
mov ebp, 0x57
mov eax, 6
mov edx, 0x51
mov edi, 0x56
mov word [esp + 0x40], cx
mov word [esp + 0x46], bp
mov word [esp + 0x48], ax
mov word [esp + 0x4a], dx
mov word [esp + 0x4c], di
mov word [esp + 0x4e], 1
mov word [esp + 0x50], 0x48
mov word [esp + 0x52], 0x14
mov word [esp + 0x54], 8
mov word [esp + 0x56], ax
mov eax, 0x4c
mov word [esp + 0x58], di
mov word [esp + 0x5a], ax
mov word [esp + 0x66], ax
mov eax, 0x5c
mov word [esp + 0x5c], 0x19
mov word [esp + 0x80], ax
mov word [esp + 0x82], ax
mov al, byte [0x10194cb0]
mov word [esp + 0x5e], 5
test al, 1
mov word [esp + 0x60], 0x52
mov word [esp + 0x62], 0x55
mov word [esp + 0x64], 0x1b
mov word [esp + 0x68], 7
mov word [esp + 0x6a], di
mov word [esp + 0x6c], bx
mov word [esp + 0x6e], 0x1d
mov word [esp + 0x70], 0x1c
mov word [esp + 0x72], bx
mov word [esp + 0x74], cx
mov word [esp + 0x76], bp
mov word [esp + 0x78], di
mov word [esp + 0x7a], bp
mov word [esp + 0x7c], dx
mov word [esp + 0x7e], 0xd
mov word [esp + 0x84], 0x5b
mov word [esp + 0x86], bx
jne 0x1002d60d
mov cl, al
lea edx, [esp + 0x40]
or cl, 1
push edx
mov byte [0x10194cb0], cl
mov ecx, 0x10194cb4
call fcn.1002e820
push 0x1000dbb0
call fcn.1013c36b
add esp, 4
mov cl, byte [esp + 0x13]
mov eax, dword [0x10194cb4]
mov byte [esp + 0x20], cl
push ebx
lea ecx, [esp + 0x24]
mov dword [esp + 0x18], eax
call fcn.1000bc70
mov edx, dword [esp + 0x14]
push edx
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x20]
mov dword [esp + 0x18], eax
push 1
push eax
call fcn.1000c010
test al, al
je 0x1002d66e
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
push eax
push ecx
push edx
call fcn.100017d0
mov eax, dword [esp + 0x24]
add esp, 0xc
lea ecx, [esp + 0x20]
push eax
call fcn.1000bff0
lea ecx, [esp + 0x20]
lea edx, [esp + 0x30]
push ecx
push edx
mov ecx, esi
mov byte [esp + 0x98], 5
call fcn.1002dbb0
mov edx, dword [eax]
lea ecx, [esi + 0x20]
push 1
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x94], 2
call fcn.1000bc70
mov eax, 0xa
mov edx, 2
mov word [esp + 0x42], ax
mov word [esp + 0x44], ax
mov eax, 6
mov ecx, 0x51
mov word [esp + 0x48], ax
mov word [esp + 0x56], ax
mov eax, 0x4c
mov byte [0x1018c512], 0x25
mov word [esp + 0x5a], ax
mov word [esp + 0x66], ax
mov eax, 0x5c
mov word [esp + 0x40], dx
mov word [esp + 0x80], ax
mov word [esp + 0x82], ax
mov al, byte [0x10194cb0]
mov word [esp + 0x46], bp
test al, 1
mov word [esp + 0x4a], cx
mov word [esp + 0x4c], di
mov word [esp + 0x4e], 1
mov word [esp + 0x50], 0x48
mov word [esp + 0x52], 0x14
mov word [esp + 0x54], 8
mov word [esp + 0x58], di
mov word [esp + 0x5c], 0x19
mov word [esp + 0x5e], 5
mov word [esp + 0x60], 0x52
mov word [esp + 0x62], 0x55
mov word [esp + 0x64], 0x1b
mov word [esp + 0x68], 7
mov word [esp + 0x6a], di
mov word [esp + 0x6c], bx
mov word [esp + 0x6e], 0x1d
mov word [esp + 0x70], 0x1c
mov word [esp + 0x72], bx
mov word [esp + 0x74], dx
mov word [esp + 0x76], bp
mov word [esp + 0x78], di
mov word [esp + 0x7a], bp
mov word [esp + 0x7c], cx
mov word [esp + 0x7e], 0xd
mov word [esp + 0x84], 0x5b
mov word [esp + 0x86], bx
jne 0x1002d7e0
lea ecx, [esp + 0x40]
or al, 1
push ecx
mov ecx, 0x10194cb4
mov byte [0x10194cb0], al
call fcn.1002e820
push 0x1000dbb0
call fcn.1013c36b
add esp, 4
mov edx, dword [0x10194cb4]
mov al, byte [esp + 0x13]
push ebx
lea ecx, [esp + 0x24]
mov dword [esp + 0x1c], edx
mov byte [esp + 0x24], al
call fcn.1000bc70
mov ecx, dword [esp + 0x18]
push ecx
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x20]
mov dword [esp + 0x14], eax
push 1
push eax
call fcn.1000c010
test al, al
je 0x1002d844
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
push edx
push eax
push ecx
call fcn.100017d0
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x34], eax
add esp, 0xc
mov word [edx + eax*2], bx
mov eax, 0xa
mov byte [esp + 0x90], 6
mov word [esp + 0x42], ax
mov word [esp + 0x44], ax
mov eax, 6
mov edx, 2
mov word [esp + 0x48], ax
mov word [esp + 0x56], ax
mov eax, 0x4c
mov ecx, 0x51
mov word [esp + 0x5a], ax
mov word [esp + 0x66], ax
mov eax, 0x5c
mov word [esp + 0x40], dx
mov word [esp + 0x80], ax
mov word [esp + 0x82], ax
mov al, byte [0x10194cb0]
mov word [esp + 0x46], bp
test al, 1
mov word [esp + 0x4a], cx
mov word [esp + 0x4c], di
mov word [esp + 0x4e], 1
mov word [esp + 0x50], 0x48
mov word [esp + 0x52], 0x14
mov word [esp + 0x54], 8
mov word [esp + 0x58], di
mov word [esp + 0x5c], 0x19
mov word [esp + 0x5e], 5
mov word [esp + 0x60], 0x52
mov word [esp + 0x62], 0x55
mov word [esp + 0x64], 0x1b
mov word [esp + 0x68], 7
mov word [esp + 0x6a], di
mov word [esp + 0x6c], bx
mov word [esp + 0x6e], 0x1d
mov word [esp + 0x70], 0x1c
mov word [esp + 0x72], bx
mov word [esp + 0x74], dx
mov word [esp + 0x76], bp
mov word [esp + 0x78], di
mov word [esp + 0x7a], bp
mov word [esp + 0x7c], cx
mov word [esp + 0x7e], 0xd
mov word [esp + 0x84], 0x5b
mov word [esp + 0x86], bx
jne 0x1002d9bd
or al, 1
push 0x4a
mov byte [0x10194cb0], al
call fcn.1013c2df
add esp, 4
mov dword [0x10194cb4], eax
mov ebp, 0x30
xor edi, edi
mov ax, word [esp + edi + 0x40]
push ebp
and eax, 0xffff
mov ecx, 0x10194cb4
push eax
call fcn.1004a650
mov edx, dword [0x10194cb4]
mov ecx, eax
mov ax, word [esp + edi + 0x40]
add edi, 2
xor ecx, eax
xor ecx, ebp
xor ebp, ebp
mov word [edi + edx - 2], cx
mov eax, dword [0x10194cb4]
cmp edi, 0x48
mov bp, word [edi + eax - 2]
jb 0x1002d96c
push 0x1000dbb0
mov word [eax + 0x48], bx
call fcn.1013c36b
add esp, 4
mov eax, dword [0x10194cb4]
push esi
lea ecx, [esp + 0x34]
push eax
push ecx
call fcn.1000cdb0
add esp, 0xc
lea edx, [esp + 0x20]
push eax
push edx
lea ecx, [esi + 0x30]
mov byte [esp + 0x98], 7
call fcn.10050580
mov ecx, dword [esp + 0x34]
mov byte [esp + 0x90], 6
cmp ecx, ebx
je 0x1002da15
mov al, byte [ecx - 1]
cmp al, bl
je 0x1002da09
cmp al, 0xff
je 0x1002da09
dec al
mov byte [ecx - 1], al
jmp 0x1002da15
lea eax, [ecx - 2]
push eax
call fcn.101307a0
add esp, 4
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
cmp ecx, ebx
mov byte [esp + 0x90], 2
je 0x1002da4f
mov al, byte [ecx - 1]
cmp al, bl
je 0x1002da43
cmp al, 0xff
je 0x1002da43
dec al
mov byte [ecx - 1], al
jmp 0x1002da4f
lea eax, [ecx - 2]
push eax
call fcn.101307a0
add esp, 4
mov al, byte [0x1018c50c]
mov ecx, dword [esp + 0x88]
dec al
pop edi
mov byte [0x1018c50c], al
mov al, byte [0x1018c510]
dec al
mov byte [0x1018c50f], bl
dec al
mov byte [0x1018c510], al
mov eax, esi
pop esi
mov dword [esp + 0x88], 0xffffffff
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x84
ret