Function at 0x100411c0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0x14]
push ebx
push ebp
push esi
xor ebx, ebx
push edi
mov edi, dword [ecx + 8]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], ebx
cmp dword [esp + 0x48], ebx
je 0x10041221
cmp eax, ebx
jne 0x100411ec
xor eax, eax
jmp 0x10041209
mov edx, dword [eax + 4]
lea ecx, [edx - 1]
cmp edx, ebx
jne 0x100411fa
xor eax, eax
jmp 0x10041209
mov edx, dword [eax]
mov eax, dword [edx + ecx*4]
call fcn.10049f70
shl ecx, 5
add eax, ecx
add eax, 7
cdq
and edx, 7
add eax, edx
mov esi, eax
sar esi, 3
mov dword [esp + 0x20], 1
jmp 0x10041259
cmp eax, ebx
jne 0x10041229
xor eax, eax
jmp 0x10041246
mov edx, dword [eax + 4]
lea ecx, [edx - 1]
cmp edx, ebx
jne 0x10041237
xor eax, eax
jmp 0x10041246
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
call fcn.10049f70
shl ecx, 5
add eax, ecx
add eax, 7
cdq
and edx, 7
add eax, edx
mov esi, eax
sar esi, 3
dec esi
mov dword [esp + 0x20], ebx
mov ebp, esi
sub ebp, dword [esp + 0x34]
js 0x100414d4
push esi
call fcn.10087e65
mov ebx, eax
add esp, 4
mov dword [esp + 0x24], ebx
test ebx, ebx
je 0x100414de
push esi
push 0
push ebx
call fcn.1008e320
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
push ecx
push edx
add ebp, ebx
push ebp
call fcn.1008d020
add esp, 0x18
sub esi, edi
cmp dword [esp + 0x48], 0
je 0x100412ae
inc ebx
lea eax, [ebx + edi]
mov dword [esp + 0x18], eax
dec esi
jmp 0x100412b5
lea ecx, [ebx + edi]
mov dword [esp + 0x18], ecx
push esi
call fcn.10087e65
push edi
mov ebp, eax
call fcn.10087e65
push edi
mov dword [esp + 0x40], eax
call fcn.10087e65
add esp, 0xc
mov dword [esp + 0x14], eax
test ebp, ebp
je 0x10041497
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x10041438
test eax, eax
je 0x10041438
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov edx, dword [esp + 0x18]
push esi
push edx
push edi
and eax, 0xff00ff00
push ecx
call fcn.100406f0
add esp, 0x10
test eax, eax
jne 0x10041438
test edi, edi
jle 0x1004132c
mov eax, dword [esp + 0x34]
mov ecx, ebx
sub ecx, eax
mov ebx, edi
mov dl, byte [ecx + eax]
xor byte [eax], dl
inc eax
sub ebx, 1
jne 0x10041321
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx]
push edi
push ecx
push esi
and eax, 0xff00ff00
push ebp
call fcn.100406f0
add esp, 0x10
test eax, eax
jne 0x10041438
test esi, esi
jle 0x1004136b
mov ecx, dword [esp + 0x18]
mov eax, ebp
sub ecx, ebp
mov edi, esi
lea ecx, [ecx]
mov dl, byte [ecx + eax]
xor byte [eax], dl
inc eax
sub edi, 1
jne 0x10041360
mov eax, dword [ebx + 8]
mov ecx, dword [eax]
push ecx
push eax
call sym.inicrypto_v5.4.1.dll_ISC_Init_DIGEST
add esp, 8
test eax, eax
jne 0x10041438
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
mov ecx, dword [ebx + 8]
push edx
push eax
push ecx
call sym.inicrypto_v5.4.1.dll_ISC_Update_DIGEST
add esp, 0xc
test eax, eax
jne 0x10041438
mov eax, dword [esp + 0x14]
mov ecx, dword [ebx + 8]
lea edx, [esp + 0x1c]
push edx
push eax
push ecx
call sym.inicrypto_v5.4.1.dll_ISC_Final_DIGEST
add esp, 0xc
test eax, eax
jne 0x10041438
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov ecx, eax
mov edi, ebp
cmp eax, 4
jb 0x100413e4
nop
mov ebx, dword [edi]
cmp ebx, dword [edx]
jne 0x10041438
sub ecx, 4
add edx, 4
add edi, 4
cmp ecx, 4
jae 0x100413d0
test ecx, ecx
je 0x10041408
mov bl, byte [edx]
cmp bl, byte [edi]
jne 0x10041438
cmp ecx, 1
jbe 0x10041408
mov bl, byte [edx + 1]
cmp bl, byte [edi + 1]
jne 0x10041438
cmp ecx, 2
jbe 0x10041408
mov dl, byte [edx + 2]
cmp dl, byte [edi + 2]
jne 0x10041438
cmp eax, esi
jge 0x1004141b
lea esp, [esp]
cmp byte [eax + ebp], 0
jne 0x1004141b
inc eax
cmp eax, esi
jl 0x10041410
cmp byte [eax + ebp], 1
jne 0x10041438
mov ecx, dword [esp + 0x20]
sub esi, eax
sub esi, ecx
dec esi
cmp dword [esp + 0x3c], esi
jge 0x1004144b
mov dword [esp + 0x10], 0
mov esi, dword [esp + 0x10]
push ebp
call fcn.10087d88
mov eax, dword [esp + 0x18]
add esp, 4
jmp 0x1004149b
add eax, ecx
cmp dword [esp + 0x48], 0
je 0x10041475
inc esi
add eax, ebp
push esi
push eax
mov eax, dword [esp + 0x40]
push eax
call fcn.1008d020
add esp, 0xc
push ebp
call fcn.10087d88
mov eax, dword [esp + 0x18]
add esp, 4
jmp 0x1004149b
mov edx, dword [esp + 0x38]
push esi
lea ecx, [eax + ebp + 1]
push ecx
push edx
call fcn.1008d020
add esp, 0xc
push ebp
call fcn.10087d88
mov eax, dword [esp + 0x18]
add esp, 4
jmp 0x1004149b
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x100414b0
push ecx
call fcn.10087d88
mov eax, dword [esp + 0x18]
add esp, 4
test eax, eax
je 0x100414bd
push eax
call fcn.10087d88
add esp, 4
mov eax, dword [esp + 0x24]
push eax
call fcn.10087d88
add esp, 4
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x18
ret
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret