Function at 0x40e8d0
Capabilities:
Encode data using xor

Disassembly:
je 0x403181
mov dword [ebp - 4], ecx
push ecx
lea ecx, [ebp - 4]
push ecx
lea ecx, [eax - 0x4b4]
call fcn.004032e8
mov eax, dword [ebx]
lea ecx, [edi - 0x4b0]
mov eax, dword [eax + 4]
add ecx, eax
call int.00403367
mov eax, dword [ebx]
mov eax, dword [eax + 4]
add eax, edi
cmp dword [eax - 0x4b0], 0
jne 0x40314f
call dword [0x48d840]
mov ecx, dword [edi - 0x20]
test ecx, ecx
jne 0x47514e
lea ecx, [edi - 0x2c]
call fcn.004035b0
lea ecx, [edi - 0x3c]
call fcn.0040358e
lea ecx, [edi - 0x5c]
call fcn.0040cb37
lea ecx, [edi - 0x198]
call fcn.004033bc
lea ecx, [edi - 0x1b4]
call fcn.00404052
lea ecx, [edi - 0x2bc]
call fcn.00403438
lea ecx, [edi - 0x2cc]
call fcn.0040cb37
mov ecx, esi
call fcn.00412c20
lea ecx, [edi - 0x2f0]
call fcn.00404052
lea ecx, [edi - 0x300]
call fcn.00403729
lea ecx, [edi - 0x310]
call fcn.00403729
lea ecx, [edi - 0x320]
call fcn.00403729
lea ecx, [edi - 0x32c]
call fcn.00403494
lea ecx, [edi - 0x33c]
call fcn.00403729
lea ecx, [edi - 0x348]
call fcn.004034a2
lea ecx, [edi - 0x354]
call fcn.004034b0
lea ecx, [edi - 0x364]
call fcn.0040cb37
lea ecx, [edi - 0x37c]
call fcn.004034be
lea ecx, [edi - 0x388]
call fcn.004032d3
lea ecx, [edi - 0x394]
call fcn.004032d3
lea ecx, [edi - 0x3dc]
call fcn.0040cb37
lea ecx, [edi - 0x3ec]
call fcn.0040cb37
lea ecx, [edi - 0x3fc]
call fcn.0040cb37
lea ecx, [edi - 0x42c]
call fcn.004034eb
pop edi
pop esi
pop ebx
leave
ret
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xec
push ebx
mov ebx, ecx
push esi
mov eax, dword [ebx + 0xec]
push edi
mov dword [esp + 0x4c], ebx
cmp eax, 0xf3c
jge 0x475162
inc eax
mov dword [ebx + 0xec], eax
cmp eax, 1
add dword [edi], ecx
test byte [esp + eax], cl
invalid
cmp byte [ebx + 0x100], 0
mov byte [ebx + 0x148], 0
jne 0x40ebc7
mov esi, dword [0x48d6dc]
cmp byte [ebx + 0x148], 0
mov edx, 2
jne 0x40ebc7
cmp byte [0x4c10b7], 0
jne 0x47517d
cmp byte [0x4c1660], 0
jne 0x47518f
push 1
push 0
push 0
push 0
lea eax, [esp + 0x60]
push eax
call esi
test eax, eax
jne 0x40ecf0
cmp byte [0x4c10c0], 1
je 0x4751b7
cmp dword [ebx + 0xfc], 1
je 0x4759d0
mov edx, 2
cmp dword [0x4c1104], 0
jne 0x4751d4
cmp byte [0x4c10c5], 1
je 0x475261
cmp dword [ebx + 0x480], 0
je 0x40ea04
cmp byte [0x4c2180], 0
jne 0x40ea04
mov esi, dword [ebx + 0x478]
lea eax, [ebx + 0x478]
mov byte [0x4c2180], 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x10], eax
lea ecx, [ecx]
test esi, esi
jne 0x40ebef
mov ebx, dword [esp + 0x10]
lea esp, [esp]
mov eax, dword [ebx]
mov dword [esp + 0x10], eax
test eax, eax
jne 0x40ec38
mov ebx, dword [esp + 0x4c]
mov byte [0x4c2180], al
cmp dword [esp + 0x1c], eax
jg 0x40ebb4
lea edx, [eax + 2]
cmp byte [0x4c1634], 0
je 0x40eab7
cmp byte [ebx + 0x484], 1
je 0x40eab7
cmp byte [0x4c1660], 1
je 0x40eab7
xor ecx, ecx
mov eax, 8
mul edx
seto cl
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 8
neg ecx
or ecx, eax
push ecx
call fcn.0041f4ea
add esp, 4
xor ecx, ecx
push 4
mov dword [esp + 0x58], eax
mov word [eax], cx
call fcn.0041f4ea
add esp, 4
test eax, eax
je 0x40edfb
mov dword [eax], 1
mov dword [esp + 0x60], eax
lea esp, [esp]
cmp dword [0x4c1654], 0
jne 0x47529d
cmp byte [0x4c1634], 0
je 0x475420
mov esi, dword [esp + 0x60]
dec dword [esi]
jne 0x40eab7
push dword [esp + 0x54]
call fcn.0041f55e
add esp, 4
push esi
call fcn.0041f55e
add esp, 4
mov ecx, ebx
call fcn.0040eed0
cmp al, 1
je 0x40ebb4
cmp byte [0x4c17a8], 0
jne 0x475452
mov eax, dword [ebx + 0xfc]
cmp eax, 7
je 0x475557
cmp eax, 8
je 0x47588f
cmp eax, 9
je 0x47588f
cmp eax, 2
je 0x475733
cmp eax, 3
je 0x475733
cmp eax, 4
je 0x475733
cmp eax, 5
je 0x475733
cmp eax, 6
je 0x475733
mov eax, dword [ebp + 8]
mov dword [ebx + 0xf4], eax
mov esi, eax
inc eax
mov dword [ebp + 8], eax
cmp esi, dword [0x4c2110]
jg 0x475724
test esi, esi
jle 0x475724
shl esi, 4
add esi, dword [0x4c214c]
je 0x475724
mov eax, dword [esi + 4]
xor edx, edx
mov ecx, 1
mov dword [esp + 0x20], edx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], ecx
mov edi, dword [eax]
mov dword [esp + 0x1c], edx
movsx eax, word [edi + 8]
test eax, eax
jne 0x40ec4c
lea eax, [ebp + 8]
push eax
push esi
mov ecx, ebx
call fcn.0040ef00
mov esi, dword [esp + 0x28]
test esi, esi
jne 0x40ecc7
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
cmp ecx, 5
jge 0x40ede8
mov dword [esp + 0x2c], 1
mov dword [esp + 0x20], 0
mov esi, dword [0x48d6dc]
cmp byte [ebx + 0x100], 0
je 0x40e920
mov eax, dword [ebx + 0xec]
mov byte [ebx + 0x148], 0
cmp eax, 1
je 0x40ed5c
dec eax
mov dword [ebx + 0xec], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edi, dword [esi]
cmp byte [edi + 0x11], 0
jne 0x40ec30
jg 0x40ec05
add byte [ebp + 0x39], dh
mov edi, dword [edi + 0x14]
call dword [0x48d7a0]
mov ecx, eax
sub eax, edi
xor edx, edx
cmp edi, 0x7fffffff
ja 0x47527b
rol byte [ecx - 1], cl
jg 0x40ec1c
xchg dword [ecx + 0x66], ebp
push es
add byte [ecx - 7], al
jg 0x40ec90
cmp ecx, 0x7fffffff
ja 0x40ec1b
add dword [ecx - 0x2d7ac175], ebx
cdq
mov edi, dword [esi]
test edx, edx
test edx, edx
jl 0x40ec30
jg 0x40edae
cmp eax, dword [edi + 0x18]
jae 0x40edae
mov esi, dword [esi + 4]
jmp 0x40e9d0
mov ecx, dword [eax]
cmp byte [ecx + 0x11], 0
jne 0x47528c
mov eax, dword [eax + 4]
jmp 0x40e9e2
cmp eax, 0x33
jne 0x40ec5e
push esi
mov ecx, ebx
call fcn.0040f110
jmp 0x40eb87
dec eax
cmp eax, 0x7e
ja case.0x40ec6f.2
movzx eax, byte [eax + 0x40ee18]
jmp dword [eax*4 + 0x40ee04]
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x20]
push eax
push esi
push 0
mov ecx, ebx
call fcn.004145e0
test eax, eax
js 0x40eb87
invalid
mov ecx, dword [esi + 4]
mov eax, dword [esp + 0x1c]
mov eax, dword [ecx + eax*4]
cmp word [eax + 8], 0x7f
je 0x40eb87
jmp 0x475650
lea eax, [esp + 0x4b]
push eax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x24]
push eax
push esi
push 0
mov ecx, ebx
call fcn.00413200
jmp 0x40ec8a
mov eax, dword [esi + 0xc]
dec dword [eax]
mov eax, dword [esi + 0xc]
cmp dword [eax], 0
je 0x47566c
push esi
call fcn.0041f55e
add esp, 4
mov dword [esp + 0x28], 0
jmp 0x40eb93
cmp dword [esp + 0x54], 0x12
je 0x4751a1
lea eax, [esp + 0x50]
push eax
mov ecx, 0x4c1628
call fcn.0041e244
test eax, eax
jne 0x40ed21
lea eax, [esp + 0x50]
push eax
mov ecx, 0x4c1628
call fcn.0041dc5f
test eax, eax
je 0x40ed3a
push 1
push 0
push 0
push 0
lea eax, [esp + 0x60]
push eax
call esi
test eax, eax
je 0x40e963
jmp 0x40ecf0
lea eax, [esp + 0x50]
push eax
call dword [0x48d6d4]
lea eax, [esp + 0x50]
push eax
call dword [0x48d6d0]
jmp 0x40ed21
call fcn.0041e3cd
jmp 0x40e906
mov ecx, ebx
call fcn.00402ff6
cmp byte [ebx + 0x100], 1
je 0x40ebe4
mov ecx, ebx
call 0x41e312
push 0
call dword [0x48d6cc]
push dword [0x4c10e8]
call dword [0x48d624]
mov esi, dword [0x48d6c8]
push 0
push 0
push 0
lea eax, [esp + 0xe8]
push eax
call esi
test eax, eax
jle 0x40ebe4
jmp 0x4759ef
inc dword [esp + 0x1c]
call dword [0x48d7a0]
mov dword [edi + 0x14], eax
push dword [esi]
mov ecx, ebx
call fcn.00401caa
mov ecx, dword [esi]
push 0
mov byte [ecx + 0x10], 1
mov eax, dword [eax + 0x10]
push 1
inc eax
push eax
mov ecx, ebx
call fcn.00402aae
mov eax, dword [esi]
mov byte [eax + 0x10], 0
mov esi, dword [esi + 4]
jmp 0x40e9d0
add ecx, 0xfffffffb
cmp ecx, 0xa
ja case.0x40edf4.6
jmp dword [ecx*4 + 0x40ee98]
xor eax, eax
jmp 0x40ea75
mov eax, dword [edi - 0x67ff031c]
mov eax, dword [eax + ebx*4]
mov edi, dword [esi - 0x7b]
sal byte [edi + eax*2 - 0x7d], 0x38
add byte [ebp + 0x14], dh
mov esi, dword [eax + 4]
mov ecx, esi
call fcn.00404955
inc esi
sub al, 0
and dword [esi + 0x30], 0
jmp 0x475117
mov eax, dword [edi - 0x67ff031c]
mov eax, dword [eax + ebx*4]
push dword [eax]
call fcn.0041f5ac
pop ecx
inc ebx
cmp ebx, dword [edi - 0x67ff0318]
jb 0x4750d2
jmp 0x40314a
mov bh, 0xf8
cld
add byte [eax + 0xbe9e172], bl
loopne 0x475151
dec dword [ebx + 0xfd0487]
cwde
mov eax, dword [eax + esi*4]
mov edi, dword [esi - 0x7b]
mov al, 0x8b
jle 0x4750eb
sal byte [ebp + 0x68], 0
add byte [esi], 0xdc
push 0xffffffffffffffdc
push dword [eax + 0x10]
call dword [0x83d26c]
pop edi
xchg dword [edi*8 + 0x48b9800], eax
mov al, 0x8b
add byte [eax - 0x744ffb75], bl
or byte [ebp + 0x1875ffff], al
int1
out dx, al
js 0x47518a
inc dword [esi + 0x3b]
mov bh, 8
std
add byte [eax - 0x2816828e], bl
invalid
cmp esi, dword [edi - 0x67ff02f8]
jb 0x475214
jmp 0x403173
cmp esp, eax
clc
dec dword [ebx - 0xfe95ff]
adc cl, ch
xor al, ah
clc
jmp [edx - 1]
mov byte [0x4c10b6], 0
call 0x5744ccaa
or eax, 0xffffffff
jmp 0xe940ec34
clc
xchg edi, eax
stc
xor eax, 0xf997b0e9
mov eax, dword [ebx + 0xfcbb]
sti
add byte [edi], cl
test dh, ah
xchg edi, eax
stc
xor eax, 0xf997abe9
xor eax, 0xff0083c6
push eax
push esi
add edi, eax
cmp esp, 0
add bl, bh
mov eax, dword [esp + 0x24]
jmp 0x3640e9b1
cmp esp, 0
add bl, bh
mov eax, dword [esp + 0x24]
jmp 0x3640e9be
and al, 0x4c
push ecx
add dword [ebx + 0x74c0857e], ecx
add al, 0x39
xor byte [eax + ecx + 0x47], dh
add ecx, 4
cmp edi, edx
jb 0x475240
cmp edi, edx
je 0x47529f
mov eax, dword [ebx + 0x4c2401c8]
push ecx
retf
add al, 0xb8
mov eax, dword [eax]
add eax, 8
push eax
call fcn.00401cf8
mov ecx, dword [ebx + 0x4c2401c8]
push ecx
invalid
jmp 0x47523e
adc byte [ecx + 0x50], bl
push esi
add dword [eax + 0x50], eax
mov ecx, ebx
call fcn.00402afc
jmp 0x8c40ec02
stc
mov eax, dword [ebp + 0x35]
fsub st(0), st(0)
jmp 0x475254
inc ebp
xor eax, 0xafebe8dc
mov edx, 0x850f0002
jmp 0x8c40e9dd
lea eax, [esp + 0xf0000a8]
push eax
call 0x5740d737
add al, 0x8c
and al, 0x9c
call 0x4d2fc836
ja 0x475431
xor eax, 0x48483c6
add byte [edi], cl
add dword [ecx - 0x18], edx
adc byte [ecx + 0x50], bl
push esi
add dword [eax + 0x50], eax
mov ecx, ebx
call 0x8c402afc
xor byte [ebx - 0x7c39cf32], cl
test byte [eax + eax], al
verw ax
push cs
into
xor dh, al
add dword [esp + eax - 0x17fff100], 0xe
fdivr st(1)
mov esi, dword [eax]
mov ecx, esi
push eax
call fcn.00444a46
jmp 0x40ec02
call 0x2730108f
jbe 0x475557
xor eax, 0x48583c6
add byte [edi], cl
add dword [ecx - 0x18], edx
adc byte [ecx + 0x50], bl
push esi
add dword [eax + 0x50], eax
mov ecx, ebx
call fcn.00402afc
lea ecx, [esp + 0x756a5b02]
mov byte [ebx + 0xf000485], 0
call 0x8c412c6e
xor byte [ebx - 0x4b17af32], cl
hlt
shr dword [eax], cl
jle 0x47556b
add dword [ecx - 0x858c], ecx
in eax, dx
jmp 0x475602
push ecx
push ebp
and al, 0x10
adc al, 0x50
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
add ecx, ebx
call fcn.00403336
mov byte [ebx + 0x5650ff48], 1
mov dword [ebx - 0x4ffff04], 0xf7990000
jmp 0x8c40ec02
call fcn.0045cbce
push dword [esi - 1]
pop ds
movsx eax, word [edi + 0xa]
push eax
push 0x9900a7
mov ecx, ebx
call 0x8c44ccaa
xor byte [ebx + 0x64e820ce], cl
mov bh, cl
mov esi, dword [eax]
mov ecx, esi
and al, ch
mov bh, cl
invalid
and al, 0x10
inc ecx
add al, 0x8b
in eax, dx
push eax
push ebp
and al, 0x10
and al, ch
push esi
mov ecx, ebx
call fcn.0045e458
jmp 0x8c40ecd8
dec dword [ebp + 0x5024ff44]
lea eax, [edi + edi*8 + 0x24]
push eax
push esi
mov ecx, ebx
call fcn.0040fe7e
jmp 0x8c40ecd8
retf
call 0xf241f5ac
mov ecx, dword [eax]
add al, 0xff
jbe 0x4756d3
call 0xf241f5ac
sahf
cli
int1
mov ecx, dword [eax]
add al, 0xe9
push edx
xchg esi, eax
stc
inc dword [ebp + 0x16840fd2]
xchg ebp, eax
stc
call dword [edx - 1]
adc eax, 0xfffba44c
push dword [esi + ecx*8 + 0x20]
into
and al, ch
rcr byte [esi + 0x88bf1fa], 4
invalid
invalid
into
and al, ch
rcr byte [esi + 0x88bf1fa], 4
jmp 0x40ebf2
stc
call dword [ecx - 0x75]
retf 0xb5e8
test edx, edi
invalid
into
and al, ch
sbb dword [esi + 0x88bf1fa], 0x94bfe904
stc
inc dword [ebp - 0x487bf02e]
xchg esp, eax
stc
call dword [ecx - 0x75]
retf 0xcee8
test edx, edx
je 0x40ebf2
push ecx
mov ecx, edx
call fcn.00439811
jmp 0x40ebf2
add byte [ebp + 0x24], dl
adc byte [eax + edx*2 - 0x75], bh
add eax, edi
test byte [esp + ecx*4], ah
call 0x5b4f13d3
push 0x75
mov ecx, dword [eax + 4]
add ecx, ebx
mov dword [esp - 0x76ffff80], esi
call fcn.0045cd00
call 0xe8c0072d
mov dl, 0xd3
stc
dec dword [ebx + 0x3148b]
add dh, al
or dword [eax - 1], 0x50
push esi
add edi, eax
cmp esp, 0
add bl, bh
add byte [eax], al
cdq
imul eax
into
and ebp, edi
invalid
add eax, 0x8b3bfe00
push ecx
fstp qword [esp + 0x14]
inc ecx
add al, 0x8b
adc al, 0x50
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
add ecx, ebx
call fcn.0045f719
jmp 0x4759fc
popfd
invalid
push eax
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
add ecx, ebx
call fcn.0040336f
push dword [ebx + 0x314]
mov byte [ebx + 0x5650ff48], 1
mov dword [ebx - 0x4ffff04], 0xf7990000
cmp eax, edi
jo 0x4759e8
xor ecx, dword [ebp - 0x66e1b17]
call dword [ecx + 0x55]
and al, 0x10
push eax
push eax
mov eax, dword [ebx]
invalid