Function at 0x40751a
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8c
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dl, byte [ecx]
sub dl, 2
mov dword [ebp - 0x40], eax
xor eax, eax
neg dl
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x44], eax
mov eax, dword [ebp + 8]
push ebx
sbb edx, edx
not edx
and edx, dword [0x46a4f8]
shl eax, 4
mov dword [ebp - 0x60], edx
mov edx, dword [ecx + 4]
mov eax, dword [eax + edx + 0xc]
push esi
push edi
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x48], 0x45a5d8
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
cmp dword [eax + 8], 0x38
je 0x408b1d
push 0x10
pop eax
call fcn.004581a6
mov esi, dword [ebp - 8]
mov ebx, esp
mov edi, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [ebx + 8]
cmp eax, 6
jge 0x4077fe
cmp eax, 5
jne 0x4089c8
mov eax, dword [ebx + 4]
mov esi, dword [ebx]
xor edi, edi
cmp eax, edi
jne 0x4076dd
mov al, byte [esi + 0x17]
test al, al
jne 0x4075bb
mov eax, dword [esi + 0xc]
mov al, byte [eax + 0x17]
movzx eax, al
dec eax
je 0x407618
sub eax, 3
jne 0x407627
mov eax, dword [esi + 0x10]
cmp eax, 0x408ff4
jne 0x4075e5
mov eax, dword [0x465108]
mov ecx, dword [eax + 8]
mov dword [ebx], ecx
mov eax, dword [eax + 0xc]
mov dword [ebx + 4], eax
jmp 0x407ea6
cmp eax, 0x40901d
jne 0x407601
mov eax, dword [esi + 0x18]
cmp byte [eax + 4], 0
jne 0x407e9d
xor eax, eax
inc eax
jmp 0x407e9f
cmp eax, 0x418727
jne 0x407627
mov eax, dword [0x465108]
mov eax, dword [eax + 0x38]
mov dword [ebx + 4], edi
jmp 0x407ea4
mov ecx, esi
call fcn.00401ef9
test eax, eax
jne 0x4089c1
push edi
mov ecx, esi
call fcn.0040263a
mov esi, eax
inc esi
cmp esi, 1
jne 0x407654
mov eax, dword [ebx]
mov cl, byte [eax + 0x17]
test cl, cl
jne 0x407646
mov eax, dword [eax + 0xc]
mov cl, byte [eax + 0x17]
cmp cl, 1
je 0x4089c1
jmp 0x408928
mov eax, dword [ebp + 0x14]
mov eax, dword [eax]
sub eax, dword [ebp - 0x40]
mov ecx, dword [ebp + 0x18]
add eax, dword [ecx]
cmp esi, eax
ja 0x40766d
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x40], esi
jmp 0x4076bc
cmp esi, 0x1001
jae 0x407693
cmp dword [ebp - 0x58], 0x9c40
jae 0x407693
mov eax, esi
add eax, 3
and eax, 0xfffffffc
call fcn.004581a6
add dword [ebp - 0x58], esi
mov dword [ebp - 0x10], esp
jmp 0x4076bf
cmp dword [ebp - 0x18], 0xc8
je 0x408a3f
push esi
call fcn.0043f5e0
cmp eax, edi
pop ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebp + ecx*4 - 0x48c], eax
je 0x408a3f
inc dword [ebp - 0x18]
mov dword [ebp - 0x10], eax
push dword [ebp - 0x10]
mov ecx, dword [ebx]
call fcn.0040263a
mov eax, dword [ebp - 0x10]
mov dword [ebx], eax
mov dword [ebx + 4], edi
mov dword [ebx + 8], 4
jmp 0x4089c8
xor edi, edi
mov dword [ebx], 0x45a5d8
mov dword [ebx + 8], edi
cmp dword [esi], edi
mov dword [ebp - 0xc], eax
je 0x407763
jmp 0x407707
cmp edi, 0xfd
jge 0x407713
mov cl, byte [eax]
mov byte [ebp + edi - 0x16c], cl
inc edi
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [esi]
jb 0x4076f1
cmp edi, 0xfd
jl 0x407717
cmp eax, dword [esi]
jb 0x40777f
mov ecx, dword [esi + 4]
push 0
call fcn.0040263a
mov ecx, 0xfd
sub ecx, edi
cmp eax, ecx
ja 0x40777f
mov ecx, dword [esi + 4]
lea eax, [ebp + edi - 0x16c]
push eax
call fcn.0040263a
add edi, eax
movzx eax, word [esi + 0xa]
add dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
add esi, 0xc
cmp dword [esi], 0
jne 0x407707
jmp 0x407763
cmp edi, 0xfd
jge 0x407771
mov byte [ebp + edi - 0x16c], cl
inc edi
inc eax
mov cl, byte [eax]
test cl, cl
jne 0x407752
cmp edi, 0xfd
jl 0x407776
cmp byte [eax], 0
jne 0x40777f
test edi, edi
jne 0x407793
jmp 0x40777f
add esi, 0xc
cmp dword [esi], 0
jne 0x40777c
cmp byte [esi + 8], 0
jne 0x408b81
jmp 0x4089c8
mov byte [ebp + edi - 0x16c], 0
cmp byte [esi + 8], 0
mov ecx, 0x467ce0
lea eax, [ebp - 0x16c]
je 0x4077d0
push edi
push eax
call fcn.0044e872
test eax, eax
mov dword [esi + 4], eax
je 0x408b81
movzx ecx, byte [esi + 9]
cmp ecx, dword [eax + 0x10]
jl 0x408b81
jmp 0x408a33
push 0
push 3
push edi
push eax
call fcn.0040c04d
test eax, eax
je 0x408c6d
mov cl, byte [eax + 0x17]
test cl, cl
jne 0x4077f0
mov ecx, dword [eax + 0xc]
mov cl, byte [ecx + 0x17]
cmp cl, 1
jne 0x4089c8
jmp 0x40884d
cmp eax, 0x37
jne 0x407d3f
mov eax, dword [ebx]
movzx edi, byte [eax + 9]
cmp edi, dword [ebp - 4]
mov esi, dword [eax + 4]
mov dword [ebp - 0xc], esi
jg 0x408b81
sub dword [ebp - 4], edi
cmp byte [esi + 0x31], 0
je 0x40796e
mov dword [ebx + 8], 1
mov eax, dword [esi]
mov dword [ebx], eax
lea eax, [ebp - 0x16c]
mov dword [ebx + 4], eax
mov eax, dword [ebx + 0xc]
and dword [ebx + 0xc], 0
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 4]
lea eax, [ebp + eax*4 - 0xc8c]
push edi
push eax
push ebx
mov dword [ebp - 0x2c], eax
call dword [esi + 4]
add esp, 0xc
cmp dword [ebp - 4], 0
jne 0x407882
mov eax, dword [ebp - 8]
cmp dword [eax + 0x18], 0x38
jne 0x407882
cmp dword [ebp - 0x60], 0
mov dword [ebp - 0x1c], 1
je 0x407886
mov dword [ebp - 0x64], 1
jmp 0x40788a
and dword [ebp - 0x1c], 0
and dword [ebp - 0x64], 0
mov edx, dword [ebx + 0xc]
xor edi, edi
inc edi
test edx, edx
je 0x40791d
cmp edx, dword [ebx]
jne 0x407903
cmp dword [ebp - 0x64], 0
jne 0x408a4a
mov eax, dword [ebp - 8]
cmp dword [eax + 0x18], 0xc
jne 0x407901
cmp dword [ebp - 4], 0
je 0x407901
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax - 4]
cmp dword [eax + 8], 3
jne 0x407901
mov eax, dword [eax]
mov cl, byte [eax + 0x17]
test cl, cl
jne 0x4078d0
mov eax, dword [eax + 0xc]
mov cl, byte [eax + 0x17]
cmp cl, 1
jne 0x407901
dec dword [ebp - 4]
mov eax, dword [ebp - 4]
push dword [ebx + 4]
mov esi, dword [ebp + eax*4 - 0xc8c]
mov ecx, dword [esi]
push edx
call fcn.0040c67a
add dword [ebp - 8], 0x10
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xc]
mov dword [ebx + 0xc], eax
mov eax, dword [esi]
jmp 0x40884d
xor edi, edi
cmp dword [ebp - 0x18], 0xc8
je 0x408a71
mov eax, dword [ebp - 0x18]
inc dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x48c], edx
mov eax, dword [ebp - 0x34]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
cmp eax, 1
je 0x4089c8
cmp eax, 2
je 0x4089c8
xor ecx, ecx
cmp dword [ebp - 0x64], ecx
jne 0x408a5d
mov eax, dword [ebx]
cmp byte [eax], cl
jne 0x407954
mov dword [ebx], 0x45a5d8
jmp 0x4089c8
cmp edi, ecx
mov dword [ebp - 0x10], eax
je 0x407c71
xor eax, eax
cmp dword [ebp - 0x1c], ecx
sete al
mov edi, eax
jmp 0x407c71
mov eax, dword [esi + 0xc]
cmp edi, eax
mov dword [ebp - 0x1c], eax
jg 0x40797b
mov dword [ebp - 0x1c], edi
cmp dword [esi + 0x28], 0
jle 0x4079f7
mov eax, dword [ebp - 0x1c]
test eax, eax
jle 0x4079de
mov ecx, dword [ebp - 4]
and dword [ebp - 0x38], 0
lea ecx, [ebp + ecx*4 - 0xc8c]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x34]
mov esi, dword [eax]
cmp dword [esi + 8], 3
jne 0x4079ce
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov ecx, dword [ebp - 0x38]
cmp word [eax + ecx + 4], 0
jne 0x4079ce
mov ecx, dword [esi]
push 1
call fcn.00401db7
and dword [esi + 4], 0
mov dword [esi], eax
mov dword [esi + 8], 4
add dword [ebp - 0x34], 4
add dword [ebp - 0x38], 0x10
dec dword [ebp - 0x2c]
jne 0x40799c
mov esi, dword [ebp - 0xc]
lea eax, [ebp - 0x5c]
push eax
lea eax, [ebp - 0x44]
push eax
push esi
call fcn.0040c564
add esp, 0xc
test eax, eax
je 0x408a71
cmp edi, dword [esi + 0xc]
mov dword [ebp - 0x24], edi
jge 0x407a63
rcl ebx, 0xd0
int3
retf 0x84a6
rol bl, 0x46
push edi
pop ebx
arpl word [eax - 5], bp
inc esi
add ebx, dword [esi + 0x2e]
ret
enter 0x31de, 0xffffffffffffffc3
adc bl, 0xb7
jg 0x407d29
xchg edx, eax
ror byte [ebx - 0xaa766b8], 0x49
dec edi
mov eax, 0x1dc410e4
mov bh, 0x28
jmp 0x407d12
in al, 0x10
les ebx, [0xf8eb28b7]
clc
or edx, dword [eax - 0x80]
jo 0x407d14
test ch, 0xf6
jp 0x407d06
pop esi
nop
test byte [eax + 0x1a], al
add dh, bl
wait
stosd dword es:[edi], eax
xchg edi, eax
and byte [ebx - 0x2b8c2bcb], dh
cli
jae 0x407cff
inc edx
cmp byte [esi - 0x64], 0xab
and dh, byte [edx + edx + 0x79fcd265]
fld xword [ebx + 0x79]
jp 0x407dc0
sar ah, cl
jns 0x407d1f
imul edi, dword [ecx + 0x7a], 0x78
ret
jecxz 0x407d19
xchg esi, eax
invalid
fldcw word [eax + 0x2d]
ficom word [eax]
sbb edi, dword [esi]
into
push edx
nop
shl dword [ebx + 0x2fedb5f7], 1
push edi
salc
cmp eax, dword [edi + 0x6e]
pushfd
add al, byte [ecx]
push ss
aad 0x9f
cmpsb byte [esi], byte es:[edi]
loopne 0x407d67
test al, 0xfc
pop esp
ret
mov ebp, 0xd4eebc26
les edi, [eax - 0x54]
mov esp, 0x78c4d4ee
lodsb al, byte [esi]
int3
leave
dec edx
and dword [edi + 0x52], 0xffffff99
push cs
mov byte [0x10704e0], al
dec esi
ja 0x407eb7
and eax, 0x119d9833
invalid
xor ebx, dword [eax + 0x3bc7119d]
xor edi, dword [ebx]
sub byte [0xf9d2ae48], 0x5c
movsd dword es:[edi], dword [esi]
push cs
or eax, 0x714be6bb
and dword [ebx + 0x66197e25], 0x332c171
mov ebp, 0x6db884b8
sahf
pop ds
sub byte [ebx], bh
ret 0xa1c5
push 0x6e4fe44b
push es
salc
insb byte es:[edi], dx
inc esp
add bh, byte [0x39210c6]
xor dword [edx], eax
xor eax, 0xa47d352f
cli
pop ss
dec esi
push esi
int1
test byte [esi - 0x4dbd805b], ah
inc dword [edx]
inc edx
dec eax
dec edx
inc ebp
inc ebp
sub eax, 0xb8fbe57a
pop ds
mov cl, 0xd0
cli
jnp 0x4088d4
add esi, dword [ecx - 0x2af7332]
std
push 0x608eabc2
or esp, dword [eax - 0x16b0542c]
xchg ebp, eax
sbb byte [ebx + 0x1e], al
popfd
push esp
pop ebx
or byte [eax], 0x59
and eax, 0xed020964
inc ecx
ror bh, cl
adc dword [eax], edi
ljmp 0x20cd
xor eax, 0xd7f4f4f1
psllw mm4, mm3
xchg esi, eax
mov dword [0xc3fa6c22], eax
xor dword [esi + 0x65d656e6], edx
mov cl, 0x43
into
fnstcw word [eax]
mov ch, 0xf0
dec esi
sbb eax, 0x55842edb
mov ah, 0x7a
push ds
ror dword [edx], 1
out 0x6e, eax
outsb dx, byte [esi]
pop esi
fsub dword [edx]
or cl, byte [ecx + 0x5df28362]
cmpsb byte [esi], byte es:[edi]
sahf
rcr dh, cl
dec esi
imul edx, esi, 0xffffff93
lodsb al, byte [esi]
mov al, 0xbd
aas
mov al, 0x7f
mov eax, 0xe45eca70
dec ebx
wait
inc edx
pop es
imul edx, eax, 0x4bd5a238
dec edi
salc
xor dh, byte [0xea8407d1]
test dl, ch
dec ebx
stosd dword es:[edi], eax
aam 0xb1
out dx, al
sub edi, dword [ebx + 0x1b42d6ef]
mov dword [0x540879ed], eax
add edx, dword [ecx]
mov dl, byte [edi - 0x2e2d8c48]
loop 0x4088fb
scasb al, byte es:[edi]
ret 0x87c1
push ebp
and eax, 0xc3e17232
dec edx
sal bh, cl
invalid
ret
inc ebx
inc ecx
xchg ecx, eax
push eax
out dx, eax
mov ecx, 0xa4c92c20
push 0xffffffffffffffc1
or al, 2
sub dword [edx], esi
sbb ebp, edi
or eax, 0x28803f0d
xchg dword [esi], ecx
mov bl, 0x4e
xor eax, 0x8852a4ed
sar esp, cl
lcall 0x5321, 0x8971a308
adc bl, byte [eax + 0x25]
cmp ecx, dword [edx + 0x5847f02f]
jge 0x4089bc
mov ch, byte [edi]
invalid
jl 0x408a3e
daa
pop es
pop ecx
loope 0x4089f5
lodsd eax, dword [esi]
xchg edx, eax
ret
xchg edx, eax
and eax, 0xf4418431
ret 0xa2d6
xor dword [0x49ef1ab1], 0x265017b4
aas
mov ah, 0x17
push eax
aas
dec eax
add dl, byte [ecx]
and dword [esi + 0x30], edi
sbb al, 0xf0
cmp eax, 0xb77237c
int1
sbb al, 0x1d
add dword [ecx - 0x6f], edx
invalid
push ecx
xchg ecx, eax
and eax, 0x392d27b6
add byte [ebp + ebx*2 - 0x59], 0xa0
mov esp, dword [eax]
jns 0x408a1c
jle 0x408a2d
pushfd
pushfd
add cl, byte [ebp - 0x11]
or dword [ecx], ebx
lds eax, [ebp + 0xf]
out 0xcf, eax
fcomp qword [ecx + 0x40787ebf]
stosd dword es:[edi], eax
iretd
adc dword [0xb4a96c76], edx
push ss
mov bl, byte [ebp - 0x21c4cbba]
fld xword [ebx + 0x41e448a9]
adc byte [ecx], ah
invalid
pushal
or ah, byte [ebp - 0x2e0d79bd]
cmpsb byte [esi], byte es:[edi]
bnd ret 0xbfd3
add eax, dword [ebp - 0x46]
movsd dword es:[edi], dword [esi]
adc dword [eax + 0x32], 0x20122d21
jg 0x408b5e
clc
mov dword [0x9678b11c], eax
mov cl, 0x78
xchg esi, eax
adc eax, 0x6da64b2e
mov cl, 0xe7
xchg edx, eax
and al, 0x86
ret 0x6f72
or esp, ecx
add eax, 0xd4c6da48
xchg edi, eax
xchg esp, eax
frstor dword [ecx]
xchg dword [esi + esi*4 + 0x3943d1a1], ecx
sbb al, byte [esi]
sub eax, 0x6596b4e0
pop esi
mov edx, 0x333543f
lds eax, [ebx + 0x56]
mov byte [0x56e75749], al
popfd
cmp dword [eax - 0x66], esp
loopne 0x408b4e
or dword [0x83b063c8], edx
xor dword [ebp + edx*2 - 0x32dae3c9], eax
sub eax, 0xccffb003
mov al, byte [eax + 0x17f0f191]
jmp 0x408bc9
je 0x408c1f
dec eax
dec esi
invalid
in al, 0xcb
push 0x23
mov es, esi
stosb byte es:[edi], al
loop 0x408c2d
leave
pushfd
mov esp, ds
fdiv qword [ebx + 0x5e]
fild dword [ecx]
ret 0x40cb
pop es
call 0x67371f84
int1
lds ebx, [0xa263e121]
mov esi, 0x2488b296
and bl, dh
cli
and al, 0x22
fdivp st(2)
mov eax, 0x202c4065
loopne 0x408c5c
sub edx, eax
je 0x408cd3
mov ah, 0xff
mov dword [0x57b4defc], eax
invalid
clc
add ecx, ebp
stosb byte es:[edi], al
lodsb al, byte [esi]
push ebx
sbb ebx, esi
pop ss
push 0xd5c27501
lahf
sal dword [edi], 0x3a
sbb eax, dword [ebx + 0x6b]
test dword [ebx - 0x1c], esp
mov dword [0x8201b64e], eax
mov edx, 0x50632efa
mov ebx, 0x46107605
adc byte [edi + 0x60], dh
cmp byte [edx + 0x50632efa], 0xbb
add eax, 0x10461076
ja 0x408d5e
scasb al, byte es:[edi]
test al, 0xd5
sub byte [eax - 0x269e8eb0], bl
insd dword es:[edi], dx
lea esi, [edi]
adc cl, bl
mov edx, 0x33409658
push eax
mov byte [eax + edx + 1], al
pop eax
xchg esi, eax
inc eax
xor edx, dword [eax - 0x78]
inc esp
adc byte [ecx], al
dec ebp
fdiv st(3)
out 0x4b, al
pushal
shl byte [eax - 0x3982e2eb], 1
mov dword [ebx - 4], eax
stosd dword es:[edi], eax
loopne 0x408cf0
xchg ecx, eax
dec dword [edi - 0x59852145]
push ecx
dec edi
push edx
out 0xed, al
jne 0x408d98
dec esi
psrld mm2, qword [ebx]
ror byte [edi - 0x38], 0xbf
rol edx, 1
aam 0x31
call 0x5739a340
jae 0x408d0d
mov eax, 0x3b022b4
xor bh, byte [eax - 0x577ea8ce]
lea ebp, [edi + 0x33901cf6]
shl byte [ecx - 0x88ee90], 0xa5
mov eax, dword [0xff771170]
movsd dword es:[edi], dword [esi]
mov byte [0x9343fbc4], al
sahf
imul edx, dword [ecx], 0xf064769a
js 0x408da7
test al, 0x26
add esp, ebp
adc dword [eax + 0x6bf30033], ebx
inc edx
and esi, ebx
inc esp
cmp ah, byte [esi + 0x2f198064]
add dword [ecx - 0x6dbb2e7c], ebx
mov byte [0xf11a1395], al
int1
js 0x408de1
mov al, byte [0xf5a1766f]
cmc
and al, 0x13
or al, ah
invalid
xchg edi, eax
mov al, byte [eax + ebx*4 - 0x4e]
pop ecx
xor edx, dword [edx]
je 0x408d91
adc cl, byte [ebx - 0x16509e54]
std
add byte [ecx + 0x2b50bb1], bl
cwde
add dl, bh
loop 0x408d43
jmp 0xb1d98eb7
jmp 0x408da6
sbb dword [eax], esp
div esp
jne 0x408db5
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
add edx, ecx
mov dl, 0x32
mov esp, 0x7db04951
popal
push ebx
stosb byte es:[edi], al
cdq
pop eax
test eax, 0x1fa3f821
cmp byte [edx + 0x21], ah
xor eax, 0x61cfd64e
ret