Function at 0x40d19c
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
mov esi, ecx
push edi
cmp dword [esi + 0x4c], 0xffffffff
je 0x40d184
test dword [esi + 0x50], 0x10000
je 0x40ceea
movzx eax, byte [esi + 0x48]
push eax
call fcn.0040de80
test al, al
jne 0x40cfa2
mov eax, dword [esi + 0x50]
test eax, 0x8000
je 0x40cf15
mov cl, byte [esi + 0x48]
cmp cl, 0x61
jne 0x40cf06
mov eax, 7
jmp 0x40cf9f
cmp cl, 0x62
jne 0x40cf15
mov eax, 8
jmp 0x40cf9f
mov cl, byte [esi + 0x48]
cmp cl, 0x63
jne 0x40cfef
test eax, 0x40000
je 0x40d0aa
mov ecx, dword [esi]
mov edi, dword [esi + 8]
cmp ecx, edi
je 0x40cf68
cmp byte [ecx], 0x5c
jne 0x40cf63
lea edx, [ecx + 1]
mov ecx, edx
cmp edx, edi
je 0x40cf61
test al, 8
jne 0x40cf53
mov bl, byte [edx]
cmp bl, 0x28
je 0x40cf63
cmp bl, 0x29
je 0x40cf63
test al, 0x10
jne 0x40cf61
mov al, byte [edx]
cmp al, 0x7b
je 0x40cf63
cmp al, 0x7d
je 0x40cf63
mov ecx, dword [esi]
lea eax, [ecx + 1]
mov dword [esi], eax
mov ecx, esi
call fcn.00409c30
mov eax, dword [esi + 0x3c]
mov edi, 0x103
mov dl, byte [esi + 0x48]
movzx ecx, dl
mov eax, dword [eax + 4]
mov eax, dword [eax + 0xc]
test word [eax + ecx*2], di
je 0x40d18b
movsx eax, dl
and eax, 0x8000001f
jns 0x40cf9c
dec eax
or eax, 0xffffffe0
inc eax
movsx eax, al
mov dword [esi + 0x44], eax
mov edx, dword [esi + 8]
mov eax, dword [esi]
cmp eax, edx
je 0x40cfe3
cmp byte [eax], 0x5c
jne 0x40cfe0
lea ecx, [eax + 1]
mov eax, ecx
cmp ecx, edx
je 0x40cfde
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40cfcd
mov dl, byte [ecx]
cmp dl, 0x28
je 0x40cfe0
cmp dl, 0x29
je 0x40cfe0
test bl, 0x10
jne 0x40cfde
mov cl, byte [ecx]
cmp cl, 0x7b
je 0x40cfe0
cmp cl, 0x7d
je 0x40cfe0
mov eax, dword [esi]
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.00409c30
jmp 0x40d0cb
cmp cl, 0x78
jne 0x40d057
test eax, 0x1000
je 0x40d0aa
mov ecx, dword [esi]
mov edi, dword [esi + 8]
cmp ecx, edi
je 0x40d03b
cmp byte [ecx], 0x5c
jne 0x40d036
lea edx, [ecx + 1]
mov ecx, edx
cmp edx, edi
je 0x40d034
test al, 8
jne 0x40d026
mov bl, byte [edx]
cmp bl, 0x28
je 0x40d036
cmp bl, 0x29
je 0x40d036
test al, 0x10
jne 0x40d034
mov al, byte [edx]
cmp al, 0x7b
je 0x40d036
cmp al, 0x7d
je 0x40d036
mov ecx, dword [esi]
lea eax, [ecx + 1]
mov dword [esi], eax
mov ecx, esi
call fcn.00409c30
push 2
push 0x10
mov ecx, esi
call fcn.0040dab0
test eax, eax
jne 0x40d192
jmp 0x40d0cb
cmp cl, 0x75
jne 0x40d0aa
test eax, 0x800
je 0x40d0aa
mov ecx, dword [esi]
mov edi, dword [esi + 8]
cmp ecx, edi
je 0x40d09f
cmp byte [ecx], 0x5c
jne 0x40d09a
lea edx, [ecx + 1]
mov ecx, edx
cmp edx, edi
je 0x40d098
test al, 8
jne 0x40d08a
mov bl, byte [edx]
cmp bl, 0x28
je 0x40d09a
cmp bl, 0x29
je 0x40d09a
test al, 0x10
jne 0x40d098
mov al, byte [edx]
cmp al, 0x7b
je 0x40d09a
cmp al, 0x7d
je 0x40d09a
mov ecx, dword [esi]
lea eax, [ecx + 1]
mov dword [esi], eax
mov ecx, esi
call fcn.00409c30
push 4
jmp 0x40d044
test eax, 0x2000
je 0x40d0e5
push 3
push 8
mov ecx, esi
call fcn.0040dab0
cmp eax, 3
je 0x40d0e5
cmp dword [esi + 0x44], 0
je 0x40d192
mov eax, dword [esi + 0x44]
cmp eax, 0xff
ja 0x40d192
movsx eax, al
pop edi
mov dword [esi + 0x44], eax
mov al, 1
pop esi
pop ebx
ret
mov ecx, dword [esi + 0x50]
movsx edx, byte [esi + 0x48]
test ecx, 0x400000
je 0x40d10a
lea eax, [edx - 0x44]
cmp eax, 0x33
ja case.0x40d119.36
movzx eax, byte [eax + 0x40d1a4]
jmp dword [eax*4 + 0x40d19c]
lea eax, [edx - 0x22]
cmp eax, 0x5b
ja case.0x40d119.35
movzx eax, byte [eax + 0x40d1e8]
jmp dword [eax*4 + 0x40d1d8]
mov eax, ecx
shr eax, 0x17
jmp 0x40d12c
mov eax, ecx
shr eax, 0x18
test al, 1
je case.0x40d119.35
mov eax, dword [esi]
mov edi, dword [esi + 8]
mov dword [esi + 0x44], edx
cmp eax, edi
je 0x40d171
cmp byte [eax], 0x5c
jne 0x40d16e
lea edx, [eax + 1]
mov eax, edx
cmp edx, edi
je 0x40d16c
test cl, 8
jne 0x40d15b
mov bl, byte [edx]
cmp bl, 0x28
je 0x40d16e
cmp bl, 0x29
je 0x40d16e
test cl, 0x10
jne 0x40d16c
mov cl, byte [edx]
cmp cl, 0x7b
je 0x40d16e
cmp cl, 0x7d
je 0x40d16e
mov eax, dword [esi]
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.00409c30
pop edi
pop esi
mov al, 1
pop ebx
ret
pop edi
pop esi
xor al, al
pop ebx
ret
push 2
call fcn.00409c20
push 2
call fcn.00409c20
push 2
call fcn.00409c20
nop dword [eax]
jle 0x40d16f
inc eax
add byte [eax], dh
rol dword [eax], 1
add byte [ecx], al
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [eax], eax
add dword [ecx], eax
add dword [eax], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [eax], eax
add byte [ecx], al
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [eax], eax
add dword [ecx], eax
add dword [eax], eax
daa
add byte [ecx], al
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add byte [eax], al
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add byte [ecx], al
add dword [ecx], eax
add byte [edi], ah
rol dword [eax], 1
xor cl, dl
inc eax
add byte [eax], ah
rol dword [eax], 1
jle 0x40d1b7
inc eax
add byte [eax], al
add eax, dword [ecx]
add eax, dword [ebx]
add eax, dword [edx]
add al, byte [ecx]
add al, byte [ebx]
add eax, dword [ecx]
add byte [ebx], al
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add al, byte [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add dword [ecx], eax
add eax, dword [ecx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add al, byte [ecx]
add cl, ah
int3