Function at 0x100d8870
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd4
call fcn.100feb80
mov eax, dword [0x1016fb90]
xor eax, esp
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0xf4]
push ebx
mov ebx, dword [esp + 0x100]
push ebp
push esi
mov esi, dword [esp + 0xec]
xor ebp, ebp
push edi
mov edi, dword [esp + 0xf8]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x108]
shr esi, 3
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], edi
mov dword [esp + 0x58], edx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x30], 2
cmp esi, 0x14
je 0x100d8904
cmp esi, 0x1c
je 0x100d8904
cmp esi, 0x20
jne 0x100d8955
cmp eax, ebp
jne 0x100d8911
call fcn.10060f70
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xec]
cmp eax, 0x200
jae 0x100d8924
mov eax, 0x200
add eax, 0x3f
and eax, 0xffffffc0
mov dword [esp + 0xec], eax
test edi, edi
je 0x100d8972
mov eax, dword [esp + 0xfc]
cmp eax, esi
jae 0x100d895c
push 0x4e
push 0x10159d78
push 0x6e
push 0x7d
push 0xa
call fcn.10053dd0
add esp, 0x14
xor eax, eax
jmp 0x100d8f5d
jbe 0x100d8960
mov eax, esi
push eax
lea edx, [esp + 0xa4]
push edi
push edx
call fcn.100febb0
add esp, 0xc
call fcn.100ad4f0
mov edi, eax
mov dword [esp + 0x28], edi
test edi, edi
je 0x100d8f4a
call fcn.100aacd0
mov ebp, eax
test ebp, ebp
je 0x100d8f4a
push ebp
call fcn.100aad60
push ebp
call fcn.100aadf0
push ebp
mov dword [esp + 0x1c], eax
call fcn.100aadf0
push ebp
mov dword [esp + 0x34], eax
call fcn.100aadf0
push ebp
mov dword [esp + 0x50], eax
call fcn.100aadf0
push ebp
mov dword [esp + 0x30], eax
call fcn.100aadf0
push ebp
mov dword [esp + 0x6c], eax
call fcn.100aadf0
push ebp
mov dword [esp + 0x64], eax
call fcn.100aadf0
push ebp
mov dword [esp + 0x6c], eax
call fcn.100aadf0
mov edi, eax
add esp, 0x24
mov dword [esp + 0x38], edi
test edi, edi
je 0x100d8f3d
mov eax, dword [esp + 0xec]
dec eax
push eax
call fcn.10071930
push eax
push edi
call fcn.1007fe60
add esp, 0xc
test eax, eax
je 0x100d8f3d
jmp 0x100d8a20
mov ecx, dword [esp + 0x34]
xor eax, eax
cmp dword [esp + 0x40], eax
push ecx
sete al
push 0
push ebx
mov edi, eax
call fcn.100b6150
inc dword [esp + 0x40]
add esp, 0xc
test eax, eax
je 0x100d8f3d
test edi, edi
je 0x100d8a66
lea edx, [esp + 0xa0]
push esi
push edx
call fcn.10060660
add esp, 8
test eax, eax
jle 0x100d8f3d
jmp 0x100d8a6e
mov dword [esp + 0x40], 0
push esi
lea eax, [esp + 0xa4]
push eax
lea ecx, [esp + 0x88]
push ecx
call fcn.100febb0
push esi
lea edx, [esp + 0xb0]
push edx
lea eax, [esp + 0xd4]
push eax
call fcn.100febb0
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x100d8ab0
inc byte [esp + eax + 0x80]
jne 0x100d8ab0
dec eax
jns 0x100d8aa4
mov ecx, dword [esp + 0x1c]
push 0
push ecx
push 0
lea edx, [esp + 0x6c]
push edx
lea eax, [esp + 0xb0]
push esi
push eax
call fcn.1005ee10
add esp, 0x18
test eax, eax
je 0x100d8f3d
mov ecx, dword [esp + 0x1c]
push 0
push ecx
push 0
lea edx, [esp + 0xcc]
push edx
lea eax, [esp + 0x90]
push esi
push eax
call fcn.1005ee10
add esp, 0x18
test eax, eax
je 0x100d8f3d
xor eax, eax
test esi, esi
jle 0x100d8b20
jmp 0x100d8b10
mov cl, byte [esp + eax + 0xc0]
xor byte [esp + eax + 0x60], cl
inc eax
cmp eax, esi
jl 0x100d8b10
mov edx, dword [esp + 0x18]
or byte [esp + 0x60], 0x80
or byte [esp + esi + 0x5f], 1
push edx
lea eax, [esp + 0x64]
push esi
push eax
call fcn.10072620
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov ecx, dword [esp + 0x18]
push ebx
push edi
push ebp
push 0x32
push ecx
call fcn.100b6660
add esp, 0x14
test eax, eax
jg 0x100d8b66
je 0x100d8a20
jmp 0x100d8f3d
push 0
push 2
push ebx
call fcn.100b6150
add esp, 0xc
test eax, eax
je 0x100d8f3d
push 0
push 3
push ebx
call fcn.100b6150
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov edx, dword [esp + 0xec]
dec edx
mov eax, 0xcccccccd
mul edx
xor ecx, ecx
mov ebx, edx
mov dword [esp + 0x20], ecx
shr ebx, 7
jmp 0x100d8bb4
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x100d8bd0
mov eax, dword [esp + 0x14]
push ecx
push 0
push eax
call fcn.100b6150
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov ecx, dword [esp + 0x3c]
push 0
push ecx
call fcn.100725e0
add esp, 8
xor edi, edi
test ebx, ebx
js 0x100d8c8a
lea esp, [esp]
lea eax, [esi - 1]
test eax, eax
js 0x100d8c03
inc byte [esp + eax + 0x80]
jne 0x100d8c03
dec eax
jns 0x100d8bf7
mov edx, dword [esp + 0x1c]
push 0
push edx
push 0
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x90]
push esi
push ecx
call fcn.1005ee10
add esp, 0x18
test eax, eax
je 0x100d8f3d
mov edx, dword [esp + 0x10]
push edx
lea eax, [esp + 0x64]
push esi
push eax
call fcn.10072620
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov eax, dword [esp + 0x10]
lea ecx, [esi*8]
imul ecx, edi
push ecx
push eax
push eax
call fcn.1007fe60
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
push edx
push eax
push eax
call fcn.100af460
add esp, 0xc
test eax, eax
je 0x100d8f3d
inc edi
cmp edi, ebx
jle 0x100d8bf0
mov eax, dword [esp + 0xec]
mov edi, dword [esp + 0x3c]
dec eax
push eax
push edi
call fcn.10072410
add esp, 8
test eax, eax
je 0x100d8f3d
push edi
mov edi, dword [esp + 0x54]
push edi
call fcn.10072510
add esp, 8
test eax, eax
je 0x100d8f3d
mov eax, dword [esp + 0x38]
push eax
push edi
push edi
call fcn.100af460
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
push ecx
push edx
call fcn.1007fd00
add esp, 8
test eax, eax
je 0x100d8f3d
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
push ebp
push eax
push edi
push ecx
push 0
call fcn.100b5c50
add esp, 0x14
test eax, eax
je 0x100d8f3d
call fcn.10071930
mov edx, dword [esp + 0x44]
push eax
mov eax, dword [esp + 0x14]
push edx
push eax
call fcn.100af3a0
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov ecx, dword [esp + 0x10]
push ecx
push edi
mov edi, dword [esp + 0x50]
push edi
call fcn.100af3a0
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov edx, dword [esp + 0x38]
push edx
push edi
call fcn.10071ac0
add esp, 8
test eax, eax
js 0x100d8d77
mov eax, dword [esp + 0x14]
push eax
push 1
push ebp
push 0x32
push edi
call fcn.100b6660
add esp, 0x14
test eax, eax
jg 0x100d8d94
jne 0x100d8f3d
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
cmp eax, 0x1000
jl 0x100d8bb0
mov ebx, dword [esp + 0x14]
jmp 0x100d8a20
mov ecx, dword [esp + 0x14]
push 1
push 2
push ecx
call fcn.100b6150
add esp, 0xc
test eax, eax
je 0x100d8f3d
call fcn.10071930
mov ebx, dword [esp + 0x38]
push eax
push edi
push ebx
call fcn.100af3a0
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
push ebp
push edx
push ebx
push 0
push eax
call fcn.100b5c50
add esp, 0x14
test eax, eax
je 0x100d8f3d
push 2
push ebx
call fcn.100725e0
add esp, 8
test eax, eax
je 0x100d8f3d
mov ecx, dword [esp + 0x28]
push ebp
push edi
push ecx
call fcn.100ad250
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x24]
push edx
push ebp
push edi
push eax
push ebx
push ecx
call fcn.100aecd0
add esp, 0x18
test eax, eax
je 0x100d8f3d
mov edx, dword [esp + 0x24]
push edx
call fcn.10071ec0
add esp, 4
test eax, eax
je 0x100d8e83
call fcn.10071930
push eax
push ebx
push ebx
call fcn.100af460
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
inc dword [esp + 0x30]
push eax
push ebp
push edi
push ecx
push ebx
push edx
call fcn.100aecd0
add esp, 0x18
test eax, eax
jne 0x100d8e33
jmp 0x100d8f3d
mov eax, dword [esp + 0x14]
push 1
push 3
push eax
call fcn.100b6150
add esp, 0xc
test eax, eax
je 0x100d8f3d
mov ebx, dword [esp + 0x5c]
mov ecx, dword [ebx + 8]
push ecx
mov dword [esp + 0x30], 1
lea esp, [esp]
call fcn.10072160
mov edx, dword [ebx + 0xc]
push edx
call fcn.10072160
mov eax, dword [ebx + 0x10]
push eax
call fcn.10072160
push edi
call fcn.10072810
mov ecx, dword [esp + 0x28]
push ecx
mov dword [ebx + 8], eax
call fcn.10072810
mov edx, dword [esp + 0x38]
push edx
mov dword [ebx + 0xc], eax
call fcn.10072810
add esp, 0x18
cmp dword [ebx + 8], 0
mov dword [ebx + 0x10], eax
je 0x100d8efd
cmp dword [ebx + 0xc], 0
je 0x100d8efd
test eax, eax
jne 0x100d8f07
mov dword [esp + 0x2c], 0
jmp 0x100d8f3d
mov eax, dword [esp + 0x58]
test eax, eax
je 0x100d8f15
mov ecx, dword [esp + 0x20]
mov dword [eax], ecx
mov eax, dword [esp + 0x54]
test eax, eax
je 0x100d8f23
mov edx, dword [esp + 0x30]
mov dword [eax], edx
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x100d8f3d
push esi
lea ecx, [esp + 0xa4]
push ecx
push eax
call fcn.100febb0
add esp, 0xc
push ebp
call fcn.100aadb0
mov edi, dword [esp + 0x2c]
add esp, 4
push ebp
call fcn.100aad20
push edi
call fcn.100ad200
mov eax, dword [esp + 0x34]
add esp, 8
mov ecx, dword [esp + 0xe0]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.100fef11
add esp, 0xd4
ret