Function at 0x80d480
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov eax, dword [edx + 0x2c]
mov dword [esp], ecx
mov dword [esp + 4], edx
add eax, dword [edx + 0x20]
je 0x80d7af
mov eax, dword [esp]
mov esi, dword [esp + 4]
mov edx, 0x48
mov ecx, dword [eax + 8]
mov dword [esp + 0xc], ecx
push dword [esi + 0x14]
push dword [esi + 0x10]
push 0
call fcn.007c5800
add esp, 0xc
cmp dword [esi + 0x2c], 0
jle 0x80d7af
mov eax, dword [esp + 4]
mov edi, 0x77d180
mov esi, 0x77d180
xor ebx, ebx
xor esi, 2
or edi, 2
mov ebp, dword [eax + 0x28]
cmp dword [ebp + 0xc], 0
js 0x80d79e
mov eax, dword [ebp]
mov edx, dword [eax + 0x14]
test edx, edx
je 0x80d4fd
cmp dword [edx], 1
je 0x80d774
mov ecx, edi
xor eax, eax
movzx edx, byte [0xbb28f7]
add ecx, esi
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x80d75a
mov al, byte [0xbb28f7]
mov edx, edi
xor ecx, ecx
add edx, esi
sete cl
mov edx, ecx
xor edx, 1
lea ecx, [edx + ecx*2]
mov dl, 1
or cl, 4
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb28f7], dl
jne 0x80d528
mov edx, edi
xor ecx, ecx
movzx eax, al
add edx, esi
sete cl
mov edx, ecx
xor edx, 1
lea ecx, [edx + ecx*2]
or cl, 4
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x80d598
mov ecx, edi
xor eax, eax
movzx edx, byte [0xbb28f7]
add ecx, esi
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
or al, 4
movzx eax, al
bt edx, eax
jae 0x80d571
jmp 0x80d75a
mov ecx, edi
xor eax, eax
movzx edx, byte [0xbb28f7]
add ecx, esi
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x80d739
mov ecx, edi
xor eax, eax
add ecx, esi
sete al
mov ecx, eax
xor ecx, 0x317d1661
lea ecx, [ecx + eax*2 + 0x121c]
mov eax, dword [str.9a.e]
mov dword [esp + 8], ecx
xor eax, ecx
mov dword [str.9a.e], eax
not eax
mov edx, dword [0xbb28c4]
imul eax, ecx
lea ecx, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb28c4], edx
or ecx, eax
not edx
mov eax, dword [0xbb28c8]
imul edx, ecx
lea ecx, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb28c8], eax
or ecx, edx
not eax
imul eax, ecx
mov ecx, dword [0xbb28cc]
lea edx, [eax*8]
xor ecx, eax
shr eax, 0x1c
mov dword [0xbb28cc], ecx
or edx, eax
not ecx
mov eax, dword [0xbb28d0]
imul ecx, edx
mov edx, ecx
shl edx, 4
xor eax, ecx
shr ecx, 0x1b
mov dword [0xbb28d0], eax
or ecx, edx
not eax
imul eax, ecx
mov ecx, dword [0xbb28d4]
mov edx, eax
shl edx, 5
xor ecx, eax
shr eax, 0x1a
mov dword [0xbb28d4], ecx
or eax, edx
not ecx
imul ecx, eax
mov eax, dword [0xbb28d8]
mov edx, ecx
shl edx, 6
xor eax, ecx
shr ecx, 0x19
mov dword [0xbb28d8], eax
or ecx, edx
not eax
imul eax, ecx
mov ecx, dword [0xbb28dc]
mov edx, eax
shl edx, 7
xor ecx, eax
shr eax, 0x18
mov dword [0xbb28dc], ecx
or eax, edx
not ecx
imul ecx, eax
mov eax, dword [0xbb28e0]
mov edx, ecx
shl edx, 8
xor eax, ecx
shr ecx, 0x17
mov dword [0xbb28e0], eax
or ecx, edx
not eax
imul eax, ecx
mov ecx, dword [0xbb28e4]
mov edx, eax
shl edx, 9
xor ecx, eax
shr eax, 0x16
mov dword [0xbb28e4], ecx
or eax, edx
not ecx
imul ecx, eax
mov eax, dword [0xbb28e8]
mov edx, ecx
shl edx, 0xa
xor eax, ecx
shr ecx, 0x15
mov dword [0xbb28e8], eax
or ecx, edx
not eax
imul eax, ecx
mov ecx, dword [0xbb28ec]
mov edx, eax
shl edx, 0xb
xor ecx, eax
shr eax, 0x14
mov dword [0xbb28ec], ecx
or eax, edx
not ecx
imul ecx, eax
mov al, 1
xor dword [0xbb28f0], ecx
mov ecx, dword [esp + 8]
and cl, 7
shl al, cl
or byte [0xbb28f7], al
mov ecx, edi
xor eax, eax
add ecx, esi
sete al
mov ecx, eax
xor ecx, 1
lea ecx, [ecx + eax*2]
mov al, 0xfe
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb28f7], al
push str.9a.e
push dword [esp + 4]
call fcn.00782570
add esp, 8
mov dword [ebp + 0xc], 0xffffffff
jmp 0x80d79e
mov ecx, dword [esp]
push 0
push 0
call fcn.00809a50
add esp, 8
mov ecx, dword [esp + 0xc]
mov edx, 0x64
push 0xfffffffffffffff7
push eax
push 0
push 0
push dword [ebp + 0xc]
call fcn.007ebd50
add esp, 0x14
mov eax, dword [esp + 4]
inc ebx
add ebp, 0x10
cmp ebx, dword [eax + 0x2c]
jl 0x80d4e0
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret