Function at 0x40c833
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x106e4
call fcn.0042f8a0
mov eax, dword [0x4c2174]
push ebx
push esi
inc eax
mov esi, ecx
push edi
mov dword [esp + 0x1c], esi
mov dword [0x4c2174], eax
cmp eax, 0x30
jge 0x473095
xor ebx, ebx
mov eax, ebx
lea ecx, [esp + 0x98]
mov dword [esp + 0x14], eax
mov byte [esp + 0x13], 1
mov byte [esp + 0x23], 1
mov byte [esp + 0x24], bl
call fcn.004048ba
mov edi, dword [ebp + 8]
push 0x2000
push edi
lea ecx, [esp + 0xa0]
call fcn.00404550
test al, al
je 0x4730af
lea ecx, [esp + 0xd0]
call fcn.0040d7f7
lea ecx, [esp + 0xd0]
call fcn.0041e968
lea ecx, [esp + 0x88]
call fcn.0040d7f7
lea edx, [esp + 0x88]
mov ecx, edi
call fcn.0040660f
mov edi, dword [esp + 0xa8]
mov esi, dword [esp + 0xac]
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0xa0]
mov dword [esp + 0x4c], 0x18
call fcn.0041eb66
push ebx
push esi
push edi
lea ecx, [esp + 0xa4]
call fcn.004046ce
cmp dword [esp + 0x60], 0x21335541
je 0x4730c9
lea eax, [esp + 0x2f0]
push eax
lea eax, [esp + 0x4f4]
push eax
lea eax, [esp + 0xf8]
push eax
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x98]
call fcn.00421dfc
add esp, 0x14
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x6f4]
push eax
call fcn.00420d23
lea eax, [esp + 0xf8]
push eax
lea eax, [esp + 0x6fc]
push eax
call fcn.00420cf4
add esp, 0x10
lea eax, [esp + 0x6f0]
push eax
call dword [0x48d318]
push 0x2000
call fcn.0041f4ea
pop ecx
push eax
lea ecx, [esp + 0x48]
call fcn.004047b7
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x1c]
cmp byte [esp + 0x23], 1
jne 0x40ca9d
push ecx
push esi
lea ecx, [esp + 0xa0]
call fcn.0040b337
test al, al
je 0x40ca9d
mov eax, dword [esp + 0x14]
inc eax
push esi
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], eax
call fcn.0041c258
push esi
call fcn.0040cb93
push esi
test al, al
je 0x47346c
call fcn.0040cb5a
push esi
mov byte [esp + 0x26], bl
call fcn.00420cdb
pop ecx
mov dword [esp + 0x34], eax
cmp eax, 2
jle 0x40ca14
mov ax, word [esi + eax*2 - 4]
push 0x7f
pop ecx
and ax, cx
movzx eax, ax
push eax
call fcn.004216d0
pop ecx
test eax, eax
jne 0x40cb06
cmp byte [esp + 0x24], 1
je 0x47345f
push dword [esp + 0x88]
lea ecx, [esp + 0x6c]
call fcn.0040ce19
lea eax, [esp + 0x98]
push eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x70]
push eax
push esi
mov ecx, edi
call int.0040cc24
lea ecx, [esp + 0x68]
mov dword [esp + 0x34], eax
call fcn.0040cb37
mov eax, dword [esp + 0x34]
test eax, eax
je 0x40cb31
cmp eax, 1
jle 0x40cb24
cmp eax, 3
jg 0x40cb1b
push dword [ebp + 0xc]
mov eax, dword [esp + 0x20]
push esi
push eax
mov ecx, edi
mov dword [esp + 0x20], eax
call fcn.0041c682
cmp byte [esp + 0x22], 1
sete byte [esp + 0x24]
cmp byte [esp + 0x13], 1
je 0x40c99b
lea ecx, [esp + 0x98]
call fcn.00404907
push dword [esp + 0xd0]
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], ebx
call dword [0x48d318]
mov bl, byte [esp + 0x13]
lea ecx, [esp + 0x44]
call fcn.004047e2
lea ecx, [esp + 0x88]
call fcn.0040cb37
lea ecx, [esp + 0xd0]
call fcn.0040cb37
lea ecx, [esp + 0x98]
call fcn.004048dd
dec dword [0x4c2174]
pop edi
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [esp + 0x34]
cmp word [esi + eax*2 - 2], 0x5f
jne 0x40ca14
jmp 0x47344e
cmp eax, 4
jne 0x40cb24
mov byte [esp + 0x23], bl
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
jmp 0x40ca88
mov byte [esp + 0x13], bl
jmp 0x40cb24
enter 0xfffffffffffff7a1, 0xffffffffffffff89
cmpsd dword [esi], dword es:[edi]
pushal
das
and bl, dl
mov dword [edx + 0x70], edx
pop edi
mov dword [0x5a04c277], eax
mov word [ebp - 0x60], gs
jmp 0xb3764271
movsd dword es:[edi], dword [esi]
mov edi, 0x6e4053a7
jl 0x473116
invalid
cmp al, al
mov edi, 0x8c429ea3
loop 0x47312d
dec ecx
sub eax, 0xaeda6905
je 0x47309e
pushal
leave
stosd dword es:[edi], eax
in eax, 0xa5
lcall 0xb22d, 0xb162
jmp 0x473128
dec edi
lodsb al, byte [esi]
inc ecx
pop es
xchg ebx, eax
out 0xd8, al
push ebx
sub ebx, dword [ebx]
push cs
out dx, eax
invalid
inc ebx
cmc
jo 0x473181
jb 0x473140
adc bh, byte [esi]
invalid
invalid
salc
adc dh, byte [esp + ebx*2 + 0x15ee3f9e]
adc dword [ebp + 0x6e], ecx
scasb al, byte es:[edi]
add esp, dword [ebx + 0x12]
add al, 0xc5
invalid
adc eax, dword [esi + edi*2 - 0x675ac835]
push esi
lds edi, [ebx + 0x69]
xchg esp, eax
popal
adc dword [ebx - 0x19], eax
cmp dh, ch
sbb eax, 0xe5b441bb
cmp ch, ah
imul edx, dword [edi + 0x21cd3905], 0x9bf7442d
wait
loope 0x47315f
retf 0x5a8e
inc ebx
and eax, 0x2f180f3e
insb byte es:[edi], dx
jno 0x4733e0
and eax, 0x5a9d77a8
imul ebp, ecx, 0xffffffd4
cmpsd dword [esi], dword es:[edi]
aam 0xa7
adc eax, 0x9a1e2b32
mov dh, 0xfc
ja 0x4733c9
lcall 0x6726, 0xe477fcb6
das
das
pushfd
movsb byte es:[edi], byte [esi]
xor byte [ecx - 0xf2af2ee], bl
dec edx
dec edx
sbb bl, byte [edi + 0x7269275a]
test dword [edi], ebp
dec dword [ebx - 0x4c]
stc
cdq
jge 0x4733d8
inc edx
invalid
xor eax, dword [esi + 0x51]
cwde
and byte [ecx - 0x5d], bh
mov esp, 0xaa66a0a2
jo 0x473445
je 0x4733da
int3
movsb byte es:[edi], byte [esi]
outsb dx, byte [esi]
cmpsd dword [esi], dword es:[edi]
and eax, 0xc6362522
xor eax, 0xcb612db8
je 0x4734c0
mov eax, 0x74cb612d
insb byte es:[edi], dx
inc eax
pop ss
loop 0x4734d4
mov dh, 0xbd
jbe 0x473439
outsd dx, dword [esi]
fdivr st(7), st(0)
jb 0x473432
mov al, 0xbb
fdivr st(1)
fisubr word [edx - 0x11]