Function at 0x540590
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x24
push ebp
mov ebp, dword [esp + 0x34]
push esi
mov esi, ecx
test ebp, ebp
jne 0x5405a9
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14
push ebx
mov ebx, dword [esp + 0x38]
test ebx, ebx
jne 0x5405cd
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx]
mov edx, dword [eax + 0x14]
push str.NULL_passed_to_CBC_decryptor
call edx
pop ebx
pop esi
xor al, al
pop ebp
add esp, 0x24
ret 0x14
mov ecx, dword [esi + 0x80]
cmp ecx, 1
ja 0x5405fb
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
mov eax, dword [esi]
push ecx
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [eax + 0x1c]
push ebp
push ebx
push ecx
mov ecx, esi
call edx
pop ebx
pop esi
pop ebp
add esp, 0x24
ret 0x14
xor edx, edx
mov eax, ebp
div ecx
test edx, edx
je 0x540620
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx]
mov edx, dword [eax + 0x14]
push str.CBC_decrypt_input_not_a_multiple_of_the_cipher_block_size.
call edx
pop ebx
pop esi
xor al, al
pop ebp
add esp, 0x24
ret 0x14
mov cl, byte [0x643062]
mov byte [esp + 0x3c], cl
mov ecx, dword [esp + 0x40]
push edi
mov dword [esp + 0x3c], eax
call fcn.0051d090
mov edi, eax
add ebp, edi
mov dword [esp + 0x10], ebp
add ebp, 0x20
push ebp
mov ebp, dword [esp + 0x48]
mov ecx, ebp
call fcn.0044b660
test al, al
jne 0x54066f
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
mov eax, dword [edx + 0x14]
push str.Unable_to_allocate_CBC_decrypt_output_buffer.
call eax
pop edi
pop ebx
pop esi
xor al, al
pop ebp
add esp, 0x24
ret 0x14
push edi
mov ecx, ebp
call fcn.00446fb0
cmp byte [esp + 0x40], 0
mov edi, eax
je 0x5407c1
mov edx, dword [esi + 0x80]
mov ecx, dword [esp + 0x38]
push edx
lea eax, [esp + 0x28]
add ecx, 8
push ebx
push eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x44], ebx
call fcn.00554d40
mov edx, dword [esi]
mov edx, dword [edx + 0x14]
add esp, 0xc
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, esi
call edx
xor ebp, ebp
cmp dword [esi + 0x80], ebp
jbe 0x5406f9
mov edx, dword [esp + 0x40]
lea eax, [esp + 0x14]
sub edx, eax
mov ecx, edi
mov dword [esp + 0x48], edx
sub ecx, eax
jmp 0x5406e4
mov edx, dword [esp + 0x48]
lea eax, [esp + ebp + 0x14]
mov dl, byte [edx + eax]
xor dl, byte [eax]
inc ebp
mov byte [ecx + eax], dl
cmp ebp, dword [esi + 0x80]
jb 0x5406e0
mov eax, dword [esi + 0x80]
add ebx, eax
sub dword [esp + 0x3c], 1
lea ebp, [eax + edi]
mov dword [esp + 0x48], ebp
je 0x540784
nop
push eax
lea eax, [esp + 0x28]
push ebx
push eax
call fcn.00554d40
mov edx, dword [esi]
mov edx, dword [edx + 0x14]
add esp, 0xc
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, esi
call edx
mov eax, dword [esi + 0x80]
xor ecx, ecx
test eax, eax
jbe 0x540767
mov edi, dword [esp + 0x38]
lea eax, [esp + 0x14]
mov edx, eax
sub edi, eax
sub ebp, edx
lea esp, [esp]
lea eax, [esp + ecx + 0x14]
mov dl, byte [edi + eax]
xor dl, byte [eax]
inc ecx
mov byte [eax + ebp], dl
mov eax, dword [esi + 0x80]
cmp ecx, eax
jb 0x540750
mov ecx, dword [esi + 0x80]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x38], ebx
add ebp, ecx
add ebx, ecx
sub dword [esp + 0x3c], 1
mov dword [esp + 0x48], ebp
jne 0x540710
xor ecx, ecx
cmp dword [esi + 0x80], ecx
jbe 0x5407a7
mov eax, dword [esp + 0x40]
mov edi, dword [esp + 0x38]
sub edi, eax
mov dl, byte [edi + eax]
mov byte [eax], dl
inc ecx
inc eax
cmp ecx, dword [esi + 0x80]
jb 0x540798
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
push eax
call fcn.004471d0
pop edi
pop ebx
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14
mov eax, dword [esi + 0x80]
cmp eax, 0x10
jne 0x540890
mov edx, dword [esi]
mov edx, dword [edx + 0x14]
lea eax, [esp + 0x14]
push eax
push ebx
mov ecx, esi
call edx
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
xor ecx, dword [esp + 0x14]
xor edx, dword [esp + 0x18]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0x14]
xor ecx, dword [esp + 0x1c]
xor edx, dword [esp + 0x20]
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
add edi, 0x10
sub dword [esp + 0x3c], 1
lea ebp, [ebx + 0x10]
je 0x54085f
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
lea ecx, [esp + 0x14]
push ecx
push ebp
mov ecx, esi
call edx
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
xor eax, dword [esp + 0x14]
xor ecx, dword [esp + 0x18]
mov dword [edi], eax
mov dword [edi + 4], ecx
mov edx, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
xor edx, dword [esp + 0x1c]
xor eax, dword [esp + 0x20]
mov dword [edi + 8], edx
mov dword [edi + 0xc], eax
mov ebx, ebp
add edi, 0x10
add ebp, 0x10
sub dword [esp + 0x3c], 1
jne 0x540817
mov eax, dword [esp + 0x38]
mov ecx, dword [ebx]
mov dword [eax + 8], ecx
mov edx, dword [ebx + 4]
mov dword [eax + 0xc], edx
mov ecx, dword [ebx + 8]
mov dword [eax + 0x10], ecx
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x44]
mov dword [eax + 0x14], edx
mov eax, dword [esp + 0x10]
push eax
call fcn.004471d0
pop edi
pop ebx
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14
cmp eax, 8
jne 0x54091d
mov edx, dword [esi]
mov edx, dword [edx + 0x14]
lea eax, [esp + 0x14]
push eax
push ebx
mov ecx, esi
call edx
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
xor ecx, dword [esp + 0x14]
xor edx, dword [esp + 0x18]
mov dword [edi], ecx
mov dword [edi + 4], edx
add edi, 8
sub dword [esp + 0x3c], 1
lea ebp, [ebx + 8]
je 0x540904
lea esp, [esp]
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
lea ecx, [esp + 0x14]
push ecx
push ebp
mov ecx, esi
call edx
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
xor eax, dword [esp + 0x14]
xor ecx, dword [esp + 0x18]
mov dword [edi], eax
mov dword [edi + 4], ecx
mov ebx, ebp
add edi, 8
add ebp, 8
sub dword [esp + 0x3c], 1
jne 0x5408d0
mov eax, dword [esp + 0x38]
mov edx, dword [ebx]
mov dword [eax + 8], edx
mov ecx, dword [ebx + 4]
mov edx, dword [esp + 0x10]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x44]
push edx
call fcn.004471d0
pop edi
pop ebx
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14