Function at 0x4070d0
Capabilities:
Encode data using xor

Disassembly:
mov dword [esi + 4], edx
mov dword [ebx + 0x24], esi
mov eax, dword [ebp + 0xc]
add edi, 0x2d
mov ebx, esi
mov dword [eax], ebx
mov dl, 0x3c
or al, 0x83
cmp al, 0xf
add byte [edi], cl
xor bh, bh
invalid
and al, 0x8b
inc ebp
or al, 0x83
invalid
push ebp
mov eax, dword [ecx + eax*4 + 0x254ec]
add byte [ecx + 0x4d], bh
or al, 0xf6
dec edi
xor ebp, edx
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
push 0x548bf445
adc byte [edi - 0x77], dl
jne 0x4070db
sbb eax, 0xf5cb8900
test al, al
xchg edx, eax
jne 0x4070ad
rcl byte [edx + 0x7596b475], 0xe
xchg esi, eax
jne 0x40710a
xor dword [ebp + 0x38], 0x3fdc088d
test byte [edx - 0x74fffff6], ch
pop ebp
pop esi
cmp al, 0x25
je 0x40714b
mov eax, dword [ebp - 0x3b]
test eax, eax
je 0x407143
fiadd word [ebp - 0x24]
jb 0x4070f5
mov edi, dword [ebp + 0xc]
jge 0x407122
pop es
call dword [ebp + 0x73]
sbb ebp, 4
test ebx, ecx
jne 0x407bee
push ebp
jae 0x4070a8
fld qword [eax*4 - 0x407af035]
or al, byte [eax]
add byte [ebx + 0x762044f], cl
mov ecx, dword [edi + 4]
bound eax, qword [edi]
mov dword [esi], edx
mov ah, 0x8b
push ebp
adc byte [edx], ch
mov dword [ebp - 0x35], eax
into
or cl, byte [eax + 0x2a7affb1]
jp 0x40716f
in al, dx
jmp 0x40f09f
mov esi, esp
adc byte [ebx + 0x40c1740d], cl
add dl, dh
add dword [eax], eax
add byte [eax], al
xor edx, edx
inc edi
cmp dword [ecx], eax
mov dword [edi - 0x44], esp
mov dword [ebp - 0x40], eax
mov dword [ebp + 0x15], esi
push ebp
les ecx, [ecx + 0x45c6d455]
push edx
and ecx, dword [eax + 0x7d26fb55]
adc byte [esi + 0x12], bh
mov dl, byte [edi]
imul eax, dword [edx], 0x6815ff52
bound eax, qword [eax]
jmp 0xd2737a4d
inc eax
or ebp, edi
je 0x407c33
add bl, bh
js 0x407c37
add byte [ebx - 0x42ffbf8a], dh
arpl word [eax], si
add byte [ebx + 0x407a], cl
xor al, 0x84
or al, 0xc
aas
or al, 0xc
or al, 0xc
or al, 0xc6
mov ecx, 0x3984d0c
or al, 0xc
or al, 0xc
or al, 0xec
in eax, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
add dword [ebx + 0xc], eax
or al, 0xc
mov ah, 0xc
or al, 0xc
or al, 0xc
mov esi, dword [esi + 0xc]
or al, 0x8b
jbe 0x407c43
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0x2a
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0x35
add bh, byte [edi + 3]
or al, 0xc
xchg esp, eax
or al, 0xd3
mov ebp, 0xc0ce40c
xchg esi, eax
or al, 0x8e
adc byte [esp + ecx], cl
add al, 0xc
dec eax
or al, 0xc
or al, 0xc
or al, 0xc
imul ecx, dword [eax - 0x2fdfd8b], 0x49
push es
and al, 0xc
or al, 0xc
pop ds
or byte [ecx], cl
or al, 0xc
sahf
or al, 0x86
or al, 0xc
add al, 0x8d
dec ecx
add byte [edx - 0x76ff35a6], ah
jns 0x407cc7
add byte [esi], ah
jp 0x407ccb
add byte [ecx + edi*2 - 0x28], al
add cl, bl
rol byte [eax], 0xa2
jns 0x407cd7
dec esp
pop ds
mov bl, 0x40
add byte [edx - 0x20ffc687], ch
sbb dword [ebx], ecx
add byte [eax], al
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or al, 8
or byte [eax], cl
mov ecx, dword [eax]
or byte es:[eax], cl
pop esp
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [ebx], bl
or byte [esi], bl
or byte [eax + ecx], dl
or byte [eax], cl
cmp eax, 0x2c7e088c
mov word [eax], cs
jle 0x407cf7
or byte [eax], cl
lea ebx, [edx]
or byte [eax], cl
or byte [eax], cl
das
or byte [edx + 0x8080890], ah
or byte [eax], cl
sub al, 8
or byte [eax], cl
or byte [eax], cl
or byte [eax + ecx], ch
or byte [esi - 0x1c], ch
or byte [eax], cl
or byte [eax], cl
add dword [edx], eax
or byte [eax], cl
or byte [edx], al
or bl, cl
add ecx, dword [eax]
mov al, byte [0xce530808]
or byte [eax], cl
or byte [esp + eax + 0x8080808], dh
mov ah, 4
or byte [eax], cl
or byte [eax], cl
or bh, dl
or byte [ecx + ebx + 0x80808a2], cl
or byte [edi + 0x82b0808], ch
or byte [eax], cl
or byte [eax], cl
or byte [0x80608ae], al
or byte [eax], cl
sub edx, dword [eax - 0x2fb06f70]
nop
nop