Function at 0x4085e0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x110
mov eax, dword [0x5ed284]
xor eax, esp
mov dword [esp + 0x10c], eax
mov ecx, dword [esp + 0x12c]
mov eax, dword [esp + 0x124]
push esi
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x138]
xor edx, edx
push edi
mov edi, dword [esp + 0x11c]
mov dword [esp + 0x10], ecx
mov dword [ecx], edx
mov cl, byte [edi]
test cl, 2
lea esi, [edi + 0x18]
jne 0x408631
mov ax, 0x3c
jmp 0x408a9b
push ebx
mov ebx, dword [esp + 0x134]
cmp ebx, 0x50
push ebp
ja case.0x40899b.136
mov ebp, dword [esp + 0x140]
cmp ebp, 0x50
ja case.0x40899b.136
cmp ebx, edx
jne 0x40865e
lea eax, [esp + 0xcc]
test cl, 4
mov ecx, dword [esp + 0x128]
mov word [esi + 0x30], 0x18
je 0x408a1c
and ecx, 0xffffff00
add ecx, 0xc8000f
cmp ebx, 0xc
mov dword [esi + 0x34], ecx
lea ecx, [esi + 0x40]
mov word [esi + 0x38], dx
mov word [esi + 0x3a], dx
mov dword [esp + 0x10], ecx
jbe 0x4086d6
cmp ebx, 0x4c
mov edx, dword [eax]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
ja case.0x40899b.136
lea edx, [ebx - 0xc]
push edx
add eax, 0xc
lea ecx, [esi + 0x50]
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
mov eax, 0x38
sub eax, ebx
add esp, 0xc
test eax, eax
jle 0x4086ec
push eax
lea eax, [esi + ebx + 0x44]
jmp 0x4086e6
push ebx
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea eax, [esi + 0x50]
push 0x2c
push eax
call fcn.00417350
mov byte [esi + 0x4c], bl
mov ebx, dword [esp + 0x12c]
push 2
lea ebp, [esi + 0x4e]
push ebp
mov byte [esi + 0x4d], bl
call fcn.00417350
mov cl, byte [esp + 0x128]
mov dl, byte [ebp]
mov al, byte [esi + 0x4f]
mov byte [esi + 0x7d], cl
lea ecx, [esp + 0x1c]
not dl
not al
push 0x8030b8
shr ebx, 8
push ecx
mov byte [esi + 0x7c], bl
mov byte [esi + 0x7e], dl
mov byte [esi + 0x7f], al
call fcn.004168c0
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x10]
mov edx, dword [edi + 8]
mov dword [esp + 0xd8], eax
lea eax, [esp + 0xd4]
mov dword [esp + 0xdc], ecx
mov dword [esp + 0xd4], edx
mov edx, dword [edi + 0x14]
push eax
lea ecx, [esp + 0x28]
push ecx
mov dword [esp + 0xe8], edx
call fcn.00416a00
lea edx, [esp + 0xdc]
push edx
lea eax, [esp + 0x30]
push eax
call fcn.004168c0
lea ebx, [esi + 0x70]
lea ecx, [esp + 0x34]
push ebx
push ecx
call fcn.00416b50
add esp, 0x20
mov eax, ebx
mov ecx, 4
jmp 0x4087a0
movzx edx, byte [eax - 0x10]
xor byte [eax], dl
movzx edx, byte [eax - 0xf]
xor byte [eax + 1], dl
movzx edx, byte [eax - 0xe]
xor byte [eax + 2], dl
movzx edx, byte [eax - 0xd]
xor byte [eax + 3], dl
add eax, 4
sub ecx, 1
jne 0x4087a0
lea ebp, [esi + 0x60]
lea eax, [esp + 0x1c]
push ebp
push eax
call fcn.00416b50
add esp, 8
mov eax, ebp
mov ecx, 4
jmp 0x4087e0
movzx edx, byte [eax - 0x10]
xor byte [eax], dl
movzx edx, byte [eax - 0xf]
xor byte [eax + 1], dl
movzx edx, byte [eax - 0xe]
xor byte [eax + 2], dl
movzx edx, byte [eax - 0xd]
xor byte [eax + 3], dl
add eax, 4
sub ecx, 1
jne 0x4087e0
lea edi, [esi + 0x50]
lea eax, [esp + 0x1c]
push edi
push eax
call fcn.00416b50
add esp, 8
mov eax, edi
mov ecx, 4
jmp 0x408820
movzx edx, byte [eax - 0x10]
xor byte [eax], dl
movzx edx, byte [eax - 0xf]
xor byte [eax + 1], dl
movzx edx, byte [eax - 0xe]
xor byte [eax + 2], dl
movzx edx, byte [eax - 0xd]
xor byte [eax + 3], dl
add eax, 4
sub ecx, 1
jne 0x408820
mov eax, dword [esp + 0x10]
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.00416b50
add esp, 8
mov eax, 0x40
push esi
mov word [esi + 0x3c], ax
mov word [esi + 0x3e], ax
call fcn.004141a0
movzx eax, ax
cmp ax, 0x103
jne 0x4088a0
mov edi, 0x112
lea eax, [esp + 0x1c]
push esi
push eax
call fcn.004168c0
add esp, 8
cmp di, 0xc
je 0x408a75
cmp di, 9
je 0x408a75
mov ax, di
jmp 0x408a99
movzx edi, al
test di, di
jne 0x408876
mov edi, dword [esp + 0x10]
lea edx, [esp + 0x1c]
push edi
push edx
call fcn.00416b50
add esp, 8
mov eax, edi
mov ecx, 4
movzx edx, byte [eax + 0x10]
xor byte [eax], dl
movzx edx, byte [eax + 0x11]
xor byte [eax + 1], dl
movzx edx, byte [eax + 0x12]
xor byte [eax + 2], dl
movzx edx, byte [eax + 0x13]
xor byte [eax + 3], dl
add eax, 4
sub ecx, 1
jne 0x4088c1
lea edi, [esi + 0x50]
lea eax, [esp + 0x1c]
push edi
push eax
call fcn.00416b50
add esp, 8
mov eax, edi
mov ecx, 4
lea esp, [esp]
movzx edx, byte [eax + 0x10]
xor byte [eax], dl
movzx edx, byte [eax + 0x11]
xor byte [eax + 1], dl
movzx edx, byte [eax + 0x12]
xor byte [eax + 2], dl
movzx edx, byte [eax + 0x13]
xor byte [eax + 3], dl
add eax, 4
sub ecx, 1
jne 0x408900
lea eax, [esp + 0x1c]
push ebp
push eax
call fcn.00416b50
add esp, 8
mov eax, ebp
mov ecx, 4
jmp 0x408940
movzx edx, byte [eax + 0x10]
xor byte [eax], dl
movzx edx, byte [eax + 0x11]
xor byte [eax + 1], dl
movzx edx, byte [eax + 0x12]
xor byte [eax + 2], dl
movzx edx, byte [eax + 0x13]
xor byte [eax + 3], dl
add eax, 4
sub ecx, 1
jne 0x408940
lea eax, [esp + 0x1c]
push ebx
push eax
call fcn.00416b50
lea ecx, [esp + 0x24]
push esi
push ecx
call fcn.004168c0
add esp, 0x10
cmp byte [esi + 0x7d], 0x53
jne case.0x40899b.132
movzx eax, byte [esi + 0x7c]
test al, al
jns 0x4089e1
and eax, 0x9f
add eax, 0xffffff80
cmp eax, 8
ja case.default.0x40899b
jmp dword [eax*4 + 0x408ab4]
mov ax, 0x41
jmp 0x408a99
mov ax, 4
jmp 0x408a99
mov ax, 0xa
jmp 0x408a99
mov ax, 0x15
jmp 0x408a99
mov ax, 0x4a
jmp 0x408a99
mov ax, 0x3f
jmp 0x408a99
mov ax, 0xff
jmp 0x408a99
cmp al, 0x3c
ja case.0x40899b.132
movzx eax, al
cmp eax, dword [esp + 0x140]
ja case.0x40899b.132
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov dword [edx], eax
movzx eax, byte [esi + 0x7c]
mov edx, dword [esp + 0x14]
push eax
push ecx
push edx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
xor ax, ax
jmp 0x408a99
mov ax, 2
jmp 0x408a99
mov dx, word [esp + 0x12c]
push ebx
mov dword [esi + 0x34], ecx
mov cx, word [esp + 0x134]
push eax
lea edi, [esi + 0x40]
push edi
mov word [esi + 0x38], dx
mov word [esi + 0x3a], cx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push esi
mov word [esi + 0x3c], bx
mov word [esi + 0x3e], bp
call fcn.004141a0
movzx eax, ax
cmp ax, 0x103
mov esi, 0x112
je 0x408a64
movzx esi, al
movzx eax, si
test eax, eax
je 0x408a7b
cmp eax, 9
je 0x408a75
cmp eax, 0xc
jne 0x408a90
mov ax, 3
jmp 0x408a99
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
push ebp
push edi
push eax
mov dword [edx], ebp
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ax, si
jmp 0x408a99
mov ax, 0x10
pop ebp
pop ebx
mov ecx, dword [esp + 0x114]
pop edi
pop esi
xor ecx, esp
call fcn.0052bfb9
add esp, 0x110
ret 0x24