Function at 0x10037e00
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x24
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
push ebx
push ebp
push esi
mov esi, dword [ecx + 4]
mov ebx, dword [ecx + 0xc]
add esi, 0x20
push edi
mov edi, dword [eax + 0xc]
mov eax, dword [eax + 4]
sar esi, 5
mov dword [esp + 0x20], edi
mov dword [esp + 0x2c], ebx
lea ebp, [eax + 0x20]
mov dword [esp + 0x30], esi
sar ebp, 5
lea ecx, [eax + 1]
mov dword [esp + 0x1c], ebp
and ecx, 0x8000001f
jns 0x10037e47
dec ecx
or ecx, 0xffffffe0
inc ecx
mov eax, 0xffffffff
jne 0x10037e52
or edx, eax
jmp 0x10037e58
mov edx, eax
shl edx, cl
not edx
mov ecx, dword [esp + 0x3c]
and dword [edi + ebp*4 - 4], edx
mov ecx, dword [ecx + 4]
inc ecx
and ecx, 0x8000001f
jns 0x10037e71
dec ecx
or ecx, 0xffffffe0
inc ecx
jne 0x10037e78
or eax, 0xffffffff
jmp 0x10037e7c
shl eax, cl
not eax
mov ecx, dword [esp + 0x40]
lea edi, [esi + ebp]
and dword [ebx + esi*4 - 4], eax
shl edi, 5
mov eax, dword [ecx]
cmp edi, eax
jl 0x10037f01
mov ecx, dword [ecx + 0xc]
test ecx, ecx
je 0x10037ebb
add eax, 0x1f
sar eax, 5
shl eax, 2
push eax
push 0
push ecx
call fcn.100506f0
mov eax, dword [esp + 0x4c]
push dword [eax + 0xc]
push dword [eax + 0x14]
call fcn.10050630
add esp, 0x14
mov eax, dword [esp + 0x40]
add edi, 0x20
sar edi, 5
lea ebp, [edi*4]
push ebp
push dword [eax + 0x14]
call fcn.10050640
mov ecx, dword [esp + 0x48]
add esp, 8
mov dword [ecx + 0xc], eax
test eax, eax
jne 0x10037ef0
pop edi
pop esi
pop ebp
mov eax, 0x3e9
pop ebx
add esp, 0x24
ret
mov dword [eax + ebp - 4], 0
mov ebp, dword [esp + 0x1c]
shl edi, 5
mov dword [ecx], edi
mov edi, dword [ecx + 0xc]
lea eax, [esi + ebp]
shl eax, 2
push eax
push 0
push edi
mov dword [esp + 0x24], edi
call fcn.100506f0
add esp, 0xc
test ebp, ebp
jle 0x10037fe9
mov eax, dword [esp + 0x20]
lea edx, [edi + esi*4]
sub eax, edi
mov dword [esp + 0x10], edx
mov dword [esp + 0x20], eax
mov eax, dword [eax + edi]
mov dword [esp + 0x24], eax
test al, 1
je 0x10037f58
xor edx, edx
test esi, esi
jle 0x10037f54
mov ecx, edi
mov eax, dword [ebx + edx*4]
lea ecx, [ecx + 4]
xor dword [ecx - 4], eax
inc edx
cmp edx, esi
jl 0x10037f46
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x24]
mov ecx, 1
mov eax, 2
mov dword [esp + 0x14], ecx
mov dword [esp + 0x28], eax
lea ebp, [ecx + 0x1e]
test ebx, eax
je 0x10037fb5
xor ebx, ebx
xor edi, edi
test esi, esi
jle 0x10037faf
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
lea eax, [eax + 4]
mov edx, dword [edx + edi*4]
mov esi, edx
shl esi, cl
inc edi
or esi, ebx
mov ecx, ebp
xor dword [eax - 4], esi
mov ebx, edx
mov esi, dword [esp + 0x30]
shr ebx, cl
mov ecx, dword [esp + 0x14]
cmp edi, esi
jl 0x10037f81
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
xor dword [edx], ebx
mov ebx, dword [esp + 0x24]
inc ecx
rol eax, 1
dec ebp
mov dword [esp + 0x14], ecx
mov dword [esp + 0x28], eax
test ebp, ebp
jg 0x10037f71
mov edi, dword [esp + 0x18]
add edx, 4
mov ebx, dword [esp + 0x2c]
add edi, 4
dec dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], edx
jne 0x10037f33
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 4]
add ecx, dword [edx + 4]
push ecx
call fcn.10038300
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret