Function at 0x5440a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x40
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x68]
test esi, esi
je 0x544310
mov edx, dword [esp + 0x64]
mov al, byte [edx]
and eax, 0xff
mov edi, eax
shl edi, 0x18
xor eax, eax
mov al, byte [edx + 1]
shl eax, 0x10
or edi, eax
xor eax, eax
mov al, byte [edx + 3]
or edi, eax
xor eax, eax
mov al, byte [edx + 2]
shl eax, 8
or edi, eax
xor ecx, ecx
mov cl, byte [edx + 4]
shl ecx, 0x18
xor eax, eax
mov al, byte [edx + 5]
shl eax, 0x10
or ecx, eax
xor eax, eax
mov al, byte [edx + 7]
or ecx, eax
xor eax, eax
mov al, byte [edx + 6]
shl eax, 8
or ecx, eax
mov eax, dword [esp + 0x5c]
sub eax, 8
js 0x54467f
shr eax, 3
mov dword [esp + 0x28], eax
lea esi, [eax*8 + 8]
mov dword [esp + 0x2c], esi
add esi, ebx
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x58]
lea ebp, [esp + 0x38]
mov dword [esp + 0x18], ebp
mov dword [esp + 8], edi
mov edi, ecx
lea esi, [esi]
xor edx, edx
mov dl, byte [ebx]
shl edx, 0x18
xor eax, eax
mov al, byte [ebx + 1]
shl eax, 0x10
or edx, eax
xor eax, eax
mov al, byte [ebx + 3]
or edx, eax
xor eax, eax
mov al, byte [ebx + 2]
shl eax, 8
or edx, eax
xor eax, eax
mov al, byte [ebx + 4]
shl eax, 0x18
mov cl, byte [ebx + 5]
and ecx, 0xff
mov ebp, ecx
shl ebp, 0x10
or eax, ebp
mov cl, byte [ebx + 7]
and ecx, 0xff
or eax, ecx
mov cl, byte [ebx + 6]
and ecx, 0xff
mov ebp, ecx
shl ebp, 8
or eax, ebp
add ebx, 8
xor edx, dword [esp + 8]
mov dword [esp + 0x38], edx
xor eax, edi
mov dword [esp + 0x3c], eax
mov edi, dword [esp + 0x60]
mov dword [esp + 4], edi
mov ebp, dword [esp + 0x18]
mov dword [esp], ebp
call fcn.005437f0
mov eax, dword [esp + 0x38]
mov dword [esp + 8], eax
mov edi, dword [esp + 0x3c]
shr eax, 0x18
mov byte [esi], al
mov eax, dword [esp + 8]
shr eax, 0x10
mov byte [esi + 1], al
mov eax, dword [esp + 8]
shr eax, 8
mov byte [esi + 2], al
mov dl, byte [esp + 8]
mov byte [esi + 3], dl
mov eax, edi
shr eax, 0x18
mov byte [esi + 4], al
mov eax, edi
shr eax, 0x10
mov byte [esi + 5], al
mov eax, edi
shr eax, 8
mov byte [esi + 6], al
mov ecx, edi
mov byte [esi + 7], cl
add esi, 8
cmp dword [esp + 0x14], ebx
jne 0x544140
mov eax, edi
mov edi, dword [esp + 8]
mov ecx, eax
mov ebx, dword [esp + 0x2c]
add dword [esp + 0x58], ebx
mov eax, dword [esp + 0x28]
neg eax
mov esi, dword [esp + 0x5c]
lea eax, [esi + eax*8 - 0x10]
cmp eax, 0xfffffff8
je 0x544650
lea edx, [eax + 8]
mov eax, dword [esp + 0x14]
add eax, edx
cmp edx, 7
jbe switch.0x00544570
xor esi, esi
xor edx, edx
lea esi, [esi]
xor edi, edx
mov dword [esp + 0x38], edi
xor ecx, esi
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 4], ecx
lea eax, [esp + 0x38]
mov dword [esp], eax
call fcn.005437f0
mov edx, dword [esp + 0x38]
mov ecx, edx
shr ecx, 0x18
mov byte [esp + 0x14], cl
mov ebx, dword [esp + 0x58]
mov byte [ebx], cl
mov ecx, edx
shr ecx, 0x10
mov byte [esp + 0x18], cl
mov byte [ebx + 1], cl
mov ecx, edx
shr ecx, 8
mov byte [esp + 0x28], cl
mov byte [ebx + 2], cl
mov edi, edx
mov byte [ebx + 3], dl
mov edx, dword [esp + 0x3c]
shr edx, 0x18
mov esi, edx
mov byte [ebx + 4], dl
mov edx, dword [esp + 0x3c]
shr edx, 0x10
mov bl, dl
mov ebp, dword [esp + 0x58]
mov byte [ebp + 5], dl
mov eax, dword [esp + 0x3c]
shr eax, 8
mov dl, al
mov byte [ebp + 6], al
mov cl, byte [esp + 0x3c]
mov byte [ebp + 7], cl
mov al, byte [esp + 0x14]
mov ebp, dword [esp + 0x64]
mov byte [ebp], al
mov al, byte [esp + 0x18]
mov byte [ebp + 1], al
mov al, byte [esp + 0x28]
mov byte [ebp + 2], al
mov eax, edi
mov byte [ebp + 3], al
mov eax, esi
mov byte [ebp + 4], al
mov byte [ebp + 5], bl
mov byte [ebp + 6], dl
mov byte [ebp + 7], cl
add esp, 0x40
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 0x64]
xor edx, edx
mov dl, byte [ecx]
shl edx, 0x18
xor eax, eax
mov al, byte [ecx + 1]
shl eax, 0x10
or edx, eax
xor eax, eax
mov al, byte [ecx + 3]
or edx, eax
xor eax, eax
mov al, byte [ecx + 2]
shl eax, 8
or edx, eax
xor eax, eax
mov al, byte [ecx + 4]
shl eax, 0x18
mov esi, ecx
xor ecx, ecx
mov cl, byte [esi + 5]
shl ecx, 0x10
or eax, ecx
xor ecx, ecx
mov cl, byte [esi + 7]
or eax, ecx
xor ecx, ecx
mov cl, byte [esi + 6]
shl ecx, 8
or eax, ecx
mov esi, dword [esp + 0x5c]
sub esi, 8
js 0x544688
shr esi, 3
mov dword [esp + 0x28], esi
lea edi, [esi*8 + 8]
mov dword [esp + 0x2c], edi
add edi, ebx
mov dword [esp + 0x14], edi
mov ebp, dword [esp + 0x58]
lea ecx, [esp + 0x38]
mov dword [esp + 0x18], ecx
lea esi, [esi]
mov cl, byte [ebx]
and ecx, 0xff
mov edi, ecx
shl edi, 0x18
xor ecx, ecx
mov cl, byte [ebx + 1]
shl ecx, 0x10
or edi, ecx
xor ecx, ecx
mov cl, byte [ebx + 3]
or edi, ecx
xor ecx, ecx
mov cl, byte [ebx + 2]
shl ecx, 8
or edi, ecx
mov cl, byte [ebx + 4]
and ecx, 0xff
mov esi, ecx
shl esi, 0x18
xor ecx, ecx
mov cl, byte [ebx + 5]
shl ecx, 0x10
or esi, ecx
xor ecx, ecx
mov cl, byte [ebx + 7]
or esi, ecx
xor ecx, ecx
mov cl, byte [ebx + 6]
shl ecx, 8
or esi, ecx
add ebx, 8
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], esi
mov ecx, dword [esp + 0x60]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
call fcn.00543c40
mov edx, dword [esp + 0x10]
xor edx, dword [esp + 0x38]
mov eax, dword [esp + 0xc]
xor eax, dword [esp + 0x3c]
mov ecx, edx
shr ecx, 0x18
mov byte [ebp], cl
mov ecx, edx
shr ecx, 0x10
mov byte [ebp + 1], cl
mov ecx, edx
shr ecx, 8
mov byte [ebp + 2], cl
mov byte [ebp + 3], dl
mov edx, eax
shr edx, 0x18
mov byte [ebp + 4], dl
mov edx, eax
shr edx, 0x10
mov byte [ebp + 5], dl
mov edx, eax
shr edx, 8
mov byte [ebp + 6], dl
mov byte [ebp + 7], al
add ebp, 8
mov edx, edi
mov eax, esi
cmp dword [esp + 0x14], ebx
jne 0x544390
mov ebx, dword [esp + 0x2c]
add dword [esp + 0x58], ebx
mov esi, dword [esp + 0x28]
neg esi
mov edi, dword [esp + 0x5c]
lea esi, [edi + esi*8 - 0x10]
cmp esi, 0xfffffff8
je 0x544520
mov ebp, dword [esp + 0x14]
xor ebx, ebx
mov bl, byte [ebp]
shl ebx, 0x18
xor ecx, ecx
mov cl, byte [ebp + 1]
shl ecx, 0x10
or ebx, ecx
xor ecx, ecx
mov cl, byte [ebp + 3]
or ebx, ecx
xor ecx, ecx
mov cl, byte [ebp + 2]
shl ecx, 8
or ebx, ecx
mov cl, byte [ebp + 4]
and ecx, 0xff
mov ebp, ecx
shl ebp, 0x18
mov edi, dword [esp + 0x14]
xor ecx, ecx
mov cl, byte [edi + 5]
shl ecx, 0x10
or ebp, ecx
xor ecx, ecx
mov cl, byte [edi + 7]
or ebp, ecx
xor ecx, ecx
mov cl, byte [edi + 6]
shl ecx, 8
or ebp, ecx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebp
mov ecx, dword [esp + 0x60]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
call fcn.00543c40
mov edx, dword [esp + 0x10]
xor edx, dword [esp + 0x38]
mov eax, dword [esp + 0xc]
xor eax, dword [esp + 0x3c]
mov dword [esp + 0x14], eax
add esi, 8
mov ecx, dword [esp + 0x58]
add ecx, esi
cmp esi, 7
jbe switch.0x00544580
mov eax, ebp
mov edx, ebx
lea esi, [esi]
mov ecx, edx
shr ecx, 0x18
mov ebx, dword [esp + 0x64]
mov byte [ebx], cl
mov ecx, edx
shr ecx, 0x10
mov byte [ebx + 1], cl
mov ecx, edx
shr ecx, 8
mov byte [ebx + 2], cl
mov byte [ebx + 3], dl
mov edx, eax
shr edx, 0x18
mov byte [ebx + 4], dl
mov edx, eax
shr edx, 0x10
mov byte [ebx + 5], dl
mov edx, eax
shr edx, 8
mov byte [ebx + 6], dl
mov byte [ebx + 7], al
add esp, 0x40
pop ebx
pop esi
pop edi
pop ebp
ret
jmp dword [edx*4 + 0x60eb40]
jmp dword [esi*4 + 0x60eb60]
mov dl, byte [eax - 1]
and edx, 0xff
mov esi, edx
shl esi, 8
dec eax
lea ebx, [eax - 1]
xor edx, edx
mov dl, byte [eax - 1]
shl edx, 0x10
or edx, esi
lea eax, [ebx - 1]
mov bl, byte [ebx - 1]
and ebx, 0xff
mov esi, ebx
shl esi, 0x18
or esi, edx
lea edx, [eax - 1]
xor ebx, ebx
mov bl, byte [eax - 1]
lea eax, [edx - 1]
mov dl, byte [edx - 1]
and edx, 0xff
shl edx, 8
or edx, ebx
lea ebx, [eax - 1]
mov al, byte [eax - 1]
and eax, 0xff
shl eax, 0x10
or eax, edx
xor edx, edx
mov dl, byte [ebx - 1]
shl edx, 0x18
or edx, eax
jmp 0x544250
mov esi, dword [esp + 0x14]
shr esi, 8
mov eax, esi
mov byte [ecx - 1], al
dec ecx
lea esi, [ecx - 1]
mov edi, dword [esp + 0x14]
shr edi, 0x10
mov eax, edi
mov byte [ecx - 1], al
lea ecx, [esi - 1]
mov eax, dword [esp + 0x14]
shr eax, 0x18
mov byte [esi - 1], al
lea edi, [ecx - 1]
mov byte [ecx - 1], dl
lea ecx, [edi - 1]
mov esi, edx
shr esi, 8
mov eax, esi
mov byte [edi - 1], al
lea edi, [ecx - 1]
mov esi, edx
shr esi, 0x10
mov eax, esi
mov byte [ecx - 1], al
shr edx, 0x18
mov byte [edi - 1], dl
mov eax, ebp
mov edx, ebx
jmp 0x544520
mov eax, edi
shr eax, 0x18
mov byte [esp + 0x14], al
mov edx, edi
shr edx, 0x10
mov byte [esp + 0x18], dl
mov ebx, edi
shr ebx, 8
mov byte [esp + 0x28], bl
mov esi, ecx
shr esi, 0x18
mov ebx, ecx
shr ebx, 0x10
mov edx, ecx
shr edx, 8
jmp 0x5442d3
mov dword [esp + 0x14], ebx
jmp 0x54422e
mov dword [esp + 0x14], ebx
jmp 0x544475
mov ebx, eax
xor esi, esi
xor eax, eax
jmp 0x5445df
xor esi, esi
jmp 0x544596
xor esi, esi
xor edx, edx
jmp 0x5445cf
mov edx, eax
xor esi, esi
xor ebx, ebx
jmp 0x5445be
xor esi, esi
jmp 0x5445b6
mov ebx, eax
xor edx, edx
jmp 0x5445a3
mov esi, ecx
jmp 0x54460a
mov edi, ecx
jmp 0x54461d
mov edi, ecx
jmp 0x544637