Function at 0x1005d177
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
mov esi, dword [ebp + 8]
test dword [esi + 0x14], 0x800
push edi
je 0x1005d18f
mov esi, dword [esi + 0x20]
push esi
call sym.mono.dll_mono_method_signature
mov edi, eax
movzx ebx, word [edi + 4]
add ebx, 4
mov eax, ebx
shl eax, 2
push eax
call fcn.10112f0b
mov dword [ebp - 4], eax
mov dword [ebp + 8], eax
mov eax, dword [esi + 8]
test byte [eax + 0x60], 0x20
pop ecx
pop ecx
jne 0x1005d1f9
mov al, byte [eax + 0x92]
cmp al, 0x13
je 0x1005d1f9
cmp al, 0x1e
je 0x1005d1f9
push dword [esi + 0x10]
mov eax, dword [esi + 8]
push dword [eax + 0x34]
push dword [eax + 0x38]
push str.mono_method_get_imt_slot:__s._s._s_is_not_an_interface_MonoMethod_n
call fcn.10115e89
push 0x420
push str...monometadataobject.c
push str._Assertion:_should_not_be_reached_at__s:_d_n
push 4
push 0
call fcn.100010d9
add esp, 0x24
mov eax, dword [esi + 8]
push dword [eax + 0x34]
call fcn.10002334
mov ecx, dword [ebp - 4]
mov dword [ecx], eax
mov eax, dword [esi + 8]
push dword [eax + 0x38]
call fcn.10002334
mov ecx, dword [ebp - 4]
mov dword [ecx + 4], eax
push dword [esi + 0x10]
call fcn.10002334
mov esi, dword [ebp - 4]
mov dword [esi + 8], eax
push dword [edi + 0xc]
call sym.mono.dll_mono_metadata_type_hash
and dword [ebp - 8], 0
mov dword [esi + 0xc], eax
xor eax, eax
add esp, 0x10
cmp ax, word [edi + 4]
jae 0x1005d26c
mov eax, edi
add esi, 0x10
sub eax, dword [ebp - 4]
mov dword [ebp - 0xc], eax
jmp 0x1005d252
mov eax, dword [ebp - 0xc]
push dword [eax + esi]
call sym.mono.dll_mono_metadata_type_hash
inc dword [ebp - 8]
mov dword [esi], eax
movzx eax, word [edi + 4]
add esi, 4
pop ecx
cmp dword [ebp - 8], eax
jl 0x1005d24f
lea esi, [ebx*4 - 0x21524111]
mov ecx, esi
mov dword [ebp - 8], esi
cmp ebx, 3
jle 0x1005d2ec
xor edx, edx
push 3
lea eax, [ebx - 4]
pop edi
div edi
inc eax
mov dword [ebp - 0xc], eax
imul eax, eax, 0xfffffffd
add ebx, eax
mov eax, dword [ebp + 8]
add ecx, dword [eax + 4]
add esi, dword [eax + 8]
mov eax, dword [eax]
sub eax, esi
add eax, dword [ebp - 8]
mov edx, esi
rol edx, 4
xor edx, eax
add esi, ecx
sub ecx, edx
mov edi, edx
rol edi, 6
xor edi, ecx
add edx, esi
add dword [ebp + 8], 0xc
sub esi, edi
mov eax, edi
rol eax, 8
xor eax, esi
add edi, edx
sub edx, eax
mov ecx, eax
rol ecx, 0x10
xor edx, ecx
add eax, edi
mov ecx, edx
sub edi, edx
ror ecx, 0xd
xor ecx, edi
add edx, eax
mov esi, ecx
sub eax, ecx
rol esi, 4
xor esi, eax
add ecx, edx
dec dword [ebp - 0xc]
mov dword [ebp - 8], edx
jne 0x1005d290
dec ebx
je 0x1005d301
dec ebx
je 0x1005d2fb
dec ebx
jne 0x1005d34e
mov eax, dword [ebp + 8]
add esi, dword [eax + 8]
mov eax, dword [ebp + 8]
add ecx, dword [eax + 4]
mov eax, esi
xor eax, ecx
mov edx, ecx
rol edx, 0xe
sub eax, edx
mov edx, dword [ebp + 8]
mov edx, dword [edx]
add edx, dword [ebp - 8]
mov esi, eax
rol esi, 0xb
xor edx, eax
sub edx, esi
xor ecx, edx
mov esi, edx
ror esi, 7
sub ecx, esi
xor eax, ecx
mov esi, ecx
rol esi, 0x10
sub eax, esi
mov edi, eax
mov esi, eax
xor esi, edx
rol edi, 4
sub esi, edi
mov edx, esi
rol edx, 0xe
xor ecx, esi
sub ecx, edx
mov edx, ecx
ror edx, 8
xor eax, ecx
sub eax, edx
mov esi, eax
push dword [ebp - 4]
call fcn.10112f9f
pop ecx
push 0x13
pop ecx
mov eax, esi
xor edx, edx
div ecx
pop edi
pop esi
pop ebx
mov eax, edx
leave
ret