Function at 0x41b130
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
mov esi, ecx
mov dword [ebp - 4], edx
push edi
mov dword [ebp - 0x10], esi
mov eax, dword [esi]
dec eax
cmp eax, 3
ja case.default.0x41b14d
jmp dword [eax*4 + 0x41b3bc]
mov ecx, dword [esi + 0x38]
lea eax, [esi + 0x3c]
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0xc], eax
lea eax, [ecx + ebx]
mov dword [ebp - 8], eax
mov dword [edi], eax
cmp eax, 0x10
ja 0x41b192
push ebx
lea eax, [esi + 0x28]
push edx
add eax, ecx
push eax
call fcn.00420f10
add dword [esi + 0x38], ebx
add esp, 0xc
mov dword [edi], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edx, dword [ebp + 0xc]
je case.default.0x41b14d
mov edi, 0x10
lea eax, [esi + 0x28]
sub edi, ecx
add eax, ecx
push edi
push edx
push eax
call fcn.00420f10
mov ecx, dword [ebp + 0xc]
add esp, 0xc
mov eax, dword [esi + 0x28]
mov edx, ecx
mov ebx, dword [ebp - 8]
add edi, dword [ebp - 4]
add ebx, 0xfffffff0
mov dword [ecx], eax
mov eax, dword [esi + 0x2c]
mov dword [ecx + 4], eax
mov eax, dword [esi + 0x30]
mov dword [ecx + 8], eax
mov eax, dword [esi + 0x34]
mov dword [ecx + 0xc], eax
lea ecx, [esi + 0x3c]
mov dword [ebp - 4], ebx
call fcn.0041cd40
cmp ebx, 0x10
jbe 0x41b238
mov esi, dword [ebp - 4]
mov ebx, dword [ebp + 0xc]
add ebx, 0x18
lea eax, [esi - 0x11]
shr eax, 4
inc eax
mov dword [ebp - 4], eax
nop word [eax + eax]
mov eax, dword [edi]
lea edx, [ebx - 8]
mov ecx, dword [ebp - 0xc]
mov dword [edx], eax
mov eax, dword [edi + 4]
mov dword [ebx - 4], eax
mov eax, dword [edi + 8]
mov dword [ebx], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 4], eax
call fcn.0041cd40
add edi, 0x10
lea ebx, [ebx + 0x10]
sub esi, 0x10
sub dword [ebp - 4], 1
jne 0x41b200
mov dword [ebp - 4], esi
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp - 4]
push ebx
lea eax, [esi + 0x28]
push edi
push eax
call fcn.00420f10
mov eax, dword [esi + 0x38]
add esp, 0xc
and eax, 0xf0000000
add eax, ebx
mov dword [esi + 0x38], eax
mov eax, dword [ebp + 0x10]
pop edi
pop esi
sub dword [eax], ebx
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
push eax
push dword [ebp + 8]
call fcn.0041adf0
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x38]
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
lea ecx, [eax + ebx]
mov dword [ebp - 0x10], ecx
mov dword [edi], ecx
cmp ecx, 0x10
ja 0x41b2b2
push ebx
add eax, 0x28
push edx
add eax, esi
push eax
call fcn.00420f10
add dword [esi + 0x38], ebx
add esp, 0xc
mov dword [edi], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 0xc]
cmp ebx, edx
je case.default.0x41b14d
mov edi, 0x10
sub edi, eax
add eax, 0x28
push edi
push edx
add eax, esi
push eax
call fcn.00420f10
mov ecx, dword [ebp - 0x10]
lea edx, [esi + 0x18]
add edi, dword [ebp - 4]
add ecx, 0xfffffff0
add esp, 0xc
mov dword [ebp - 4], ecx
lea ecx, [esi + 0x3c]
call fcn.0041bf20
mov eax, dword [esi + 0x28]
lea ecx, [esi + 0x18]
xor eax, dword [ecx]
mov dword [ebx], eax
mov eax, dword [esi + 0x2c]
xor eax, dword [esi + 0x1c]
mov dword [ebx + 4], eax
mov eax, dword [esi + 0x30]
xor eax, dword [esi + 0x20]
mov dword [ebx + 8], eax
mov eax, dword [esi + 0x34]
xor eax, dword [esi + 0x24]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 4]
cmp eax, 0x10
jbe 0x41b36a
add eax, 0xffffffef
add ebx, 0x18
shr eax, 4
inc eax
mov dword [ebp - 8], eax
mov edx, ecx
lea ecx, [esi + 0x3c]
call fcn.0041bf20
mov eax, dword [esi + 0x18]
lea ecx, [esi + 0x18]
xor eax, dword [edi]
lea ebx, [ebx + 0x10]
mov dword [ebx - 0x18], eax
mov eax, dword [edi + 4]
xor eax, dword [esi + 0x1c]
mov dword [ebx - 0x14], eax
mov eax, dword [edi + 8]
xor eax, dword [esi + 0x20]
mov dword [ebx - 0x10], eax
mov eax, dword [edi + 0xc]
add edi, 0x10
xor eax, dword [esi + 0x24]
mov dword [ebx - 0xc], eax
mov eax, dword [ebp - 4]
sub eax, 0x10
sub dword [ebp - 8], 1
mov dword [ebp - 4], eax
jne 0x41b325
push eax
lea eax, [esi + 0x28]
push edi
push eax
call fcn.00420f10
mov eax, dword [esi + 0x38]
add esp, 0xc
mov ecx, dword [ebp - 4]
and eax, 0xf0000000
add eax, ecx
mov dword [esi + 0x38], eax
mov eax, dword [ebp + 0x10]
pop edi
pop esi
pop ebx
sub dword [eax], ecx
xor eax, eax
mov esp, ebp
pop ebp
ret
push dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
push eax
push dword [ebp + 8]
call fcn.0041afc0
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0x1001
pop ebx
mov esp, ebp
pop ebp
ret