Function at 0x41c090
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x68]
mov ebp, dword [eax + 4]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
mov eax, edx
cmp word [ebp + edx + 2], 0
lea edx, [edx + 2]
jne 0x41c0b0
mov edi, dword [ecx + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41c0d0
sar edx, 1
sar eax, 1
lea ecx, [edx + eax]
mov dword [esp + 0x48], eax
add eax, edx
add eax, 0x1b
test eax, eax
mov dword [esp + 0x4c], edx
mov dword [esp + 0x44], ecx
jns 0x41c0fe
mov eax, 0xffffffff
jmp 0x41c105
lea eax, [ecx*2 + 0x36]
push eax
call fcn.00407fb0
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0xa], 0xdc87dab5
mov dword [esp + 0xe], 0xd0bcdea2
mov dword [esp + 0x12], 0xd4afd2b0
mov dword [esp + 0x16], 0xe892d6f5
mov dword [esp + 0x1a], 0xec9fea61
mov dword [esp + 0x1e], 0xe091ee88
mov dword [esp + 0x22], 0xe49ae292
mov dword [esp + 0x26], 0xf899e69a
mov dword [esp + 0x2a], 0xfca8fad9
mov dword [esp + 0x2e], 0xf08bfe98
mov dword [esp + 0x32], 0xf48af285
mov dword [esp + 0x36], 0x890f68b
mov dword [esp + 0x3a], 0xc670a7a
mov word [esp + 0x3e], 0xe0d
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, eax
and ebx, 0x22
mov edx, ecx
xor edx, 0x51
add edx, ebx
xor dl, byte [esp + ecx + 0xa]
add dl, 0x78
mov byte [esp + ecx + 0xa], dl
inc ecx
add eax, 2
cmp ecx, 0x36
jne 0x41c190
movzx ecx, word [ebp]
mov edx, dword [esp + 4]
mov eax, edx
test cx, cx
je 0x41c1e2
add ebp, 2
mov eax, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x41c1d0
mov word [eax], 0
movzx ecx, word [esp + 0xa]
test cx, cx
je 0x41c211
lea edx, [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41c200
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x41c241
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x41c230
mov word [eax], 0
mov ebx, dword [esi]
mov eax, 0xfffffffe
nop
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x41c250
mov ecx, dword [esp + 0x6c]
mov ebp, dword [ecx]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41c270
mov edx, dword [esp + 0x70]
mov esi, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + edx + 2], 0
lea edx, [edx + 2]
jne 0x41c290
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x41c2b4
mov eax, 0xffffffff
jmp 0x41c2bd
add ecx, edx
lea eax, [ecx*2 + 0x26]
mov dword [esp], esi
push eax
call fcn.00407fb0
add esp, 4
movzx ecx, word [ebx]
mov esi, eax
test cx, cx
je 0x41c2f1
add ebx, 2
mov esi, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x41c2e0
mov dword [esp + 0x40], eax
mov word [esp + 0xa], 0x6d83
xor edi, edi
mov cl, 1
movzx edx, byte [esp + edi + 0xa]
mov ebx, edx
not ebx
mov eax, edi
or eax, 0xc
and edx, 0xffffff9f
xor edx, eax
and ebx, 0x60
sub edx, ebx
mov byte [esp + edi + 0xa], dl
mov edi, 1
test cl, 1
mov ecx, 0
jne 0x41c300
movzx eax, word [esp + 0xa]
mov word [esi], ax
mov dword [esp + 0xa], 0x87c385eb
mov dword [esp + 0xe], 0x8b3e8930
mov dword [esp + 0x12], 0x8f208d29
mov dword [esp + 0x16], 0x933b9123
mov dword [esp + 0x1a], 0x9738953b
mov dword [esp + 0x1e], 0x9bf5992b
mov word [esp + 0x22], 0x9d9c
mov eax, 0xa4
mov ecx, 0x5b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
and edi, 0x7d
mov edx, eax
xor edx, 0x7d
or edx, edi
xor dl, byte [esp + eax - 0x9a]
xor dl, 0x7d
add dl, 0xe0
mov byte [esp + eax - 0x9a], dl
inc eax
dec ecx
cmp eax, 0xbe
jne 0x41c380
add esi, 2
movzx eax, word [ebp]
test ax, ax
je 0x41c3d4
add ebp, 2
mov edx, dword [esp]
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x41c3c0
jmp 0x41c3d7
mov edx, dword [esp]
mov word [esi], 0
movzx eax, word [esp + 0xa]
test ax, ax
je 0x41c401
lea ecx, [esp + 0xc]
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41c3f0
mov word [esi], 0
movzx eax, word [edx]
test ax, ax
je 0x41c431
add edx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [edx]
add edx, 2
test ax, ax
jne 0x41c420
mov word [esi], 0
mov dword [esp + 0xa], 0x858483a8
mov eax, 0x1838f813
mov ecx, 0xed
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x1838f809]
lea edx, [eax - 1]
mov ebx, ecx
and ebx, 0xeb
and edx, 0x14
or edx, ebx
xor edx, 0x14
and edx, edi
not edi
or edi, ecx
add edi, eax
or edx, edi
add edx, 0x3e383f6f
mov edi, edx
and edi, 1
xor edx, 1
lea edx, [edx + edi*2]
mov byte [esp + eax - 0x1838f809], dl
inc eax
dec ecx
cmp eax, 0x1838f817
jne 0x41c450
lea eax, [esp + 0xa]
push 0
push 0
push 0xc00000
push eax
mov ebx, dword [esp + 0x14]
push ebx
mov edi, dword [esp + 0x54]
push edi
push dword [esp + 0x7c]
call fcn.00420050
add esp, 0x1c
mov byte [esp], al
jmp dword [0x442814]