Function at 0x438b60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
mov eax, dword [0x44b030]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [edx]
push ebx
push esi
push edi
mov edi, ecx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x24], 1
mov esi, dword [edi]
xor eax, dword [esi]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 4]
xor eax, dword [edx + 4]
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 8]
xor eax, dword [edx + 8]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0xc]
xor eax, dword [edx + 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [edi + 4]
sub eax, esi
sar eax, 4
dec eax
cmp eax, 1
jbe 0x438d2c
lea ebx, [ebp - 0x17]
mov dword [ebp - 0x28], 0x10
lea ecx, [ebp - 0x18]
lea edi, [ebp - 0x15]
call fcn.00438580
lea ecx, [ebp - 0x18]
call fcn.004386b0
xor esi, esi
lea eax, [ebp - 0x18]
nop dword [eax]
mov ch, byte [eax + esi*4]
mov al, byte [edi + esi*4]
mov cl, ch
mov bh, byte [ebx + esi*4]
add cl, cl
mov byte [ebp - 0x19], al
mov al, cl
xor al, 0x1b
mov bl, byte [ebp + esi*4 - 0x16]
movzx edx, al
test ch, ch
movzx eax, cl
mov cl, bh
cmovns edx, eax
mov byte [ebp - 0x1a], bl
add cl, cl
mov dword [ebp - 0x20], edx
mov al, cl
mov byte [ebp - 0x1c], bh
xor al, 0x1b
movzx edi, byte [ebp - 0x1c]
movzx edx, al
test bh, bh
movzx eax, cl
mov cl, bl
cmovns edx, eax
mov byte [ebp - 0x1b], ch
add cl, cl
mov dword [ebp - 0x2c], edx
mov al, cl
xor al, 0x1b
cmp byte [ebp - 0x1a], 0
movzx ebx, al
movzx eax, cl
cmovge ebx, eax
mov cl, byte [ebp - 0x19]
add cl, cl
mov al, cl
xor al, 0x1b
cmp byte [ebp - 0x19], 0
movzx edx, al
movzx eax, cl
cmovge edx, eax
movzx eax, byte [ebp - 0x1a]
xor edi, eax
movzx eax, dl
xor edi, eax
mov eax, dword [ebp - 0x20]
movzx eax, al
xor edi, eax
movzx eax, ch
movzx ecx, byte [ebp - 0x1c]
xor edi, eax
movzx eax, dl
mov edx, dword [ebp - 0x2c]
xor ecx, eax
movzx eax, byte [ebp - 0x1b]
xor ecx, eax
shl edi, 8
movzx eax, bl
xor ecx, eax
movzx eax, byte [ebp - 0x19]
xor ecx, eax
movzx eax, dl
or edi, ecx
movzx ecx, byte [ebp - 0x1a]
xor ecx, eax
shl edi, 8
movzx eax, byte [ebp - 0x1b]
xor ecx, eax
movzx eax, bl
xor ecx, eax
movzx eax, byte [ebp - 0x19]
xor ecx, eax
movzx eax, byte [ebp - 0x1a]
or edi, ecx
movzx ecx, byte [ebp - 0x1c]
xor ecx, eax
shl edi, 8
movzx eax, dl
xor ecx, eax
mov eax, dword [ebp - 0x20]
lea ebx, [ebp - 0x17]
movzx eax, al
xor ecx, eax
movzx eax, byte [ebp - 0x19]
xor ecx, eax
lea eax, [ebp - 0x18]
or edi, ecx
mov dword [eax + esi*4], edi
inc esi
lea edi, [ebp - 0x15]
cmp esi, 4
jl 0x438be0
mov edi, dword [ebp - 0x30]
mov esi, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x24]
inc ebx
mov ecx, dword [edi]
mov dword [ebp - 0x24], ebx
mov eax, dword [ecx + esi]
xor dword [ebp - 0x18], eax
mov eax, dword [ecx + esi + 4]
xor dword [ebp - 0x14], eax
mov eax, dword [ecx + esi + 8]
xor dword [ebp - 0x10], eax
mov eax, dword [ecx + esi + 0xc]
add esi, 0x10
xor dword [ebp - 0xc], eax
mov eax, dword [edi + 4]
sub eax, ecx
mov dword [ebp - 0x28], esi
sar eax, 4
dec eax
cmp ebx, eax
lea ebx, [ebp - 0x17]
jb 0x438bc5
mov ebx, dword [ebp - 0x34]
lea ecx, [ebp - 0x18]
call fcn.00438580
lea ecx, [ebp - 0x18]
call fcn.004386b0
mov edi, dword [edi + 4]
mov ecx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
xor ecx, dword [edi - 8]
xor esi, dword [edi - 0x10]
xor edx, dword [edi - 0xc]
mov eax, dword [ebp - 0xc]
xor eax, dword [edi - 4]
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 8]
pop edi
mov dword [ebx], esi
xor ecx, ebp
pop esi
mov dword [ebx + 4], edx
mov dword [ebx + 0xc], eax
pop ebx
call fcn.0043f92b
mov esp, ebp
pop ebp
ret