Function at 0x4dcb70
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 0x14]
sub esp, 0x24
push ebx
mov ebx, dword [esp + 0x30]
test ebx, ebx
push ebp
push esi
mov esi, dword [edx + 4]
push edi
jne 0x4dcc48
xor eax, eax
cmp esi, 4
jl 0x4dcc04
mov ebx, dword [esp + 0x40]
mov edi, esi
imul edi, dword [esp + 0x44]
lea ebp, [esi - 3]
lea ecx, [edx + 0x38]
lea edi, [edi + ebx + 1]
mov bl, byte [edi + eax - 1]
xor bl, 0x80
movsx ebx, bl
mov dword [esp + 0x3c], ebx
add eax, 4
add ecx, 0x20
fild dword [esp + 0x3c]
fstp qword [ecx - 0x28]
mov bl, byte [edi + eax - 4]
xor bl, 0x80
movsx ebx, bl
mov dword [esp + 0x3c], ebx
fild dword [esp + 0x3c]
fstp qword [ecx - 0x20]
mov bl, byte [edi + eax - 3]
xor bl, 0x80
movsx ebx, bl
mov dword [esp + 0x3c], ebx
fild dword [esp + 0x3c]
fstp qword [ecx - 0x18]
mov bl, byte [edi + eax - 2]
xor bl, 0x80
cmp eax, ebp
movsx ebx, bl
mov dword [esp + 0x3c], ebx
fild dword [esp + 0x3c]
fstp qword [ecx - 0x10]
jl 0x4dcba6
cmp eax, esi
jge 0x4dcc3c
mov edi, dword [esp + 0x40]
lea ecx, [edx + eax*8 + 0x30]
mov edx, esi
imul edx, dword [esp + 0x44]
add edi, edx
lea esp, [esp]
mov dl, byte [edi + eax]
xor dl, 0x80
movsx edx, dl
mov dword [esp + 0x44], edx
inc eax
fild dword [esp + 0x44]
add ecx, 8
cmp eax, esi
fstp qword [ecx - 8]
jl 0x4dcc20
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x24
ret 0x14
mov eax, dword [esp + 0x44]
cmp eax, ebx
lea ecx, [eax - 1]
mov dword [esp + 0x20], ecx
jle 0x4dcd69
test esi, esi
mov dword [esp + 0x14], eax
jle 0x4dcfcc
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x40]
sub edi, edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x1c], esi
jmp 0x4dcc87
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x38]
add edi, edx
xor eax, eax
test ecx, ecx
mov ebp, edx
jle 0x4dccf3
mov dword [esp + 0x24], ecx
sub eax, ebx
jns 0x4dcce2
mov ecx, dword [esp + 0x44]
movsx ebx, byte [edi]
add eax, ecx
mov dword [esp + 0x40], eax
movsx eax, byte [edi + esi]
xor ebx, 0xffffff80
xor eax, 0xffffff80
sub eax, ebx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x14]
imul dword [esp + 0x40]
idiv ecx
mov dword [esp + 0x48], eax
mov cl, byte [esp + 0x48]
mov eax, dword [esp + 0x40]
add cl, bl
mov ebx, dword [esp + 0x3c]
xor cl, 0x80
mov byte [ebp], cl
mov ecx, dword [esp + 0x20]
add ebp, esi
mov edx, dword [esp + 0x24]
add edi, esi
dec edx
mov dword [esp + 0x24], edx
jne 0x4dcc95
mov edx, dword [esp + 0x38]
mov eax, ebp
sub eax, edx
xor edx, edx
div esi
cmp eax, ebx
mov dword [esp + 0x40], eax
jge 0x4dcd4c
lea ecx, [esi + esi]
mov eax, edi
sub eax, ecx
mov edx, edi
sub edx, esi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
mov ecx, ebx
mov dword [esp + 0x24], edx
sub ecx, eax
jmp 0x4dcd24
mov edx, dword [esp + 0x24]
mov dl, byte [edx]
mov al, byte [edi]
xor dl, 0x80
xor al, 0x80
sub al, dl
mov dl, 3
imul dl
mov edx, dword [esp + 0x48]
mov dl, byte [edx]
xor dl, 0x80
add al, dl
xor al, 0x80
mov byte [ebp], al
add ebp, esi
dec ecx
jne 0x4dcd20
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x1c]
inc edx
dec eax
mov dword [esp + 0x38], edx
mov dword [esp + 0x1c], eax
jne 0x4dcc7f
jmp 0x4dcfcc
test eax, eax
jg 0x4dce34
test esi, esi
jle 0x4dcfd2
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x38]
add edx, 0x30
sub ebp, edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], edx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x48], esi
jmp 0x4dcda0
mov ebp, dword [esp + 0x1c]
lea esp, [esp]
mov eax, dword [esp + 0x40]
fld qword [eax]
add ebp, edi
call fcn.005c4484
movsx ecx, byte [edi]
mov edx, eax
xor ecx, 0xffffff80
xor eax, eax
test ebx, ebx
mov dword [esp + 0x38], edx
jle 0x4dce09
lea edi, [ebx + 1]
sub ecx, edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x2c], ecx
jmp 0x4dcdd2
mov ecx, dword [esp + 0x2c]
lea edi, [eax + 1]
mov dword [esp + 0x28], edi
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
imul dword [esp + 0x28]
idiv ecx
mov dword [esp + 0x44], eax
mov cl, byte [esp + 0x44]
add cl, byte [esp + 0x38]
xor cl, 0x80
mov byte [ebp], cl
mov eax, edi
add ebp, esi
cmp eax, ebx
jl 0x4dcdce
mov edi, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x48]
add edx, 8
inc edi
dec eax
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x48], eax
jne 0x4dcd98
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x24
ret 0x14
test esi, esi
mov dword [esp + 0x14], ebx
jle 0x4dcfcc
mov eax, dword [esp + 0x48]
imul ecx, esi
mov edx, dword [esp + 0x40]
lea edi, [ebx - 1]
imul edi, esi
add eax, 0x30
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x38]
add ecx, edx
sub eax, edx
mov dword [esp + 0x30], edi
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], esi
jmp 0x4dce80
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x1c]
mov edi, edi
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x48]
fld qword [edx]
mov ebp, dword [esp + 0x18]
add eax, ecx
mov dword [esp + 0x28], eax
add edi, eax
call fcn.005c4484
mov dword [esp + 0x38], eax
mov eax, ebp
mov cl, byte [eax]
xor cl, 0x80
movsx edx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x40], edx
fild dword [esp + 0x40]
mov dword [esp + 0x40], ebx
fstp qword [ecx]
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jbe 0x4dcf3f
mov eax, ebp
sub eax, esi
mov dword [esp + 0x24], eax
jmp 0x4dced0
movsx ebx, byte [eax]
movsx edx, byte [ebp]
xor ebx, 0xffffff80
xor edx, 0xffffff80
sub edx, ebx
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
imul dword [esp + 0x40]
idiv ecx
mov dword [esp + 0x20], eax
add bl, byte [esp + 0x20]
mov eax, dword [esp + 0x28]
xor bl, 0x80
mov byte [edi], bl
sub edi, esi
cmp edi, eax
jb 0x4dcf1e
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
sub ecx, eax
mov dword [esp + 0x40], ecx
js 0x4dcf25
mov eax, dword [esp + 0x24]
jmp 0x4dced0
mov ecx, dword [esp + 0x10]
lea ebp, [ecx + esi]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x10]
sub ebp, esi
add ecx, edx
cmp ebp, eax
mov dword [esp + 0x40], ecx
ja 0x4dcec3
mov ebx, edx
mov edx, dword [esp + 0x28]
mov eax, edi
sub eax, edx
xor edx, edx
div esi
movsx ecx, byte [ebp]
xor ecx, 0xffffff80
inc eax
test eax, eax
jle 0x4dcfa0
mov ebp, ecx
sub ebp, dword [esp + 0x38]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ebp
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
imul dword [esp + 0x40]
idiv ecx
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x38]
mov dl, byte [esp + 0x24]
mov ecx, dword [esp + 0x44]
add al, dl
mov edx, dword [esp + 0x40]
xor al, 0x80
mov byte [edi], al
mov eax, dword [esp + 0x28]
sub edx, ecx
sub edi, esi
dec eax
mov dword [esp + 0x40], edx
mov dword [esp + 0x28], eax
jne 0x4dcf61
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
add edi, 8
inc edx
inc ecx
dec eax
mov dword [esp + 0x48], edi
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], eax
jne 0x4dce76
inc dword [0x623620]
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x24
ret 0x14