Function at 0x4096b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x108
cmp dword [ecx + 0x20], 0
je 0x409b0b
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00405e30
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 8], eax
movzx eax, byte [esi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 2], al
mov byte [esp + 3], 0
mov dword [esp + 0xc], edx
lea eax, [edx + 0x400]
push eax
call fcn.00407fc0
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0x6c], 0xfff3eef0
mov byte [esp + 0x70], 0x1c
mov ebp, 0xb0188cd8
mov edi, 0x4fe77327
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ebp + 0x4fe77394]
mov eax, ebp
xor eax, edx
or eax, edi
mov ebx, eax
not ebx
mov ecx, ebx
and ecx, 0xdd
and eax, 2
imul eax, ecx
mov ecx, ebx
and ecx, 2
or ebx, 2
imul ebx, ecx
mov ecx, edx
sub ecx, eax
sub ecx, ebx
add ecx, ebp
add ecx, 0x6d
add ebx, eax
sub ebx, edx
lea eax, [edi + ebx]
add eax, 0x13
and eax, 0xae
and ecx, 0x51
sub ecx, eax
inc cl
mov byte [esp + ebp + 0x4fe77394], cl
inc ebp
dec edi
cmp ebp, 0xb0188cdd
jne 0x409740
lea ebx, [esp + 0x6c]
mov ecx, esi
push 0x447204
push ebx
mov ebp, dword [esp + 0xc]
push ebp
call fcn.00408fa0
mov dword [esp + 0x6c], 0xe6017d73
mov eax, 0x9abced3b
movzx ecx, byte [esp + eax + 0x65431331]
xor ecx, eax
add ecx, 0x2a189627
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax + 0x65431331], cl
inc eax
cmp eax, 0x9abced3f
jne 0x4097c0
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
push ebp
call fcn.00408fa0
mov edi, dword [str.5FwhVM__WEB1]
mov dword [esp + 0x6c], 0x2e49b5b7
xor ecx, ecx
mov dl, 0x4c
nop
nop
nop
nop
nop
nop
mov dh, byte [esp + ecx + 0x6c]
xor dh, dl
mov al, 0x67
sub al, dh
mov byte [esp + ecx + 0x6c], al
inc ecx
dec dl
cmp ecx, 4
jne 0x409810
mov ecx, esi
push edi
push ebx
push ebp
call fcn.00408fa0
mov dword [esp + 0x6c], 0x162f152c
mov dword [esp + 0x70], 0x2510291c
mov dword [esp + 0x74], 0xf0e0924
mov byte [esp + 0x78], 0xab
xor eax, eax
nop
mov ecx, eax
add cl, 0x87
xor cl, byte [esp + eax + 0x6c]
add cl, 0xc8
mov byte [esp + eax + 0x6c], cl
inc eax
cmp eax, 0xd
jne 0x409850
mov dword [esp + 0x12], 0x14e7f1f0
mov eax, 0x5c93d1d9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x5c93d1c7]
xor ecx, eax
lea edx, [ecx + 0x1b617137]
lea edi, [ecx*2 + 0x36c2e26e]
and edi, 2
mov ebp, edi
and ebp, edx
and edx, 0xfe
and ecx, 1
or ecx, edx
xor ecx, edi
lea ecx, [ecx + ebp*2]
mov byte [esp + eax - 0x5c93d1c7], cl
inc eax
cmp eax, 0x5c93d1dd
jne 0x409880
lea ebp, [esp + 0x12]
mov ecx, esi
push ebx
push ebp
mov edi, dword [esp + 0xc]
push edi
call fcn.00408fa0
mov dword [esp + 0x6c], 0x8b71758d
mov byte [esp + 0x70], 0xef
mov eax, 0x60e19e73
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x60e19e07]
xor ecx, eax
mov edx, ecx
xor edx, 0x70cf399
and ecx, 0xe0e10c66
add ecx, ecx
sub ecx, edx
mov edx, ecx
and edx, 1
not ecx
or ecx, 1
sub edx, ecx
mov byte [esp + eax - 0x60e19e07], dl
inc eax
cmp eax, 0x60e19e78
jne 0x4098f0
mov ecx, esi
push dword [esp + 0xc]
push dword [esp + 0xc]
push ebx
push edi
call fcn.00409270
mov dword [esp + 0x12], 0xe41ce222
mov dword [esp + 0x16], 0xf813e61b
mov dword [esp + 0x1a], 0xfc05fa1c
mov dword [esp + 0x1e], 0xf0c2fe09
mov dword [esp + 0x22], 0xf47af225
mov dword [esp + 0x26], 0x8812f605
mov dword [esp + 0x2a], 0x8cab8a43
mov dword [esp + 0x2e], 0x807a8e70
mov dword [esp + 0x32], 0x8477827d
mov dword [esp + 0x36], 0x9877867c
mov dword [esp + 0x3a], 0x9c699a78
mov dword [esp + 0x3e], 0x90a09e69
mov dword [esp + 0x42], 0x946c9277
mov dword [esp + 0x46], 0xa86a9667
mov dword [esp + 0x4a], 0xac4faa94
mov dword [esp + 0x4e], 0xa05bae4c
mov dword [esp + 0x52], 0xa468a240
mov dword [esp + 0x56], 0xb845a685
mov dword [esp + 0x5a], 0xbc4eba46
mov dword [esp + 0x5e], 0xb05bbe43
mov dword [esp + 0x62], 0xb441b250
mov dword [esp + 0x66], 0x487ab63c
mov word [esp + 0x6a], 0x4a49
mov eax, 0x1045a7a9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x1045a797]
xor edx, eax
mov ecx, edx
and ecx, 0x37
add ecx, ecx
xor edx, 0x48
sub ecx, edx
mov byte [esp + eax - 0x1045a797], cl
inc eax
cmp eax, 0x1045a803
jne 0x409a00
movzx eax, word [esp + 0x12]
test ax, ax
je 0x409a51
lea ebx, [esp + 0x6c]
lea ecx, [esp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409a40
mov word [ebx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409a81
lea eax, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebx], cx
add ebx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409a70
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0x12], 0x6ac868a8
mov dword [esp + 0x16], 0x6ef46cfb
mov word [esp + 0x1a], 0x606f
xor ecx, ecx
nop
nop
nop
nop
mov edx, ecx
add dl, 0xf
xor dl, byte [esp + ecx + 0x12]
add dl, 0x88
mov byte [esp + ecx + 0x12], dl
inc ecx
cmp ecx, 0xa
jne 0x409ab0
lea ecx, [esp + 0x6c]
push 0x493e0
push eax
push edi
push 0
push 0
push ecx
push ebp
call fcn.0040c4e0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00407fd0
add esp, 4
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x80]
mov edx, ecx
xor edx, eax
and ecx, eax
lea eax, [edx + ecx*2]
mov dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x409b0d
mov bl, 1
mov eax, ebx
add esp, 0x108
pop esi
pop edi
pop ebx
pop ebp
ret