Function at 0x10038940
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 4], edx
mov ecx, dword [ebp + 8]
mov esi, edx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
lea eax, [ecx - 1]
mov ebx, eax
mov dword [ebp - 0x10], eax
sar ebx, 1
cmp edx, ebx
jge 0x100389eb
nop dword [eax + eax]
add esi, esi
lea ecx, [esi + 2]
lea eax, [ecx*8]
sub eax, ecx
lea edx, [edi + eax*4]
lea eax, [edx - 0x1c]
push eax
call fcn.10038880
movzx eax, al
add esp, 4
xor eax, 1
inc eax
add esi, eax
mov eax, dword [ebp - 4]
mov dword [ebp - 4], esi
lea ecx, [eax*8]
sub ecx, eax
lea edx, [esi*8]
sub edx, esi
mov eax, dword [edi + edx*4]
mov dword [edi + ecx*4], eax
mov eax, dword [edi + edx*4 + 4]
mov dword [edi + ecx*4 + 4], eax
mov eax, dword [edi + edx*4 + 8]
mov dword [edi + ecx*4 + 8], eax
mov eax, dword [edi + edx*4 + 0xc]
mov dword [edi + ecx*4 + 0xc], eax
mov eax, dword [edi + edx*4 + 0x10]
mov dword [edi + ecx*4 + 0x10], eax
mov eax, dword [edi + edx*4 + 0x14]
mov dword [edi + ecx*4 + 0x14], eax
mov al, byte [edi + edx*4 + 0x18]
mov byte [edi + ecx*4 + 0x18], al
cmp esi, ebx
jl 0x10038970
mov ecx, dword [ebp - 0xc]
mov eax, esi
mov dword [ebp - 4], eax
cmp esi, ebx
jne 0x10038a4b
mov dword [ebp - 4], eax
test cl, 1
jne 0x10038a4b
lea edx, [ecx*8]
sub edx, ecx
lea ecx, [esi*8]
sub ecx, esi
mov eax, dword [edi + edx*4 - 0x1c]
mov dword [edi + ecx*4], eax
mov eax, dword [edi + edx*4 - 0x18]
mov dword [edi + ecx*4 + 4], eax
mov eax, dword [edi + edx*4 - 0x14]
mov dword [edi + ecx*4 + 8], eax
mov eax, dword [edi + edx*4 - 0x10]
mov dword [edi + ecx*4 + 0xc], eax
mov eax, dword [edi + edx*4 - 0xc]
mov dword [edi + ecx*4 + 0x10], eax
mov eax, dword [edi + edx*4 - 8]
mov dword [edi + ecx*4 + 0x14], eax
mov al, byte [edi + edx*4 - 4]
mov byte [edi + ecx*4 + 0x18], al
mov eax, dword [ebp - 0x10]
mov dword [ebp - 4], eax
cmp dword [ebp - 8], eax
jge 0x10038ab7
push dword [ebp + 0xc]
lea ebx, [eax - 1]
sar ebx, 1
lea eax, [ebx*8]
sub eax, ebx
lea esi, [edi + eax*4]
mov edx, esi
call fcn.10038880
add esp, 4
test al, al
mov eax, dword [ebp - 4]
je 0x10038ab7
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [esi]
mov dword [edi + ecx*4], eax
mov eax, dword [esi + 4]
mov dword [edi + ecx*4 + 4], eax
mov eax, dword [esi + 8]
mov dword [edi + ecx*4 + 8], eax
mov eax, dword [esi + 0xc]
mov dword [edi + ecx*4 + 0xc], eax
mov eax, dword [esi + 0x10]
mov dword [edi + ecx*4 + 0x10], eax
mov eax, dword [esi + 0x14]
mov dword [edi + ecx*4 + 0x14], eax
mov al, byte [esi + 0x18]
mov byte [edi + ecx*4 + 0x18], al
mov eax, ebx
mov dword [ebp - 4], eax
cmp dword [ebp - 8], ebx
jl 0x10038a50
mov edx, dword [ebp + 0xc]
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [edx]
mov dword [edi + ecx*4], eax
mov eax, dword [edx + 4]
mov dword [edi + ecx*4 + 4], eax
mov eax, dword [edx + 8]
mov dword [edi + ecx*4 + 8], eax
mov eax, dword [edx + 0xc]
mov dword [edi + ecx*4 + 0xc], eax
mov eax, dword [edx + 0x10]
mov dword [edi + ecx*4 + 0x10], eax
mov eax, dword [edx + 0x14]
mov dword [edi + ecx*4 + 0x14], eax
mov al, byte [edx + 0x18]
mov byte [edi + ecx*4 + 0x18], al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret