Function at 0x41f980
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x8c
push ebx
push ebp
push esi
push edi
mov ecx, 0x17
xor eax, eax
lea edi, [esp + 0x3d]
mov byte [esp + 0x3c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [esp + 0xa4]
xor esi, esi
test al, 7
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], esi
je 0x41f9c2
int3
mov ebx, dword [esp + 0xb0]
test bl, 1
jne 0x41fbca
mov eax, dword [esp + 0xa8]
mov edi, 4
mov ecx, dword [eax]
mov edx, dword [eax + 4]
xor eax, eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov dl, byte [esp + esi + 0x30]
mov al, 1
mov ecx, esi
shl al, cl
test dl, dl
jns 0x41fa07
or byte [esp + 0x10], al
test dl, 0x40
je 0x41fa10
or byte [esp + 0x11], al
test dl, 0x20
je 0x41fa19
or byte [esp + 0x12], al
test dl, 0x10
je 0x41fa2d
mov bl, byte [esp + 0x17]
mov cl, al
shl cl, 4
or bl, cl
mov byte [esp + 0x17], bl
test dl, 8
je 0x41fa36
or byte [esp + 0x16], al
test dl, 4
je 0x41fa3f
or byte [esp + 0x15], al
test dl, 2
je 0x41fa48
or byte [esp + 0x14], al
inc esi
dec edi
jne 0x41f9f5
mov esi, 4
mov edi, esi
mov dl, byte [esp + esi + 0x30]
mov al, 1
mov ecx, esi
shl al, cl
test dl, dl
jns 0x41fa65
or byte [esp + 0x10], al
test dl, 0x40
je 0x41fa6e
or byte [esp + 0x11], al
test dl, 0x20
je 0x41fa77
or byte [esp + 0x12], al
test dl, 0x10
je 0x41fa80
or byte [esp + 0x13], al
test dl, 8
je 0x41fa89
or byte [esp + 0x16], al
test dl, 4
je 0x41fa92
or byte [esp + 0x15], al
test dl, 2
je 0x41fa9b
or byte [esp + 0x14], al
inc esi
dec edi
jne 0x41fa53
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x3c]
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], eax
mov ebp, 0x437f90
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], 0x10
mov bl, dl
mov dl, byte [ebp]
mov al, byte [esp + 0x1b]
mov cl, byte [esp + 0x1a]
mov byte [esp + 0x10], dl
mov dl, byte [esp + 0x19]
mov byte [esp + 0x24], al
mov byte [esp + 0x26], dl
mov edx, dword [esp + 0x10]
and edx, 0xff
mov byte [esp + 0x25], cl
mov byte [esp + 0x27], bl
mov esi, dword [esp + 0x24]
mov eax, dword [edx*4 + 0x437d08]
mov edi, 0x1c
and esi, 0xfffffff0
sub edi, edx
mov ebx, eax
mov ecx, edi
and ebx, esi
shr ebx, cl
mov ecx, edx
shl esi, cl
or ebx, esi
mov dword [esp + 0x24], ebx
mov cl, byte [esp + 0x26]
mov byte [esp + 0x19], cl
mov cl, byte [esp + 0x25]
mov byte [esp + 0x1a], cl
mov cl, byte [esp + 0x24]
mov byte [esp + 0x1b], cl
mov cl, byte [esp + 0x2f]
mov byte [esp + 0x28], cl
mov cl, byte [esp + 0x2e]
mov byte [esp + 0x29], cl
mov cl, byte [esp + 0x2d]
mov byte [esp + 0x2a], cl
mov cl, byte [esp + 0x2c]
mov byte [esp + 0x2b], cl
mov esi, dword [esp + 0x28]
and esi, 0xfffffff0
mov ecx, edi
and eax, esi
mov bl, byte [esp + 0x27]
shr eax, cl
mov ecx, edx
mov byte [esp + 0x18], bl
shl esi, cl
or eax, esi
mov esi, dword [esp + 0x38]
mov dword [esp + 0x28], eax
mov al, byte [esp + 0x2a]
mov cl, byte [esp + 0x29]
mov dl, byte [esp + 0x2b]
mov byte [esp + 0x2d], al
mov byte [esp + 0x2e], cl
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x18]
mov byte [esp + 0x2c], dl
mov dl, byte [esp + 0x28]
push eax
push ecx
push esi
mov byte [esp + 0x3b], dl
call fcn.0041f1f0
inc ebp
add esi, 6
mov eax, dword [esp + 0x30]
mov dword [esp + 0x38], esi
dec eax
mov dword [esp + 0x30], eax
jne 0x41fac6
mov eax, dword [esp + 0xa4]
mov ebx, dword [esp + 0xb0]
mov ecx, dword [esp + 0xac]
test ecx, ecx
je 0x41fbe2
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], ecx
mov ecx, ebx
and ecx, 0xe
cmp ecx, 0xa
ja case.0x41fbf0.1
jmp dword [ecx*4 + 0x41fe2c]
mov esi, dword [esp + 0xa0]
shr eax, 3
lea edi, [esi + eax*8]
cmp esi, edi
je case.0x41fbf0.1
lea edx, [esp + 0x3c]
push ebx
push edx
push esi
call fcn.0041fe60
add esi, 8
cmp esi, edi
jne 0x41fc0c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea eax, [esi + eax*8]
cmp esi, eax
mov dword [esp + 0x18], eax
je case.0x41fbf0.1
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
lea edx, [esp + 0x3c]
push ebx
push edx
push esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
call fcn.0041fe60
mov eax, dword [esi]
mov edx, dword [esi + 4]
xor eax, edi
xor edx, ebp
mov dword [esi], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 4], edx
add esi, 8
cmp esi, eax
jne 0x41fc45
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea eax, [esi + eax*8]
cmp esi, eax
mov dword [esp + 0x18], eax
je case.0x41fbf0.1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov ebp, dword [esi]
mov edi, dword [esi + 4]
lea edx, [esp + 0x3c]
push ebx
push edx
push esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
call fcn.0041fe60
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x10]
add esi, 8
xor ecx, eax
mov dword [esi - 8], ecx
mov ecx, dword [esp + 0x14]
xor edx, ecx
mov dword [esi - 4], edx
mov eax, dword [esi - 4]
mov edx, dword [esi - 8]
xor edi, eax
mov eax, dword [esp + 0x18]
xor ebp, edx
cmp esi, eax
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], edi
jne 0x41fca5
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea edi, [esi + eax*8]
cmp esi, edi
je case.0x41fbf0.1
mov edx, dword [esp + 0x20]
mov eax, dword [esi]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], eax
lea edx, [esp + 0x3c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 4]
push ebx
lea eax, [esp + 0x14]
push edx
push eax
mov dword [esp + 0x2c], ecx
call fcn.0041f470
mov eax, dword [esi]
mov ebp, dword [esi + 4]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
xor eax, ecx
xor ebp, edx
mov dword [esi], eax
mov dword [esi + 4], ebp
add esi, 8
cmp esi, edi
jne 0x41fd1c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea edi, [esi + eax*8]
cmp esi, edi
je case.0x41fbf0.1
lea eax, [esp + 0x3c]
push ebx
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0041f470
mov ebp, dword [esi]
add esi, 8
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
xor ebp, edx
mov edx, dword [esi - 4]
xor edx, eax
mov dword [esi - 8], ebp
mov dword [esi - 4], edx
cmp esi, edi
jne 0x41fd88
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea eax, [esi + eax*8]
cmp esi, eax
mov dword [esp + 0x18], eax
je case.0x41fbf0.1
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
lea ecx, [esp + 0x3c]
push ebx
lea edx, [esp + 0x20]
push ecx
push edx
call fcn.0041f470
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x1c]
xor ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esi], ecx
mov ecx, dword [esp + 0x20]
xor edx, ecx
add edi, 1
mov dword [esi + 4], edx
mov dword [esp + 0x1c], edi
adc ebp, 0
add esi, 8
cmp esi, eax
mov dword [esp + 0x20], ebp
jne 0x41fdd8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14