Function at 0x401790
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
inc ecx
in al, dx
mov eax, 0xa10000ac
js 0x40174c
cmp ecx, dword [edi]
test eax, eax
mov eax, dword [0xf0c232]
je 0x4017bb
push 0x413c3f
push eax
call fcn.00409c50
xchg bp, ax
je 0x4017b9
sub al, byte [eax + 0x4e8b14eb]
add byte [eax], bl
inc ecx
add byte [edx - 0x7f], dl
cmc
mov byte [eax - 0x55], al
sbb al, 0xfe
mov ecx, dword [edi - 0xc]
pop ss
inc ecx
jmp 0x4017cf
mov ecx, dword [esi]
sbb byte [ecx], al
push edx
xor ebp, 0x1cab4088
dec byte [ebx + 0x4117f44f]
mov dword ds:[0x8c41182a], eax
mov dword [0x8c41182a], eax
mov eax, dword [0xec1988]
push ebx
push esi
sbb dword [0xd5c164], esi
mov word [0xb00beb], cx
test eax, eax
push edi
jne 0x40184a
adc dword [0x68411864], edx
push edx
push 0x874d498
call esi
mov eax, dword [0x410278]
sbb byte [eax], ah
or byte [eax + eax*8], al
xor eax, 0x274a115
inc ecx
add byte [eax + 0x68], dl
inc eax
add dword [ecx], 0x35d48468
add bh, bh
salc
push 0x418140
push 0x35d484
call esi
add esp, 0xc
mov eax, dword [0x40d014]
test eax, eax
mov eax, 0xc240d480
pop es
add eax, 0x40d47cb8
add byte [ecx + 0x39], cl
insb byte es:[edi], dx
aam 0x40
add byte [edx], dl
salc
mov ecx, dword [sym.imp.MSVCRT.dll__iob]
sub esp, 0x20
push ecx
call dword [0x40c17b]
jp 0x40180d
or al, 0x8b
adc eax, 0x3d40d0ab
mov edx, dword [0x3d40d0ab]
mov esi, dword [0x3f1af358]
btr dword [eax], esi
add byte [edx - 1], dl
push edi
mov dword [0x410bb0], eax
mov eax, dword [0xffcad010]
push 0xffffffffffffffd0
daa
call esi
or al, 0xd
dec esp
inc eax
inc ecx
add byte [ecx + 0x40d0b815], ch
add byte [ebx - 0x37d8ef34], al
or eax, dword [ecx]
test dword [eax], 0xf8a45251
pop ebp
pop ds
add al, ch
xor dword [edi - 0x3f7aff2b], 0xdbe80e74
push eax
aam 0x71
add al, ch
mov byte [0x83000005], al
les ecx, [eax]
mov eax, dword [0x41027c]
push 0xffffffffffffffc0
fidiv dword [0x680baca1]
add byte [edx], ch
or eax, 0x59410b9c
mov edx, 0x41408909
add byte [edx], ch
push 0x40599c
stosd dword es:[edi], eax
mov eax, dword [0x41404c]
test eax, 0x40d44801
add byte [edx + 0x50], dl
call 0x3e411790
add esp, 0x44
mov dword [0x41d348], eax
jmp 0x4018e4
mov esp, dword [esi - 0x80]
add al, byte [ecx + 0x31]
test ecx, ecx
jne 0x401966
add byte [edx], 0x41
xor dword [ebp - 0x74878a37], eax
in eax, 0x4c
mov esp, ebp
dec esp
inc eax
inc ecx
add byte [edx - 0x1e], ch
push 0x40d19c
push 0x4dd444
push 0xd2d428
dec edi
push ecx
call 0x7d265890
add esp, 0x18
mov dword [0xce415f48], eax
mov ecx, dword [0x41021e]
je 0x4018e5
jne 0x40193a
mov edx, dword [0x414085]
push 0
push str.Accept:___r_n
push eax
push edx
call 0x410290
sbb dword [ecx + 0x4048a310], 0x41
add byte [ebx + 0x3a02600d], cl
add byte [ebp + 0x196383c9], al
adc eax, 0x410268
mov esi, 0x3d303
mov ecx, dword [0x3a0260]
test ecx, ecx
and dword [ebx + 0x19], 0x15
push 0xbe004102
add edx, ebx
add eax, dword [eax]
test edx, edx
jne 0x401958
mov esi, 0x4102f2
mov edx, dword [0x830278]
test dword [esi - 0x75], esi
adc eax, 0x414040
pop eax
push es
mov edx, dword [0x4117e4]
test ecx, ecx
mov ecx, 0x8240d3f8
je 0x401932
mov ecx, 0x43d3f0
push eax
mov eax, dword [0x410a0f]
push eax
add byte [ecx], dl
mov al, 0x41
add byte [eax + 0x56], dl
push edx
push ecx
add ecx, dword [0xa4405ab2]
push 0x40bfd4
push 0xd070800
push ecx
call 0x6f408680
test ah, al
and al, 0xc2
ror dword [edx + 0x41384015], cl
add bh, bh
inc eax
cmp byte [ecx], al
test dl, dl
jne 0x4019cd
mov edi, 0x40c7c8
cmp dword [0x610268], edx
mov esi, 0x40d9af
test edx, edx
jne 0x4019cf
mov esi, 0xe74f02d4
dec edi
out 0x8b, eax
adc eax, 0x410278
mov edx, dword [0x410278]
test edx, edx
pop edi
sbb dword [eax + 0x40], eax
inc ecx
add byte [ebp + 6], dl
mov edx, dword [0x717e4]
cmp ecx, 1
mov ecx, 0x40d3dc
je 0x401a5d
mov ecx, 0x2f40d3bc
mov eax, dword [0x410270]
invalid
inc eax
add dl, ah
push eax
push str.INFO:__s_header___n____n_s_n____n
call dword [sym.imp.MSVCRT.dll_printf]
add esp, 0xffffffbf
dec edi
cmp eax, 0x40d030
cmp dword [ebx - 1], 0x33
pop ecx
imul dword [esi + 0x410207a1]
add bh, dh
mov ah, 0x49
cmp eax, 0xffffff98
mov dword [0xf919177c], ecx
jo 0x401a5d
mov ebx, 0x25cb7802
std
sbb al, 0x27
insb byte es:[edi], dx
call dword [0x40c17f]
add esp, 4
test eax, eax
jne 0x401ac5
mov edx, dword [sym.imp.MSVCRT.dll__iob]
push 0xb040d3a9
xchg edx, eax
inc ecx
push edx
call dword [0x33c180]
or dword [edi*2 - 0x74a4a1a1], 0xffffffe5
sar byte [eax - 0x2fcfea75], cl
inc eax
add byte [ebx + 0x420e91f0], cl
mov edx, dword [0x40d030]
mov esi, eax
xchg ecx, eax
push cs
inc edx
mov byte [esi], cl
inc esi
test cl, cl
jne 0x401acd
mov edx, dword [0xd44117ec]
mov ecx, dword [0x7e410270]
mov esi, dword [0xf96f3820]
les esp, [esi]
add bh, byte [eax - 0x2f]
xor eax, 0xa5f3c9e9
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [0xbed09d], eax
mov eax, dword [0x4041404c]
mov dx, word [edx - 0x4c]
or esi, dword [edi]
mov edx, dword [0x411808]
push eax
push 0
imul byte [edx]
push edx
push 0x4117fc
call fcn.00406fe4
dec eax
invalid