Function at 0x2d1e800
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x130
mov dword [esp + 0x10], 0x83548179
mov dword [esp + 0x14], 0x9f219d33
mov dword [esp + 0x18], 0x9b2c993d
mov dword [esp + 0x1c], 0x97249559
mov dword [esp + 0x20], 0x934c9126
mov dword [esp + 0x24], 0x6fe06d31
mov dword [esp + 0x28], 0x6b9769cd
lea eax, [esp + 0x2c]
mov word [esp + 0x2c], 0x656a
mov dword [esp + 0x2e], 0
mov dword [esp + 0x32], 0
mov dword [esp + 0x36], 0
mov dword [esp + 0x3a], 0
mov dword [esp + 0xac], 0
mov ecx, dword [esp + 0xac]
cmp ecx, 0x2d
ja 0x2d1e8c6
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xac]
mov edx, dword [esp + 0xac]
add cl, 0x6b
xor cl, byte [esp + edx + 0x10]
add cl, 0x13
mov edx, dword [esp + 0xac]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 0xac]
mov ecx, dword [esp + 0xac]
cmp ecx, 0x2e
jb 0x2d1e890
lea ebx, [esp + 0x10e]
lea edx, [esp + 0x10]
mov ecx, 7
mov edi, ebx
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x12a]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea edi, [esp + 0x78]
push edi
push 0
push 0
push 0xe
push ebx
push 0
call dword [0x2d4cd60]
mov esi, dword [esp + 0x78]
test esi, esi
jns 0x2d1e912
mov eax, 0xffffffff
jmp 0x2d1e915
lea eax, [esi + esi]
push eax
call fcn.02d39cc0
add esp, 4
push edi
push esi
mov dword [esp + 0x14], eax
push eax
push 0xe
push ebx
push 0
call dword [0x2d4cd60]
mov dword [esp + 0x10], 0xf382cdb0
mov dword [esp + 0x14], 0xf791f191
mov dword [esp + 0x18], 0xfb9bf59b
mov dword [esp + 0x1c], 0xff9bf993
mov dword [esp + 0x20], 0xe3e2fd6b
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0xac], 0
mov ecx, dword [esp + 0xac]
cmp ecx, 0x28
ja 0x2d1e9e5
mov ecx, dword [esp + 0xac]
mov edx, dword [esp + 0xac]
movzx esi, byte [esp + edx + 0x10]
lea edx, [ecx - 0x3ab9eca2]
add ecx, 0x5e
xor ecx, edx
xor edx, esi
and ecx, esi
sub edx, ecx
add dl, 0x6e
mov ecx, dword [esp + 0xac]
mov byte [esp + ecx + 0x10], dl
inc dword [esp + 0xac]
mov ecx, dword [esp + 0xac]
cmp ecx, 0x29
jb 0x2d1e9a0
lea edi, [esp + 0xfa]
lea edx, [esp + 0x10]
mov ecx, 5
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x10e]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [esp + 0x78]
mov ecx, 1
sub ecx, eax
and ecx, 1
and eax, 0xfffffffe
sub eax, ecx
mov ecx, eax
add ecx, 0xa
jns 0x2d1ea2a
mov eax, 0xffffffff
jmp 0x2d1ea2f
add eax, eax
add eax, 0x14
push eax
call fcn.02d39cc0
add esp, 4
mov ebx, eax
mov eax, dword [esp + 0xc]
movzx ecx, word [eax]
mov eax, ebx
test cx, cx
je 0x2d1ea71
mov eax, dword [esp + 0xc]
lea edx, [eax + 2]
mov eax, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x2d1ea60
mov word [eax], 0
movzx ecx, word [esp + 0xfa]
test cx, cx
je 0x2d1eaa1
lea edx, [esp + 0xfc]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x2d1ea90
mov esi, dword [ebp + 8]
mov word [eax], 0
lea eax, [esp + 0xa8]
push eax
push ebx
call fcn.02d3efa0
add esp, 8
not eax
shr eax, 0x1f
mov eax, dword [eax*4 + 0x2d46ab0]
mov ecx, 0xe9b2efbc
xor ecx, dword [case.0x2d1ead4.2]
add eax, ecx
inc eax
jmp eax
inc edx
not esi
add bl, byte [ecx - 0xf]
salc
add bl, byte [edx]
hlt
mov dword [0xd02d70b], eax
add edi, edx
add ch, dl
std
salc
add al, byte [ebx + ebp*8 - 0x151fd2a]
salc
add bl, byte [edx + edi*8]
salc
add dl, byte [edx + 0x7802d6ed]
in al, dx
salc
add al, byte [esi - 2]
salc
add bh, byte [edi]
invalid
in eax, dx
salc
add al, al
push es
xlatb
add al, byte [ecx + 0x802d6fb]
std
salc
add dh, byte [edi]
or edx, edi
add bl, byte [ebx + 0xb]
xlatb
add cl, byte [ebp - 0x4afd2900]
sti
salc
add dh, byte [esi + edi*8 - 0x2a]
add dh, byte [esi - 0x19fd2903]
invalid
out dx, al
salc
add al, cl
invalid
fadd dword [edx]
dec ebp
mov byte [0xabf002d8], al
fadd dword [edx]
push ss
cmpsb byte [esi], byte es:[edi]
fadd dword [edx]
xor dword [eax + ebx*8 - 0x2753ddfe], ebx
add dh, dl
popfd
fadd dword [edx]
cmp eax, 0x2d02d8af
popfd
fadd dword [edx]
mov ds, word [ebp - 0x642ffd28]
fadd dword [edx]
invalid
xchg ebp, eax
cwde
fadd dword [edx]
push ecx
lodsb al, byte [esi]
fadd dword [edx]
mov dword [0x5302d899], eax
sahf
fadd dword [edx]
das
mov eax, dword [0xa52102d8]
fadd dword [edx]
adc bl, byte [edi - 0x6549fd28]
fadd dword [edx]
sbb dword [ecx - 0x50f4fd28], 0xffffffd8
add bl, cl
cmpsb byte [esi], byte es:[edi]
fadd dword [edx]
or ebp, dword [edi - 0x5926fd28]
fadd dword [edx]
mov al, byte [0x5c02d89f]
popfd
fadd dword [edx]
inc ebp
cmpsb byte [esi], byte es:[edi]
fadd dword [edx]
pushal
mov dword [0xa21b02d8], eax
fadd dword [edx]
aad 0x99
fadd dword [edx]
insb byte es:[edi], dx
scasd eax, dword es:[edi]
fadd dword [edx]
int3
fadd dword [edx]
xchg edx, eax
pushfd
fadd dword [edx]
call dword [edi - 0x5a7afd28]
fadd dword [edx]
int3
fadd dword [edx]
rcl byte [edi - 0x562afd28], cl
fadd dword [edx]
insb byte es:[edi], dx
movsb byte es:[edi], byte [esi]
fadd dword [edx]
mov byte [edx], dh
salc
add ah, byte [ecx + 0x4d02d646]
salc
add dl, byte [edx]
cmp dl, dh
add cl, byte [ebx + 0x4e]
salc
add al, byte [esi + ebp - 0x2a]
add dl, byte [ebx + 0x32]
salc
add al, byte [esi]
inc ebp
salc
add bh, byte [ebx + esi + 0x359d02d6]
mov esp, 0x9d02d633
xor eax, 0x30c002d6
salc
mov esp, 0x9d02d633
xor eax, 0x30c002d6
salc
add cl, byte [edx + 0x2f]
salc
add bh, dl
dec ecx
salc
add bl, byte [esi + 0x3502d62c]
sub eax, 0x2eae02d6
scasb al, byte es:[edi]
salc
scasb al, byte es:[edi]
salc
add ah, byte [edi + 0x1702d642]
cmp esi, edx
add bl, byte [ebp + 0x3f]
pop ebp
aas
pop ebp
aas
salc
add ah, ch
dec edi
salc
add cl, byte [ebp + edi - 0x2a]
cmp eax, 0x373b02d6
cmp eax, 0x373b02d6
salc
add bl, byte [ecx + eax*2]
salc
add ah, cl
dec esp
salc
add ch, byte [edi + 0x2002d64d]
xor al, 0xd6
add bh, byte [esi + 0x4f]
salc
add ah, dl
cmp al, 0xd6
add al, byte [eax - 0x54fd29b7]
or byte [ecx - 0x2a], 2
stosd dword es:[edi], eax
or byte [ecx - 0x2a], 2
stosd dword es:[edi], eax
salc
add ch, byte [ebx + 0x5402d645]
inc edx
salc
inc ebp
salc
add dl, byte [edx + eax*2 - 0x2a]
add ch, byte [esi - 0x2cfd29ce]
sub al, 0xd6
add bl, byte [edi + 0x1502d647]
das
salc
add bl, byte [ecx + 0x3b]
salc
add bh, byte [ecx]
salc
add dl, byte [ecx + esi - 0x2a]
add cl, byte [ecx]
dec eax
salc
add al, bl
cmp dl, dh
add cl, byte [edi + 0x44]
salc
add ah, al
salc
add cl, byte [esi + 0x41]
salc
add ah, ch
cmp dh, dl
add dh, bl
cmp edx, esi
add ch, byte [esp + ebp - 0x2a]
add dh, byte [eax + 0x7402d64f]
dec ebx
salc
add ah, byte [edi + 0x2d]
salc
add ch, ch
inc ecx
salc
add bh, byte [eax]
inc edi
salc
add cl, byte [ebx]
dec esp
salc
add al, byte [edi]
salc
add al, byte [ecx - 0x79fd29bd]
xor esi, edx
add ch, ah
das
salc
add bl, byte [edx]
push eax
salc
add ch, dh
xor edx, esi
add cl, byte [eax + edx*2 - 0x2a]
add bh, byte [edx + 0x4d]
salc
add ah, ah
dec esi
salc
add ah, byte [ecx]
xor dh, dl
add al, byte [esp + esi + 0x466c02d6]
salc
add dl, byte [edx]
salc
add cl, byte [esi + 0x441a02d6]
salc
add bl, dl
xor al, 0xd6
add dl, byte [ebx]
dec ebp
salc
add dl, ah
inc edi
salc
add dl, byte [esi + 0x30]
salc
add al, byte [eax + 0x7e02d64e]
cmp esi, edx
add ch, dl
inc eax
salc
add bh, byte [ecx + 0x2e]
salc
add cl, byte [ebx - 0x4cfd29d0]
inc ebx
salc
add ah, byte [edi]
cmp edx, esi
add bl, cl
dec ebx
salc
add al, byte [esi + 0x38]
salc
add ch, al
inc ebx
salc
add dh, byte [edx - 0x48fd29b2]
das
salc
add dl, byte [esi]
dec esi
salc
add bh, byte [edx]
inc esi
salc
add dh, byte [ebx - 0x44fd29c8]
inc ecx
salc
add ch, bl
cmp eax, 0x2d9c02d6
salc
add dh, byte [ebx + 0x48]
salc
add cl, byte [ebx + eax*2 - 0x2a]
add ch, byte [ebx + 0x36]
salc
add al, byte [eax + 0x4c]
salc
add bh, byte [eax]
inc ebp
salc
add ah, al
cmp esi, edx
add dl, byte [edx + 0x34]
salc
add ch, byte [edi]
dec edx
salc
add cl, byte [edi - 0x3bfd29c1]
aas
salc
add ch, byte [ebx]
aas
salc
add dl, dh
inc esi
salc
add bl, byte [esi]
xor dl, dh
add dh, byte [ebp - 0x35fd29c0]
salc
add al, byte [edx + 0x4b]
salc
add dh, ch
cmp dl, dh
add al, byte [ebp + 0x4d]
salc
add cl, byte [edx + 0x33]
salc
add ch, byte [eax + 0x4b02d648]
dec ecx
salc
add dh, dl
xor dh, dl
add dh, byte [eax - 0x1bfd29c4]
dec ebp
salc
add ch, ah
xor esi, edx
add bh, byte [ecx - 0x2efd29cc]
sub eax, 0x3c7802d6
salc
add al, byte [ecx - 0x36fd29bc]
dec edx
salc
add dl, byte [ecx]
cmp dh, dl
add ah, byte [0xc302d63c]
cmp edx, esi
add dl, byte [ebp + 0x7c02d63d]
das
salc
add bh, byte [ebx + 0x38]
salc
add ah, al
xor dl, dh
add ch, byte [edx + 0x47]
salc
add cl, byte [eax]
inc edi
salc
add dl, byte [edi]
inc ebx
salc
add al, byte [edi + 0x3a]
salc
add ch, byte [ebp + 0x45]
salc
add al, byte [ebx + 0x1502d641]
xor edx, esi
add dh, byte [edx + 0x4c]
salc
add ch, byte [esi + 0x1602d650]
dec ecx
salc
add al, dh
inc esp
salc
add ah, cl
aaa
salc
add bh, bh
salc
add cl, byte [esi - 0x2dfd29c6]
xor eax, 0x460a02d6
salc
add cl, byte [esi + 0x4f]
salc
add cl, byte [esi + 0x1702d63b]
cmp eax, 0x4a9902d6
salc
add bl, byte [edi]
inc edx
salc
add bh, byte [ebx + esi - 0x2a]
add bh, byte [esi + 0x50]
salc
add dh, byte [esi + 0x40]
salc
add bl, ah
inc edx
salc
add ch, byte [ecx - 0x7dfd29b5]
salc
add ah, byte [edi]
inc eax
salc
add bl, byte [ecx]
dec edi
salc
add ah, byte [edx + ecx*2 - 0x2a]
add dh, byte [eax + 0x3e02d639]
xor eax, 0x48da02d6
salc
add cl, byte [ecx + 0x39]
salc
add dh, byte [ebp - 0x7efd29b7]
cmp eax, 0x3e2002d6
salc
add bh, byte [ebx - 0x9fd29cf]
aas
salc
add dh, byte [eax + 0x37]
jo 0x2d49ec1
salc
add ah, byte [edi]
xor esi, edx
add bl, ch
inc ebp
salc
add bh, byte [esi]
dec eax
salc
add cl, byte [eax]
sub eax, 0x369d02d6
salc
add al, byte [ecx]
dec ebx
salc
add al, byte [esi - 0x17fd29be]
test al, 0xd4
add ch, al
test al, 0xd4
add dh, byte [esi]
xor byte [edx], 0xc9
call 0x84d77361
test eax, 0xd1f702d4
mov eax, dword [0x67fe2b07]
outsd dx, dword [esi]
pop ds
in al, 0x3d
js 0x2d49e88
invalid
xlatb
push edx
popfd
pop edi
ret
retf
bound esp, qword [ecx - 0x48]
inc ecx
test byte [ecx - 0x1ae37f73], ah
test dword [esi], edi
movsd dword es:[edi], dword [esi]
push es
movsb byte es:[edi], byte [esi]
mov eax, 0x8da18441
sbb byte [0x6a53e85], 0xa4
aad 0x2a
cmp eax, ebp
pop edx
pop esp
wait
shr byte [ecx + 0x4f], 0xf8
xor bl, byte [edi + 0x2d4d101]
mov edx, 0x1d02d4d8
std
insd dword es:[edi], dx
pop edx
nop
loopne 0x2d4a16b
add bh, byte [edx - 0x2fd2b28]
fldcw word [esi - 0x2b1f4983]
add bh, byte [edi + 0x5702d4e0]
mov edi, 0x5702d4e0
mov edi, 0x5702d4e0
aam 2
push edi
cmpsd dword [esi], dword es:[edi]
out 0x85, al
cdq
mov ah, 9
rcr ah, 0xa1
invalid