Function at 0x5bb290
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x24
push ebp
mov ebp, dword [esp + 0x34]
test ebp, ebp
push esi
mov esi, ecx
jne 0x5bb2a9
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14
push ebx
mov ebx, dword [esp + 0x38]
test ebx, ebx
jne 0x5bb2cd
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 0x5bb2fb
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 0x5bb320
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 [0x7950a8]
mov byte [esp + 0x3c], cl
mov ecx, dword [esp + 0x40]
push edi
mov dword [esp + 0x3c], eax
call fcn.00544a30
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.0046c5f0
test al, al
jne 0x5bb36f
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.00467dd0
cmp byte [esp + 0x40], 0
mov edi, eax
je 0x5bb4cd
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.00630200
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 0x5bb3fb
mov edx, dword [esp + 0x40]
lea eax, [esp + 0x14]
sub edx, eax
mov ecx, edi
mov dword [esp + 0x48], edx
sub ecx, eax
jmp 0x5bb3e4
mov edx, dword [esp + 0x48]
lea eax, [esp + ebp + 0x14]
mov dl, byte [edx + eax]
xor dl, byte [eax]
add ebp, 1
mov byte [ecx + eax], dl
cmp ebp, dword [esi + 0x80]
jb 0x5bb3e0
mov eax, dword [esi + 0x80]
add ebx, eax
sub dword [esp + 0x3c], 1
lea ebp, [eax + edi]
mov dword [esp + 0x48], ebp
je 0x5bb486
push eax
lea eax, [esp + 0x28]
push ebx
push eax
call fcn.00630200
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 0x5bb469
mov edi, dword [esp + 0x38]
lea eax, [esp + 0x14]
mov edx, eax
sub edi, eax
sub ebp, edx
lea ecx, [ecx]
lea eax, [esp + ecx + 0x14]
mov dl, byte [edi + eax]
xor dl, byte [eax]
add ecx, 1
mov byte [eax + ebp], dl
mov eax, dword [esi + 0x80]
cmp ecx, eax
jb 0x5bb450
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 0x5bb411
xor ecx, ecx
cmp dword [esi + 0x80], ecx
jbe 0x5bb4b3
mov eax, dword [esp + 0x40]
mov edi, dword [esp + 0x38]
sub edi, eax
lea ebx, [ebx]
mov dl, byte [edi + eax]
mov byte [eax], dl
add ecx, 1
add eax, 1
cmp ecx, dword [esi + 0x80]
jb 0x5bb4a0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
push eax
call fcn.00467ff0
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 0x5bb59c
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 0x5bb56b
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 0x5bb523
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.00467ff0
pop edi
pop ebx
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14
cmp eax, 8
jne 0x5bb62d
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 0x5bb614
jmp 0x5bb5e0
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 0x5bb5e0
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.00467ff0
pop edi
pop ebx
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14