Function at 0x42ec90
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x6c
mov eax, dword [0x4ca510]
xor eax, esp
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x74]
push ebx
mov ebx, dword [esp + 0x74]
push ebp
mov ebp, dword [esp + 0x8c]
push esi
mov esi, edx
push edi
mov edi, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], 1
test esi, esi
jne 0x42ecf0
push edx
push edx
push 0x9f
push 0xa2
push 6
call fcn.00415c10
add esp, 0x14
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x64]
xor ecx, esp
call fcn.0046c8b9
add esp, 0x6c
ret
mov eax, dword [esi + 8]
mov dword [esp + 0x28], eax
test eax, eax
js 0x42ef19
call fcn.004378c0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
je 0x42ef19
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x90]
mov dword [esp + 0x20], ebp
test edi, edi
jne 0x42ed2e
mov edi, 0x481db6
xor ebx, ebx
jmp 0x42ed43
cmp ebx, 0xffffffff
jne 0x42ed43
mov eax, edi
lea ebx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42ed38
sub eax, ebx
mov ebx, eax
push esi
push edx
mov ecx, ebx
mov edx, edi
call fcn.00437600
add esp, 8
test eax, eax
je 0x42ef10
call fcn.004378c0
mov esi, eax
test esi, esi
je 0x42ef10
test ebp, ebp
je 0x42ef2e
mov edi, dword [esp + 0x28]
cmp ebp, edi
jle 0x42ed7a
mov ebp, edi
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x14]
mov ecx, eax
shr ecx, 0x18
mov byte [esp + 0x1c], cl
mov edx, eax
mov ecx, eax
shr edx, 0x10
shr ecx, 8
push ebx
push esi
mov byte [esp + 0x25], dl
mov byte [esp + 0x26], cl
mov byte [esp + 0x27], al
call fcn.00437b00
add esp, 8
test eax, eax
je 0x42eeea
cmp dword [esi], 0
je 0x42eeea
mov edx, dword [esp + 0x88]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esi + 4]
push edx
mov edx, dword [eax + 0x14]
push ecx
push eax
call edx
add esp, 0xc
test eax, eax
je 0x42eeea
cmp dword [esi], 0
je 0x42eeea
mov eax, dword [esi + 4]
mov edx, dword [eax + 0x14]
push 4
lea ecx, [esp + 0x20]
push ecx
push eax
call edx
add esp, 0xc
test eax, eax
je 0x42eeea
lea eax, [esp + 0x30]
push eax
push esi
xor ecx, ecx
call fcn.004377d0
add esp, 8
test eax, eax
je 0x42eeea
call fcn.00437aa0
mov ebx, dword [esp + 0x18]
push ebp
lea ecx, [esp + 0x34]
push ecx
push ebx
call fcn.00478340
mov ecx, 1
add esp, 0xc
mov dword [esp + 0x18], ecx
cmp dword [esp + 0x8c], ecx
jle 0x42eecb
mov edx, dword [esp + 0x14]
push edx
push esi
call fcn.00437b00
add esp, 8
test eax, eax
je 0x42ef0b
cmp dword [esi], 0
je 0x42ef0b
mov eax, dword [esi + 4]
mov edx, dword [eax + 0x14]
push edi
lea ecx, [esp + 0x34]
push ecx
push eax
call edx
add esp, 0xc
test eax, eax
je 0x42ef0b
lea eax, [esp + 0x30]
push eax
push esi
xor ecx, ecx
call fcn.004377d0
add esp, 8
test eax, eax
je 0x42ef0b
call fcn.00437aa0
test ebp, ebp
jle 0x42eeb4
lea ecx, [esp + 0x30]
mov eax, ebx
sub ecx, ebx
mov edi, ebp
mov dl, byte [ecx + eax]
xor byte [eax], dl
inc eax
dec edi
jne 0x42eea7
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
cmp eax, dword [esp + 0x8c]
jl 0x42ee47
mov ecx, 1
mov eax, dword [esp + 0x20]
add dword [esp + 0x24], ecx
sub eax, ebp
add ebx, ebp
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], ebx
test eax, eax
je 0x42ef2e
mov ebp, eax
jmp 0x42ed70
call fcn.00437a50
mov esi, ebx
call fcn.00437a50
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x64]
xor ecx, esp
call fcn.0046c8b9
add esp, 0x6c
ret
call fcn.00437a50
mov esi, dword [esp + 0x14]
call fcn.00437a50
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x64]
xor ecx, esp
call fcn.0046c8b9
add esp, 0x6c
ret
call fcn.00437a50
mov esi, dword [esp + 0x14]
call fcn.00437a50
mov ecx, dword [esp + 0x74]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
mov eax, 1
call fcn.0046c8b9
add esp, 0x6c
ret