Function at 0x10173f90
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 0x10173fa9
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14
push ebx
mov ebx, dword [esp + 0x38]
test ebx, ebx
jne 0x10173fcd
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 0x10173ffb
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
push edi
test edx, edx
je 0x10174044
mov edi, dword [esp + 0x48]
mov eax, dword [edi]
mov edx, dword [eax + 0x14]
push str.CBC_decrypt_input_not_a_multiple_of_the_cipher_block_size.
mov ecx, edi
call edx
push ebp
push str.inputLen
mov ecx, edi
call fcn.10061310
mov eax, dword [esi + 0x80]
push eax
push str.cipherBlockSize
mov ecx, edi
call fcn.10061310
pop edi
pop ebx
pop esi
xor al, al
pop ebp
add esp, 0x24
ret 0x14
mov cl, byte [0x1026e91c]
mov byte [esp + 0x40], cl
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x3c], eax
call fcn.100f6330
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.1001cc40
test al, al
jne 0x10174092
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.10018050
cmp byte [esp + 0x40], 0
mov edi, eax
je 0x101741ed
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 sub.MSVCR80.dll_memcpy
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 0x1017411b
mov edx, dword [esp + 0x40]
lea eax, [esp + 0x14]
sub edx, eax
mov ecx, edi
mov dword [esp + 0x48], edx
sub ecx, eax
jmp 0x10174104
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 0x10174100
mov eax, dword [esi + 0x80]
add ebx, eax
sub dword [esp + 0x3c], 1
lea ebp, [eax + edi]
mov dword [esp + 0x48], ebp
je 0x101741a6
push eax
lea eax, [esp + 0x28]
push ebx
push eax
call sub.MSVCR80.dll_memcpy
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 0x10174189
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 0x10174170
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 0x10174131
xor ecx, ecx
cmp dword [esi + 0x80], ecx
jbe 0x101741d3
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 0x101741c0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
push eax
call fcn.10018270
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 0x101742bc
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 0x1017428b
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 0x10174243
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.10018270
pop edi
pop ebx
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14
cmp eax, 8
jne 0x1017434d
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 0x10174334
jmp 0x10174300
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 0x10174300
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.10018270
pop edi
pop ebx
pop esi
mov al, 1
pop ebp
add esp, 0x24
ret 0x14