Function at 0x744840a6
Capabilities:
Encode data using xor

Disassembly:
push ebx
xor edx, edx
xor ecx, ecx
push esi
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
push edi
mov edi, eax
mov ebx, dword [esp + 0x14]
push ebp
mov cl, byte [esi + 0x100]
mov ebp, ebx
mov dl, byte [esi + 0x101]
test ebx, ebx
je 0x744841b7
shr ebx, 2
and eax, 3
test ebx, ebx
je 0x74486dde
test eax, eax
jne 0x74486dde
mov eax, edi
lea edi, [edi + ebx*4]
mov dword [esp + 0x1c], edi
sub eax, 4
mov ebp, ebx
mov edi, dword [eax + 4]
inc ecx
xor eax, eax
and ecx, 0xff
mov al, byte [esi + ecx]
add edx, eax
and edx, 0xff
mov bl, byte [esi + edx]
mov byte [esi + ecx], bl
inc ecx
mov byte [esi + edx], al
add al, bl
mov al, byte [esi + eax]
xor edi, eax
and ecx, 0xff
xor eax, eax
mov al, byte [esi + ecx]
add edx, eax
and edx, 0xff
mov bl, byte [esi + edx]
mov byte [esi + ecx], bl
inc ecx
mov byte [esi + edx], al
add al, bl
mov al, byte [esi + eax]
shl eax, 8
xor edi, eax
and ecx, 0xff
xor eax, eax
mov al, byte [esi + ecx]
add edx, eax
and edx, 0xff
mov bl, byte [esi + edx]
mov byte [esi + ecx], bl
inc ecx
mov byte [esi + edx], al
add al, bl
mov al, byte [esi + eax]
shl eax, 0x10
xor edi, eax
and ecx, 0xff
xor eax, eax
mov al, byte [esi + ecx]
add edx, eax
and edx, 0xff
mov bl, byte [esi + edx]
mov byte [esi + ecx], bl
mov byte [esi + edx], al
add al, bl
mov al, byte [esi + eax]
shl eax, 0x18
lea ebx, [ebp*4]
xor edi, eax
mov eax, dword [esp + 0x1c]
sub eax, ebx
mov dword [eax], edi
dec ebp
jne 0x744840f6
mov ebp, dword [esp + 0x18]
and ebp, 3
test ebp, ebp
jne 0x74486ddb
pop ebp
pop edi
lea eax, [esi + 0x100]
pop esi
mov byte [eax], cl
pop ebx
mov byte [eax + 1], dl
ret 0xc
add byte [eax], al
add byte [eax], al
and byte [eax + 0x76773b], cl
and byte [eax], al
add byte [eax], ah
add byte [eax], al
add byte [eax + 0x3b], bh
add byte [eax], ah
mov byte [ebx], bh
ja 0x74486e5a
add byte [eax], ah
add byte [eax], al
and byte [eax], al
add byte [eax], al
js 0x74486e29
ja 0x74486e66
add byte [eax], al
add byte [eax], al
add byte [eax], al
adc byte [eax + 0x3b], bl
ja 0x74486e72
add byte [eax], al
inc eax
add byte [ebx + edi + 0x77], al
jbe 0x74486e09
add byte [ecx], al
add byte [eax], al
add byte [eax + 0x773b1c00], al
jbe 0x74486e15
add byte [edx], al
add byte [eax], al
add byte [eax], al
inc eax
invalid
cmp dh, byte [edi + 0x76]
add byte [eax], al
or byte [eax], al
add al, byte [eax]
add byte [eax], al
les edi, [edx]
ja 0x74486eae
add byte [eax], al
adc byte [eax], al
add byte [ecx], al
add byte [eax], al
cwde
cmp dh, byte [edi + 0x76]
add byte [eax], al
and byte [eax], al
add byte [eax + eax], al
add byte [edx + edi + 0x7677], al
inc eax
add byte [eax], al
add byte [ecx], al
add byte [eax + 0x3a], ah
ja 0x74486ed2
add byte [eax], al
add byte [eax], 0
add byte [eax], al
add dword [edx + edi + 0x77], ecx
jbe 0x74486e69
ja 0x74486ede
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [eax + 0x276773c], bl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add dword [eax], eax
add byte [eax], al
add dword [eax], eax
add byte [eax], al
cwde
cmp al, 0x77
jbe 0x74486e87
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add byte [esp + edi + 0x47677], al
add byte [eax], al
and byte [eax], al
add byte [eax], al
js 0x74486ed5
ja 0x74486f12
or byte [eax], al
add byte [eax], al
inc eax
add byte [eax], al
add byte [eax + 0x3c], dh
ja 0x74486f1e
adc byte [eax], al
add byte [eax], al
add byte [eax], 0
add byte [eax + 0x3c], cl
ja 0x74486f2a
add byte [eax], al
dec eax
cmp al, 0x77
jbe 0x74486ed5
and byte [eax], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
cwde
cmp dh, byte [edi + 0x76]
inc eax
add byte [eax], al
add byte [eax], al
add dword [eax], eax
add byte [eax + 0x4076773a], bl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add al, 0x20
cmp dh, byte [edi + 0x76]
add byte [eax], 0
add byte [eax], al
add byte [eax], al
or ah, bh
add byte [eax], cl
cld
cmp dword [edi + 0x76], esi
add byte [ecx], al
add byte [eax], al
add byte [eax], al
add byte [eax], dl
pop eax
cmp esi, dword [edi + 0x76]
add byte [edx], al
add byte [eax], al
add byte [eax], al
add byte [eax], ah
mov byte [ebx], bh
cmp esi, dword [edi + 0x76]
add byte [eax], al
test byte [edi + esi*2], bh
jbe 0x74486f35
add byte [eax], al
add byte [eax + 0x48000000], al
cmp al, 0x77
jbe 0x74486f45
add byte [eax], al
add byte [eax], al
add byte [eax], al
add dword [eax], eax
add al, ah
cmp dword [edi + 0x76], esi