Function at 0x406f6e
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
mov esi, dword [ebp]
add byte [ebx - 0x7cee74f2], cl
xor eax, dword [eax]
jg 0x444bb9
xor al, byte [eax]
add al, al
jne 0x4b4bcc
cmp dword [ecx], 0x7fffffff
mov eax, dword [eax]
add byte [esp + ecx*2 + 0x220003dc], al
add byte [edx + edx*8 + 0x1c70875], al
add dword [eax], eax
add byte [eax], al
mov eax, dword [esi]
mov ecx, dword [ebp - 0x1d]
add cl, cl
je 0x406fe6
mov dword [eax + 0x210], 0
jle 0x406fdb
add byte [ebp + 0x10], dl
mov eax, dword [esi]
lea edx, [edx + 4]
add byte [eax], al
mov edi, dword [eax - 0x3fffdf0]
add bh, bh
inc eax
jge 0x406fe1
mov dword [eax + edi*4], ebx
mov eax, dword [esi]
push es
call [eax + eax]
add al, byte [eax]
add byte [ebx + 0x7501e9], al
sub ecx, 1
jne 0x406fe6
add byte [esi], cl
mov ebx, dword [ecx + 8]
test dword [edi + 0xf18400], ecx
add byte [eax], al
mov edi, dword [ecx]
cmp edi, dword [ecx + 0xe810]
jne 0x4070e4
add byte [eax], al
test edi, edi
jle 0x407034
lea ecx, [eax + eax - 0x7d]
mov eax, 0x104
add byte [eax], al
add cl, cl
cmp dword [eax + 0x104], 0
add byte [eax], al
leave
add byte [eax], al
add byte [ebx + 0x100e9], cl
add byte [ebx], bh
xor byte [ebx - 0x72ffff8b], cl
mov eax, 0xf7000000
add al, al
add al, 0x3b
xlatb
jl 0x40700e
xor eax, dword [eax]
add byte [ebp + 0x10], dl
test edi, edi
jle 0x406fda
add byte [ecx + 0x110], al
mov dword [ebp], eax
add byte [esi], al
lea ebx, [ebx + 0x590000]
cmp dword [eax - 0x104], 0xea
jne 0x4070d4
mov eax, 0x2000d441
imul ebx
sar edx, 7
mov eax, dword [eax]
add bl, ch
pop ds
add ebx, edx
mov ebp, ebp
add byte [ebx + 0x8b1055], cl
imul eax, dword [eax]
add al, dl
mov eax, dword [ebp + 8]
or dword [ecx], 0
mov dword [ebp + 0x10], edx
mov dword [ebp + 8], eax
add dword [eax], 0
jne 0x40704e
test edx, edx
js 0x4070eb
add byte [ecx + 4], al
lea ebx, [edx*4]
mov ecx, dword [ebx + eax]
test ecx, ecx
pop ds
add byte [ebp - 0x25], cl
add eax, dword [eax]
push 0x10
call fcn.004170a9
add esp, 4
js 0x4070ae
mov ecx, edi
push dword [ebp + 0xc]
mov dword [edi], 0
call fcn.00412a9e
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
mov dword [eax], eax
add byte [ebx + 0x4418b0e], cl
ja 0x4070ce
add ebx, dword [edi + 0x5e]
pop ebx
pop ebp
ret
mov eax, dword [eax]
add byte [ebp + 8], bl
cdq
idiv dword [ebx - 0xffa0]
mov ebx, eax
jmp 0x40706b
xor eax, dword [eax]
add bh, ah
push ebp
mov ebp, esp
xor dword [eax + 0x64ec8300], 0x53
mov ebx, dword [ebp + 8]
add byte [eax], al
dec esp
and al, 0x24
push edi
mov ebp, dword [ecx - 0x74cf7500]
into
call fcn.004073ce
mov eax, dword [esi + 8]
mov eax, dword [eax]
test byte [eax], al
and al, 0x10
mov eax, dword [ebx + 4]
mov esi, dword [eax]
add byte [eax], al
call fcn.004073ce
rol byte [eax], cl
or byte [ebx + 0x438b0478], cl
add al, 0
add byte [ebx + ecx*4], al
into
call fcn.004128ce
mov eax, dword [esi + 8]
mov eax, dword [eax]
mov dword [eax], eax
add byte [eax], ah
mov eax, dword [ebx + 4]
mov edi, dword [ebp - 0x17317500]
mov dword [edx], eax
add byte [eax], al
add byte [eax], al
or byte [ebp + 0xe40244c], cl
add byte [eax + 4], dh
mov dword [esp + 0x20], esi
call 0x3f7159
mov edx, dword [ebp + 8]
cmp al, byte [eax]
xor eax, eax
mov dword [esp + 0x30], ebx
mov al, byte [eax]
add byte [eax - 0x7cf0dbb4], cl
rol byte [eax], cl
add ecx, dword [edi]
or byte [esi + 0x3da], 0
add al, 0x8b
dec eax
or al, ch
insb byte es:[edi], dx
add byte [eax], al
add byte [ebx + 0x40c033d0], cl
add byte [eax], al
and al, 0x30
test dl, 2
push es
add byte [edx - 0x26], ch
add eax, dword [eax]
mov cl, al
and eax, dword [eax]
add byte [esp + 0xf], cl
mov dword [esp + esi], edx
test esi, esi
je 0x444c0a
add dl, al
sub eax, ebx
je 0x437292
sub eax, 1
jne 0x4371b9
mov dword [esp + 0x23], ebx
add bh, bh
jle 0x407226
mov esi, dword [esp + 0x10]
add byte [eax], al
and al, 0x20
mov ecx, esi
push edi
lcall 1, 0xdbe81000
add byte [ebx + 0x24540000], cl
xor byte [ecx - 0x7b], bl
dec esi
add byte [eax + esi*4 - 0x74ffffff], al
inc esp
add byte [eax], al
mov ecx, edx
sub ecx, esi
shr dword [ebp + 0x7c89f900], 1
and al, 0x34
sub edi, eax
add byte [eax], al
cwde
add dword [eax], eax
add byte [eax + 0x15], dl
add byte [esp], ah
push edx
call fcn.004262ac
add ah, al
or al, 0x85
ror byte [edi], 0x88
add dl, bl
add eax, dword [eax]
mov eax, dword [esp + 0x1c]
add byte [eax], al
and al, 0x14
lea ecx, [eax + eax]
rol byte [eax], cl
and al, 0x2c
add esi, ecx
test edi, edi
jg 0x407226
add byte [ebp + 8], bh
mov eax, dword [edi + 4]
add byte ds:[ebx + 0x199e8ce], cl
add byte [eax], al
add byte [eax], al
or byte [ebx - 0x16bb7700], cl
add byte [ebx + 0x308b0447], cl
mov ecx, esi
add byte [eax], al
add dword [eax], eax
add byte [ebx + 0x74005146], cl
and al, 0x14
mov edi, dword [eax + 4]
mov eax, dword [eax]
add al, ch
dec ebp
invalid
lea ebx, [ebx + 4]
inc esi
add al, ch
movsb byte es:[edi], byte [esi]
add byte [eax], al
add byte [ebx - 0x11ffff11], al
mov ecx, dword [esi]
xor ebx, ebx
rol byte [eax], cl
adc byte [edx], al
add byte [eax], al
mov dword [ecx + 0xc], eax
mov eax, dword [esi]
mov dword [eax + 1], 0
mov edx, dword [esi]
cmp dword [edx], ebx
jle 0x437221
mov edi, 0xa4
mov eax, dword [edi + edx + 0x104]
mov dword [edi + edx], eax
mov ecx, dword [esi]
inc edx
add byte [edi], cl
imul eax, dword [ecx + 8]
mov dword [ecx], eax
add byte [esi], dl
cmp dword [edx + 8], 0x1000900
jg 0x4752d1
add byte [eax], al
mov dword [ebx + edi], 0x110c9a
add byte [edi + ecx*8 - 0x75], bh
inc edx
or byte [ebx], dh
add byte [eax], al
add al, 0
mov eax, dword [edx + 8]
xor eax, dword [eax]
add byte [eax + eax], al
add byte [eax], al
not dword [ecx]
add byte [eax + 0xbd9f7c1], dl
enter 0x51, 0
xchg ebx, eax
add dword [eax], eax
mov ecx, dword [esi]
mov ah, 0
add al, 0x89
inc ecx
add al, 0x33
ror byte [ebx + 0x8410000], 0x7e
adc eax, 0x8b00b58d
dec ecx
add al, 0xc7
add al, 0x81
add byte [eax], al
add byte [eax], al
inc eax
mov ecx, dword [esi]
cmp ebx, ebp
add byte [esi + ebp*8 - 0x50], bh
add dword [edi + 0x5e], ebx
pop ebx
add byte [eax], al
push ebp
mov ebp, esp
mov edx, dword [ecx]
add al, byte [eax]
mov dl, 0x10
add al, byte [eax]
add byte [ebx + 0x190000fe], al
mov eax, dword [ebp + 8]
mov dword [esi], ebp
adc byte [ecx], al
add byte [eax], al
mov eax, dword [ecx]
inc dword [eax]
add byte [edx], al
add byte [eax], al
mov al, 1
push ebx
add dl, al
add al, 0
xor al, al
jmp 0x43728c
shr bl, 0xf7
outsb dx, byte [esi]
out dx, eax
retf
pop ecx
invalid
invalid
xchg edx, eax
invalid
invalid