Function at 0x100fa540
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd4
call fcn.1011fc40
mov eax, dword [0x101b2070]
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
push ebp
push esi
mov esi, dword [esp + 0xec]
xor ebx, ebx
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]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x10c]
shr esi, 3
xor ebp, ebp
mov dword [esp + 0x18], eax
mov dword [esp + 0x40], edi
mov dword [esp + 0x54], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x34], 2
cmp esi, 0x14
je 0x100fa5d6
cmp esi, 0x1c
je 0x100fa5d6
cmp esi, 0x20
jne 0x100fa654
cmp eax, ebx
jne 0x100fa605
cmp esi, 0x14
jne 0x100fa5ea
call fcn.10072090
mov dword [esp + 0x18], eax
jmp 0x100fa610
cmp esi, 0x1c
jne 0x100fa5fa
call fcn.10072180
mov dword [esp + 0x18], eax
jmp 0x100fa610
call fcn.10072190
mov dword [esp + 0x18], eax
jmp 0x100fa610
push eax
call fcn.1007b800
add esp, 4
mov esi, eax
mov eax, dword [esp + 0xec]
cmp eax, 0x200
jae 0x100fa623
mov eax, 0x200
add eax, 0x3f
and eax, 0xffffffc0
mov dword [esp + 0xec], eax
cmp edi, ebx
je 0x100fa671
mov eax, dword [esp + 0xfc]
cmp eax, esi
jae 0x100fa65b
push 0x55
push 0x10181124
push 0x6e
push 0x7d
push 0xa
call fcn.100719e0
add esp, 0x14
xor eax, eax
jmp 0x100fac5d
jbe 0x100fa65f
mov eax, esi
push eax
lea eax, [esp + 0xa4]
push edi
push eax
call fcn.1011fc70
add esp, 0xc
call fcn.100d2630
mov edi, eax
mov dword [esp + 0x24], edi
cmp edi, ebx
je 0x100fac4a
call fcn.100c2950
mov ebp, eax
cmp ebp, ebx
je 0x100fac4a
push ebp
call fcn.100c2a40
push ebp
call fcn.100c2ad0
push ebp
mov dword [esp + 0x1c], eax
call fcn.100c2ad0
push ebp
mov dword [esp + 0x30], eax
call fcn.100c2ad0
push ebp
mov dword [esp + 0x44], eax
call fcn.100c2ad0
push ebp
mov dword [esp + 0x34], eax
call fcn.100c2ad0
push ebp
mov dword [esp + 0x74], eax
call fcn.100c2ad0
push ebp
mov dword [esp + 0x64], eax
call fcn.100c2ad0
push ebp
mov dword [esp + 0x74], eax
call fcn.100c2ad0
add esp, 0x24
mov dword [esp + 0x2c], eax
cmp eax, ebx
je 0x100fac3d
mov eax, dword [esp + 0xec]
dec eax
push eax
call fcn.10090580
mov ecx, dword [esp + 0x30]
push eax
push ecx
call fcn.100b2620
add esp, 0xc
test eax, eax
je 0x100fac3d
jmp 0x100fa720
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x14]
xor edx, edx
cmp dword [esp + 0x40], edx
push ebx
sete dl
push 0
push eax
mov edi, edx
call fcn.100d8b90
inc ebx
add esp, 0xc
mov dword [esp + 0x3c], ebx
test eax, eax
je 0x100fac3d
test edi, edi
je 0x100fa76b
lea ecx, [esp + 0xa0]
push esi
push ecx
call fcn.100846c0
add esp, 8
test eax, eax
jle 0x100fac3d
jmp 0x100fa773
mov dword [esp + 0x40], 0
push esi
lea edx, [esp + 0xa4]
push edx
lea eax, [esp + 0x88]
push eax
call fcn.1011fc70
push esi
lea ecx, [esp + 0xb0]
push ecx
lea edx, [esp + 0xd4]
push edx
call fcn.1011fc70
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x100fa7bc
lea esp, [esp]
inc byte [esp + eax + 0x80]
jne 0x100fa7bc
dec eax
jns 0x100fa7b0
mov eax, dword [esp + 0x18]
push 0
push eax
push 0
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0xb0]
push esi
push edx
call fcn.10082e60
add esp, 0x18
test eax, eax
je 0x100fac3d
mov eax, dword [esp + 0x18]
push 0
push eax
push 0
lea ecx, [esp + 0xcc]
push ecx
lea edx, [esp + 0x90]
push esi
push edx
call fcn.10082e60
add esp, 0x18
test eax, eax
je 0x100fac3d
xor eax, eax
test esi, esi
jle 0x100fa823
mov cl, byte [esp + eax + 0xc0]
xor byte [esp + eax + 0x60], cl
inc eax
cmp eax, esi
jl 0x100fa813
mov edx, dword [esp + 0x1c]
or byte [esp + 0x60], 0x80
or byte [esp + esi + 0x5f], 1
push edx
lea eax, [esp + 0x64]
push esi
push eax
call fcn.10091380
add esp, 0xc
test eax, eax
je 0x100fac3d
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
push ebx
push edi
push ebp
push 0x40
push ecx
call fcn.100d90a0
add esp, 0x14
test eax, eax
jg 0x100fa86d
je 0x100fa720
jmp 0x100fac3d
push 0
push 2
push ebx
call fcn.100d8b90
add esp, 0xc
test eax, eax
je 0x100fac3d
push 0
mov edx, ebx
push 3
push edx
call fcn.100d8b90
add esp, 0xc
test eax, eax
je 0x100fac3d
mov ecx, dword [esp + 0xec]
lea ecx, [ecx - 1]
mov eax, 0xcccccccd
mul ecx
mov ebx, edx
mov dword [esp + 0x28], 0
shr ebx, 7
mov eax, dword [esp + 0x28]
test eax, eax
je 0x100fa8d7
mov edx, dword [esp + 0x14]
push eax
push 0
push edx
call fcn.100d8b90
add esp, 0xc
test eax, eax
je 0x100fac3d
mov eax, dword [esp + 0x30]
push eax
call fcn.10090b30
add esp, 4
xor edi, edi
test ebx, ebx
js 0x100fa98a
mov edi, edi
lea eax, [esi - 1]
test eax, eax
js 0x100fa903
inc byte [esp + eax + 0x80]
jne 0x100fa903
dec eax
jns 0x100fa8f7
mov ecx, dword [esp + 0x18]
push 0
push ecx
push 0
lea edx, [esp + 0x6c]
push edx
lea eax, [esp + 0x90]
push esi
push eax
call fcn.10082e60
add esp, 0x18
test eax, eax
je 0x100fac3d
mov ecx, dword [esp + 0x10]
push ecx
lea edx, [esp + 0x64]
push esi
push edx
call fcn.10091380
add esp, 0xc
test eax, eax
je 0x100fac3d
lea eax, [esi*8]
imul eax, edi
push eax
mov eax, dword [esp + 0x14]
push eax
push eax
call fcn.100b2620
add esp, 0xc
test eax, eax
je 0x100fac3d
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
push ecx
push eax
push eax
call fcn.100c4480
add esp, 0xc
test eax, eax
je 0x100fac3d
inc edi
cmp edi, ebx
jle 0x100fa8f0
mov eax, dword [esp + 0xec]
mov edi, dword [esp + 0x30]
dec eax
push eax
push edi
call fcn.10091170
add esp, 8
test eax, eax
je 0x100fac3d
push edi
mov edi, dword [esp + 0x5c]
push edi
call fcn.10091270
add esp, 8
test eax, eax
je 0x100fac3d
mov edx, dword [esp + 0x2c]
push edx
push edi
push edi
call fcn.100c4480
add esp, 0xc
test eax, eax
je 0x100fac3d
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
push eax
push ecx
call fcn.100b24c0
add esp, 8
test eax, eax
je 0x100fac3d
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x44]
push ebp
push edx
push edi
push eax
push 0
call fcn.100d8690
add esp, 0x14
test eax, eax
je 0x100fac3d
call fcn.10090580
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
push eax
push ecx
push edx
call fcn.100c43c0
add esp, 0xc
test eax, eax
je 0x100fac3d
mov eax, dword [esp + 0x10]
push eax
push edi
mov edi, dword [esp + 0x58]
push edi
call fcn.100c43c0
add esp, 0xc
test eax, eax
je 0x100fac3d
mov ecx, dword [esp + 0x2c]
push ecx
push edi
call fcn.10090750
add esp, 8
test eax, eax
js 0x100faa77
mov edx, dword [esp + 0x14]
push edx
push 1
push ebp
push 0x40
push edi
call fcn.100d90a0
add esp, 0x14
test eax, eax
jg 0x100faa90
jne 0x100fac3d
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x28], eax
cmp eax, 0x1000
jl 0x100fa8b7
jmp 0x100fa720
mov eax, dword [esp + 0x14]
push 1
push 2
push eax
call fcn.100d8b90
add esp, 0xc
test eax, eax
je 0x100fac3d
call fcn.10090580
mov ebx, dword [esp + 0x2c]
push eax
push edi
push ebx
call fcn.100c43c0
add esp, 0xc
test eax, eax
je 0x100fac3d
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
push ebp
push ecx
push ebx
push 0
push edx
call fcn.100d8690
add esp, 0x14
test eax, eax
je 0x100fac3d
push 2
push ebx
call fcn.10091340
add esp, 8
test eax, eax
je 0x100fac3d
mov eax, dword [esp + 0x24]
push ebp
push edi
push eax
call fcn.100d2260
add esp, 0xc
test eax, eax
je 0x100fac3d
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x20]
push ecx
push ebp
push edi
push edx
push ebx
push eax
call fcn.100d41c0
add esp, 0x18
test eax, eax
je 0x100fac3d
nop
mov ecx, dword [esp + 0x20]
push ecx
call fcn.10090b80
add esp, 4
test eax, eax
je 0x100fab80
call fcn.10090580
push eax
push ebx
push ebx
call fcn.100c4480
add esp, 0xc
test eax, eax
je 0x100fac3d
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
inc dword [esp + 0x34]
push edx
push ebp
push edi
push eax
push ebx
push ecx
call fcn.100d41c0
add esp, 0x18
test eax, eax
jne 0x100fab30
jmp 0x100fac3d
mov edx, dword [esp + 0x14]
push 1
push 3
push edx
call fcn.100d8b90
add esp, 0xc
test eax, eax
je 0x100fac3d
mov ebx, dword [esp + 0x5c]
mov eax, dword [ebx + 8]
push eax
mov dword [esp + 0x3c], 1
lea esp, [esp]
call fcn.10090e20
mov ecx, dword [ebx + 0xc]
push ecx
call fcn.10090e20
mov edx, dword [ebx + 0x10]
push edx
call fcn.10090e20
push edi
call fcn.10091570
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x2c]
push eax
call fcn.10091570
mov ecx, dword [esp + 0x34]
push ecx
mov dword [ebx + 0xc], eax
call fcn.10091570
add esp, 0x18
cmp dword [ebx + 8], 0
mov dword [ebx + 0x10], eax
je 0x100fabfd
cmp dword [ebx + 0xc], 0
je 0x100fabfd
test eax, eax
jne 0x100fac07
mov dword [esp + 0x38], 0
jmp 0x100fac3d
mov eax, dword [esp + 0x48]
test eax, eax
je 0x100fac15
mov edx, dword [esp + 0x28]
mov dword [eax], edx
mov eax, dword [esp + 0x54]
test eax, eax
je 0x100fac23
mov ecx, dword [esp + 0x34]
mov dword [eax], ecx
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x100fac3d
push esi
lea edx, [esp + 0xa4]
push edx
push eax
call fcn.1011fc70
add esp, 0xc
push ebp
call fcn.100c2a90
mov edi, dword [esp + 0x28]
add esp, 4
push ebp
call fcn.100c2a00
push edi
call fcn.100d2210
mov eax, dword [esp + 0x40]
add esp, 8
mov ecx, dword [esp + 0xe0]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1011bab4
add esp, 0xd4
ret