Function at 0x10007132
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1005a46e
call fcn.1004c758
sub esp, 0x310
mov eax, dword [ebp + 0x3c]
push ebx
push esi
push edi
and dword [eax], 0
cmp dword [ebp + 0xc], 5
mov eax, dword [ebp + 0x2c]
jne 0x100073de
mov esi, dword [ebp + 0x18]
test eax, eax
je 0x100072af
mov edi, dword [eax]
cmp edi, 0x7f
jle 0x1000716d
push 0x7f
pop edi
push edi
push dword [eax + 4]
lea eax, [ebp - 0xc8]
push eax
call fcn.1004ccc0
mov ebx, dword [ebp + 0x14]
lea eax, [ebp + edi - 0xc8]
push 8
mov dword [ebp + 0x10], eax
mov ecx, dword [ebx + 4]
add ecx, 0x20
push ecx
push eax
call fcn.1004ccc0
push 0x30
lea eax, [ebp + edi - 0xc0]
push dword [esi + 4]
mov dword [ebp + 0xc], eax
push eax
call fcn.1004ccc0
lea ecx, [ebp - 0xc8]
lea eax, [edi + 0x38]
push ecx
mov dword [ebp + 0x14], eax
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.100090f7
mov eax, dword [ebx + 4]
push 0x20
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.1004d090
add esp, 0x3c
test eax, eax
jne 0x100072af
mov eax, dword [ebp + 0x2c]
push edi
push dword [eax + 4]
lea eax, [ebp - 0xc8]
push eax
call fcn.1004ccc0
mov eax, dword [ebx + 4]
push 8
add eax, 0x28
push eax
push dword [ebp + 0x10]
call fcn.1004ccc0
push 0x30
push dword [esi + 4]
push dword [ebp + 0xc]
call fcn.1004ccc0
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0xc8]
push dword [ebp + 0x14]
push eax
call fcn.100090f7
lea eax, [ebp - 0xc8]
push 0x20
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.10008336
xor eax, eax
lea edi, [ebp - 0x11c]
stosd dword es:[edi], eax
mov esi, dword [ebp + 0x1c]
push 0
stosd dword es:[edi], eax
push dword [esi + 4]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp - 0x21c]
push eax
call fcn.100083db
mov edi, dword [ebp + 0x34]
add esp, 0x48
lea eax, [ebp - 0x10c]
push 0x10
push eax
push edi
call fcn.1004ccc0
mov eax, dword [esi + 4]
push 0
add eax, 0x10
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.100083db
lea eax, [ebp - 0x10c]
push 0x10
add edi, 0x10
push eax
push edi
call fcn.1004ccc0
mov eax, dword [ebp + 0x3c]
xor esi, esi
add esp, 0x24
inc esi
mov dword [eax], esi
mov eax, esi
jmp 0x10007603
mov ebx, dword [ebp + 0x30]
test ebx, ebx
je 0x100073d7
mov edi, dword [ebx]
cmp edi, 0x7f
jle 0x100072c4
push 0x7f
pop edi
push edi
lea eax, [ebp - 0xc8]
push dword [ebx + 4]
push eax
call fcn.1004ccc0
mov ecx, dword [esi + 4]
lea eax, [ebp + edi - 0xc8]
add ecx, 0x20
push 8
push ecx
push eax
mov dword [ebp + 0x10], eax
call fcn.1004ccc0
lea ecx, [ebp - 0xc8]
lea eax, [edi + 8]
push ecx
mov dword [ebp + 0xc], eax
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.100090f7
mov eax, dword [esi + 4]
push 0x20
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.1004d090
add esp, 0x30
test eax, eax
jne 0x100073d7
push edi
lea eax, [ebp - 0xc8]
push dword [ebx + 4]
push eax
call fcn.1004ccc0
mov eax, dword [esi + 4]
push 8
add eax, 0x28
push eax
push dword [ebp + 0x10]
call fcn.1004ccc0
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0xc8]
push dword [ebp + 0xc]
push eax
call fcn.100090f7
lea eax, [ebp - 0xc8]
push 0x20
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.10008336
xor eax, eax
lea edi, [ebp - 0x11c]
stosd dword es:[edi], eax
mov esi, dword [ebp + 0x20]
push 0
stosd dword es:[edi], eax
push dword [esi + 4]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp - 0x21c]
push eax
call fcn.100083db
mov edi, dword [ebp + 0x34]
lea eax, [ebp - 0x10c]
push 0x10
push eax
push edi
call fcn.1004ccc0
mov eax, dword [esi + 4]
add esp, 0x48
add eax, 0x10
push 0
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.100083db
lea eax, [ebp - 0x10c]
push 0x10
add edi, 0x10
push eax
push edi
call fcn.1004ccc0
xor eax, eax
add esp, 0x18
inc eax
jmp 0x10007603
xor eax, eax
jmp 0x10007603
mov ebx, dword [ebp + 0x14]
test eax, eax
je 0x100075df
mov esi, dword [eax]
mov eax, dword [eax + 4]
push 0x20
pop edi
cmp esi, edi
jge 0x1000741f
push esi
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.1004ccc0
mov eax, edi
sub eax, esi
push eax
lea eax, [ebp + esi - 0xc8]
push 0x10071a88
push eax
call fcn.1004ccc0
add esp, 0x18
jmp 0x10007430
push edi
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.1004ccc0
add esp, 0xc
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0xc8]
push edi
push eax
call fcn.10008531
add esp, 0xc
cmp dword [ebp + 0xc], 3
jne 0x1000746c
push 0x32
pop esi
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0xc8]
push dword [ebp + 0x10]
push eax
call fcn.10008531
add esp, 0xc
dec esi
jne 0x10007450
cmp dword [ebp + 0xc], 2
jne 0x100074ca
lea eax, [ebp - 0x31c]
push eax
lea eax, [ebp - 0xc8]
push dword [ebp + 0x10]
push eax
call fcn.10007cd8
and byte [ebp - 0xe], 0
and byte [ebp - 0xd], 0
add esp, 0xc
xor esi, esi
mov eax, dword [ebx + 4]
mov al, byte [esi + eax]
mov byte [ebp + 0x2c], al
push dword [ebp + 0x2c]
lea eax, [ebp - 0xe]
push eax
lea eax, [ebp - 0xd]
push eax
lea eax, [ebp - 0x31c]
push eax
call fcn.10007d44
add esp, 0x10
mov byte [ebp + esi - 0xe8], al
inc esi
cmp esi, 0x20
jl 0x10007495
jmp 0x10007557
mov eax, dword [ebx + 4]
push edi
push eax
lea eax, [ebp - 0xe8]
push eax
call fcn.1004ccc0
add esp, 0xc
mov dword [ebp + 0x2c], 0x13
xor edi, edi
xor eax, eax
cmp dword [ebp + 0x10], edi
jle 0x10007505
mov cl, byte [ebp + eax - 0xc8]
xor cl, byte [ebp + 0x2c]
inc eax
cmp eax, dword [ebp + 0x10]
mov byte [ebp + eax - 0xf9], cl
jl 0x100074ee
lea eax, [ebp - 0x31c]
push eax
lea eax, [ebp - 0xf8]
push dword [ebp + 0x10]
push eax
call fcn.10007cd8
and byte [ebp - 0xe], 0
add esp, 0xc
and byte [ebp - 0xd], 0
lea esi, [ebp + edi - 0xe8]
mov al, byte [esi]
push eax
lea eax, [ebp - 0xe]
push eax
lea eax, [ebp - 0xd]
push eax
lea eax, [ebp - 0x31c]
push eax
call fcn.10007d44
add esp, 0x10
inc edi
cmp edi, 0x20
mov byte [esi], al
jl 0x10007526
dec dword [ebp + 0x2c]
jns 0x100074e5
mov ebx, dword [ebp + 0x14]
push 8
call fcn.1004c374
pop ecx
mov dword [ebp + 0x2c], eax
and dword [ebp - 4], 0
test eax, eax
je 0x1000757e
lea ecx, [ebp - 0xe8]
push 0x20
push ecx
mov ecx, eax
call fcn.10027165
mov edi, eax
jmp 0x10007580
xor edi, edi
push dword [ebp + 0x38]
or dword [ebp - 4], 0xffffffff
push dword [ebp + 0x34]
push edi
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x18]
push ebx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10007612
add esp, 0x28
test eax, eax
je 0x100075cd
mov eax, dword [ebp + 0x3c]
xor esi, esi
inc esi
test edi, edi
mov dword [eax], esi
je 0x100072a8
mov ecx, edi
call fcn.1002724b
push edi
call fcn.1004c2e2
pop ecx
jmp 0x100072a8
test edi, edi
je 0x100075df
mov ecx, edi
call fcn.1002724b
push edi
call fcn.1004c2e2
pop ecx
push dword [ebp + 0x38]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x18]
push ebx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10007612
add esp, 0x28
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret